UNPKG

@zhsz/cool-design-crud

Version:

198 lines (197 loc) 8.55 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const core = require("@formily/core"); const vue = require("vue"); const transform = require("../utils/transform.js"); const asyncDataSource = (pattern, service, fieldNames) => () => { core.onFieldInit(pattern, (field) => { if (!core.isVoidField(field) && service) { field.loading = true; service().then((data) => { const dataSource = data.map( (item) => transform.processItem(item, fieldNames) ); field.dataSource = dataSource; }).finally(() => field.loading = false); } }); }; const setIfDefined = (itemMap, key, value) => { if (value !== void 0 && value !== null) { if (Object.prototype.toString.call(value).slice(8, -1) === "Object" && value !== null) { const obj = {}; for (const prop in value) { if (value.hasOwnProperty(prop)) { const propValue = value[prop]; if (propValue !== void 0 && propValue !== null) { obj[prop] = propValue; } } } if (Object.keys(obj).length > 0) { itemMap.set(key, obj); } } else { itemMap.set(key, value); } } }; const transformISchema = (field, element, optionsRef, formCore, currentPath = "", parentArrayPath = "", isItems = false) => { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m; const itemMap = /* @__PURE__ */ new Map(); setIfDefined( itemMap, "type", typeof (element == null ? void 0 : element.type) === "object" ? "Custom" : (element == null ? void 0 : element.type) || "input" ); setIfDefined(itemMap, "title", element == null ? void 0 : element.title); setIfDefined( itemMap, "default", (element == null ? void 0 : element._default) ? element == null ? void 0 : element._default : element == null ? void 0 : element.default ); setIfDefined(itemMap, "readOnly", element == null ? void 0 : element.readOnly); setIfDefined(itemMap, "writeOnly", element == null ? void 0 : element.writeOnly); setIfDefined(itemMap, "enum", element == null ? void 0 : element.enum); setIfDefined(itemMap, "const", element == null ? void 0 : element.const); setIfDefined(itemMap, "multipleOf", element == null ? void 0 : element.multipleOf); setIfDefined(itemMap, "maximum", element == null ? void 0 : element.maximum); setIfDefined(itemMap, "exclusiveMaximum", element == null ? void 0 : element.exclusiveMaximum); setIfDefined(itemMap, "minimum", element == null ? void 0 : element.minimum); setIfDefined(itemMap, "exclusiveMinimum", element == null ? void 0 : element.exclusiveMinimum); setIfDefined(itemMap, "maxLength", element == null ? void 0 : element.maxLength); setIfDefined(itemMap, "minLength", element == null ? void 0 : element.minLength); setIfDefined(itemMap, "pattern", element == null ? void 0 : element.pattern); setIfDefined(itemMap, "maxItems", element == null ? void 0 : element.maxItems); setIfDefined(itemMap, "minItems", element == null ? void 0 : element.minItems); setIfDefined(itemMap, "uniqueItems", element == null ? void 0 : element.uniqueItems); setIfDefined(itemMap, "maxProperties", element == null ? void 0 : element.maxProperties); setIfDefined(itemMap, "minProperties", element == null ? void 0 : element.minProperties); setIfDefined(itemMap, "required", element == null ? void 0 : element._required); setIfDefined(itemMap, "format", element == null ? void 0 : element.format); setIfDefined(itemMap, "x-index", element == null ? void 0 : element.order); setIfDefined(itemMap, "x-pattern", element == null ? void 0 : element.uiStatus); setIfDefined(itemMap, "x-display", element == null ? void 0 : element.display); setIfDefined(itemMap, "x-validator", element == null ? void 0 : element.rules); setIfDefined( itemMap, "x-decorator", (element == null ? void 0 : element.decorator) ? element == null ? void 0 : element.decorator : !["void", "Custom"].includes((element == null ? void 0 : element.type) || "") ? "FormItem" : null ); let span; if (isItems) { span = 24; } else { span = (element == null ? void 0 : element.span) ?? ((_a = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _a.span) ?? 12; } itemMap.has("x-decorator") && setIfDefined( itemMap, "x-decorator-props", Object.assign( { size: element == null ? void 0 : element.size, label: element == null ? void 0 : element.title, span, labelColProps: (_b = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _b.labelColProps, wrapperColProps: (_c = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _c.wrapperColProps, hideLabel: ((_d = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _d.hideLabel) ?? isItems ? true : false, labelColStyle: (_e = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _e.labelColStyle, wrapperColStyle: (_f = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _f.wrapperColStyle, rowProps: (_g = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _g.rowProps, rowClass: (_h = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _h.rowClass, contentClass: (_i = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _i.contentClass }, element == null ? void 0 : element.dProps ) ); setIfDefined( itemMap, "x-component", (element == null ? void 0 : element.component) ? element == null ? void 0 : element.component : void 0 ); setIfDefined( itemMap, "x-component-props", Object.assign( { field: element == null ? void 0 : element.title, clearable: ((_j = optionsRef == null ? void 0 : optionsRef.props) == null ? void 0 : _j.clearable) ?? true }, element == null ? void 0 : element.cProps ) ); setIfDefined(itemMap, "x-content", element == null ? void 0 : element.slots); setIfDefined(itemMap, "x-visible", element == null ? void 0 : element._visible); setIfDefined(itemMap, "x-hidden", element == null ? void 0 : element._hidden); setIfDefined(itemMap, "x-disabled", element == null ? void 0 : element.disabled); setIfDefined(itemMap, "x-editable", element == null ? void 0 : element.editable); setIfDefined(itemMap, "x-read-pretty", element == null ? void 0 : element.readPretty); setIfDefined(itemMap, "x-data", element == null ? void 0 : element.data); setIfDefined(itemMap, "x-reactions", element == null ? void 0 : element.reactions); if (element == null ? void 0 : element.properties) { const properties = {}; for (const prop in element.properties) { if (element.properties.hasOwnProperty(prop)) { properties[prop] = transformISchema( prop, element.properties[prop], optionsRef, formCore, `${currentPath}.${field}`, `${parentArrayPath}.${prop}`, isItems ); } } setIfDefined(itemMap, "properties", properties); } if (element == null ? void 0 : element.items) { const items = transformISchema( field, element.items, optionsRef, formCore, currentPath, `${field}.*`, true ); if (Object.keys(items).length > 0) { setIfDefined(itemMap, "items", items); } } if ((_k = element == null ? void 0 : element.cProps) == null ? void 0 : _k.api) { const fullPath = parentArrayPath.includes("*") ? parentArrayPath : `${currentPath}.${field}`; formCore.addEffects( fullPath, asyncDataSource( fullPath, (_l = element == null ? void 0 : element.cProps) == null ? void 0 : _l.api, (_m = element == null ? void 0 : element.cProps) == null ? void 0 : _m.fieldNames ) ); } const r = Object.fromEntries(itemMap.entries()); itemMap.clear(); return r; }; function useSchema(optionsRef, formCore) { const schema = vue.computed(() => { const properties = {}; if (optionsRef && (optionsRef == null ? void 0 : optionsRef.schema)) { for (const item in optionsRef == null ? void 0 : optionsRef.schema) { properties[item] = transformISchema( item, optionsRef == null ? void 0 : optionsRef.schema[item], optionsRef, formCore ); } } return { type: "object", properties }; }); return schema; } exports.useSchema = useSchema;