UNPKG

@form-create/tdesign

Version:

TDesign 版本低代码表单 | FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。

1,471 lines (1,470 loc) 169 kB
/*! * FormCreate 低代码表单渲染器 * @form-create/tdesign v3.3.1 * (c) 2018-2026 xaboy * Github https://github.com/xaboy/form-create * Site https://form-create.com/ * Released under the MIT License. */ (function(){"use strict";try{if(typeof document!="undefined"){var r=document.createElement("style");r.appendChild(document.createTextNode('._fc-frame ._fc-files img{width:100%;height:100%;display:inline-block;vertical-align:top}._fc-frame ._fc-upload-cover{opacity:0;position:absolute;inset:0;background:#0009;transition:opacity .3s}._fc-frame ._fc-upload-cover ._fc-frame-icon{color:#fff;font-size:20px;margin:0 2px}._fc-frame ._fc-files:hover ._fc-upload-cover{opacity:1}._fc-frame .t-upload{display:block}._fc-frame ._fc-upload-btn,._fc-frame ._fc-frame-icon{cursor:pointer;font-size:20px;width:20px}._fc-frame._fc-disabled ._fc-upload-btn,._fc-frame._fc-disabled ._fc-frame-icon{cursor:not-allowed!important;color:#999}._fc-frame .t-input-adornment__append ._fc-frame-icon{margin:5px 12px 0}._fc-frame ._fc-upload-btn,._fc-files{display:inline-block;width:112px;height:112px;text-align:center;line-height:112px;border:1px solid #c0ccda;overflow:hidden;background:#fff;position:relative;box-shadow:2px 2px 5px #0000001a;margin-right:4px;box-sizing:border-box}._fc-group{display:flex;min-height:38px;justify-content:center;flex-direction:column;width:100%}._fc-group-disabled ._fc-group-btn,._fc-group-disabled ._fc-group-add{cursor:not-allowed}._fc-group-handle{display:flex;flex-direction:row;position:absolute;bottom:-15px;right:30px;border-radius:15px;border:1px dashed #d9d9d9;padding:3px 8px;background-color:#fff}._fc-group-btn{cursor:pointer}._fc-group-idx{position:absolute;bottom:-15px;left:10px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:#eee;border-radius:15px;font-weight:700}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{position:relative;display:flex;flex-direction:column;border:1px dashed #d9d9d9;border-radius:5px;margin:5px 5px 25px;padding:20px 20px 25px}._fc-group-arrow{position:relative;width:20px;height:20px}._fc-group-arrow:before{content:"";position:absolute;top:8px;left:5px;width:9px;height:9px;border-left:2px solid #999;border-top:2px solid #999}._fc-group-arrow:before{transform:rotate(45deg)}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{width:20px;height:20px;position:relative;cursor:pointer}._fc-group-plus-minus:before,._fc-group-plus-minus:after{content:"";position:absolute;top:50%;left:50%;width:60%;height:2px;background-color:#409eff;transform:translate(-50%,-50%)}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{cursor:pointer;width:25px;height:25px;border:1px solid rgb(64 158 255 / 50%);border-radius:15px}._fc-group-add._fc-group-plus-minus:before,._fc-group-add._fc-group-plus-minus:after{width:50%}._fc-group._fc-group-card{display:flex;flex-direction:column;width:100%;gap:16px}._fc-group._fc-group-card._fc-group-disabled ._fc-group-btn,._fc-group._fc-group-card._fc-group-disabled ._fc-group-add{cursor:not-allowed;opacity:.5}._fc-group._fc-group-card ._fc-group-container{position:relative;background:#fff;border:1px solid #f0f0f0;border-radius:6px;overflow:hidden;display:flex;flex-direction:column;padding:0;margin:0}._fc-group._fc-group-card ._fc-group-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0;background:#fafafa}._fc-group._fc-group-card ._fc-group-idx{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#f0f0f0;color:#666;border-radius:6px;font-size:12px;font-weight:500;margin-right:12px;flex-shrink:0;position:static;border:1px solid #e0e0e0}._fc-group._fc-group-card ._fc-group-title{flex:1;font-size:14px;font-weight:500;color:#000000d9;line-height:1.5715}._fc-group._fc-group-card ._fc-group-handle{display:flex;align-items:center;gap:4px;margin-left:12px;flex-shrink:0;position:static;bottom:auto;right:auto;border-radius:0;border:none;padding:0;background-color:transparent;flex-direction:row}._fc-group._fc-group-card ._fc-group-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:1px solid #d9d9d9;background:#fff;color:#00000073;position:relative}._fc-group._fc-group-card ._fc-group-btn:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}._fc-group._fc-group-card ._fc-group-btn:active{color:#096dd9;border-color:#096dd9}._fc-group._fc-group-card ._fc-group-arrow{position:relative}._fc-group._fc-group-card ._fc-group-arrow:before{content:"";position:absolute;top:50%;left:50%;width:5px;height:5px;border-left:1px solid currentColor;border-top:1px solid currentColor;transform:translate(-50%,-50%) rotate(45deg)}._fc-group._fc-group-card ._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group._fc-group-card ._fc-group-sort{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:24px}._fc-group._fc-group-card ._fc-group-sort:before,._fc-group._fc-group-card ._fc-group-sort:after{content:"";position:absolute;left:50%;width:4px;height:4px;border-left:1px solid currentColor;border-top:1px solid currentColor;transform:translate(-50%)}._fc-group._fc-group-card ._fc-group-sort:before{top:6px;transform:translate(-50%) rotate(45deg)}._fc-group._fc-group-card ._fc-group-sort:after{bottom:6px;transform:translate(-50%) rotate(225deg)}._fc-group._fc-group-card ._fc-group-sort-up,._fc-group._fc-group-card ._fc-group-sort-down{position:absolute;left:0;right:0;height:12px;cursor:pointer;z-index:1}._fc-group._fc-group-card ._fc-group-sort-up{top:0}._fc-group._fc-group-card ._fc-group-sort-down{bottom:0}._fc-group._fc-group-card ._fc-group-sort-up:hover,._fc-group._fc-group-card ._fc-group-sort-down:hover{background:#1890ff1a}._fc-group._fc-group-card ._fc-group-plus-minus{position:relative;background:#409eff;border-color:#409eff;color:#fff;width:24px;height:24px}._fc-group._fc-group-card ._fc-group-plus-minus:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}._fc-group._fc-group-card ._fc-group-plus-minus:before,._fc-group._fc-group-card ._fc-group-plus-minus:after{content:"";position:absolute;top:50%;left:50%;width:8px;height:1px;background-color:currentColor;transform:translate(-50%,-50%)}._fc-group._fc-group-card ._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus{background:#f56c6c;border-color:#f56c6c}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus:hover{background:#f78989;border-color:#f78989}._fc-group._fc-group-card ._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group._fc-group-card ._fc-group-content{padding:20px}._fc-group._fc-group-card ._fc-group-add{cursor:pointer;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:1px solid #d9d9d9;background:#fff;color:#00000073;position:relative}._fc-group._fc-group-card ._fc-group-add:hover{color:#409eff;border-color:#409eff;background:#f0f8ff}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus{width:24px;height:24px;background:#409eff;border-color:#409eff;color:#fff}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:before,._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:after{content:"";position:absolute;top:50%;left:50%;width:8px;height:1px;background-color:currentColor;transform:translate(-50%,-50%)}._fc-group._fc-group-card ._fc-group-add._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group._fc-group-card ._fc-group-empty{text-align:center;padding:40px 20px;color:#00000073;font-size:14px}@media (max-width: 768px){._fc-group._fc-group-card ._fc-group-container{margin:0 -8px;border-radius:0;border-left:none;border-right:none}._fc-group._fc-group-card ._fc-group-header{padding:12px 16px 8px}._fc-group._fc-group-card ._fc-group-content{padding:16px}._fc-group._fc-group-card ._fc-group-handle{gap:2px}._fc-group._fc-group-card ._fc-group-btn{width:22px;height:22px}}.form-create{width:100%}.form-create .t-tree .t-tree__icon{line-height:inherit}.form-create.t-form:not(.t-form-inline) .t-form__item:last-of-type{margin-bottom:24px}.form-create .form-create .t-is-error .t-input__extra{color:var(--td-error-color)}.form-create .form-create .t-is-warning .t-input__extra{color:var(--td-warning-color)}.form-create.is-preview .fc-clock,.form-create .fc-none,.form-create.is-preview .t-form__label--required>label:before{display:none!important}.fc-form-footer{margin-top:12px}')),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})(); var ur = Object.defineProperty, fr = Object.defineProperties; var cr = Object.getOwnPropertyDescriptors; var ft = Object.getOwnPropertySymbols; var dr = Object.prototype.hasOwnProperty, hr = Object.prototype.propertyIsEnumerable; var ct = (t, e, r) => e in t ? ur(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r, v = (t, e) => { for (var r in e || (e = {})) dr.call(e, r) && ct(t, r, e[r]); if (ft) for (var r of ft(e)) hr.call(e, r) && ct(t, r, e[r]); return t; }, N = (t, e) => fr(t, cr(e)); import { openBlock as Le, createElementBlock as Me, createElementVNode as $e, defineComponent as ge, h as Ce, nextTick as A, createVNode as w, resolveComponent as x, mergeProps as Ie, markRaw as se, reactive as K, isVNode as pr, getCurrentInstance as Xe, provide as mr, inject as gr, toRefs as dt, onBeforeMount as yr, watchEffect as br, onMounted as $r, onBeforeUnmount as vr, onUpdated as _r, watch as q, computed as be, toRef as Be, withDirectives as Cr, resolveDirective as wr, ref as Sr, createApp as Fr } from "vue"; function z(t) { return Array.isArray(t) ? t : [null, void 0, ""].indexOf(t) > -1 ? [] : [t]; } function Et(t) { t = t || /* @__PURE__ */ new Map(); const e = { $on(r, i) { const s = t.get(r); s && s.push(i) || t.set(r, [i]); }, $once(r, i) { i._once = !0, e.$on(r, i); }, $off(r, i) { const s = t.get(r); s && s.splice(s.indexOf(i) >>> 0, 1); }, $emit(r, ...i) { (t.get(r) || []).slice().map((s) => { s._once && (e.$off(r, s), delete s._once), s(...i); }), (t.get("*") || []).slice().map((s) => { s(r, i); }); } }; return e; } const Ne = (t, e) => { const r = t.__vccOpts || t; for (const [i, s] of e) r[i] = s; return r; }, Or = { name: "IconFolder" }, Rr = { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32" }; function Vr(t, e, r, i, s, n) { return Le(), Me("svg", Rr, [...e[0] || (e[0] = [ $e("path", { d: "M26 20h-2v4h-4v2h4v4h2v-4h4v-2h-4z", fill: "currentColor" }, null, -1), $e("path", { d: "M28 8H16l-3.4-3.4c-.4-.4-.9-.6-1.4-.6H4c-1.1 0-2 .9-2 2v20c0 1.1.9 2 2 2h14v-2H4V6h7.2l3.4 3.4l.6.6H28v8h2v-8c0-1.1-.9-2-2-2z", fill: "currentColor" }, null, -1) ])]); } const Er = /* @__PURE__ */ Ne(Or, [["render", Vr]]), kr = ge({ name: "IconFile", render() { return Ce( "svg", { style: { width: "20px", fontSize: "20px" }, viewBox: "0 0 24 24", version: "1.1", xmlns: "http://www.w3.org/2000/svg" }, Ce( "g", { fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, Ce("path", { d: "M14 3v4a1 1 0 0 0 1 1h4" }), Ce("path", { d: "M17 21H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2z" }) ) ); } }), Dr = { name: "DeleteOutlined" }, jr = { height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }; function Ar(t, e, r, i, s, n) { return Le(), Me("svg", jr, [...e[0] || (e[0] = [ $e("path", { d: "M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z", fill: "currentColor" }, null, -1) ])]); } const Pr = /* @__PURE__ */ Ne(Dr, [["render", Ar]]), Ir = { name: "EyeOutlined" }, Br = { height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }; function Tr(t, e, r, i, s, n) { return Le(), Me("svg", Br, [...e[0] || (e[0] = [ $e("path", { d: "M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3c7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176s-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112s-50.1 112-112 112z", fill: "currentColor" }, null, -1) ])]); } const Lr = /* @__PURE__ */ Ne(Ir, [["render", Tr]]), Mr = "fcFrame", Nr = /* @__PURE__ */ ge({ name: Mr, props: { type: { type: String, default: "input" }, field: String, helper: { type: Boolean, default: !0 }, disabled: { type: Boolean, default: !1 }, src: { type: String, required: !0 }, icon: { type: String, default: "icon-folder" }, width: { type: [Number, String], default: "500px" }, height: { type: [Number, String], default: "370px" }, maxLength: { type: Number, default: 0 }, okBtnText: { type: String, default: "" }, closeBtnText: { type: String, default: "" }, modalTitle: String, handleIcon: { type: [String, Boolean], default: void 0 }, title: String, allowRemove: { type: Boolean, default: !0 }, onOpen: { type: Function, default: () => { } }, onOk: { type: Function, default: () => { } }, onCancel: { type: Function, default: () => { } }, onLoad: { type: Function, default: () => { } }, onBeforeRemove: { type: Function, default: () => { } }, onRemove: { type: Function, default: () => { } }, onHandle: Function, modal: { type: Object, default: () => ({}) }, srcKey: [String, Number], modelValue: [Array, String, Number, Object], previewMask: void 0, footer: { type: Boolean, default: !0 }, reload: { type: Boolean, default: !0 }, closeBtn: { type: Boolean, default: !0 }, okBtn: { type: Boolean, default: !0 }, formCreateInject: Object }, emits: ["update:modelValue", "change"], components: { IconFolder: Er, EyeOutlined: Lr }, data() { return { fileList: z(this.modelValue), previewVisible: !1, frameVisible: !1, previewImage: "", bus: new Et() }; }, watch: { modelValue(t) { this.fileList = z(t); } }, methods: { key(t) { return t; }, close() { this.closeModal(!0); }, closeModal(t) { this.bus.$emit(t ? "$close" : "$ok"), this.reload && (this.bus.$off("$ok"), this.bus.$off("$close")), this.frameVisible = !1; }, handleCancel() { this.previewVisible = !1; }, showModal() { this.disabled || this.onOpen() === !1 || (this.frameVisible = !0); }, input() { const t = this.fileList, e = this.maxLength === 1 ? t[0] || "" : t; this.$emit("update:modelValue", e), this.$emit("change", e); }, makeInput() { const t = x(this.icon); return w(x("t-input-adornment"), { append: () => w(t, { onClick: this.showModal, class: "_fc-frame-icon" }, null) }, { default: () => [w(x("TInput"), { readonly: !0, clearable: !this.disabled, showClearIconOnEmpty: !this.disabled, value: this.fileList.map((e) => this.getSrc(e)).toString(), onClear: () => { this.fileList = [], this.input(); }, key: 1 }, null)] }); }, makeGroup(t) { return (!this.maxLength || this.fileList.length < this.maxLength) && t.push(this.makeBtn()), w("div", { key: 2 }, [t]); }, makeItem(t, e) { return w("div", { class: "_fc-files", key: "3" + t }, [e]); }, valid(t) { const e = this.formCreateInject.field || this.field; if (e && t !== e) throw new Error("[frame]无效的字段值"); }, makeIcons(t, e) { if (this.handleIcon !== !1 || this.allowRemove === !0) { const r = []; return (this.type !== "file" && this.handleIcon !== !1 || this.type === "file" && this.handleIcon) && r.push(this.makeHandleIcon(t, e)), this.allowRemove && r.push(this.makeRemoveIcon(t, e)), w("div", { class: "_fc-upload-cover", key: 4 }, [r]); } }, makeHandleIcon(t, e) { const r = x(this.handleIcon === !0 || this.handleIcon === void 0 ? "EyeOutlined" : this.handleIcon); return w(r, { class: "_fc-frame-icon", onClick: () => this.handleClick(t), key: "5" + e }, null); }, makeRemoveIcon(t, e) { return w(Pr, { class: "_fc-frame-icon", onClick: () => this.handleRemove(t), key: "6" + e }, null); }, makeFiles() { return this.makeGroup(this.fileList.map((t, e) => this.makeItem(e, [w(kr, { size: "20", onClick: () => this.handleClick(t) }, null), this.makeIcons(t, e)]))); }, makeImages() { return this.makeGroup(this.fileList.map((t, e) => this.makeItem(e, [w("img", { src: this.getSrc(t) }, null), this.makeIcons(t, e)]))); }, makeBtn() { const t = x(this.icon); return w("div", { class: "_fc-upload-btn", onClick: () => this.showModal(), key: 7 }, [w(t, { class: "_fc-frame-icon" }, null)]); }, handleClick(t) { if (this.onHandle) return this.onHandle(t); this.previewImage = this.getSrc(t), this.previewVisible = !0; }, handleRemove(t) { this.disabled || this.onBeforeRemove(t) !== !1 && (this.fileList.splice(this.fileList.indexOf(t), 1), this.input(), this.onRemove(t)); }, getSrc(t) { return this.srcKey ? t[this.srcKey] : t; }, frameLoad(t) { this.onLoad(t); try { this.helper === !0 && (t.form_create_helper = { api: this.formCreateInject.api, close: (e) => { this.valid(e), this.closeModal(); }, set: (e, r) => { this.valid(e), this.disabled || (this.$emit("update:modelValue", r), this.$emit("change", r)); }, get: (e) => (this.valid(e), this.modelValue), onOk: (e) => this.bus.$on("$ok", e), onClose: (e) => this.bus.$on("$close", e) }); } catch (e) { console.error(e); } }, makeFooter() { const { okBtnText: t, closeBtnText: e, closeBtn: r, okBtn: i, footer: s } = this.$props, n = []; return s && (r && n.push(w(x("TButton"), { onClick: () => this.onCancel() !== !1 && this.closeModal(!0) }, { default: () => [e || this.formCreateInject.t("close") || "关闭"] })), i && n.push(w(x("TButton"), { theme: "primary", onClick: () => this.onOk() !== !1 && this.closeModal() }, { default: () => [t || this.formCreateInject.t("ok") || "确定"] }))), n; } }, render() { const t = this.type; let e; t === "input" ? e = this.makeInput() : t === "image" ? e = this.makeImages() : e = this.makeFiles(); const { width: r = "30%", height: i, src: s, title: n, modalTitle: o } = this.$props; return A(() => { this.$refs.frame && this.frameLoad(this.$refs.frame.contentWindow || {}); }), w("div", { class: { "_fc-frame": !0, "_fc-disabled": this.disabled } }, [e, w(x("TDialog"), { mask: this.previewMask, header: o, visible: this.previewVisible, style: "width: 600px;", attach: "body", "onUpdate:visible": (a) => this.previewVisible = a, footer: !1 }, { default: () => [w("img", { style: "width: 100%", src: this.previewImage, key: 1 }, null)] }), w(x("TDialog"), Ie(v({ width: r, header: n }, this.modal), { visible: this.frameVisible, attach: "body", style: { width: r }, onClose: () => this.frameVisible = !1, onConfirm: () => this.closeModal(!0), key: 2 }), { default: () => [this.frameVisible || !this.reload ? w("iframe", { ref: "frame", src: s, frameborder: "0", style: { height: i, border: "0 none", width: "100%" } }, null) : null], action: () => this.makeFooter() })]); }, beforeMount() { const { name: t, field: e, api: r } = this.formCreateInject; t && r.on("fc:closeModal:" + t, this.close), e && r.on("fc:closeModal:" + e, this.close); }, beforeUnmount() { const { name: t, field: e, api: r } = this.formCreateInject; t && r.off("fc:closeModal:" + t, this.close), e && r.off("fc:closeModal:" + e, this.close); } }), Ur = "fcUpload"; function ht(t, e) { return typeof t == "object" ? t : { url: t, is_string: !0, name: qr(t), status: "success", uid: e }; } function pt(t) { return N(v({}, t), { file: t, value: t }); } function qr(t) { return ("" + t).split("/").pop(); } const Hr = /* @__PURE__ */ ge({ name: Ur, inheritAttrs: !1, formCreateParser: { toFormValue(t) { return z(t); }, toValue(t, e) { return e.prop.props.limit === 1 ? t[0] || "" : t; } }, props: { limit: { type: Number, default: 0 }, formCreateInject: Object, modelValue: { type: [Array, String, Object], default: [] }, onSuccess: { type: Function }, onRemove: { type: Function }, name: String, requestMethod: Function }, emits: ["update:modelValue", "fc.el"], data() { return { uploadList: z(this.modelValue).map(ht).map(pt) }; }, watch: { modelValue(t) { this.uploadList = z(t).map(ht).map(pt); } }, methods: { handleRemove({ index: t }) { this.uploadList.splice(t, 1), this.onRemove && this.onRemove(...arguments), this.input(); }, handleSuccess({ file: t, fileList: e }) { this.uploadList = e, t.status === "success" && this.onSuccess && this.onSuccess(...arguments), this.input(); }, input() { this.$emit("update:modelValue", this.uploadList.map((t) => t.is_string ? t.url : t.value || t.url).filter((t) => t !== void 0)); }, doRequestMethod(t) { const e = this.requestMethod; if (e) return e(t); const r = Array.isArray(t) ? t[0] : t, i = (r == null ? void 0 : r.raw) || (r == null ? void 0 : r.file) || r; return new Promise((s, n) => { var a; const o = { method: ((a = this.$attrs) == null ? void 0 : a.method) || "post", file: i, filename: this.name || "file", source: "upload", onSuccess: (l) => s({ status: "success", response: l }), onError: (l) => n(l) }; this.formCreateInject.api.fetch(o); }); } }, render() { const { uploadList: t, handleSuccess: e, handleRemove: r, $slots: i } = this; return w("div", { class: "_fc-upload", style: "width: 100%;" }, [w(x("t-upload"), Ie({ max: this.limit || void 0, theme: "image", accept: "image/*", modelValue: t, name: this.name }, this.$attrs, { requestMethod: this.doRequestMethod, onSuccess: e, onRemove: r, ref: "el" }), i)]); }, mounted() { this.$emit("fc.el", this.$refs.el); } }), m = { type(t, e) { return Object.prototype.toString.call(t) === "[object " + e + "]"; }, Undef(t) { return t == null; }, Element(t) { return typeof t == "object" && t !== null && t.nodeType === 1 && !m.Object(t); }, trueArray(t) { return Array.isArray(t) && t.length > 0; }, Function(t) { const e = this.getType(t); return e === "Function" || e === "AsyncFunction"; }, getType(t) { const e = Object.prototype.toString.call(t); return /^\[object (.*)\]$/.exec(e)[1]; }, empty(t) { return t == null || Array.isArray(t) && Array.isArray(t) && !t.length ? !0 : typeof t == "string" && !t; } }; ["Date", "Object", "String", "Boolean", "Array", "Number"].forEach((t) => { m[t] = function(e) { return m.type(e, t); }; }); function k(t, e) { return {}.hasOwnProperty.call(t, e); } function H(t, e, r) { t[e] = r; } function pe(t, e) { delete t[e]; } function Oe(t, e = {}, r) { let i = !1; for (let s in e) if (Object.prototype.hasOwnProperty.call(e, s)) { let n = e[s]; if ((i = Array.isArray(n)) || m.Object(n)) { let o = t[s] === void 0; if (i) i = !1, o && H(t, s, []); else if (n._clone && r !== void 0) if (r) n = n.getRule(), o && H(t, s, {}); else { H(t, s, n._clone()); continue; } else o && H(t, s, {}); t[s] = Oe(t[s], n, r); } else H(t, s, n), m.Undef(n) || (m.Undef(n.__json) || (t[s].__json = n.__json), m.Undef(n.__origin) || (t[s].__origin = n.__origin)); } return r !== void 0 && Array.isArray(t) ? t.filter((s) => !s || !s.__ctrl) : t; } function X(t) { return Oe({}, { value: t }).value; } const Gr = Object.assign || function(t) { for (let e, r = 1; r < arguments.length; r++) for (let i in e = arguments[r], e) Object.prototype.hasOwnProperty.call(e, i) && H(t, i, e[i]); return t; }; function C() { return Gr.apply(this, arguments); } function Qe(t) { return typeof t != "object" || t === null ? t : t instanceof Array ? [...t] : v({}, t); } function oe(t, e) { var r = null; return function(...i) { r !== null && clearTimeout(r), r = setTimeout(() => t.call(this, ...i), e); }; } function kt(t) { return t == null ? "" : typeof t == "object" ? JSON.stringify(t, null, 2) : String(t); } function xr(t) { return t && typeof t == "object" && typeof t.then == "function"; } function Te(t) { return xr(t) ? t : Promise.resolve(t); } function Se(t) { let e = t.replace(/([A-Z])/g, "-$1").toLocaleLowerCase(); return e.indexOf("-") === 0 && (e = e.substr(1)), e; } function Dt(t) { return t.replace(t[0], t[0].toLocaleUpperCase()); } function jt(t, e, r) { return `[form-create ${t}]: ${e}`; } function tt(t, e) { console.error(jt("err", t)); } function zr(t) { tt(t.toString()), console.error(t); } const Ze = "[[FORM-CREATE-PREFIX-", Ye = "-FORM-CREATE-SUFFIX]]"; function Fe(t, e) { return JSON.stringify(Oe(Array.isArray(t) ? [] : {}, t, !0), function(r, i) { if (!(i && i._isVue === !0)) { if (typeof i != "function") return i; if (i.__json) return i.__json; if (i.__origin && (i = i.__origin), !i.__emit) return Ze + i + Ye; } }, e); } function xe(t) { return new Function("return " + t)(); } function Q(t, e) { if (t && m.String(t) && t.length > 4) { let r = t.trim(), i = !1; try { if (r.indexOf(Ye) > 0 && r.indexOf(Ze) === 0) r = r.replace(Ye, "").replace(Ze, ""), i = !0; else if (r.indexOf("$FN:") === 0) r = r.substring(4), i = !0; else if (r.indexOf("$EXEC:") === 0) r = r.substring(6), i = !0; else if (r.indexOf("$GLOBAL:") === 0) { const n = r.substring(8); return r = function(...o) { const a = o[0].api.getGlobalEvent(n); if (a) return a.call(this, ...o); }, r.__json = t, r.__inject = !0, r; } else { if (r.indexOf("$FNX:") === 0) return r = xe(`function($inject){ ` + r.substring(5) + ` }`), r.__json = t, r.__inject = !0, r; (!e && r.indexOf("function ") === 0 && r !== "function " || !e && r.indexOf("function(") === 0 && r !== "function(") && (i = !0); } if (!i) return t; let s; try { s = xe(r); } catch (n) { s = xe("function " + r); } return s.__json = t, s; } catch (s) { tt(`解析失败:${r} err: ${s}`); return; } } return t; } function At(t, e) { return JSON.parse(t, function(r, i) { return m.Undef(i) || !i.indexOf ? i : Q(i, e); }); } let Jr = 0; function Ue() { const t = 370 + ++Jr; return "F" + Math.random().toString(36).substr(3, 3) + (+`${Date.now()}`).toString(36) + t.toString(36) + "c"; } function ae(t, e, r) { let i = t, s; return (e || "").split(".").forEach((n) => { s && ((!i[s] || typeof i[s] != "object") && (i[s] = {}), i = i[s]), s = n; }), i[s] = r, i; } const Wr = "fcGroup", Kr = /* @__PURE__ */ ge({ name: Wr, props: { field: String, rule: Array, expand: Number, options: Object, button: { type: Boolean, default: !0 }, max: { type: Number, default: 0 }, min: { type: Number, default: 0 }, modelValue: { type: Array, default: () => [] }, defaultValue: Object, sortBtn: { type: Boolean, default: !0 }, disabled: { type: Boolean, default: !1 }, syncDisabled: { type: Boolean, default: !0 }, title: { type: [String, Function], default: null }, type: { type: String, default: "default" }, onBeforeRemove: { type: Function, default: () => { } }, onBeforeAdd: { type: Function, default: () => { } }, formCreateInject: Object, parse: Function }, data() { return { len: 0, cacheRule: {}, cacheValue: {}, sort: [], form: se(this.formCreateInject.form.$form()) }; }, emits: ["update:modelValue", "change", "itemMounted", "remove", "add"], watch: { rule: { handler(t, e) { Object.keys(this.cacheRule).forEach((r) => { const i = this.cacheRule[r]; if (i.$f) { const s = i.$f.formData(); if (t === e) i.$f.deferSyncValue(() => { Oe(i.rule, t), i.$f.setValue(s); }, !0); else { const n = i.$f.formData(); i.$f.once("reloading", () => { i.$f.setValue(n); }), i.rule = X(t); } } }); }, deep: !0 }, expand(t) { let e = t - this.modelValue.length; e > 0 && this.expandRule(e); }, modelValue: { handler(t) { t = t || []; let e = this.sort, r = e.length, i = r - t.length; if (i < 0) { for (let s = i; s < 0; s++) this.addRule(t.length + s, !0); for (let s = 0; s < r; s++) this.setValue(e[s], t[s]); } else { if (i > 0) for (let s = 0; s < i; s++) this.removeRule(e[r - s - 1]); t.forEach((s, n) => { this.setValue(e[n], t[n]); }); } }, deep: !0 } }, methods: { _value(t) { return t && k(t, this.field) ? t[this.field] : t; }, cache(t, e) { this.cacheValue[t] = JSON.stringify(e); }, input(t) { this.$emit("update:modelValue", t), this.$emit("change", t); }, formData(t, e) { const r = this.cacheRule, i = this.sort; if (i.filter((n) => r[n] && r[n].$f).length !== i.length) return; const s = i.map((n) => { const o = t === n ? e : v({}, this.cacheRule[n].$f.form), a = this.field ? m.Undef(o[this.field]) ? null : o[this.field] : o; return this.cache(n, a), a; }); this.input(s); }, setValue(t, e) { const r = this.field; r && (e = { [r]: this._value(e) }), this.cacheValue[t] !== JSON.stringify(r ? e[r] : e) && (this.cacheRule[t].$f && this.cacheRule[t].$f.coverValue(e), this.cache(t, e)); }, addRule(t, e) { const r = this.formCreateInject.form.copyRules(this.rule || []), i = this.options ? v({}, this.options) : { submitBtn: !1, resetBtn: !1 }; if (this.defaultValue) { i.formData || (i.formData = {}); const s = X(this.defaultValue); C(i.formData, this.field ? { [this.field]: s } : s); } this.parse && this.parse({ rule: r, options: i, index: this.sort.length }), this.cacheRule[++this.len] = { rule: r, options: i }, this.sort = Object.keys(this.cacheRule), e && A(() => this.$emit("add", r, Object.keys(this.cacheRule).length - 1)); }, add$f(t, e, r) { this.cacheRule[e].$f = r, A(() => { this.$emit("itemMounted", r, Object.keys(this.cacheRule).indexOf(e)); }); }, removeRule(t, e) { const r = Object.keys(this.cacheRule).indexOf(t); delete this.cacheRule[t], delete this.cacheValue[t], this.sort = Object.keys(this.cacheRule), e && A(() => this.$emit("remove", r)); }, add(t) { if (this.disabled || this.onBeforeAdd(this.modelValue) === !1) return; const e = [...this.modelValue]; e.push(this.defaultValue ? X(this.defaultValue) : this.field ? null : {}), this.input(e); }, del(t, e) { if (this.disabled) return; const r = () => { this.removeRule(e, !0); const i = [...this.modelValue]; i.splice(t, 1), this.input(i); }; Te(this.onBeforeRemove(this.modelValue, t)).then((i) => { i !== !1 && r(); }); }, addIcon(t) { return w("div", { class: "_fc-group-btn _fc-group-plus-minus", onClick: this.add }, null); }, delIcon(t, e) { return w("div", { class: "_fc-group-btn _fc-group-plus-minus _fc-group-minus", onClick: () => this.del(t, e) }, null); }, sortUpIcon(t) { return w("div", { class: "_fc-group-btn _fc-group-arrow _fc-group-up", onClick: () => this.changeSort(t, -1) }, null); }, sortDownIcon(t) { return w("div", { class: "_fc-group-btn _fc-group-arrow _fc-group-down", onClick: () => this.changeSort(t, 1) }, null); }, changeSort(t, e) { const r = this.sort[t]; this.sort[t] = this.sort[t + e], this.sort[t + e] = r, this.formCreateInject.subForm(this.sort.map((i) => this.cacheRule[i].$f)), this.formData(0); }, sortIcon(t, e) { const r = t > 0, i = t < e - 1, s = []; return !r && !i ? s : this.type === "card" && r && i ? (s.push(w("div", { class: "_fc-group-btn _fc-group-sort" }, [w("div", { class: " _fc-group-sort-up", onClick: () => this.changeSort(t, -1) }, null), w("div", { class: " _fc-group-sort-down", onClick: () => this.changeSort(t, 1) }, null)])), s) : (r && s.push(this.sortUpIcon(t)), i && s.push(this.sortDownIcon(t)), s); }, makeIcon(t, e, r) { if (this.$slots.button) return this.$slots.button({ total: t, index: e, vm: this, key: r, del: () => this.del(e, r), add: this.add }); const i = []; if ((!this.max || t < this.max) && t === e + 1 && i.push(this.addIcon(r)), t > this.min && i.push(this.delIcon(e, r)), this.sortBtn) { const s = this.sortIcon(e, t); s && i.push(...s); } return i; }, expandRule(t) { for (let e = 0; e < t; e++) this.modelValue.push(this.field ? null : {}); this.input([...this.modelValue]); }, getTitle(t, e) { return typeof this.title == "function" ? this.title(t, this.modelValue[t], e) : typeof this.title == "string" ? this.title.replace("{index}", t + 1) : !1; } }, created() { const t = (this.expand || 0) - this.modelValue.length; for (let e = 0; e < this.modelValue.length; e++) this.addRule(e); t > 0 && this.expandRule(t); }, render() { const t = this.sort, e = this.button, r = this.form, i = this.disabled, s = this.type === "card", n = t.length === 0 ? this.$slots.default ? this.$slots.default({ vm: this, add: this.add }) : w("div", { key: "a_def", class: "_fc-group-plus-minus _fc-group-add fc-clock", onClick: this.add }, null) : t.map((o, a) => { const { rule: l, options: u } = this.cacheRule[o], f = e && !i ? this.makeIcon(t.length, a, o) : [], h = this.getTitle(a, o); return s ? w("div", { class: "_fc-group-container", key: o }, [w("div", { class: "_fc-group-header" }, [h === !1 ? w("div", { class: "_fc-group-idx" }, [a + 1]) : null, h !== !1 ? w("div", { class: "_fc-group-title" }, [h]) : null, w("div", { class: "_fc-group-handle fc-clock" }, [f.length ? f : null])]), w("div", { class: "_fc-group-content" }, [w(r, Ie({ key: o }, { disabled: i, "onUpdate:modelValue": (d) => this.formData(o, d), "onUpdate:api": (d) => this.add$f(a, o, d), inFor: !0, modelValue: this.field ? { [this.field]: this._value(this.modelValue[a]) } : this.modelValue[a], rule: l, option: u, extendOption: !0 }), null)])]) : w("div", { class: "_fc-group-container", key: o }, [w(r, Ie({ key: o }, { disabled: i, "onUpdate:modelValue": (d) => this.formData(o, d), "onUpdate:api": (d) => this.add$f(a, o, d), inFor: !0, modelValue: this.field ? { [this.field]: this._value(this.modelValue[a]) } : this.modelValue[a], rule: l, option: u, extendOption: !0 }), null), w("div", { class: "_fc-group-idx" }, [a + 1]), f.length ? w("div", { class: "_fc-group-handle fc-clock" }, [f]) : null]); }); return w("div", { key: "con", class: "_fc-group " + (i ? "_fc-group-disabled" : "") + (s ? " _fc-group-card" : "") }, [n]); } }), Xr = "fcSubForm", Qr = /* @__PURE__ */ ge({ name: Xr, props: { rule: Array, options: { type: Object, default: () => K({ submitBtn: !1, resetBtn: !1 }) }, modelValue: { type: Object, default: () => ({}) }, disabled: { type: Boolean, default: !1 }, syncDisabled: { type: Boolean, default: !0 }, formCreateInject: Object }, data() { return { cacheValue: {}, subApi: {}, form: se(this.formCreateInject.form.$form()) }; }, emits: ["fc:subform", "update:modelValue", "change", "itemMounted"], watch: { modelValue(t) { this.setValue(t); } }, methods: { formData(t) { this.cacheValue = JSON.stringify(t), this.$emit("update:modelValue", t), this.$emit("change", t); }, setValue(t) { const e = JSON.stringify(t); this.cacheValue !== e && (this.cacheValue = e, this.subApi.coverValue(t || {})); }, add$f(t) { this.subApi = t, A(() => { this.$emit("itemMounted", t); }); } }, render() { const t = this.form; return w(t, { disabled: this.disabled, "onUpdate:modelValue": this.formData, modelValue: this.modelValue, "onUpdate:api": this.add$f, rule: this.rule, option: this.options, extendOption: !0 }, null); } }), Zr = { name: "QuestionCircleOutlined" }, Yr = { height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 1024 1024" }; function ei(t, e, r, i, s, n) { return Le(), Me("svg", Yr, [...e[0] || (e[0] = [ $e("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448s448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372s372 166.6 372 372s-166.6 372-372 372z", fill: "currentColor" }, null, -1), $e("path", { d: "M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7c-21.2 8.1-39.2 22.3-52.1 40.9c-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5c.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0a40 40 0 1 0-80 0z", fill: "currentColor" }, null, -1) ])]); } const ti = /* @__PURE__ */ Ne(Zr, [["render", ei]]), ri = [ Nr, Hr, Kr, Qr, ti ], Pt = ["props"], It = ["class", "style", "directives"], Bt = ["on", "hook"], ee = (t, e = {}, r = {}) => { const i = [...Pt, ...r.normal || []], s = [...It, ...r.array || []], n = [...Bt, ...r.functional || []], o = r.props || []; return t.reduce((a, l) => { for (const u in l) if (a[u]) if (o.indexOf(u) > -1) a[u] = ee([l[u]], a[u]); else if (i.indexOf(u) > -1) a[u] = v(v({}, a[u]), l[u]); else if (s.indexOf(u) > -1) { const f = a[u] instanceof Array ? a[u] : [a[u]], h = l[u] instanceof Array ? l[u] : [l[u]]; a[u] = [...f, ...h]; } else if (n.indexOf(u) > -1) for (const f in l[u]) if (a[u][f]) { const h = a[u][f] instanceof Array ? a[u][f] : [a[u][f]], d = l[u][f] instanceof Array ? l[u][f] : [l[u][f]]; a[u][f] = [...h, ...d]; } else a[u][f] = l[u][f]; else if (u === "hook") for (let f in l[u]) a[u][f] ? a[u][f] = ii(a[u][f], l[u][f]) : a[u][f] = l[u][f]; else a[u] = l[u]; else i.indexOf(u) > -1 || n.indexOf(u) > -1 || o.indexOf(u) > -1 ? a[u] = v({}, l[u]) : s.indexOf(u) > -1 ? a[u] = l[u] instanceof Array ? [...l[u]] : typeof l[u] == "object" ? v({}, l[u]) : l[u] : a[u] = l[u]; return a; }, e); }, ii = (t, e) => function() { t && t.apply(this, arguments), e && e.apply(this, arguments); }, Tt = ["type", "slot", "ignore", "emitPrefix", "value", "name", "native", "hidden", "display", "inject", "options", "emit", "link", "prefix", "suffix", "update", "sync", "optionsTo", "key", "slotUpdate", "computed", "preview", "component", "cache", "modelEmit"], rt = ["validate", "children", "control"], it = ["effect", "deep", "renderSlots"]; function Lt() { return [...Tt, ...Pt, ...It, ...Bt, ...rt, ...it]; } function M(t) { const e = t.replace(/(-[a-z])/g, function(r) { return r.replace("-", "").toLocaleUpperCase(); }); return Mt(e); } function Mt(t) { return t.replace(t[0], t[0].toLowerCase()); } function et(t, e) { return { value: t, enumerable: !1, configurable: !1, writable: !0 }; } function Nt(t, e) { return Ut([t], e || !1)[0]; } function Ut(t, e) { return Oe([], [...t], e || !1); } function te(t, e) { return ee(Array.isArray(e) ? e : [e], t, { array: rt, normal: it }), t; } function mt(t) { const e = m.Function(t.getRule) ? t.getRule() : t; return e.type || (e.type = "input"), e; } function ni(t, e) { return t ? (Object.keys(e || {}).forEach((r) => { e[r] && (t[r] = te(t[r] || {}, e[r])); }), t) : e; } function qt(t, e) { Object.defineProperties(t, Object.keys(e).reduce((r, i) => (r[i] = { get() { return e[i](); } }, r), {})); } function W(t) { return t.__fc__ || (t.__origin__ ? t.__origin__.__fc__ : null); } function F(t, e) { try { e = t(); } catch (r) { zr(r); } return e; } function je() { const t = {}, e = (r) => r || "default"; return { setSlot(r, i) { r = e(r), !(!i || Array.isArray(i) && i.length) && (t[r] || (t[r] = []), t[r].push(i)); }, getSlot(r, i) { r = e(r); const s = []; return (t[r] || []).forEach((n) => { if (Array.isArray(n)) s.push(...n); else if (m.Function(n)) { const o = n(...i || []); Array.isArray(o) ? s.push(...o) : s.push(o); } else m.Undef(n) || s.push(n); }), s; }, getSlots() { const r = {}; return Object.keys(t).forEach((i) => { r[i] = (...s) => this.getSlot(i, s); }), r; }, slotLen(r) { return r = e(r), t[r] ? t[r].length : 0; }, mergeBag(r) { if (!r) return this; const i = m.Function(r.getSlots) ? r.getSlots() : r; return Array.isArray(r) || pr(r) ? this.setSlot(void 0, () => r) : Object.keys(i).forEach((s) => { this.setSlot(s, i[s]); }), this; } }; } function gt(t) { const e = v({}, t.props || {}); return Object.keys(t.on || {}).forEach((r) => { r.indexOf("-") > 0 && (r = M(r)); const i = `on${Dt(r)}`; Array.isArray(e[i]) ? e[i] = [...e[i], t.on[r]] : e[i] ? e[i] = [e[i], t.on[r]] : e[i] = t.on[r]; }), e.key = t.key, e.ref = t.ref, e.class = t.class, e.id = t.id, e.style = t.style, e.slot && delete e.slot, e; } function Ae(t, e) { return Object.setPrototypeOf(t, e), t; } const yt = (t, e) => typeof t == "string" ? String(e) : typeof t == "number" ? Number(e) : e, me = { "==": (t, e) => JSON.stringify(t) === JSON.stringify(yt(t, e)), "!=": (t, e) => !me["=="](t, e), ">": (t, e) => t > e, ">=": (t, e) => t >= e, "<": (t, e) => t < e, "<=": (t, e) => t <= e, on(t, e) { return t && t.indexOf && t.indexOf(yt(t[0], e)) > -1; }, notOn(t, e) { return !me.on(t, e); }, in(t, e) { return e && e.indexOf && e.indexOf(t) > -1; }, notIn(t, e) { return !me.in(t, e); }, between(t, e) { return t > e[0] && t < e[1]; }, notBetween(t, e) { return t < e[0] || t > e[1]; }, empty(t) { return m.empty(t); }, notEmpty(t) { return !m.empty(t); }, pattern(t, e) { return new RegExp(e, "g").test(t); } }; function B(t, e) { return (Array.isArray(e) ? e : (e || "").split(".")).forEach((r) => { t != null && (t = t[r]); }), t; } function si(t) { const e = /{{\s*(.*?)\s*}}/g; let r; const i = {}; for (; (r = e.exec(t)) !== null; ) r[1] && (i[r[1]] = !0); return Object.keys(i); } function bt(t) { let e = t.split("."), r = [], i = ""; return e.forEach((s, n) => { n === 0 ? i = s : i += "." + s, r.push(i); }), r.join(" && "); } function Ht(t) { const e = []; let r = "", i = 0; for (let s = 0; s < t.length; s++) { const n = t[s]; n === "[" ? (i === 0 && r && (e.push({ type: "key", value: r }), r = ""), i++, r += n) : n === "]" ? (i--, r += n, i === 0 && (e.push({ type: "bracket", value: Ht(r.slice(1, -1)) }), r = "")) : n === "." && i === 0 ? r && (e.push({ type: "key", value: r }), r = "") : r += n; } return r && e.push({ type: "key", value: r }), e.map((s) => s.type === "key" ? { key: s.value } : { children: s.value }); } const Pe = (t, e) => { if (!(!t || t === e)) { if (t.props.formCreateInject) return t.props.formCreateInject; if (t.parent) return Pe(t.parent, e); } }; function oi(t, e, r) { return ge({ name: "FormCreate" + (t.isMobile ? "Mobile" : ""), components: e, directives: r, props: { rule: { type: Array, required: !0, default: () => [] }, option: { type: Object, default: () => ({}) }, extendOption: Boolean, driver: [String, Object], modelValue: Object, disabled: { type: Boolean, default: void 0 }, preview: { type: Boolean, default: void 0 }, index: [String, Number], api: Object, locale: [String, Object], t: Function, name: String, subForm: { type: Boolean, default: !0 }, inFor: Boolean }, emits: ["update:api", "update:modelValue", "mounted", "beforeUnmount", "submit", "reset", "change", "emit-event", "control", "remove-rule", "remove-field", "sync", "reload", "repeat-field", "update", "validate-field-fail", "validate-fail", "created"], render() { return this.fc.render(); }, setup(i) { const s = Xe(); mr("parentFC", s); const n = gr("parentFC", null); let o = n; if (n) for (; o.setupState.parent; ) o = o.setupState.parent; else o = s; const { rule: a, modelValue: l, subForm: u, inFor: f } = dt(i), h = K({ ctxInject: {}, destroyed: !1, isShow: !0, unique: 1, renderRule: [...a.value || []], updateValue: JSON.stringify(l.value || {}) }), d = new t(s), p = d.api(), $ = f.value, _ = ()