UNPKG

@form-create/tdesign

Version:

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

15 lines • 124 kB
/*!
 * FormCreate 低代码表单渲染器
 * @form-create/tdesign v3.3.5
 * (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}.form-create.is-numbered{counter-reset:q}.form-create.is-numbered .fc-form-title{counter-increment:q}.form-create.is-numbered .fc-form-title:before{content:counter(q) ". ";color:var(--fc-number-color, inherit);font-weight:600}.form-create.is-numbered.is-number-chinese .fc-form-title:before{content:counter(q,simp-chinese-informal) "、"}')),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
(function(I,f){typeof exports=="object"&&typeof module!="undefined"?f(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],f):(I=typeof globalThis!="undefined"?globalThis:I||self,f(I.formCreate={},I.Vue))})(this,function(I,f){"use strict";var qn=Object.defineProperty,xn=Object.defineProperties;var Hn=Object.getOwnPropertyDescriptors;var Lt=Object.getOwnPropertySymbols;var Gn=Object.prototype.hasOwnProperty,zn=Object.prototype.propertyIsEnumerable;var Ut=(I,f,j)=>f in I?qn(I,f,{enumerable:!0,configurable:!0,writable:!0,value:j}):I[f]=j,C=(I,f)=>{for(var j in f||(f={}))Gn.call(f,j)&&Ut(I,j,f[j]);if(Lt)for(var j of Lt(f))zn.call(f,j)&&Ut(I,j,f[j]);return I},M=(I,f)=>xn(I,Hn(f));function j(t){return Array.isArray(t)?t:[null,void 0,""].indexOf(t)>-1?[]:[t]}function Ze(t){t=t||new Map;const e={$on(r,n){const s=t.get(r);s&&s.push(n)||t.set(r,[n])},$once(r,n){n._once=!0,e.$on(r,n)},$off(r,n){const s=t.get(r);s&&s.splice(s.indexOf(n)>>>0,1)},$emit(r,...n){(t.get(r)||[]).slice().map(s=>{s._once&&(e.$off(r,s),delete s._once),s(...n)}),(t.get("*")||[]).slice().map(s=>{s(r,n)})}};return e}const Ce=(t,e)=>{const r=t.__vccOpts||t;for(const[n,s]of e)r[n]=s;return r},qt={name:"IconFolder"},xt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"};function Ht(t,e,r,n,s,i){return f.openBlock(),f.createElementBlock("svg",xt,[...e[0]||(e[0]=[f.createElementVNode("path",{d:"M26 20h-2v4h-4v2h4v4h2v-4h4v-2h-4z",fill:"currentColor"},null,-1),f.createElementVNode("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 Gt=Ce(qt,[["render",Ht]]),zt=f.defineComponent({name:"IconFile",render(){return f.h("svg",{style:{width:"20px",fontSize:"20px"},viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},f.h("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},f.h("path",{d:"M14 3v4a1 1 0 0 0 1 1h4"}),f.h("path",{d:"M17 21H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2z"})))}}),Jt={name:"DeleteOutlined"},Wt={height:"1em",width:"1em",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"};function Kt(t,e,r,n,s,i){return f.openBlock(),f.createElementBlock("svg",Wt,[...e[0]||(e[0]=[f.createElementVNode("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 Qt=Ce(Jt,[["render",Kt]]),Xt={name:"EyeOutlined"},Zt={height:"1em",width:"1em",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"};function Yt(t,e,r,n,s,i){return f.openBlock(),f.createElementBlock("svg",Zt,[...e[0]||(e[0]=[f.createElementVNode("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 er=Ce(Xt,[["render",Yt]]),tr=f.defineComponent({name:"fcFrame",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:Gt,EyeOutlined:er},data(){return{fileList:j(this.modelValue),previewVisible:!1,frameVisible:!1,previewImage:"",bus:new Ze}},watch:{modelValue(t){this.fileList=j(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=f.resolveComponent(this.icon);return f.createVNode(f.resolveComponent("t-input-adornment"),{append:()=>f.createVNode(t,{onClick:this.showModal,class:"_fc-frame-icon"},null)},{default:()=>[f.createVNode(f.resolveComponent("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()),f.createVNode("div",{key:2},[t])},makeItem(t,e){return f.createVNode("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)),f.createVNode("div",{class:"_fc-upload-cover",key:4},[r])}},makeHandleIcon(t,e){const r=f.resolveComponent(this.handleIcon===!0||this.handleIcon===void 0?"EyeOutlined":this.handleIcon);return f.createVNode(r,{class:"_fc-frame-icon",onClick:()=>this.handleClick(t),key:"5"+e},null)},makeRemoveIcon(t,e){return f.createVNode(Qt,{class:"_fc-frame-icon",onClick:()=>this.handleRemove(t),key:"6"+e},null)},makeFiles(){return this.makeGroup(this.fileList.map((t,e)=>this.makeItem(e,[f.createVNode(zt,{size:"20",onClick:()=>this.handleClick(t)},null),this.makeIcons(t,e)])))},makeImages(){return this.makeGroup(this.fileList.map((t,e)=>this.makeItem(e,[f.createVNode("img",{src:this.getSrc(t)},null),this.makeIcons(t,e)])))},makeBtn(){const t=f.resolveComponent(this.icon);return f.createVNode("div",{class:"_fc-upload-btn",onClick:()=>this.showModal(),key:7},[f.createVNode(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:n,footer:s}=this.$props,i=[];return s&&(r&&i.push(f.createVNode(f.resolveComponent("TButton"),{onClick:()=>this.onCancel()!==!1&&this.closeModal(!0)},{default:()=>[e||this.formCreateInject.t("close")||"关闭"]})),n&&i.push(f.createVNode(f.resolveComponent("TButton"),{theme:"primary",onClick:()=>this.onOk()!==!1&&this.closeModal()},{default:()=>[t||this.formCreateInject.t("ok")||"确定"]}))),i}},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:n,src:s,title:i,modalTitle:o}=this.$props;return f.nextTick(()=>{this.$refs.frame&&this.frameLoad(this.$refs.frame.contentWindow||{})}),f.createVNode("div",{class:{"_fc-frame":!0,"_fc-disabled":this.disabled}},[e,f.createVNode(f.resolveComponent("TDialog"),{mask:this.previewMask,header:o,visible:this.previewVisible,style:"width: 600px;",attach:"body","onUpdate:visible":a=>this.previewVisible=a,footer:!1},{default:()=>[f.createVNode("img",{style:"width: 100%",src:this.previewImage,key:1},null)]}),f.createVNode(f.resolveComponent("TDialog"),f.mergeProps(C({width:r,header:i},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?f.createVNode("iframe",{ref:"frame",src:s,frameborder:"0",style:{height:n,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)}}),rr="fcUpload";function Ye(t,e){return typeof t=="object"?t:{url:t,is_string:!0,name:nr(t),status:"success",uid:e}}function et(t){return M(C({},t),{file:t,value:t})}function nr(t){return(""+t).split("/").pop()}const ir=f.defineComponent({name:rr,inheritAttrs:!1,formCreateParser:{toFormValue(t){return j(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:j(this.modelValue).map(Ye).map(et)}},watch:{modelValue(t){this.uploadList=j(t).map(Ye).map(et)}},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,n=(r==null?void 0:r.raw)||(r==null?void 0:r.file)||r;return new Promise((s,i)=>{var a;const o={method:((a=this.$attrs)==null?void 0:a.method)||"post",file:n,filename:this.name||"file",source:"upload",onSuccess:l=>s({status:"success",response:l}),onError:l=>i(l)};this.formCreateInject.api.fetch(o)})}},render(){const{uploadList:t,handleSuccess:e,handleRemove:r,$slots:n}=this;return f.createVNode("div",{class:"_fc-upload",style:"width: 100%;"},[f.createVNode(f.resolveComponent("t-upload"),f.mergeProps({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"}),n)])},mounted(){this.$emit("fc.el",this.$refs.el)}}),p={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&&!p.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=>{p[t]=function(e){return p.type(e,t)}});function k(t,e){return{}.hasOwnProperty.call(t,e)}function L(t,e,r){t[e]=r}function ie(t,e){delete t[e]}function me(t,e={},r){let n=!1;for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)){let i=e[s];if((n=Array.isArray(i))||p.Object(i)){let o=t[s]===void 0;if(n)n=!1,o&&L(t,s,[]);else if(i._clone&&r!==void 0)if(r)i=i.getRule(),o&&L(t,s,{});else{L(t,s,i._clone());continue}else o&&L(t,s,{});t[s]=me(t[s],i,r)}else L(t,s,i),p.Undef(i)||(p.Undef(i.__json)||(t[s].__json=i.__json),p.Undef(i.__origin)||(t[s].__origin=i.__origin))}return r!==void 0&&Array.isArray(t)?t.filter(s=>!s||!s.__ctrl):t}function H(t){return me({},{value:t}).value}const sr=Object.assign||function(t){for(let e,r=1;r<arguments.length;r++)for(let n in e=arguments[r],e)Object.prototype.hasOwnProperty.call(e,n)&&L(t,n,e[n]);return t};function S(){return sr.apply(this,arguments)}function je(t){return typeof t!="object"||t===null?t:t instanceof Array?[...t]:C({},t)}function Y(t,e){var r=null;return function(...n){r!==null&&clearTimeout(r),r=setTimeout(()=>t.call(this,...n),e)}}function tt(t){return t==null?"":typeof t=="object"?JSON.stringify(t,null,2):String(t)}function or(t){return t&&typeof t=="object"&&typeof t.then=="function"}function we(t){return or(t)?t:Promise.resolve(t)}function ge(t){let e=t.replace(/([A-Z])/g,"-$1").toLocaleLowerCase();return e.indexOf("-")===0&&(e=e.substr(1)),e}function rt(t){return t.replace(t[0],t[0].toLocaleUpperCase())}function nt(t,e,r){return`[form-create ${t}]: ${e}`}function Ae(t,e){console.error(nt("err",t))}function ar(t){Ae(t.toString()),console.error(t)}const Pe="[[FORM-CREATE-PREFIX-",Ie="-FORM-CREATE-SUFFIX]]";function ye(t,e){return JSON.stringify(me(Array.isArray(t)?[]:{},t,!0),function(r,n){if(!(n&&n._isVue===!0)){if(typeof n!="function")return n;if(n.__json)return n.__json;if(n.__origin&&(n=n.__origin),!n.__emit)return Pe+n+Ie}},e)}function Ne(t){return new Function("return "+t)()}function G(t,e){if(t&&p.String(t)&&t.length>4){let r=t.trim(),n=!1;try{if(r.indexOf(Ie)>0&&r.indexOf(Pe)===0)r=r.replace(Ie,"").replace(Pe,""),n=!0;else if(r.indexOf("$FN:")===0)r=r.substring(4),n=!0;else if(r.indexOf("$EXEC:")===0)r=r.substring(6),n=!0;else if(r.indexOf("$GLOBAL:")===0){const i=r.substring(8);return r=function(...o){const a=o[0].api.getGlobalEvent(i);if(a)return a.call(this,...o)},r.__json=t,r.__inject=!0,r}else{if(r.indexOf("$FNX:")===0)return r=Ne(`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(")&&(n=!0)}if(!n)return t;let s;try{s=Ne(r)}catch(i){s=Ne("function "+r)}return s.__json=t,s}catch(s){Ae(`解析失败:${r}

err: ${s}`);return}}return t}function it(t,e){return JSON.parse(t,function(r,n){return p.Undef(n)||!n.indexOf?n:G(n,e)})}let lr=0;function Se(){const t=370+ ++lr;return"F"+Math.random().toString(36).substr(3,3)+(+`${Date.now()}`).toString(36)+t.toString(36)+"c"}function ee(t,e,r){let n=t,s;return(e||"").split(".").forEach(i=>{s&&((!n[s]||typeof n[s]!="object")&&(n[s]={}),n=n[s]),s=i}),n[s]=r,n}const ur=f.defineComponent({name:"fcGroup",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:f.markRaw(this.formCreateInject.form.$form())}},emits:["update:modelValue","change","itemMounted","remove","add"],watch:{rule:{handler(t,e){Object.keys(this.cacheRule).forEach(r=>{const n=this.cacheRule[r];if(n.$f){const s=n.$f.formData();if(t===e)n.$f.deferSyncValue(()=>{me(n.rule,t),n.$f.setValue(s)},!0);else{const i=n.$f.formData();n.$f.once("reloading",()=>{n.$f.setValue(i)}),n.rule=H(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,n=r-t.length;if(n<0){for(let s=n;s<0;s++)this.addRule(t.length+s,!0);for(let s=0;s<r;s++)this.setValue(e[s],t[s])}else{if(n>0)for(let s=0;s<n;s++)this.removeRule(e[r-s-1]);t.forEach((s,i)=>{this.setValue(e[i],t[i])})}},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,n=this.sort;if(n.filter(i=>r[i]&&r[i].$f).length!==n.length)return;const s=n.map(i=>{const o=t===i?e:C({},this.cacheRule[i].$f.form),a=this.field?p.Undef(o[this.field])?null:o[this.field]:o;return this.cache(i,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||[]),n=this.options?C({},this.options):{submitBtn:!1,resetBtn:!1};if(this.defaultValue){n.formData||(n.formData={});const s=H(this.defaultValue);S(n.formData,this.field?{[this.field]:s}:s)}this.parse&&this.parse({rule:r,options:n,index:this.sort.length}),this.cacheRule[++this.len]={rule:r,options:n},this.sort=Object.keys(this.cacheRule),e&&f.nextTick(()=>this.$emit("add",r,Object.keys(this.cacheRule).length-1))},add$f(t,e,r){this.cacheRule[e].$f=r,f.nextTick(()=>{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&&f.nextTick(()=>this.$emit("remove",r))},add(t){if(this.disabled||this.onBeforeAdd(this.modelValue)===!1)return;const e=[...this.modelValue];e.push(this.defaultValue?H(this.defaultValue):this.field?null:{}),this.input(e)},del(t,e){if(this.disabled)return;const r=()=>{this.removeRule(e,!0);const n=[...this.modelValue];n.splice(t,1),this.input(n)};we(this.onBeforeRemove(this.modelValue,t)).then(n=>{n!==!1&&r()})},addIcon(t){return f.createVNode("div",{class:"_fc-group-btn _fc-group-plus-minus",onClick:this.add},null)},delIcon(t,e){return f.createVNode("div",{class:"_fc-group-btn _fc-group-plus-minus _fc-group-minus",onClick:()=>this.del(t,e)},null)},sortUpIcon(t){return f.createVNode("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-up",onClick:()=>this.changeSort(t,-1)},null)},sortDownIcon(t){return f.createVNode("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(n=>this.cacheRule[n].$f)),this.formData(0)},sortIcon(t,e){const r=t>0,n=t<e-1,s=[];return!r&&!n?s:this.type==="card"&&r&&n?(s.push(f.createVNode("div",{class:"_fc-group-btn _fc-group-sort"},[f.createVNode("div",{class:" _fc-group-sort-up",onClick:()=>this.changeSort(t,-1)},null),f.createVNode("div",{class:" _fc-group-sort-down",onClick:()=>this.changeSort(t,1)},null)])),s):(r&&s.push(this.sortUpIcon(t)),n&&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 n=[];if((!this.max||t<this.max)&&t===e+1&&n.push(this.addIcon(r)),t>this.min&&n.push(this.delIcon(e,r)),this.sortBtn){const s=this.sortIcon(e,t);s&&n.push(...s)}return n},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,n=this.disabled,s=this.type==="card",i=t.length===0?this.$slots.default?this.$slots.default({vm:this,add:this.add}):f.createVNode("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],c=e&&!n?this.makeIcon(t.length,a,o):[],h=this.getTitle(a,o);return s?f.createVNode("div",{class:"_fc-group-container",key:o},[f.createVNode("div",{class:"_fc-group-header"},[h===!1?f.createVNode("div",{class:"_fc-group-idx"},[a+1]):null,h!==!1?f.createVNode("div",{class:"_fc-group-title"},[h]):null,f.createVNode("div",{class:"_fc-group-handle fc-clock"},[c.length?c:null])]),f.createVNode("div",{class:"_fc-group-content"},[f.createVNode(r,f.mergeProps({key:o},{disabled:n,"onUpdate:modelValue":y=>this.formData(o,y),"onUpdate:api":y=>this.add$f(a,o,y),inFor:!0,modelValue:this.field?{[this.field]:this._value(this.modelValue[a])}:this.modelValue[a],rule:l,option:u,extendOption:!0}),null)])]):f.createVNode("div",{class:"_fc-group-container",key:o},[f.createVNode(r,f.mergeProps({key:o},{disabled:n,"onUpdate:modelValue":y=>this.formData(o,y),"onUpdate:api":y=>this.add$f(a,o,y),inFor:!0,modelValue:this.field?{[this.field]:this._value(this.modelValue[a])}:this.modelValue[a],rule:l,option:u,extendOption:!0}),null),f.createVNode("div",{class:"_fc-group-idx"},[a+1]),c.length?f.createVNode("div",{class:"_fc-group-handle fc-clock"},[c]):null])});return f.createVNode("div",{key:"con",class:"_fc-group "+(n?"_fc-group-disabled":"")+(s?" _fc-group-card":"")},[i])}}),cr=f.defineComponent({name:"fcSubForm",props:{rule:Array,options:{type:Object,default:()=>f.reactive({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:f.markRaw(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,f.nextTick(()=>{this.$emit("itemMounted",t)})}},render(){const t=this.form;return f.createVNode(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)}}),fr={name:"QuestionCircleOutlined"},dr={height:"1em",width:"1em",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"};function hr(t,e,r,n,s,i){return f.openBlock(),f.createElementBlock("svg",dr,[...e[0]||(e[0]=[f.createElementVNode("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),f.createElementVNode("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 pr=[tr,ir,ur,cr,Ce(fr,[["render",hr]])],st=["props"],ot=["class","style","directives"],at=["on","hook"],K=(t,e={},r={})=>{const n=[...st,...r.normal||[]],s=[...ot,...r.array||[]],i=[...at,...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]=K([l[u]],a[u]);else if(n.indexOf(u)>-1)a[u]=C(C({},a[u]),l[u]);else if(s.indexOf(u)>-1){const c=a[u]instanceof Array?a[u]:[a[u]],h=l[u]instanceof Array?l[u]:[l[u]];a[u]=[...c,...h]}else if(i.indexOf(u)>-1)for(const c in l[u])if(a[u][c]){const h=a[u][c]instanceof Array?a[u][c]:[a[u][c]],y=l[u][c]instanceof Array?l[u][c]:[l[u][c]];a[u][c]=[...h,...y]}else a[u][c]=l[u][c];else if(u==="hook")for(let c in l[u])a[u][c]?a[u][c]=mr(a[u][c],l[u][c]):a[u][c]=l[u][c];else a[u]=l[u];else n.indexOf(u)>-1||i.indexOf(u)>-1||o.indexOf(u)>-1?a[u]=C({},l[u]):s.indexOf(u)>-1?a[u]=l[u]instanceof Array?[...l[u]]:typeof l[u]=="object"?C({},l[u]):l[u]:a[u]=l[u];return a},e)},mr=(t,e)=>function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)},lt=["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"],Te=["validate","children","control"],Be=["effect","deep","renderSlots"];function ut(){return[...lt,...st,...ot,...at,...Te,...Be]}function T(t){const e=t.replace(/(-[a-z])/g,function(r){return r.replace("-","").toLocaleUpperCase()});return ct(e)}function ct(t){return t.replace(t[0],t[0].toLowerCase())}function Me(t,e){return{value:t,enumerable:!1,configurable:!1,writable:!0}}function ft(t,e){return dt([t],e||!1)[0]}function dt(t,e){return me([],[...t],e||!1)}const gr={array:Te,normal:Be};function Q(t,e){return K(Array.isArray(e)?e:[e],t,gr),t}function ht(t){const e=p.Function(t.getRule)?t.getRule():t;return e.type||(e.type="input"),e}function yr(t,e){return t?(Object.keys(e||{}).forEach(r=>{e[r]&&(t[r]=Q(t[r]||{},e[r]))}),t):e}function pt(t,e){Object.defineProperties(t,Object.keys(e).reduce((r,n)=>(r[n]={get(){return e[n]()}},r),{}))}function z(t){return t.__fc__||(t.__origin__?t.__origin__.__fc__:null)}function F(t,e){try{e=t()}catch(r){ar(r)}return e}function Ve(){const t={},e=r=>r||"default";return{setSlot(r,n){r=e(r),!(!n||Array.isArray(n)&&n.length)&&(t[r]||(t[r]=[]),t[r].push(n))},getSlot(r,n){r=e(r);const s=[];return(t[r]||[]).forEach(i=>{if(Array.isArray(i))s.push(...i);else if(p.Function(i)){const o=i(...n||[]);Array.isArray(o)?s.push(...o):s.push(o)}else p.Undef(i)||s.push(i)}),s},getSlots(){const r={};return Object.keys(t).forEach(n=>{r[n]=(...s)=>this.getSlot(n,s)}),r},slotLen(r){return r=e(r),t[r]?t[r].length:0},mergeBag(r){if(!r)return this;const n=p.Function(r.getSlots)?r.getSlots():r;return Array.isArray(r)||f.isVNode(r)?this.setSlot(void 0,()=>r):Object.keys(n).forEach(s=>{this.setSlot(s,n[s])}),this}}}function mt(t){const e=C({},t.props||{});return Object.keys(t.on||{}).forEach(r=>{r.indexOf("-")>0&&(r=T(r));const n=`on${rt(r)}`;Array.isArray(e[n])?e[n]=[...e[n],t.on[r]]:e[n]?e[n]=[e[n],t.on[r]]:e[n]=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 Fe(t,e){return Object.setPrototypeOf(t,e),t}const gt=(t,e)=>typeof t=="string"?String(e):typeof t=="number"?Number(e):e,se={"==":(t,e)=>JSON.stringify(t)===JSON.stringify(gt(t,e)),"!=":(t,e)=>!se["=="](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(gt(t[0],e))>-1},notOn(t,e){return!se.on(t,e)},in(t,e){return e&&e.indexOf&&e.indexOf(t)>-1},notIn(t,e){return!se.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 p.empty(t)},notEmpty(t){return!p.empty(t)},pattern(t,e){return new RegExp(e,"g").test(t)}};function N(t,e){return(Array.isArray(e)?e:(e||"").split(".")).forEach(r=>{t!=null&&(t=t[r])}),t}function br(t){const e=/{{\s*(.*?)\s*}}/g;let r;const n={};for(;(r=e.exec(t))!==null;)r[1]&&(n[r[1]]=!0);return Object.keys(n)}function yt(t){let e=t.split("."),r=[],n="";return e.forEach((s,i)=>{i===0?n=s:n+="."+s,r.push(n)}),r.join(" && ")}function bt(t){const e=[];let r="",n=0;for(let s=0;s<t.length;s++){const i=t[s];i==="["?(n===0&&r&&(e.push({type:"key",value:r}),r=""),n++,r+=i):i==="]"?(n--,r+=i,n===0&&(e.push({type:"bracket",value:bt(r.slice(1,-1))}),r="")):i==="."&&n===0?r&&(e.push({type:"key",value:r}),r=""):r+=i}return r&&e.push({type:"key",value:r}),e.map(s=>s.type==="key"?{key:s.value}:{children:s.value})}const Oe=(t,e)=>{if(!(!t||t===e)){if(t.props.formCreateInject)return t.props.formCreateInject;if(t.parent)return Oe(t.parent,e)}};function $r(){return typeof document!="undefined"&&typeof document.createElement=="function"&&document.head!=null}function _r(t,e,r){return f.defineComponent({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(n){const s=f.getCurrentInstance();f.provide("parentFC",s);const i=f.inject("parentFC",null);let o=i;if(i)for(;o.setupState.parent;)o=o.setupState.parent;else o=s;const{rule:a,modelValue:l,subForm:u,inFor:c}=f.toRefs(n),h=f.reactive({ctxInject:{},destroyed:!1,isShow:!0,unique:1,renderRule:[...a.value||[]]});let y=JSON.stringify(l.value||{});const m=new t(s),$=m.api(),w=c.value,v=()=>{if(i){const E=Oe(s,i);if(E){let D;w?(D=j(E.getSubForm()),D.push($)):D=$,E.subForm(D)}}},Z=()=>{const E=Oe(s,i);if(E)if(w){const D=j(E.getSubForm()),x=D.indexOf($);x>-1&&D.splice(x,1)}else E.subForm()};let P=null;f.onBeforeMount(()=>{$r()&&f.watchEffect(()=>{let E="";const D=n.option&&n.option.globalClass||{};Object.keys(D).forEach(x=>{let pe="";D[x].style&&Object.keys(D[x].style).forEach(Re=>{pe+=ge(Re)+":"+D[x].style[Re]+";"}),D[x].content&&(pe+=D[x].content+";"),pe&&(E+=`.${x}{${pe}}`)}),n.option&&n.option.style&&(E+=n.option.style),P||(P=document.createElement("style"),P.type="text/css",document.head.appendChild(P)),P.innerHTML=E||""})});const B=Y(()=>{m.bus.$emit("$loadData.$topForm")},100),de=Y(function(){m.bus.$emit("$loadData.$scopeForm")},100),Ke=Y(()=>{m.bus.$emit("$loadData.$form")},100),he=E=>{m.bus.$emit("change-$form."+E)};return f.onMounted(()=>{i&&($.top.bus.$on("$loadData.$form",B),$.top.bus.$on("change",he)),$!==$.scope&&$.scope.bus.$on("$loadData.$scopeForm",de),m.mounted()}),f.onBeforeUnmount(()=>{i&&($.top.bus.$off("$loadData.$form",B),$.top.bus.$off("change",he)),$!==$.scope&&$.scope.bus.$off("$loadData.$scopeForm",de),Z(),h.destroyed=!0,m.unmount(),P&&P.parentNode&&P.parentNode.removeChild(P)}),f.onUpdated(()=>{m.updated()}),v(),f.watch(()=>n.option,()=>{m.initOptions(),$.refresh()},{deep:!0,flush:"sync"}),f.watch(()=>[...a.value],E=>{m.$handle.isBreakWatch()||E.length===h.renderRule.length&&E.every(D=>h.renderRule.indexOf(D)>-1)||(m.$handle.updateAppendData(),m.$handle.reloadRule(a.value),s.setupState.renderRule())}),f.watch(()=>[n.disabled,n.preview],()=>{$.refresh()}),f.watch(l,E=>{ye(E||{})!==y&&($.config.forceCoverValue?$.coverValue(E||{}):$.setValue(E||{}))},{deep:!0,flush:"post"}),f.watch(()=>n.index,()=>{$.coverValue({}),m.$handle.updateAppendData(),f.nextTick(()=>{f.nextTick(()=>{$.clearValidateState()})})},{flush:"sync"}),M(C({fc:f.markRaw(m),parent:i&&f.markRaw(i),top:f.markRaw(o),fapi:f.markRaw($)},f.toRefs(h)),{getGroupInject:()=>Oe(s,i),refresh(){++h.unique},renderRule(){h.renderRule=[...a.value||[]]},updateValue(E){if(h.destroyed)return;const D=ye(E);y!==D&&(y=D,s.emit("update:modelValue",E),f.nextTick(()=>{Ke(),i?u.value||de():(B(),de())}))}})},created(){const n=f.getCurrentInstance();n.emit("update:api",n.setupState.fapi),n.setupState.fc.init()}})}function $t(){return{props:{},on:{},options:[],children:[],hidden:!1,display:!0,value:void 0}}function U(t,e){return(r,n,s,i={})=>{const o=new Le(t,r,n,s,i);return e&&(p.Function(e)?e(o):o.props(e)),o}}function Le(t,e,r,n,s){this._data=S($t(),{type:t,title:e,field:r,value:n,props:s||{}}),this.event=this.on}S(Le.prototype,{getRule(){return this._data},setProp(t,e){return L(this._data,t,e),this},modelField(t){return this._data.modelField=t,this},_clone(){const t=new this.constructor;return t._data=ft(this._data),t}});function _t(t){t.forEach(e=>{Le.prototype[e]=function(r){return Q(this._data,{[e]:arguments.length<2?r:{[r]:arguments[1]}}),this}})}_t(ut());const Cr=U("");function wr(t,e,r){let n=Cr("",e);return n._data.type=t,n._data.title=r,n}function Sr(){return{create:wr,factory:U}}function Vr(t,e,r){const n=`fail to ${t} ${r.status}'`,s=new Error(n);return s.status=r.status,s.url=t,s}function Ct(t){const e=t.responseText||t.response;if(!e)return e;try{return JSON.parse(e)}catch(r){return e}}function wt(t){if(typeof XMLHttpRequest=="undefined")return;const e=new XMLHttpRequest;let r=t.action||"";if(e.upload&&t.onProgress&&e.upload.addEventListener("progress",i=>{i.percent=i.total>0?i.loaded/i.total*100:0,t.onProgress(i)}),t.query){const i=p.String(t.query)?t.query:Object.keys(t.query).reduce((a,l)=>(a[l]=t.query[l]===null||t.query[l]===void 0?"":t.query[l],a),{}),o=new URLSearchParams(i).toString();o&&(r.includes("?")?r+=`&${o}`:r+=`?${o}`)}e.onerror=function(o){t.onError(o)},e.onload=function(){if(e.status<200||e.status>=300)return t.onError(Vr(r,t,e),Ct(e));t.onSuccess(Ct(e))},e.open(t.method||"get",r,!0);let n;(t.data||t.file)&&(t.file||(t.dataType||"").toLowerCase()!=="json"?(n=new FormData,Object.keys(t.data||{}).map(i=>{n.append(i,t.data[i])})):(n=JSON.stringify(t.data||{}),e.setRequestHeader("content-type","application/json"))),t.file&&n.append(t.filename,t.file,t.file.name),t.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);const s=t.headers||{};Object.keys(s).forEach(i=>{s[i]!=null&&e.setRequestHeader(i,s[i])}),e.send(n)}function St(t,e,r){return new Promise((n,s)=>{(e||wt)(M(C({},t),{onSuccess(i){let o=l=>l;const a=G(t.parse);p.Function(a)?o=a:a&&p.String(a)&&(o=l=>N(l,a)),we(o(i,t.targetRule,r)).then(l=>{n(l)})},onError(i){s(i)}}))})}function be(t){return H(t)}function Fr(t){function e(i){return p.Undef(i)?i=t.fields():Array.isArray(i)||(i=[i]),i}function r(i,o,a){p.Undef(i)?i=Object.keys(C(C({},t.fieldCtx),t.nameCtx)):Array.isArray(i)||(i=[i]),i.forEach(l=>{const u=t.fieldCtx[l]||t.nameCtx[l];u&&u.forEach(c=>{L(c.rule,o,a),t.$render.clearCache(c)})})}function n(){const i=t.subForm;return Object.keys(i).reduce((o,a)=>{const l=i[a];return l&&(Array.isArray(l)?o.push(...l):o.push(l)),o},[])}const s={get isScope(){return t.vm.props.subForm===!1},get isPreview(){return t.preview},get config(){return t.options},set config(i){t.fc.options.value=i},get options(){return t.options},set options(i){t.fc.options.value=i},get form(){return t.form},get rule(){return t.rules},get parent(){return t.vm.setupState.parent&&t.vm.setupState.parent.setupState.fapi},get top(){return s.parent?s.parent.top:s},get scope(){let i=t.vm;for(;i&&i.setupState.fapi;)if(i.props.subForm)i=i.setupState.parent;else return i.setupState.fapi;return s.top},get children(){return n()},get siblings(){const i=t.vm.setupState.getGroupInject();if(i){const o=i.getSubForm();if(Array.isArray(o))return[...o]}},get index(){const i=s.siblings;if(i){const o=i.indexOf(s);return o>-1?o:void 0}},get formulas(){return C({},t.fc.formulas)},formData(i){if(i==null||typeof i=="boolean"){const o={};return Object.keys(t.form).forEach(a=>{(i===!0||t.ignoreFields.indexOf(a)===-1)&&(o[a]=be(t.form[a]))}),o}else return e(i).reduce((o,a)=>(o[a]=s.getValue(a),o),{})},getValue(i){const o=t.getFieldCtx(i);return o?be(o.rule.value):t.options.appendValue!==!1&&k(t.appendData,i)?be(t.appendData[i]):void 0},coverValue(i){const o=C({},i||{});t.deferSyncValue(()=>{t.appendData={},s.fields().forEach(a=>{const l=t.fieldCtx[a];if(l){const u=k(i,a);l.forEach(c=>{c.rule.value=u?i[a]:void 0}),delete o[a]}}),S(t.appendData,o)},!0)},setValue(i){let o=i;arguments.length>=2&&(o={[i]:arguments[1]}),t.deferSyncValue(()=>{Object.keys(o).forEach(a=>{const l=t.fieldCtx[a];if(!l)return t.appendData[a]=o[a];l.forEach(u=>{u.rule.value=o[a]})})},!0)},removeField(i){const o=t.getCtx(i);return t.deferSyncValue(()=>{t.getCtxs(i).forEach(a=>{a.rm()})},!0),o?o.origin:void 0},removeRule(i){const o=i&&z(i);if(o)return o.rm(),o.origin},fields:()=>t.fields(),append:(i,o,a)=>{let l=t.sort.length-1,u;const c=t.getCtx(o);if(c)if(a){if(u=c.getPending("children",c.rule.children),!Array.isArray(u))return;l=c.rule.children.length-1}else l=c.root.indexOf(c.origin),u=c.root;else u=t.rules;u.splice(l+1,0,i)},prepend:(i,o,a)=>{let l=0,u;const c=t.getCtx(o);if(c)if(a){if(u=c.getPending("children",c.rule.children),!Array.isArray(u))return}else l=c.root.indexOf(c.origin),u=c.root;else u=t.rules;u.splice(l,0,i)},hidden(i,o){r(o,"hidden",!!i),t.refresh()},hiddenStatus(i){const o=t.getCtx(i);if(o)return!!o.rule.hidden},display(i,o){r(o,"display",!!i),t.refresh()},displayStatus(i){const o=t.getCtx(i);if(o)return!!o.rule.display},disabled(i,o){e(o).forEach(a=>{t.getCtxs(a).forEach(l=>{L(l.rule.props,"disabled",!!i)})}),t.refresh()},all(i){return Object.keys(t.ctxs).map(o=>{const a=t.ctxs[o];return i?a.origin:a.rule})},model(i){return t.fields().reduce((o,a)=>{const l=t.fieldCtx[a][0];return o[a]=i?l.origin:l.rule,o},{})},component(i){return Object.keys(t.nameCtx).reduce((o,a)=>{const l=t.nameCtx[a].map(u=>i?u.origin:u.rule);return o[a]=l.length===1?l[0]:l,o},{})},bind(){return s.form},reload:i=>{t.reloadRule(i)},updateOptions(i){t.fc.updateOptions(i),s.refresh()},onSubmit(i){s.updateOptions({onSubmit:i})},sync:i=>{if(Array.isArray(i)){i.forEach(a=>s.sync(a));return}let o=p.Object(i)?z(i):t.getCtxs(i);o&&(o=Array.isArray(o)?o:[o],o.forEach(a=>{if(!a.deleted){const l=t.subForm[a.id];l&&(Array.isArray(l)?l.forEach(u=>{u.refresh()}):l&&l.refresh()),t.$render.clearCache(a)}}),t.refresh())},refresh:()=>{n().forEach(i=>{i.refresh()}),t.$render.clearCacheAll(),t.refresh()},refreshOptions(){t.$manager.updateOptions(t.options),s.refresh()},hideForm:i=>{t.vm.setupState.isShow=!i},changeStatus:()=>t.changeStatus,clearChangeStatus:()=>{t.changeStatus=!1},updateRule(i,o){t.getCtxs(i).forEach(a=>{S(a.rule,o)})},updateRules(i){Object.keys(i).forEach(o=>{s.updateRule(o,i[o])})},mergeRule:(i,o)=>{t.getCtxs(i).forEach(a=>{Q(a.rule,o)})},mergeRules(i){Object.keys(i).forEach(o=>{s.mergeRule(o,i[o])})},getRule:(i,o)=>{const a=t.getCtx(i);if(a)return o?a.origin:a.rule},findType(i,o){let a;return Object.keys(t.ctxs).forEach(l=>{const u=t.ctxs[l];u.rule.type===i&&(a=o?u.origin:u.rule)}),a},findTypes(i,o){let a=[];return Object.keys(t.ctxs).forEach(l=>{const u=t.ctxs[l];u.rule.type===i&&a.push(o?u.origin:u.rule)}),a},getRenderRule:i=>{const o=t.getCtx(i);if(o)return o.prop},getRefRule:i=>{const o=t.getCtxs(i);if(o){const a=o.map(l=>l.rule);return a.length===1?a[0]:a}},setEffect(i,o,a){const l=t.getCtx(i);l&&o&&(o[0]==="$"&&(o=o.substr(1)),k(l.rule,"$"+o)&&L(l.rule,"$"+o,a),k(l.rule,"effect")||(l.rule.effect={}),L(l.rule.effect,o,a))},clearEffectData(i,o){const a=t.getCtx(i);a&&(o&&o[0]==="$"&&(o=o.substr(1)),a.clearEffectData(o),s.sync(i))},updateValidate(i,o,a){a?s.mergeRule(i,{validate:o}):r(i,"validate",o)},updateValidates(i,o){Object.keys(i).forEach(a=>{s.updateValidate(a,i[a],o)})},refreshValidate(){s.refresh()},resetFields(i){e(i).forEach(o=>{t.getCtxs(o).forEach(a=>{t.$render.clearCache(a),a.rule.value=be(a.defaultValue)})}),f.nextTick(()=>{f.nextTick(()=>{f.nextTick(()=>{s.clearValidateState(i)})})}),i==null&&(p.Function(t.options.onReset)&&F(()=>t.options.onReset(s)),t.vm.emit("reset",s))},method(i,o){const a=s.el(i);if(!a||!a[o])throw new Error(nt("err",`${o} 方法不存在`));return(...l)=>a[o](...l)},exec(i,o,...a){return F(()=>s.method(i,o)(...a))},toJson(i){return ye(s.rule,i)},trigger(i,o,...a){const l=s.el(i);l&&l.$emit(o,...a)},el(i){const o=t.getCtx(i);if(o)return o.el||t.vm.refs[o.ref]},scrollTo(i,o={block:"center",inline:"nearest",behavior:"smooth"}){const a=s.el(i);if(!a)return;const l=a.$el!==void 0?a.$el:a;if(!l)return;const u=l.nodeType===1?l:l.firstElementChild;u&&typeof u.scrollIntoView=="function"&&u.scrollIntoView(o)},focus(i){const o=s.el(i);if(!o)return;const a=h=>!h||typeof h.focus!="function"?!1:(F(()=>h.focus()),!0);if(a(o))return;const l=o.$el!==void 0?o.$el:o;if(a(l))return;const u=l&&(l.nodeType===1?l:l.firstElementChild);if(a(u)||!u||!u.querySelector)return;const c=u.querySelector('input:not([type=hidden]):not([disabled]),textarea:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])');a(c)},closeModal:i=>{t.bus.$emit("fc:closeModal:"+i)},getSubForm(i){const o=t.getCtx(i);return o?t.subForm[o.id]:void 0},getChildrenRuleList(i){const o=typeof i=="object",a=o?z(i):t.getCtx(i),l=a?a.rule:o?i:s.getRule(i);if(!l)return[];const u=[];return(h=>{h&&h.forEach(y=>{typeof y=="object"&&(y.field&&u.push(y),u.push(...s.getChildrenRuleList(y)))})})(a?a.loadChildrenPending():l.children),u},getParentRule(i){return(typeof i=="object"?z(i):t.getCtx(i)).parent.rule},getParentSubRule(i){const a=typeof i=="object"?z(i):t.getCtx(i);if(a){const l=a.getParentGroup();if(l)return l.rule}},getChildrenFormData(i,o){return s.getChildrenRuleList(i).reduce((l,u)=>((u.ignore!==!0||o===!0)&&(l[u.field]=be(u.value)),l),{})},setChildrenFormData(i,o,a){const l=s.getChildrenRuleList(i);t.deferSyncValue(()=>{l.forEach(u=>{k(o,u.field)?u.value=o[u.field]:a&&(u.value=void 0)})})},getGlobalEvent(i){let o=s.options.globalEvent[i];if(o)return typeof o=="object"&&(o=o.handle),G(o)},getGlobalData(i){return new Promise((o,a)=>{let l=s.options.globalData[i];l?l.type==="fetch"?s.fetch(l).then(u=>{o(u)}).catch(a):o(l.data):o(t.fc.loadData[i])})},emitGlobalEvent(i,...o){const a=s.getGlobalEvent(i);if(a){const l=t.getInjectData({},void 0);return l.args=[...o],o.unshift(l),a.apply(null,o)}},setGlobalData(i,o){s.setData("$globalData."+i,o)},setGlobalVar(i,o){s.setData("$var."+i,o)},renderRule(i,o,a){const u=typeof i=="object"?z(i):t.getCtx(i);return u?t.$render.createRuleVnode(u,o,a):void 0},renderChildren(i,o,a){const u=typeof i=="object"?z(i):t.getCtx(i);return u?t.$render.createChildrenVnodes(u,o,a):void 0},nextTick(i){t.bus.$once("next-tick",i),t.refresh()},nextRefresh(i){t.nextRefresh(),i&&F(i)},deferSyncValue(i,o){t.deferSyncValue(i,o)},emit(i,...o){t.vm.emitsOptions&&!t.vm.emitsOptions[i]&&(t.vm.emitsOptions[i]=null),t.vm.emit(i,...o)},bus:t.bus,getCurrentFormRule(){var i;return(i=t.vm.setupState.getGroupInject())==null?void 0:i.rule},fetch(i){return new Promise((o,a)=>{let l=C({},i);l=t.loadFetchVar(l);const u=c=>{F(()=>l.onError&&l.onError(c)),a(c)};t.beforeFetch(l).then(()=>St(l,t.fc.create.fetch,s).then(c=>{F(()=>l.onSuccess&&l.onSuccess(c)),o(c)}).catch(c=>{u(c)})).catch(c=>{u(c)})})},watchFetch(i,o,a,l){return t.fc.watchLoadData((u,c)=>{let h=C({},i);if(h=t.loadFetchVar(h,u),l&&l(h,c)===!1)return;const y=m=>{F(()=>h.onError&&h.onError(m)),a&&a(m)};t.beforeFetch(h).then(()=>St(h,t.fc.create.fetch,s).then(m=>{F(()=>h.onSuccess&&h.onSuccess(m)),o&&o(m,c)}).catch(m=>{y(m)})).catch(m=>{y(m)})},i.wait==null?1e3:i.wait)},getData(i,o){return t.fc.get?t.fc.get(i,o):t.fc.getLoadData(i,o)},watchData(i){return t.fc.watchLoadData((o,a)=>{F(()=>i(o,a))})},setData(i,o,a){return t.fc.setData(i,o,a)},refreshData(i){return t.fc.refreshData(i)},t(i,o){return t.fc.t(i,o)},getLocale(){return t.fc.getLocale()},helper:{tidyFields:e,props:r}};return["on","once","off"].forEach(i=>{s[i]=function(...o){t.bus[`$${i}`](...o)}}),s.changeValue=s.changeField=s.setValue,s}function Or(t){S(t.prototype,{initCache(){this.clearCacheAll()},clearCache(e){if(!e.rule.cache){if(!this.cache[e.id]){e.parent&&this.clearCache(e.parent);return}(this.cache[e.id].use===!0||this.cache[e.id].parent)&&this.$handle.refresh(),this.cache[e.id].parent&&this.clearCache(this.cache[e.id].parent),this.cache[e.id]=null}},clearCacheAll(){this.cache={}},setCache(e,r,n){this.cache[e.id]={vnode:r,use:!1,parent:n,slot:e.rule.slot}},getCache(e){const r=this.cache[e.id];if(r)return r.use=!0,r.vnode}})}function vr(t){S(t.prototype,{initRender(){this.cacheConfig={}},getTypeSlot(e){const r=n=>{if(n){let s;return e.rule.field&&(s=n.slots["field-"+ge(e.rule.field)]||n.slots["field-"+e.rule.field]),s||(s=n.slots["type-"+ge(e.type)]||n.slots["type-"+e.type]),s||r(n.setupState.parent)}};return r(this.vm)},render(){if(!this.vm.setupState.isShow)return;this.$manager.beforeRender(),this.applyShowNumber(this.$manager.rule);const e=Ve();return this.sort.forEach(r=>{this.renderSlot(e,this.$handle.ctxs[r])}),this.$manager.render(e)},applyShowNumber(e){const r=this.$handle.options||{};if(!r.showNumber||!e)return;e.class=this.mergeClass(e.class,"is-numbered"),r.showNumber==="chinese"&&(e.class=this.mergeClass(e.class,"is-number-chinese"));const n=r.numberColor,s=(r.form||{}).style;if(!n){e.style=s;return}p.String(s)?e.style=`${s};--fc-number-color:${n}`:Array.isArray(s)?e.style=s.concat({"--fc-number-color":n}):e.style=M(C({},s||{}),{"--fc-number-color":n})},renderSlot(e,r,n){if(this.isFragment(r)){r.initProp(),this.mergeGlobal(r),r.initNone();const s=this.renderChildren(r.loadChildrenPending(),r),i=s.default;i&&e.setSlot(r.rule.slot,()=>i()),delete s.default,e.mergeBag(s)}else e.setSlot(r.rule.slot,this.renderCtx(r,n))},mergeGlobal(e){if(!this.$handle.options.global)return;const{trueType:n,originType:s,type:i}=e;this.cacheConfig[n]||(this.cacheConfig[n]=f.computed(()=>{const o=this.$handle.options.global;return Q({},[o["*"]||o.default||{},o[s]||o[i]||{}])})),e.prop=Q({},[this.cacheConfig[e.trueType].value,e.prop])},setOptions(e){const r=e.loadPending({key:"options",origin:e.prop.options,def:[]});e.prop.options=r,e.prop.optionsTo&&r&&ee(e.prop,e.prop.optionsTo,r)},deepSet(e){const r=e.prop.deep;r&&Object.keys(r).sort((n,s)=>n.length<s.length?-1:1).forEach(n=>{ee(e.prop,n,r[n])})},parseSide(e,r){return p.Object(e)?Q({props:{formCreateInject:r.prop.props.formCreateInject}},e):e},renderSides(e,r,n){const s=r[n?"rule":"prop"];return[this.renderRule(this.parseSide(s.prefix,r)),e,this.renderRule(this.parseSide(s.suffix,r))]},renderId(e,r){const n=this.$handle[r==="field"?"fieldCtx":"nameCtx"][e];return n?n.map(s=>this.renderCtx(s,s.parent)):void 0},renderCtx(e,r){try{if(e.type==="hidden")return;const n=e.rule;if(this.force||!this.cache[e.id]||this.cache[e.id].slot!==n.slot){let s;e.initProp(),this.mergeGlobal(e),e.initNone(),this.$manager.tidyRule(e),this.deepSet(e),this.setOptions(e),this.ctxProp(e);let i=e.prop;i.preview=!!(i.preview!=null?i.preview:this.$handle.preview),i.props.formCreateInject=this.injectProp(e);let o=i.cache!==!1;const a=i.preview;if(i.hidden){this.setCache(e,void 0,r);return}s=(...l)=>{var $,w;const u={rule:n,prop:i,preview:a,api:this.$handle.api,model:i.model||{},slotValue:l};l.length&&n.slotUpdate&&F(()=>n.slotUpdate(u));let c={};const h=e.loadChildrenPending();e.parser.renderChildren?c=e.parser.renderChildren(h,e):e.parser.loadChildren!==!1&&(c=this.renderChildren(h,e)),Object.keys(i.renderSlots||{}).forEach(v=>{c[v]=(...Z)=>{if(p.Function(i.renderSlots[v]))return F(()=>i.renderSlots[v](...Z));const P=this.parseSide(i.renderSlots[v],e);return this.renderRule(P)}});const y=this.getTypeSlot(e);let m;return y?(u.children=c,m=y(u)):m=a?e.parser.preview(je(c),e):e.parser.render(je(c),e),m=this.renderSides(m,e),($=i.title)!=null&&$.show&&(i.wrap=C({show:!0},i.wrap||{}),i.native||(i.native=!1)),(!(!e.input&&p.Undef(i.native))||((w=i.col)==null?void 0:w.show)===!0)&&i.native!==!0&&(this.fc.targetFormDriver("updateWrap",e),m=this.$manager.makeWrap(e,m)),e.none&&(Array.isArray(m)?m=m.map(v=>!v||!v.__v_isVNode?v:this.none(v)):m=this.none(m)),o&&this.setCache(e,()=>this.stable(m),r),m},this.setCache(e,s,r)}return(...s)=>{const i=this.getCache(e);if(i)return i(...s);if(this.cache[e.id])return;const o=this.renderCtx(e,e.parent);if(o)return o()}}catch(n){console.error(n);return}},none(e){if(e)return e.props.class=this.mergeClass(e.props.class,"fc-none"),e},mergeClass(e,r){if(Array.isArray(e))e.push(r);else return e?[e,r]:r;return e},stable(e){return(Array.isArray(e)?e:[e]).forEach(n=>{n&&n.__v_isVNode&&n.children&&typeof n.children=="object"&&(n.children.$stable=!0,this.stable(n.children))}),e},getModelField(e){return e.prop.modelField||e.parser.modelField||this.fc.modelFields[this.vNode.aliasMap[e.type]]||this.fc.modelFields[e.type]||this.fc.modelFields[e.originType]||"modelValue"},isFragment(e){return e.type==="fragment"||e.type==="template"},injectProp(e){const r=this.vm.setupState;r.ctxInject[e.id]||(r.ctxInject[e.id]={api:this.$handle.api,form:this.fc.create,subForm:s=>{this.$handle.addSubForm(e,s)},getSubForm:()=>this.$handle.subForm[e.id],slots:()=>this.vm.setupState.top.slots,getWrap:()=>this.vm.refs[e.wrapRef],options:[],children:[],preview:!1,id:e.id,field:e.field,rule:e.rule,input:e.input,t:(...s)=>this.$handle.api.t(...s),updateValue:s=>{this.$handle.onUpdateValue(e,s)}});const n=r.ctxInject[e.id];return S(n,{preview:e.prop.preview,options:e.prop.options,children:e.loadChildrenPending()}),n},ensureCtxHandlers(e){if(e.handlers)return e.handlers;const r=this;return e.handlers={vnodeMounted(n){n.el.__rule__=e.rule,r.onMounted(e,n.el)},vnodeBeforeUnmount(){r.$handle.effect(e,"beforeUnmount"),r.$handle.targetHook(e,"beforeUnmount")},fcUpdateValue(n){r.$handle.onUpdateValue(e,n)},fcEl(n){e.exportEl=n,n&&((n.$el||n).__rule__=e.rule)},modelCallback(n){r.tmpInput&&r.tmpInput(e.field,n,e.rule),r.onInput(e,n)},modelEmit(){r.onEmitInput(e)}},e.handlers},ctxProp(e){const{ref:r,key:n,rule:s}=e;this.$manager.mergeProp(e),e.parser.mergeProp(e);const i=this.ensureCtxHandlers(e),o=[{ref:r,key:s.key||`${n}fc`,slot:void 0,on:{vnodeMounted:i.vnodeMounted,vnodeBeforeUnmount:i.vnodeBeforeUnmount,"fc.updateValue":i.fcUpdateValue,"fc.el":i.fcEl}}];if(e.input){this.vm.props.disabled===!0&&(e.prop.props.disabled=!0);const a=this.getModelField(e),l={callback:i.modelCallback,modelField:a,value:this.$handle.getFormData(e)};o.push({on:C({[`update:${a}`]:l.callback},e.prop.modelEmit?{[e.prop.modelEmit]:i.modelEmit}:{}),props:{[a]:l.value}}),e.prop.model=l}return K(o,e.prop),e.prop},onMounted(e,r){e.el=this.vm.refs[e.ref]||r,e.parser.mounted(e),this.$handle.effect(e,"mounted"),this.$handle.targetHook(e,"mounted")},onInput(e,r){if(e.prop.modelEmit){this.$handle.onBaseInput(e,r);return}this.$handle.onInput(e,r)},onEmitInput(e){this.$handle.setValue(e,e.parser.toValue(e.modelValue,e),e.modelValue)},renderChildren(e,r){if(!p.trueArray(e))return{};const n=Ve();return e.map(s=>{if(s){if(p.String(s)||p.Number(s))return n.setSlot(null,`${s}`);if(s.__fc__)return this.renderSlot(n,s.__fc__,r);s.type&&f.nextTick(()=>{this.$handle.loadChildren(e,r),this.$handle.refresh()})}}),n.getSlots()},defaultRender(e,r){const n=e.prop;return n.component?typeof n.component=="string"?this.vNode.make(n.component,n,r):this.vNode.makeComponent(n.component,n,r):this.vNode[e.type]?this.vNode[e.type](n,r):this.vNode[e.originType]?this.vNode[e.originType](n,r):this.vNode.make(ct(n.type),n,r)},createChildrenVnodes(e,r,n){this.force=n!==!1,this.tmpInput=r;const s=this.renderChildren(e.rule.children,e);return this.force=!1,this.tmpInput=null,s},createRuleVnode(e,r,n){this.force=n!==!1,this.tmpInput=r;const s=Ve();return this.renderSlot(s,e,e.parent),this.force=!1,this.tmpInput=null,s.getSlots()},renderRule(e,r,n){if(!e)return;if(p.String(e)||p.Number(e))return`${e}`;let s;if(n)s=e.type;else if(s=e.is,e.type){s=T(e.type);const a=this.vNode.aliasMap[s];a&&(s=T(a))}if(!s)return;const i=Ve();p.trueArray(e.children)&&e.children.forEach(a=>{a&&i.setSlot(a==null?void 0:a.slot,()=>this.renderRule(a))});const o=C({},e);return delete o.type,delete o.is,this.vNode.make(s,o,i.mergeBag(r).getSlots())}})}let Rr=1;function Ue(t){S(this,{$handle:t,fc:t.fc,vm:t.vm,$manager:t.$manager,vNode:new t.fc.CreateNode(t),force:!1,tmpInput:null,id:Rr++}),pt(this,{options(){return t.options},sort(){return t.sort}}),this.initCache(),this.initRender()}Or(Ue),vr(Ue);function kr(t){S(t.prototype,{parseInjectEvent(e,r){const n=e.inject||this.options.injectEvent;return this.parseEventLst(e,r,n)},parseEventLst(e,r,n,s){return Object.keys(r).forEach(i=>{const o=this.parseEvent(e,r[i],n,s);o&&(r[i]=o)}),r},parseEvent(e,r,n,s){if(p.Function(r)&&(n!==!1&&!p.Undef(n)||r.__inject))return this.inject(e,r,n);if(!s&&Array.isArray(r)&&r[0]&&(p.String(r[0])||p.Function(r[0])))return this.parseEventLst(e,r,n,!0);if(p.String(r)){const i=G(r);if(i&&r!==i)return i.__inject?this.parseEvent(e,i,n,!0):i}},parseEmit(e){let r={},n=e.rule,{emitPrefix:s,field:i,name:o,inject:a}=n,l=n.emit||[];return p.trueArray(l)&&l.forEach(u=>{if(!u)return;let c,h=s||i||o;if(p.Object(u)&&(c=u.inject,u=u.name,h=u.prefix||h),h){const y=ge(`${h}-${u}`),m=(...$)=>{this.vm.emitsOptions&&!this.vm.emitsOptions[y]&&(this.vm.emitsOptions[y]=null),this.vm.emit(y,...$),this.vm.emit("emit-event",y,...$),this.bus.$emit(y,...$)};if(m.__emit=!0,!c&&a===!1)r[T(u)]=m;else{let $=c||a||this.options.injectEvent;r[T(u)]=p.Undef($)?m:this.inject(n,m,$)}}}),e.computed.on=r,r},getInjectData(e,r){const n=e.__fc__&&e.__fc__.$api,s=e.__fc__&&e.__fc__.$handle.vm||this.vm,{option:i,rule:o}=s.props;return{$f:n||this.api,api:n||this.api,rule:o,self:e.__origin__,option:i,inject:r}},inject(e,r,n){if(r.__origin){if(this.watching&&!this.loading)return r;r=r.__origin}const s=this,i=function(...o){const a=s.getInjectData(e,n);return a.args=[...o],o.unshift(a),r.apply(this,o)};return i.__origin=r,i.__json=r.__json,i},loadStrVar(e,r,n){if(e&&typeof e=="string"&&e.indexOf("{{")>-1&&e.indexOf("}}")>-1){const s=e,i=br(e),o=u=>{let c=!1,h;if(n&&u.indexOf("$form.")===0){const y=u.split(".");y.shift(),k(n.value,y[0])&&(c=!0,h=r?r({id:"$form."+y[0]+"_"+n.rule.__fc__.id,getValue:()=>N(n.value,y)}):N(n.value,y))}return c||(h=r?r(u):this.fc.getLoadData(u)),h},a=u=>{const c=[];u.forEach(y=>{y.key?c.push(y.key):y.children&&c.push(a(y.children))});let h=!1;return c.forEach((y,m)=>{y!=null&&(y.indexOf("'")===0||y.indexOf('"')===0)&&(c[m]=y.slice(1,-1),h=!0)}),c.length===1&&(h||!isNaN(Number(c[0])))?c[0]:o(c.join("."))};let l;if(i.forEach(u=>{const c=u.split("||"),h=c[0].trim();if(h){const y=(c[1]||"").trim(),m=bt(h);let $=F(()=>a(m));($==null||$==="")&&c.length>1&&($=y),l=$,e=e.replaceAll(`{{${u}}}`,$==null?"":$)}}),i.length===1&&s===`{{${i[0]}}}`)return l}return e},loadFetchVar(e,r,n){let s;n&&n.__fc__&&(s=n.__fc__.getParentGroup()),!s&&e.targetRule&&e.targetRule.__fc__&&(s=e.targetRule.__fc__.getParentGroup());const i=o=>this.loadStrVar(o,r,s?{rule:n,value:this.subRuleData[s.id]||{}}:null);return e.action=i(e.action||""),["headers","data","query"].forEach(o=>{if(e[o]){const a=Array.isArray(e[o])?[]:{};Object.keys(e[o]).forEach(l=>{a[i(l)]=i(e[o][l])}),e[o]=a}}),e}})}const Vt=["hook:updated","hook:mounted"];function Er(t){S(t.prototype,{usePage(){const e=this.options.page;if(!e)return;let r=25,n=Dr(this.rules);p.Object(e)&&(e.first&&(r=parseInt(e.first,10)||r),e.limit&&(n=parseInt(e.limit,10)||n)),S(this,{first:r,limit:n,pageEnd:this.rules.length<=r}),this.bus.$on("page-end",()=>this.vm.emit("page-end",this.api)),this.pageLoad()},pageLoad(){const e=()=>{this.pageEnd?(this.bus.$off(Vt,e),this.bus.$emit("page-end")):(this.first+=this.limit,this.pageEnd=this.rules.length<=this.first,this.loadRule(),this.refresh())};this.bus.$on(Vt,e)}})}function Dr(t){return t.length<31?31:Math.ceil(t.length/3)}function jr(t){S(t.prototype,{clearNextTick(){this.nextTick&&clearTimeout(this.nextTick),this.nextTick=null},bindNextTick(e){this.clearNextTick(),this.nextTick=setTimeout(()=>{e(),this.nextTick=null},10)},render(){return++this.loadedId,this.vm.setupState.unique>0?this.$render.render():(this.vm.setupState.unique=1,[])}})}function Ar(t){Object.defineProperties(t.origin,{__fc__:Me(f.markRaw(t))}),t.rule!==t.origin&&Object.defineProperties(t.rule,{__fc__:Me(f.markRaw(t))})}function Ft(t,e,r){const n=Se(),s=!!e.field;S(this,{id:n,ref:n,wrapRef:n+"fi",rule:e,origin:e.__origin__||e,name:e.name,pending:{},none:!1,watch:[],linkOn:[],root:[],ctrlRule:[],children:[],parent:null,group:e.subRule?this:null,cacheConfig:null,prop:C({},e),computed:{},payload:{},refRule:{},handlers:null,input:s,el:void 0,exportEl:void 0,defaultValue:s?H(r):void 0,field:e.field||void 0}),this.updateKey(),Ar(this),this.update(t,!0)}S(Ft.prototype,{getParentGroup(){let t=this.parent;for(;t;){if(t.group)return t;t=t.parent}},loadChildrenPending(){const t=this.rule.children||[];return Array.isArray(t)?t:this.loadPending({key:"children",origin:t,def:[],onLoad:e=>{this.$handle&&this.$handle.loadChildren(e,this)},onUpdate:(e,r)=>{this.$handle&&(e===r?this.$handle.loadChildren(e,this):this.$handle.updateChildren(this,e,r))},onReload:e=>{this.$handle?this.$handle.updateChildren(this,[],e):delete this.pending.children}})},loadPending(t){const{key:e,origin:r,def:n,onLoad:s,onReload:i,onUpdate:o}=t;if(this.pending[e]&&this.pending[e].origin===r)return this.getPending(e,n);delete this.pending[e];let a=r;if(p.Function(r)){let l=F(()=>r({rule:this.rule,api:this.$api,update:u=>{const c=u||n,h=this.getPending(e,n);this.setPending(e,r,c),o&&o(c,h)},reload:()=>{const u=this.getPending(e,n);delete this.pending[e],i&&i(u),this.$api&&this.$api.sync(this.rule)}}));l&&p.Function(l.then)?(l.then(u=>{const c=u||n;this.setPending(e,r,c),s&&s(c),this.$api&&this.$api.sync(this.rule)}).catch(u=>{console.error(u)}),a=n,this.setPending(e,r,a)):(a=l||n,this.setPending(e,r,a),s&&s(a))}return a},getPending(t,e){return this.pending[t]&&this.pending[t].value||e},setPending(t,e,r){this.pending[t]={origin:e,value:f.reactive(r)}},effectData(t){return this.payload[t]||(this.payload[t]={}),this.payload[t]},clearEffectData(t){t===void 0?this.payload={}:delete this.payload[t]},updateKey(t){this.key=Se(),t&&this.parent&&this.parent.updateKey(t)},updateType(){this.originType=this.rule.type,this.type=T(this.rule.type),this.trueType=this.$handle.getType(this.originType)},setParser(t){this.parser=t,t.init(this)},initProp(){var e,r,n;const t=C({},this.rule);delete t.children,delete t.validate,this.prop=Q({},[t,...Object.keys(this.payload).map(s=>this.payload[s]),this.computed]),t.col&&((e=t.col)==null?void 0:e.show)!==!1&&(this.prop.col.show=!0),this.prop.validate=[...((n=(r=this.refRule)==null?void 0:r.__$validate)==null?void 0:n.value)||[],...this.prop.validate||[]]},initNone(){this.none=!(p.Undef(this.prop.display)||this.prop.display)},hasHidden(){return!!this.rule.hidden||(this.parent?this.parent.hasHidden():!1)},injectValidate(){return this.prop.validate},check(t){return this.vm===t.vm},unwatch(){this.watch.forEach(t=>t()),this.watch=[],Object.keys(this.refRule).forEach(t=>{t.indexOf("__$")!==0&&delete this.refRule[t]})},unlink(){this.linkOn.forEach(t=>t()),this.linkOn=[]},link(){this.unlink(),this.$handle.appendLink(this)},watchTo(){this.$handle.watchCtx(this)},delete(){this.unwatch(),this.unlink(),this.rmCtrl(),this.parent&&this.parent.children.splice(this.parent.children.indexOf(this)>>>0,1),S(this,{deleted:!0,computed:{},parent:null,children:[],cacheConfig:null,none:!1,handlers:null,el:void 0,exportEl:void 0})},rmCtrl(){this.ctrlRule.forEach(t=>t.__fc__&&t.__fc__.rm()),this.ctrlRule=[]},rm(){const t=()=>{let e=this.root.indexOf(this.origin);e>-1&&(this.root.splice(e,1),this.$handle&&this.$handle.refresh())};if(this.deleted){t();return}this.$handle.noWatch(()=>{this.$handle.deferSyncValue(()=>{this.rmCtrl(),t(),this.$handle.rmCtx(this),S(this,{root:[]})},this.input)})},update(t,e){S(this,{deleted:!1,$handle:t,$render:t.$render,$api:t.api,vm:t.vm,vNode:t.$render.vNode,updated:!1,cacheValue:this.rule.value}),!e&&this.unwatch(),this.watchTo(),this.link(),this.updateType()}});function Pr(t){S(t.prototype,{nextRefresh(e){const r=this.loadedId;f.nextTick(()=>{r===this.loadedId&&(e?e():this.refresh())})},parseRule(e){const r=ht(e);return Object.defineProperties(r,{__origin__:Me(e)}),Ir(r),this.appendValue(r),[r,r.prefix,r.suffix].forEach(n=>{n&&this.loadFn(n,r)}),this.loadCtrl(r),r.update&&(r.update=G(r.update)),r},loadFn(e,r){["on","props","deep"].forEach(n=>{e[n]&&this.parseInjectEvent(r,e[n])})},loadCtrl(e){e.control&&e.control.forEach(r=>{r.handle&&(r.handle=G(r.handle))})},syncProp(e){const r=e.rule;p.trueArray(r.sync)&&K([{on:r.sync.reduce((n,s)=>(n[typeof s=="object"&&s.event||`update:${s}`]=i=>{r.props[typeof s=="object"&&s.prop||s]=i,this.vm.emit("sync",s,i,r,this.fapi)},n),{})}],e.computed)},loadRule(){this.cycleLoad=!1,this.loading=!0,this.pageEnd&&this.bus.$emit("load-start"),this.deferSyncValue(()=>{if(this._loadRule(this.rules),this.loading=!1,this.cycleLoad&&this.pageEnd)return this.loadRule();this.syncForm(),this.pageEnd&&this.bus.$emit("load-end"),this.vm.setupState.renderRule()})},loadChildren(e,r){if(this.cycleLoad=!1,this.loading=!0,this.bus.$emit("load-start"),this._loadRule(e,r),this.loading=!1,this.cycleLoad)return this.loadRule();this.syncForm(),this.bus.$emit("load-end"),this.$render.clearCache(r)},_loadRule(e,r){const n=o=>{let a=e[o-1];if(!a||!a.__fc__)return o>0?n(o-1):-1;let l=this.sort.indexOf(a.__fc__.id);return l>-1?l:n(o-1)},s=(o,a)=>{p.trueArray(o)&&this._loadRule(o,a)},i=e.map((o,a)=>{if(r&&!p.Object(o)||!this.pageEnd&&!r&&a>=this.first)return;if(o.__fc__&&o.__fc__.root===e&&this.ctxs[o.__fc__.id])return s(o.__fc__.loadChildrenPending(),o.__fc__),o.__fc__;let l=ht(o);const u=()=>!!(l.field&&this.fieldCtx[l.field]&&this.fieldCtx[l.field][0]!==o.__fc__);this.fc.targetFormDriver("loadRule",{rule:l,api:this.api},this.fc),this.ruleEffect(l,"init",{repeat:u()}),u()&&this.vm.emit("repeat-field",o,this.api);let c,h=!1,y=!!o.__fc__,m=l.value;if(y){if(c=o.__fc__,m=c.defaultValue,c.deleted){if(Ot(c))return;c.update(this)}else if(!c.check(this)){if(Ot(c))return;e[a]=o=o._clone?o._clone():it(ye(o)),c=null,h=!0}}if(c)c.originType!==c.rule.type&&c.updateType(),this.bindParser(c),this.appendValue(c.rule),c.parent&&c.parent!==r&&this.rmSubRuleData(c);else{const v=this.parseRule(o);c=new Ft(this,v,m),this.bindParser(c)}this.parseEmit(c),this.syncProp(c),c.parent=r||null,c.root=e,this.setCtx(c),!h&&!y&&(this.effect(c,"load"),this.targetHook(c,"load")),this.effect(c,"created");const $=c.loadChildrenPending();if(c.parser.loadChildren===!1||s($,c),!r){const v=n(a);v>-1||!a?this.sort.splice(v+1,0,c.id):this.sort.push(c.id)}const w=c.rule;return c.updated||(c.updated=!0,p.Function(w.update)&&this.bus.$once("load-end",()=>{this.refreshUpdate(c,w.value,"init")}),this.effect(c,"loaded")),this.refreshControl(c)&&(this.cycleLoad=!0),c}).filter(o=>!!o);r&&(r.children=i)},refreshControl(e){return e.input&&e.rule.control&&this.useCtrl(e)},useCtrl(e){const r=Nr(e),n=[],s=this.api;if(!r.length)return!1;for(let a=0;a<r.length;a++){const l=r[a],u=l.handle||function(h){return(se[l.condition||"=="]||se["=="])(h,l.value)};if(!p.trueArray(l.rule))continue;const c=M(C({},l),{valid:F(()=>u(e.rule.value,s)),ctrl:Tr(e,l.rule),isHidden:p.String(l.rule[0])});c.valid&&c.ctrl||!c.valid&&!c.ctrl&&!c.isHidden||n.push(c)}if(!n.length)return!1;const i=[];let o=!1;return this.deferSyncValue(()=>{n.reverse().forEach(({isHidden:a,valid:l,rule:u,prepend:c,append:h,child:y,ctrl:m,method:$})=>{if(a){l?e.ctrlRule.push({__ctrl:!0,children:u,valid:l}):m&&e.ctrlRule.splice(e.ctrlRule.indexOf(m)>>>0,1),i[l?"push":"unshift"](()=>{$==="disabled"||$==="enabled"?this.api.disabled(!l,u):$==="display"||$==="show"?this.api.display(l,u):$==="required"?(u.forEach(w=>{this.api.setEffect(w,"required",l)}),l||this.api.clearValidateState(u)):$==="if"?this.api.hidden(!l,u):this.api.hidden(!l,u)});return}if(l){o=!0;const w={type:"fragment",native:!0,__ctrl:!0,children:u};e.ctrlRule.push(w),this.bus.$once("load-start",()=>{c?s.prepend(w,c,y):h||y?s.append(w,h||e.id,y):e.root.splice(e.root.indexOf(e.origin)+1,0,w)})}else{e.ctrlRule.splice(e.ctrlRule.indexOf(m),1);const w=z(m);w&&w.rm()}})}),i.length&&(this.loading?i.length&&this.bus.$once("load-end",()=>{i.forEach(a=>a())}):i.length&&f.nextTick(()=>{i.forEach(a=>a())})),this.vm.emit("control",e.origin,this.api),this.effect(e,"control"),o},reloadRule(e){return this._reloadRule(e)},_reloadRule(e){e||(e=this.rules);const r=C({},this.ctxs);this.clearNextTick(),this.initData(e),this.fc.rules=e,this.deferSyncValue(()=>{this.bus.$once("load-end",()=>{Object.keys(r).filter(n=>this.ctxs[n]===void 0).forEach(n=>this.rmCtx(r[n])),this.$render.clearCacheAll()}),this.reloading=!0,this.loadRule(),this.reloading=!1,this.refresh(),this.bus.$emit("reloading",this.api)}),this.bus.$off("next-tick",this.nextReload),this.bus.$once("next-tick",this.nextReload),this.bus.$emit("update",this.api)},refresh(){this.vm.setupState.refresh()}})}function Ir(t){const e=$t();return Object.keys(e).forEach(r=>{k(t,r)||(t[r]=e[r])}),t}function Nr(t){const e=t.rule.control||[];return p.Object(e)?[e]:e}function Tr(t,e){for(let r=0;r<t.ctrlRule.length;r++){const n=t.ctrlRule[r];if(n.children===e)return n}}function Ot(t){return!!t.rule.__ctrl}function Br(t){S(t.prototype,{setValue(e,r,n,s){e.deleted||(e.rule.value=r,this.changeStatus=!0,this.setFormData(e,n),this.$render.clearCache(e),this.nextRefresh(),this.syncValue(),this.valueChange(e,r),this.vm.emit("change",e.field,r,e.origin,this.api,s||!1),this.effect(e,"value"),this.targetHook(e,"value",{value:r}),this.emitEvent("change",e.field,r,{rule:e.origin,api:this.api,setFlag:s||!1}),s&&f.nextTick(()=>{f.nextTick(()=>{f.nextTick(()=>{this.api.clearValidateState(e.id)})})}),this.$manager.fieldChange(e,r,n,s))},onInput(e,r){let n;e.input&&(this.isQuote(e,n=e.parser.toValue(r,e))||this.isChange(e,r))&&this.setValue(e,n,r)},onUpdateValue(e,r){this.deferSyncValue(()=>{const n=e.getParentGroup(),s=n?this.subRuleData[n.id]:null,i={};Object.keys(r||{}).forEach(o=>{s&&k(s,o)?i[o]=r[o]:k(this.api.form,o)?this.api.form[o]=r[o]:this.api.top!==this.api&&k(this.api.top.form,o)&&(this.api.top.form[o]=r[o])}),Object.keys(i).length&&this.api.setChildrenFormData(n.rule,i)})},onBaseInput(e,r){this.setFormData(e,r),this.$render.clearCache(e),this.nextRefresh()},setFormData(e,r){e.modelValue=r;const n=e.getParentGroup();n&&(this.subRuleData[n.id]||(this.subRuleData[n.id]={}),this.subRuleData[n.id][e.field]=e.rule.value),L(this.formData,e.id,r)},rmSubRuleData(e){const r=e.getParentGroup();r&&this.subRuleData[r.id]&&delete this.subRuleData[r.id][e.field]},getFormData(e){return this.formData[e.id]},syncForm(){const e=f.reactive({}),r=this.fields(),n=[];this.options.appendValue!==!1&&Object.keys(this.appendData).reduce((s,i)=>(r.indexOf(i)===-1&&(s[i]=f.toRef(this.appendData,i)),s),e),r.reduce((s,i)=>{let o=(this.fieldCtx[i]||[]).filter(a=>!this.isIgnore(a))[0];return o||(o=this.fieldCtx[i][0],n.push(i)),s[i]=f.toRef(o.rule,"value"),s},e),this.form=e,this.ignoreFields=n,this.syncValue()},isIgnore(e){return e.rule.ignore===!0||(e.rule.ignore==="hidden"||this.options.ignoreHiddenFields)&&e.hasHidden()},appendValue(e){(!e.field||!k(this.appendData,e.field))&&(!p.Undef(e.value)||!this.options.forceCoverValue)||(e.value=this.appendData[e.field],delete this.appendData[e.field])},addSubForm(e,r){this.subForm[e.id]=r},deferSyncValue(e,r){this.deferSyncFn||(this.deferSyncFn=e),this.deferSyncFn.sync||(this.deferSyncFn.sync=r),F(e),this.deferSyncFn===e&&(this.deferSyncFn=null,e.sync&&this.syncForm())},syncValue(){if(this.deferSyncFn)return this.deferSyncFn.sync=!0;const e={};Object.keys(this.form).forEach(r=>{this.ignoreFields.indexOf(r)===-1&&(e[r]=this.form[r])}),this.vm.setupState.updateValue(e)},isChange(e,r){const n=this.getFormData(e);if(n===r)return!1;const s=typeof n;return s===typeof r&&(s==="string"||s==="boolean"||s==="number"&&Number.isFinite(n)&&Number.isFinite(r))?!0:JSON.stringify(n,vt)!==JSON.stringify(r,vt)},isQuote(e,r){return(r instanceof Function||p.Object(r)||Array.isArray(r))&&r===e.rule.value},refreshUpdate(e,r,n,s){if(p.Function(e.rule.update)){const i=F(()=>e.rule.update(r,e.origin,this.api,{origin:n||"change",linkField:s}));if(i===void 0)return;e.rule.hidden=i===!0}},valueChange(e,r){this.refreshRule(e,r),this.bus.$emit("change-"+e.field,r)},refreshRule(e,r,n,s){this.refreshControl(e)&&(this.$render.clearCacheAll(),this.loadRule(),this.bus.$emit("update",this.api),this.refresh()),this.refreshUpdate(e,r,n,s)},appendLink(e){const r=e.rule.link;p.trueArray(r)&&r.forEach(n=>{const s=()=>this.refreshRule(e,e.rule.value,"link",n);this.bus.$on("change-"+n,s),e.linkOn.push(()=>this.bus.$off("change-"+n,s))})},fields(){return Object.keys(this.fieldCtx)}})}function vt(t,e){return typeof e=="function"?""+e:e}const $e={init(t){},toFormValue(t,e){return t},toValue(t,e){return t},mounted(t){},render(t,e){return e.$handle.fc.renderDriver&&e.$handle.fc.renderDriver.defaultRender?e.$handle.fc.renderDriver.defaultRender(e,t):e.$render.defaultRender(e,t)},preview(t,e){return e.$handle.fc.renderDriver&&e.$handle.fc.renderDriver.defaultPreview?e.$handle.fc.renderDriver.defaultPreview(e,t):this.render(t,e)},mergeProp(t){}},Mr=["field","value","vm","template","name","config","control","inject","sync","payload","optionsTo","update","slotUpdate","computed","component","cache"],_e=Symbol("oldValue"),Lr=["$condition","$variableVal","$val","$form","$scope","$group","$rule"],Ur=["$formulas","$form","$scope","$group","$rule","$api"],ve=new Map,qr=1e3;function Rt(t,e){const r=t.join(",")+"|"+e;let n=ve.get(r);return n||(ve.size>=qr&&ve.clear(),n=new Function(...t,e),ve.set(r,n)),n}function xr(t){S(t.prototype,{scheduleComputedUpdate(e){(this._computedQueue||(this._computedQueue=[])).push(e),!(this._computedFlushing||this._computedScheduled)&&(this._computedScheduled=!0,setTimeout(()=>{this._computedScheduled=!1,this._computedFlushing=!0;try{const r=this._computedQueue||[];this._computedQueue=[];for(let n=0;n<r.length;n++)F(r[n]),this._computedQueue&&this._computedQueue.length&&(r.push(...this._computedQueue),this._computedQueue=[])}finally{this._computedFlushing=!1}}))},getCtx(e){return this.getFieldCtx(e)||this.getNameCtx(e)[0]||this.ctxs[e]},getCtxs(e){return this.fieldCtx[e]||this.nameCtx[e]||(this.ctxs[e]?[this.ctxs[e]]:[])},setIdCtx(e,r,n){const s=`${n}Ctx`;this[s][r]?this[s][r].push(e):this[s][r]=[e]},rmIdCtx(e,r,n){const s=`${n}Ctx`,i=this[s][r];if(!i)return!1;const o=i.splice(i.indexOf(e)>>>0,1).length>0;return i.length||delete this[s][r],o},getFieldCtx(e){return(this.fieldCtx[e]||[])[0]},getNameCtx(e){return this.nameCtx[e]||[]},setCtx(e){let{id:r,field:n,name:s,rule:i}=e;this.ctxs[r]=e,s&&this.setIdCtx(e,s,"name"),e.input&&(this.setIdCtx(e,n,"field"),this.setFormData(e,e.parser.toFormValue(i.value,e)),this.isMounted&&!this.reloading&&this.vm.emit("change",e.field,i.value,e.origin,this.api,!1,!0))},getParser(e){const r=this.fc.parsers,n=this.fc.renderDriver;if(n){const s=n.parsers||{},i=s[e.originType]||s[T(e.type)]||s[e.trueType];if(i)return i}return r[e.originType]||r[T(e.type)]||r[e.trueType]||$e},bindParser(e){e.setParser(this.getParser(e))},getType(e){const r=this.fc.CreateNode.aliasMap,n=r[e]||r[T(e)]||e;return T(n)},noWatch(e){this.noWatchFn||(this.noWatchFn=e),F(e),this.noWatchFn===e&&(this.noWatchFn=null)},watchCtx(e){const r=ut().filter(o=>o[0]!=="_"&&o[0]!=="$"&&Mr.indexOf(o)===-1),n={},s=(o,a,l)=>(u,c)=>{let h=a.value;if(!this.isBreakWatch()){if(l&&e.parser.loadChildren===!1){this.$render.clearCache(e),this.nextRefresh();return}if(this.watching=!0,f.nextTick(()=>{this.targetHook(e,"watch",{key:o,oldValue:c,newValue:h})}),o==="hidden"&&!!h!=!!c&&f.nextTick(()=>{this.targetHook(e,"hidden",{value:h})}),o==="ignore"&&e.input||o==="hidden"&&(e.rule.ignore==="hidden"||this.options.ignoreHiddenFields))this.syncForm();else if(o==="link"){e.link();return}else["props","on","deep"].indexOf(o)>-1?(this.parseInjectEvent(e.rule,h||{}),o==="props"&&e.input&&this.setFormData(e,e.parser.toFormValue(e.rule.value,e))):o==="emit"?this.parseEmit(e):["prefix","suffix"].indexOf(o)>-1?h&&this.loadFn(h,e.rule):o==="type"?(e.updateType(),this.bindParser(e)):l&&(p.Function(c)&&(c=e.getPending("children",[])),p.Function(h)&&(h=e.loadChildrenPending()),this.updateChildren(e,h,c));this.$render.clearCache(e),this.refresh(),this.watching=!1}},i=(o,a)=>{if(n[o])return;n[o]=!0;const l=e.refRule[o],u=o==="children",c=s(o,l,u);e.watch.push(f.watch(u?()=>p.Function(l.value)?l.value:[...l.value||[]]:()=>l.value,c,{deep:!u,sync:u})),a&&c(l.value,void 0)};if(r.forEach(o=>{e.refRule[o]=f.toRef(e.rule,o),k(e.rule,o)&&i(o)}),e.watch.push(f.watch(()=>Object.keys(e.rule).join("|"),()=>{r.forEach(o=>{!n[o]&&k(e.rule,o)&&i(o,!0)})})),e.refRule.__$title=f.computed(()=>{let o=(typeof e.rule.title=="object"?e.rule.title.title:e.rule.title)||"";if(o){const a=o.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);a&&(o=this.api.t(a[1]))}return o}),e.refRule.__$info=f.computed(()=>{let o=(typeof e.rule.info=="object"?e.rule.info.info:e.rule.info)||"";if(o){const a=o.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);a&&(o=this.api.t(a[1]))}return o}),e.refRule.__$validate=f.computed(()=>{const o=a=>{var u,c;const l=a.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);return l?this.api.t(l[1],{title:(c=(u=e.refRule)==null?void 0:u.__$title)==null?void 0:c.value}):a};return j(e.rule.validate).map(a=>{const l=C({},a);if(l.message&&(l.message=o(l.message)),p.Function(l.validator)){const u=e;l.validator=function(...c){return a.validator.call({that:this,id:u.id,field:u.field,rule:u.rule,api:u.$handle.api},...c)}}if(l.adapter){if(typeof l.error=="object"){const u=C({},l.error);Object.keys(u).forEach(c=>{u[c]=o(u[c])}),l.error=u}return this.adapterValidate(l,e)}return l})}),e.input){const o=f.toRef(e.rule,"value");e.watch.push(f.watch(()=>o.value,()=>{let a=e.parser.toFormValue(o.value,e);this.isChange(e,a)&&this.setValue(e,o.value,a,!0)}))}this.bus.$once("load-end",()=>{let o=e.rule.computed;o&&(typeof o!="object"&&(o={value:o}),Object.keys(o).forEach(a=>{const l=f.computed(()=>{const c=o[a];if(!c)return;const h=this.compute(e,c);return(c.linkage||c.linkageVariable)&&h===_e?_e:h}),u=c=>{a==="value"?this.onInput(e,c):a[0]==="$"?this.api.setEffect(e.id,a,c):ee(e.rule,a,c)};(a==="value"?[void 0,null,""].indexOf(e.rule.value)>-1:l.value!==N(e.rule,a))&&u(l.value),e.watch.push(f.watch(l,c=>{c!==_e&&this.scheduleComputedUpdate(()=>u(c))},{deep:!0}))}))}),this.watchEffect(e)},adapterValidate(e,r){const n=(s,i)=>{if((e.beforeValidate&&F(()=>e.beforeValidate({value:s,api:this.api,validate:e,rule:r.rule})))===!1)i();else{const a=this.validator(r,s,e);if(a){let l="";typeof e.error=="object"&&(l=e.error[a]||e.error.default),!l&&typeof e.message=="string"&&(l=e.message),l||(l=this.getValidateMessage(r,{key:a,rule:e[a]})),i(l)}else if(e.validator){const l=e.validator&&F(()=>e.validator(s,i));l&&p.Function(l.then)&&l.then(()=>i()).catch(u=>i(u))}else i()}};return this.$manager.adapterValidate({required:e.required,message:e.message,trigger:e.trigger},n)},getValidateMessage(e,r){var s,i;const n=Array.isArray(r.rule)?r.rule.join(","):""+r.rule;return this.api.t(r.key==="required"?r.key:"validate."+r.key,{[r.key]:n,title:(i=(s=e.refRule)==null?void 0:s.__$title)==null?void 0:i.value})},validator(e,r,n){if(p.empty(r))return n.required?"required":void 0;for(const[i,o]of Object.entries(n))switch(i){case"len":case"maxLen":case"minLen":const a=$=>i==="len"?$===o:i==="maxLen"?$<=o:$>=o;if(Array.isArray(r)){if(!a(r.length))return i}else{if(typeof r=="object")return i;if(!a((""+r).length))return i}break;case"pattern":if(!(typeof o=="string"?new RegExp(o):o).test(""+r))return i;break;case"uppercase":if(o&&(typeof r!="string"||!/^[A-Z]*$/.test(r)))return i;break;case"lowercase":if(o&&(typeof r!="string"||!/^[a-z]*$/.test(r)))return i;break;case"min":case"max":case"positive":case"negative":case"integer":case"number":const u=Number(r);if(Number.isNaN(u)||i==="min"&&u<o||i==="max"&&u>o||i==="positive"&&u<=0||i==="negative"&&u>=0||i==="integer"&&!Number.isInteger(u))return i;break;case"equal":if(r!==o)return i;break;case"enum":if(Array.isArray(o)&&!o.includes(r))return i;break;case"hasKeys":if(typeof r!="object"||Array.isArray(o)&&o.some($=>!($ in r)))return i;break;case"email":if(!/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(""+r))return i;break;case"url":if(!new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i").test(""+r))return i;break;case"ip":if(!/^(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})(\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})){3}$/.test(""+r))return i;break;case"phone":if(!/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(""+r))return i;break;case"computed":if(!this.compute(e,o))return i;break}},compute(e,r){let n;if(typeof r=="object"){const s=e.getParentGroup(),i=a=>{if(a=Array.isArray(a)?{mode:"AND",group:a}:a,!p.trueArray(a.group))return!0;const l=a.mode==="OR";let u=!0;for(let c=0;c<a.group.length;c++){const h=a.group[c];let y,m=null,$=null;if(h.variable)$=this.fc.getLoadData(h.variable);else if(h.field)m=yt(h.field||"");else if(!h.mode)return!0;let w=h.compare;if(w&&(w=yt(w||"")),h.mode?y=i(h):se[h.condition]?p.Function(h.handler)?y=F(()=>h.handler(this.api,e.rule)):y=F(()=>Rt(Lr,`with($form){with($scope){with(this){with($group){ return $condition['${h.condition}'](${h.variable?"$variableVal":m}, ${w||"$val"}); }}}}`).call(this.api.form,se,$,h.value,this.api.top.form,this.api.top===this.api.scope?{}:this.api.scope.form,s?this.subRuleData[s.id]||{}:{},e.rule)):y=!1,l&&y)return!0;l||(u=u&&y)}return l?!1:u};let o=i(r);return o=r.invert===!0?!o:o,r.linkage?o?F(()=>this.computeValue(r.linkage,e,s),void 0):_e:r.linkageVariable?o?F(()=>this.fc.getLoadData(r.linkageVariable),void 0):_e:o}else if(p.Function(r))n=()=>r(this.api.form,this.api,e.rule);else{const s=e.getParentGroup();n=()=>this.computeValue(r,e,s)}return F(n,void 0)},computeValue(e,r,n){const s=this,i=Object.keys(this.fc.formulas).reduce((o,a)=>(o[a]=function(...l){return s.fc.formulas[a].call({that:this,rule:r.rule,api:s.api,fc:s.fc},...l)},o),{});return F(()=>Rt(Ur,`with($form){with($scope){with(this){with($group){with($formulas){ return ${e} }}}}}`).call(this.api.form,i,this.api.top.form,this.api.top===this.api.scope?{}:this.api.scope.form,n?this.subRuleData[n.id]||{}:{},r.rule,this.api),void 0)},updateChildren(e,r,n){this.deferSyncValue(()=>{n&&n.forEach(s=>{(r||[]).indexOf(s)===-1&&s&&!p.String(s)&&s.__fc__&&s.__fc__.parent===e&&this.rmCtx(s.__fc__)}),p.trueArray(r)&&(this.loadChildren(r,e),this.bus.$emit("update",this.api))})},rmSub(e){p.trueArray(e)&&e.forEach(r=>{r&&r.__fc__&&this.rmCtx(r.__fc__)})},rmCtx(e){if(e.deleted)return;const{id:r,field:n,input:s,name:i}=e;ie(this.ctxs,r),ie(this.formData,r),ie(this.subForm,r),ie(this.vm.setupState.ctxInject,r);const o=e.getParentGroup();o&&this.subRuleData[o.id]&&ie(this.subRuleData[o.id],n),e.group&&ie(this.subRuleData,r),s&&this.rmIdCtx(e,n,"field"),i&&this.rmIdCtx(e,i,"name"),s&&!k(this.fieldCtx,n)&&ie(this.form,n),this.deferSyncValue(()=>{if(!this.reloading){if(e.parser.loadChildren!==!1){const l=e.getPending("children",e.rule.children);p.trueArray(l)&&l.forEach(u=>u&&u.__fc__&&this.rmCtx(u.__fc__))}e.root===this.rules&&this.vm.setupState.renderRule()}},s);const a=this.sort.indexOf(r);return a>-1&&this.sort.splice(a,1),this.$render.clearCache(e),e.delete(),this.effect(e,"deleted"),this.targetHook(e,"deleted"),s&&!this.fieldCtx[n]&&this.vm.emit("remove-field",n,e.rule,this.api),e.rule.__ctrl||this.vm.emit("remove-rule",e.rule,this.api),e}})}function Hr(t){S(t.prototype,{mounted(){const e=()=>{this.isMounted=!0,this.lifecycle("mounted")};this.pageEnd?e():this.bus.$once("page-end",e)},lifecycle(e){this.fc.targetFormDriver(e,this.api,this.fc),this.vm.emit(e,this.api),this.emitEvent(e,this.api)},emitEvent(e,...r){const n=this.options[e]||this.options[T("on-"+e)];if(n){const s=G(n);p.Function(s)&&F(()=>s(...r))}this.bus.$emit(e,...r)},targetHook(e,r,n){var l,u,c,h;let s=(u=(l=e.prop)==null?void 0:l.hook)==null?void 0:u[r],i=(y,m)=>{y&&(y=Array.isArray(y)?y:[y],y.forEach($=>{F(()=>$(M(C({args:Object.values(n||{})},n||{}),{self:e.rule,rule:e.rule,parent:m==null?void 0:m.rule,$f:this.api,api:this.api,option:this.vm.props.option})))}))};i(s);let o="deep"+rt(r),a=e.parent;for(;a;){let y=(h=(c=a.prop)==null?void 0:c.hook)==null?void 0:h[o];i(y,a),a=a.parent}}})}function Gr(t){S(t.prototype,{useProvider(){const e=this.fc.providers;Object.keys(e).forEach(r=>{let n=e[r];p.Function(n)&&(n=n(this.fc)),n._c=Jr(n),this.onEffect(n,r),this.providers[r]=n})},onEffect(e,r){const n=[];(e._c||["*"]).forEach(s=>{const i=s==="*"?"*":this.getType(s);n.indexOf(i)>-1||(n.push(i),this.bus.$on(`p:${r||e.name}:${i}:${e.input?1:0}`,(o,a)=>{e[o]&&e[o](...a)}))}),e._used=n},watchEffect(e){let r={required:()=>{var n,s;return(k(e.rule,"$required")?e.rule.$required:(s=(n=e.rule)==null?void 0:n.effect)==null?void 0:s.required)||!1}};Object.keys(e.rule.effect||{}).forEach(n=>{r[n]=()=>e.rule.effect[n]}),Object.keys(e.rule).forEach(n=>{n[0]==="$"&&(r[n.substr(1)]=()=>e.rule[n])}),Object.keys(r).forEach(n=>{e.watch.push(f.watch(r[n],s=>{this.effect(e,"watch",{[n]:s})},{deep:!0}))})},ruleEffect(e,r,n){this.emitEffect({rule:e,input:!!e.field,type:this.getType(e.type)},r,n)},effect(e,r,n){this.emitEffect({rule:e.rule,input:e.input,type:e.trueType,ctx:e,custom:n},r)},getEffect(e,r){if(k(e,"$"+r))return e["$"+r];if(k(e,"effect")&&k(e.effect,r))return e.effect[r]},emitEffect({ctx:e,rule:r,input:n,type:s,custom:i},o,a){if(!s||["fcFragment","fragment"].indexOf(s)>-1)return;const l=i||Object.keys(r).reduce((u,c)=>(c[0]==="$"&&(u[c.substr(1)]=r[c]),u),C({},r.effect||{}));Object.keys(l).forEach(u=>{const c=this.providers[u];if(!c||c.input&&!n)return;let h;if(!c._c)h="*";else if(c._used.indexOf(s)>-1)h=s;else return;const y=C({value:l[u],getValue:()=>this.getEffect(r,u)},a||{});e&&(y.getProp=()=>e.effectData(u),y.clearProp=()=>e.clearEffectData(u),y.mergeProp=m=>Q(y.getProp(),[m]),y.id=e.id),this.bus.$emit(`p:${u}:${h}:${c.input?1:0}`,o,[y,r,this.api])})}})}function zr(t){return t.filter(function(e,r,n){return n.indexOf(e,0)===r})}function Jr(t){const e=t.components;if(Array.isArray(e)){const r=zr(e.filter(n=>n!=="*"));return r.length?r:!1}else return p.String(e)?[e]:!1}function J(t){pt(this,{options(){return t.options.value||{}},bus(){return t.bus},preview(){return t.vm.props.preview!=null?t.vm.props.preview:t.vm.setupState.parent&&t.vm.setupState.parent.props.preview!=null?t.vm.setupState.parent.props.preview:t.options.value.preview||!1}}),S(this,{fc:t,vm:t.vm,watching:!1,loading:!1,reloading:!1,noWatchFn:null,deferSyncFn:null,isMounted:!1,formData:f.reactive({}),subRuleData:f.reactive({}),subForm:{},form:f.reactive({}),appendData:{},ignoreFields:[],providers:{},cycleLoad:null,loadedId:1,nextTick:null,changeStatus:!1,pageEnd:!0,nextReload:()=>{this.lifecycle("reload")}}),this.initData(t.rules),this.$manager=new t.manager(this),this.$render=new Ue(this),this.api=t.extendApiFn.reduce((e,r)=>{const n=F(()=>r(e,this));return n&&n!==e&&S(e,n),e},Fr(this))}S(J.prototype,{initData(t){S(this,{ctxs:{},fieldCtx:{},nameCtx:{},sort:[],rules:t})},init(){this.updateAppendData(),this.useProvider(),this.usePage(),this.loadRule(),this.$manager.__init(),this.lifecycle("created")},updateAppendData(){this.appendData=C(C(C({},H(this.options.formData||{})),this.fc.vm.props.modelValue||{}),this.appendData)},isBreakWatch(){return this.loading||this.noWatchFn||this.reloading},globalBeforeFetch(t){return new Promise((e,r)=>{const n=this.options.beforeFetch&&F(()=>this.options.beforeFetch(t,{api:this.api}));n&&p.Function(n.then)?n.then(e).catch(r):e()})},beforeFetch(t){return new Promise((e,r)=>{const n=t&&t.beforeFetch&&F(()=>t.beforeFetch(t,{api:this.api}));n&&p.Function(n.then)?n.then(e).catch(r):n===!1?r():e()}).then(()=>this.globalBeforeFetch(t))},beforeSubmit(t){return new Promise((e,r)=>{const n=this.options.beforeSubmit&&F(()=>this.options.beforeSubmit(t,{api:this.api}));n&&p.Function(n.then)?n.then(e).catch(r):n===!1?r():e()})}}),kr(J),Er(J),jr(J),Pr(J),Br(J),xr(J),Hr(J),Gr(J);const qe=f.defineComponent({name:"fcFragment",inheritAttrs:!1,props:["vnode"],render(){return this.vnode}});function Wr(t){return Object.keys(t).map(e=>{const r=t[e],n=f.resolveDirective(e);if(n)return[n,r.value,r.arg,r.modifiers]}).filter(e=>!!e)}function kt(t,e){let r=t.directives;return r?(Array.isArray(r)||(r=[r]),f.withDirectives(e,r.reduce((n,s)=>n.concat(Wr(s)),[]))):e}function Kr(){const t={};function e(r){this.vm=r.vm,this.handle=r}return S(e.prototype,{make(r,n,s){return kt(n,this.h(r,mt(n),s))},makeComponent(r,n,s){try{return kt(n,f.createVNode(r,mt(n),s))}catch(i){return console.error(i),f.createVNode("")}},h(r,n,s){const o=(this.vm||f.getCurrentInstance()).appContext.config.isNativeTag(r),a=this.handle.fc.prop.components[r];!a&&o&&delete n.formCreateInject;try{return f.createVNode(a||(o?r:f.resolveComponent(r)),n,s)}catch(l){return console.error(l),f.createVNode("")}},aliasMap:t}),S(e,{aliasMap:t,alias(r,n){t[r]=n},use(r){Object.keys(r).forEach(n=>{const s=ge(n),i=tt(n).toLocaleLowerCase(),o=r[n];e.alias(n,o),[n,s,i].forEach(a=>{e.prototype[a]=function(l,u){return this.make(t[n]||a,l,u)}})})}}),e}function Qr(t){class e extends Et{}return Object.assign(e.prototype,t),e}function Et(t){S(this,{$handle:t,vm:t.vm,options:{},ref:"fcForm",mergeOptionsRule:{normal:["form","row","info","submitBtn","resetBtn"]}}),this.updateKey(),this.init()}S(Et.prototype,{__init(){this.$render=this.$handle.$render,this.$r=(...t)=>this.$render.renderRule(...t)},updateKey(){this.key=Se()},init(){},update(){},beforeRender(){},form(){return this.vm.refs[this.ref]},adapterValidate(t,e){return t.validator=(r,n,s)=>e(n,s),t},getSlot(t){const e=r=>{if(r){let n=r.slots[t];return n||e(r.setupState.parent)}};return e(this.vm)},mergeOptions(t,e){return K(t.map(r=>this.tidyOptions(r)),e,this.mergeOptionsRule)},updateOptions(t){this.$handle.fc.targetFormDriver("updateOptions",t,{handle:this.$handle,api:this.$handle.api}),this.options=this.mergeOptions([t],this.getDefaultOptions()),this.update()},tidyOptions(t){return t},tidyRule(t){},mergeProp(t){},getDefaultOptions(){return{}},fieldChange(t,e,r,n){},render(t){}});const Xr=function(t){const e={name:"loadData",_fn:[],loaded(r,n,s){this.deleted(r),f.nextTick(()=>{let i=j(r.getValue());const o=[];i.forEach(a=>{if(a&&(a.attr||a.template||a.handler)){let l=h=>{let y;n&&n.__fc__&&(y=n.__fc__.getParentGroup());let m;a.template?m=t.$handle.loadStrVar(a.template,h,y?{rule:n,value:t.$handle.subRuleData[y.id]||{}}:null):a.handler&&p.Function(a.handler)?m=a.handler(h,n,s):m=t.$handle.loadStrVar(`{{${a.attr}}}`,h,y?{rule:n,value:t.$handle.subRuleData[y.id]||{}}:null),(m==null||m==="")&&a.default!=null&&(m=a.default),a.copy!==!1&&(m=H(m));const $=a.modify?n:r.getProp();a.to==="child"?$.children?$.children[0]=m:$.children=[m]:ee($,a.to||"options",m),s.sync(n)},u=h=>l(h);const c=t.watchLoadData(u);l=Y(l,a.wait||300),a.watch!==!1?o.push(c):c()}}),this._fn[r.id]=o})},deleted(r){this._fn[r.id]&&(this._fn[r.id].forEach(n=>{n()}),delete this._fn[r.id]),r.clearProp()}};return e.watch=e.loaded,e},Zr=function(t){const e={name:"t",_fn:[],loaded(r,n,s){this.deleted(r);let i=r.getValue()||{};const o=[];Object.keys(i).forEach(a=>{const l=i[a];if(l){const u=typeof l=="object";let c=m=>{let $=t.t(u?l.attr:l,u?l.params:null,m);const w=u&&l.modify?n:r.getProp();a==="child"?w.children?w.children[0]=$:w.children=[$]:ee(w,a,$),s.sync(n)},h=m=>c(m);const y=t.watchLoadData(h);c=Y(c,l.wait||300),l.watch!==!1?o.push(y):y()}}),this._fn[r.id]=o},deleted(r){this._fn[r.id]&&(this._fn[r.id].forEach(n=>{n()}),delete this._fn[r.id]),r.clearProp()}};return e.watch=e.loaded,e},Dt={name:"componentValidate",load(t,e,r){let n=t.getValue();if(!n||n.method===!1)t.clearProp(),r.clearValidateState([e.field]);else{p.Object(n)||(n={method:n});const s=n.method,i=M(C({},n),{validator(...o){const a=z(e);if(a)return r.exec(a.id,p.String(s)?s:"formCreateValidate",...o,{attr:t,rule:e,api:r})}});delete i.method,t.getProp().validate=[i]}},watch(...t){Dt.load(...t)}},Yr={fetch:function(t){function e(s){return p.String(s)&&(s={action:s,to:"options"}),s}function r(s,i,o){let a=s.value;n.deleted(s),p.Function(a)&&(a=a(i,o)),a=e(a);const l=h=>{h===void 0?s.clearProp():ee(s.getProp(),a.to||"options",h),h!=null&&a&&a.key&&t.$handle.options.globalData[a.key]&&t.fetchCache.set(t.$handle.options.globalData[a.key],{status:!0,data:h}),o.sync(i)};if(!a||!a.action&&!a.key){l(void 0);return}a=H(a),a.to||(a.to="options");const u=a.onError,c=()=>{if(!s.getValue())return s.clearProp(),o.sync(i),!0};n._fn[s.id]=t.watchLoadData(Y((h,y)=>{if(y&&a.watch===!1)return n._fn[s.id]();if(a.key){t.targetRule=i;const w=h("$globalData."+a.key);if(delete t.targetRule,w){if(c())return;l(w)}return}const m=t.$handle.loadFetchVar(H(a),h,i),$=M(C({headers:{}},m),{onSuccess(w,v){if(c())return;let Z=B=>v?B:k(B,"data")?B.data:B;const P=G(m.parse);p.Function(P)?Z=P:P&&p.String(P)&&(Z=B=>N(B,P)),we(Z(w,i,o)).then(B=>{l(B)})},onError(w){l(void 0),!c()&&(u||(v=>Ae(v.message||"fetch fail "+m.action)))(w,i,o)}});t.$handle.beforeFetch($,{rule:i,api:o}).then(()=>{if(p.Function(m.action)){we(m.action(i,o)).then(w=>{$.onSuccess(w,!0)}).catch(w=>{$.onError(w)});return}F(()=>t.create.fetch($,{inject:s,rule:i,api:o}))}).catch(w=>{})},a.wait||600))}const n={name:"fetch",_fn:[],loaded(...s){r(...s)},watch(...s){r(...s)},deleted(s){this._fn[s.id]&&(this._fn[s.id](),delete this._fn[s.id]),s.clearProp()}};return n},loadData:Xr,t:Zr,componentValidate:Dt},en={name:"html",loadChildren:!1,render(t,e){return e.prop.props.innerHTML=t.default(),e.vNode.make(e.prop.props.tag||"div",e.prop)},renderChildren(t){return{default:()=>t.filter(e=>p.String(e)).join("")}}};function tn(t){t=t+"=";const r=decodeURIComponent(document.cookie).split(";");for(let n=0;n<r.length;n++){let s=r[n];for(;s.charAt(0)===" ";)s=s.substring(1);if(s.indexOf(t)===0){s=s.substring(t.length,s.length);try{return JSON.parse(s)}catch(i){return s}}}return null}function rn(t){const e=localStorage.getItem(t);if(e)try{return JSON.parse(e)}catch(r){return e}return null}function nn(t){const e=sessionStorage.getItem(t);if(e)try{return JSON.parse(e)}catch(r){return e}return null}function xe(t,e){if(!e)return null;const r=e.split(".");let n=t(r.shift());return r.length?n==null?null:N(n,r):n}function sn(t){return xe(tn,t)}function on(t){return xe(rn,t)}function an(t){return xe(nn,t)}const ln={en:{required:"{title} is required",validate:{url:"{title} is not a valid url",email:"{title} is not a valid email",ip:"{title} {title} is not a valid ip",phone:"{title} {title} is not a valid phone",pattern:"{title} does not match pattern {pattern}",uppercase:"{title} must be all uppercase",lowercase:"{title} must be all lowercased",positive:"{title} is not a positive number",negative:"{title} is not a negative number",equal:"{title} is not equal to {equal}",min:"{title} cannot be less than {min}",max:"{title} cannot be greater than {max}",enum:"{title} must be one of {enum}",hasKeys:"{title} does not contain required fields {hasKeys}",minLen:"{title} must be at least {minLen}",maxLen:"{title} cannot be longer than {maxLen}",len:"{title} must be exactly {len}",integer:"{title} is not an integer",number:"{title} is not an number"}},"zh-cn":{required:"{title}不能为空",validate:{url:"{title}不是有效的 url 地址",email:"{title}不是有效的邮箱地址",ip:"{title}不是有效的 IP 地址",phone:"{title}不是正确的手机号",pattern:"{title}必须匹配 {pattern}",uppercase:"{title}必须全大写",lowercase:"{title}必须全小写",positive:"{title}不是正数",negative:"{title}不是负数",equal:"{title}必须等于 {equal}",min:"{title}必须大于等于 {min}",max:"{title}必须小于等于 {max}",enum:"{title}必须是 {enum} 之一",hasKeys:"{title}必须包含 {hasKeys} 字段",minLen:"{title}长度必须大于 {minLen}",maxLen:"{title}长度必须小于 {maxLen}",len:"{title}长度必须为 {len}",integer:"{title}必须为整数",number:"{title}必须为数字"}}};function un(t,e){let r;return arguments.length===2?(r=arguments[1],e=r[t]):r=arguments[2],{id:e,prop:r}}function He(){return un("name",...arguments)}function cn(t){const e=t.key||[],r=t.array||[],n=t.normal||[];lt.push(...e),Te.push(...r),Be.push(...n),_t([...e,...r,...n])}let fn=1;const q={},jt=Symbol("defValue");function At(t){const e={[qe.name]:qe},r={},n={},s={},i={},o=[],a=[],l=[t.extendApi],u=C({},Yr),c=Sr();let h={global:{}};const y=t.isMobile===!0,m=f.reactive({$mobile:y}),$=Kr(),w={},v={};cn(t.attrs||{});function Z(d){const g=q[d];if(Array.isArray(g))return g.map(b=>b.api());if(g)return g.api()}function P(d){o.push(d)}function B(){const d=He(...arguments);d.id&&d.prop&&(n[d.id]=d.prop)}function de(){const d=He(...arguments);d.id&&d.prop&&(u[d.id]=p.Function(d.prop)?d.prop:M(C({},d.prop),{name:d.id}))}function Ke(d){$.use(d)}function he(d){if(arguments.length===0)return $e;if(typeof d=="string"&&arguments.length===1)return r[T(d)];const g=He(...arguments);if(!g.id||!g.prop)return $e;const b=T(g.id),_=g.prop,V=_.merge===!0?r[b]:void 0;r[b]=Fe(_,V||$e),c[b]=U(b),_.maker&&S(c,_.maker)}function E(d,g){let b;if(p.String(d)){if(b=d,g===void 0)return e[b]}else b=d.displayName||d.name,g=d;if(!b||!g)return;const _=T(b);e[b]=g,e[_]=g,delete $.aliasMap[b],delete $.aliasMap[_],delete r[b],delete r[_],g.formCreateParser&&he(b,g.formCreateParser)}function D(){return _r(Xe,e,n)}function x(d,g){const b=D();return f.createApp({data(){return f.reactive({rule:d,option:g})},render(){return f.h(b,C({ref:"fc"},this.$data))}})}function pe(){return qe}function Re(d,g){return p.Function(d.install)?d.install(re,g):p.Function(d)&&d(re,g),this}function re(d,g){let b=x(d,g||{});o.forEach(A=>{F(()=>A(re,b))});const _=document.createElement("div");return((g==null?void 0:g.el)||document.body).appendChild(_),b.mount(_).$refs.fc.fapi}Fe(re,v);function An(d){let g=C({},t);return d?g.inherit={components:e,parsers:r,directives:n,modelFields:s,providers:u,useApps:o,maker:c,formulas:w,loadData:m}:delete g.inherit,At(g)}function Pn(d,g){s[d]=g}function In(d,g){w[d]=g}function Nn(d,g){const b=i[d]||{},_=b.parsers||{};g.parsers&&Object.keys(g.parsers).forEach(V=>{_[V]=Fe(g.parsers[V],$e)}),g.name=d,i[d]=M(C(C({},b),g),{parsers:_})}function ke(d){d&&Object.keys(q).forEach(g=>{(Array.isArray(q[g])?q[g]:[q[g]]).forEach(_=>{_.bus.$emit("$loadData."+d)})})}function Qe(d,g){ee(m,d,g),ke(d)}function Ee(d,g){const b=(..._)=>F(()=>g(..._));b._driver=!0,Qe(d,b)}function Bt(d,g){const b=(d||"").split(".");d=b.shift();const _=b.join(".");if(k(m,d)||(m[d]=jt),m[d]!==jt){let V=m[d];return V&&V._driver?V=V(_):b.length&&(V=N(V,b)),V==null||V===""?g:V}else return g}function Tn(d){l.push(d)}function Bn(d){delete m[d],ke(d)}function Mn(d,g){a.push({name:d,callback:g})}function Xe(d){S(this,{id:fn++,create:re,vm:d,manager:Qr(t.manager),parsers:r,providers:u,modelFields:s,formulas:w,isMobile:y,rules:d.props.rule,name:d.props.name||Se(),inFor:d.props.inFor,prop:{components:e,directives:n},get:null,drivers:i,renderDriver:null,refreshData:ke,loadData:m,CreateNode:$,bus:new Ze,unwatch:new Set,options:f.ref({}),extendApiFn:l,fetchCache:new WeakMap,tmpData:f.reactive({})}),this.unwatch.push=this.unwatch.add,a.forEach(g=>{this.bus.$on(g.name,g.callback)}),f.nextTick(()=>{f.watch(this.options,()=>{this.$handle.$manager.updateOptions(this.options.value),this.api().refresh()},{deep:!0})}),S(d.appContext.components,e),S(d.appContext.directives,n),this.$handle=new J(this),this.name&&(this.inFor?(q[this.name]||(q[this.name]=[]),q[this.name].push(this)):q[this.name]=this)}Xe.isMobile=y,S(Xe.prototype,{init(){this.isSub()&&this.unwatch.add(f.watch(()=>this.vm.setupState.parent.setupState.fc.options.value,()=>{this.initOptions(),this.$handle.api.refresh()},{deep:!0,flush:"sync"})),this.vm.props.driver&&(this.renderDriver=typeof this.vm.props.driver=="object"?this.vm.props.driver:this.drivers[this.vm.props.driver]),!this.renderDriver&&this.vm.setupState.parent&&(this.renderDriver=this.vm.setupState.parent.setupState.fc.renderDriver),this.renderDriver||(this.renderDriver=this.drivers.default),this.initOptions(),this.$handle.init()},targetFormDriver(d,...g){if(this.bus.$emit(d,...g),this.renderDriver&&this.renderDriver[d])return F(()=>this.renderDriver[d](...g))},t(d,g,b){let _=b?b("$t."+d):this.globalLanguageDriver(d);return _==null&&(_=""),_&&g&&Object.keys(g).forEach(V=>{const A=new RegExp(`{${V}}`,"g");_=_.replace(A,g[V])}),_},globalDataDriver(d){let g=d.split(".");const b=g.shift(),_=this.options.value.globalData&&this.options.value.globalData[b];if(_){if(_.type==="static")return N(_.data,g);{let V;const A=this.fetchCache.get(_);if(A){if(A.status&&(V=N(A.data,g)),!A.loading)return V;A.loading=!1,this.fetchCache.set(_,A)}else this.fetchCache.set(_,{status:!1});const R=Y(()=>{le();const W=this.fetchCache.get(_);this.options.value.globalData&&Object.values(this.options.value.globalData).indexOf(_)!==-1?(W&&(W.loading=!0,this.fetchCache.set(_,W)),this.bus.$emit("$loadData.$globalData."+b)):this.fetchCache.delete(_)},_.wait||600),oe=W=>{this.fetchCache.set(_,{status:!0,data:W}),this.bus.$emit("$loadData.$globalData."+b)},ae=(W,ue)=>{if(ue&&_.watch===!1)return le();if(ue){R();return}const ce=this.$handle.loadFetchVar(je(_),W);ce.targetRule=this.targetRule,this.$handle.api.fetch(ce).then(ne=>{oe(ne)}).catch(ne=>{oe(null)})},le=this.watchLoadData(ae);return _.watch===!1&&le(),V}}},getLocale(){let d=this.vm.setupState.top.props.locale;return d&&typeof d=="object"?d.name:typeof d=="string"?d:"zh-cn"},globalLanguageDriver(d){let g=this.vm.setupState.top.props.t,b=this.vm.setupState.top.props.locale,_;if(g&&(_=F(()=>g(d))),_==null&&b&&typeof b=="object"&&(_=N(b,d)),_==null){const V=this.options.value.language||{},A=this.getLocale();_=N(V[A]||{},d),_==null&&(_=N(ln[A]||{},d))}return _},globalVarDriver(d){let g=d.split(".");const b=g.shift(),_=this.options.value.globalVariable&&this.options.value.globalVariable[b];if(_){const V=p.Function(_)?_:G(_.handle);if(V){let A=V((...R)=>this.$handle.api.getData(...R),this.$handle.api);return N(A,g)}}},setData(d,g,b){b?Qe(d,g):(ee(this.vm.setupState.top.setupState.fc.tmpData,d,g),this.bus.$emit("$loadData."+d))},getLoadData(d,g){let b=null;if(d!=null){let _=d.split(".");const V=_.shift();if(b=N(this.vm.setupState.top.setupState.fc.tmpData,d),b!=null)return b;if(V==="$topForm")b=this.$handle.api.top.formData(!0);else if(V==="$scopeForm")b=this.$handle.api.scope.formData(!0);else if(V==="$form")b=this.$handle.api.formData(!0);else if(V==="$options")b=this.options.value;else if(V==="$globalData")b=this.globalDataDriver(_.join(".")),_=[];else if(V==="$var")b=this.globalVarDriver(_.join(".")),_=[];else if(V==="$locale")b=this.getLocale(),_=[];else if(V==="$t")b=this.globalLanguageDriver(_.join(".")),_=[];else{if(V==="$preview")return this.$handle.preview;b=Bt(d),_=[]}b&&_.length&&(b=N(b,_))}return b==null||b===""?g:b},watchLoadData(d,g){let b={};const _=R=>{this.get||(this.get=V),F(()=>{d(V,R)}),this.get===V&&(this.get=void 0)},V=(R,oe)=>{let ae;if(typeof R=="object"&&(ae=R.getValue,R=R.id),b[R])return b[R].val;const le=f.computed(()=>ae?ae():this.getLoadData(R,oe)),W=R.split("."),ue=W.shift(),ce=W.shift()||"",ne=Y(()=>{const fe=ae?ae():this.getLoadData(R,oe);if(b[R])((fe instanceof Function||p.Object(fe)||Array.isArray(fe))&&fe===b[R].val||JSON.stringify(fe)!==JSON.stringify(b[R].val))&&(b[R].val=fe,_(!0));else return},g||0),Un=f.watch(le,fe=>{ne()});return this.bus.$on("$loadData."+ue,ne),ce&&this.bus.$on("$loadData."+ue+"."+ce,ne),b[R]={fn:()=>{this.bus.$off("$loadData."+ue,ne),ce&&this.bus.$off("$loadData."+ue+"."+ce,ne),Un()},val:le.value},le.value};_(!1);const A=()=>{Object.keys(b).forEach(R=>b[R].fn()),b={},this.unwatch.delete(A)};return this.unwatch.add(A),A},isSub(){return this.vm.setupState.parent&&this.vm.props.extendOption},initOptions(){this.options.value={};let d=C({formData:{},submitBtn:{},resetBtn:{},globalEvent:{},globalData:{}},H(h));const g=this.isSub();g&&(d=this.mergeOptions(d,this.vm.setupState.parent.setupState.fc.options.value||{},!0)),d=this.mergeOptions(d,this.vm.props.option);const b=this.api();this.targetFormDriver("initOptions",d,{api:b,isSubForm:g}),this.updateOptions(d)},mergeOptions(d,g,b){return g=C({},g||{}),b&&["page","onSubmit","onReset","onCreated","onChange","onMounted","mounted","beforeUnmount","beforeSubmit","onBeforeUnmount","onReload","reload","formData","el","globalClass","style"].forEach(_=>{delete g[_]}),g.global&&(d.global=yr(d.global,g.global),delete g.global),this.$handle.$manager.mergeOptions([g],d),d},updateOptions(d){this.options.value=this.mergeOptions(this.options.value,d),this.$handle.$manager.updateOptions(this.options.value),this.bus.$emit("$loadData.$options")},api(){return this.$handle.api},render(){return this.$handle.render()},mounted(){this.$handle.mounted()},unmount(){if(F(()=>this.$handle.lifecycle("beforeUnmount")),this.name)if(this.inFor){const d=q[this.name].indexOf(this);q[this.name].splice(d,1)}else delete q[this.name];a.forEach(d=>{this.bus.$off(d.name,d.callback)}),this.tmpData={},[...this.unwatch].forEach(d=>d()),this.unwatch.clear(),this.$handle.reloadRule([])},updated(){this.$handle.bindNextTick(()=>this.bus.$emit("next-tick",this.$handle.api))}});function Mt(d){S(d,{version:t.version,ui:t.ui,isMobile:y,extendApi:Tn,getData:Bt,setDataDriver:Ee,setData:Qe,removeData:Bn,refreshData:ke,maker:c,component:E,directive:B,setModelField:Pn,setFormula:In,setDriver:Nn,register:de,$vnode:pe,parser:he,use:Re,factory:An,componentAlias:Ke,copyRule:ft,copyRules:dt,mergeRule:Q,fetch:wt,$form:D,parseFn:G,parseJson:it,toJson:ye,useApp:P,getApi:Z,on:Mn})}function Ln(d){S(d,{create:re,install(g,b){h=C(C({},h),b||{});const _=`_installedFormCreate${y?"Mobile":""}_${t.ui}`;if(g[_]===!0)return;g[_]=!0;const V=function(R,oe={}){return re(R,oe)};Mt(V),g.config.globalProperties.$formCreate=V;const A=D();g.component(A.name,A),o.forEach(R=>{F(()=>R(d,g))})}})}if(Mt(v),Ln(v),Ee("$cookie",sn),Ee("$localStorage",on),Ee("$sessionStorage",an),$.use({fragment:"fcFragment"}),t.install&&re.use(t),P((d,g)=>{g.mixin({props:["formCreateInject"],emits:["fc.updateValue","fc.el"]})}),he(en),t.inherit){const d=t.inherit;d.components&&S(e,d.components),d.parsers&&S(r,d.parsers),d.directives&&S(n,d.directives),d.modelFields&&S(s,d.modelFields),d.providers&&S(u,d.providers),d.useApps&&S(o,d.useApps),d.maker&&S(c,d.maker),d.loadData&&S(m,d.loadData),d.formulas&&S(w,d.formulas)}const De=D();return Fe(De,v),Object.defineProperties(De,{fetch:{get(){return v.fetch},set(d){v.fetch=d}}}),De.util=v,De}const Ge="hidden",dn={name:Ge,maker:{[Ge]:(t,e)=>U(Ge)("",t,e)},render(){return[]}},Pt="slider",hn={name:Pt,maker:{sliderRange:U(Pt,{range:!0})},toFormValue(t,e){let r=Array.isArray(t),n=e.prop.props,s=n.min||0,i;return n.range===!0?i=r?t:[s,parseFloat(t)||s]:i=r?parseFloat(t[0])||s:parseFloat(t),i}},pn={name:"FcRow",render(t,e){return e.vNode.col({props:{span:12}},{default:()=>[e.vNode.row(e.prop,t)]})}},ze={name:"checkbox",mergeProp(t){const e=t.prop.props;k(e,"options")||(e.options=t.prop.options||[])}},mn=M(C({},ze),{name:"select",toFormValue(t,e){return e.prop.props.multiple&&!Array.isArray(t)?j(t):t}}),gn=M(C({},ze),{name:"radio"}),yn=[dn,gn,ze,{name:"tree",mergeProp(t){t.prop.props.checkable=!0}},hn,pn,mn],O="t",bn={button:O+"Button",icon:O+"Icon",slider:O+"Slider",upload:"fcUpload",cascader:O+"Cascader",autoComplete:O+"AutoComplete",auto:O+"AutoComplete",popup:O+"Popup",tooltip:O+"Tooltip",colorPicker:O+"ColorPicker",dateRangePicker:O+"DateRangePicker",datePicker:O+"DatePicker",timePicker:O+"TimePicker",timeRangePicker:O+"TimeRangePicker",switch:O+"Switch",select:O+"Select",checkbox:O+"CheckboxGroup",radio:O+"RadioGroup",inputNumber:O+"InputNumber",number:O+"InputNumber",input:O+"Input",rate:O+"Rate",rangeInput:O+"RangeInput",tagInput:O+"TagInput",textarea:O+"Textarea",formItem:O+"FormItem",form:O+"Form",frame:"fcFrame",col:O+"Col",row:O+"Row",treeSelect:O+"TreeSelect",transfer:O+"Transfer",tree:O+"Tree",group:"fcGroup",array:"fcGroup",object:"fcSubForm",subForm:"fcSubForm"};function $n(){return{form:{layout:"vertical",labelAlign:"right",labelWidth:"125px"},row:{show:!0,gutter:0},submitBtn:{theme:"primary",loading:!1,disabled:!1,innerText:"",show:!0,col:void 0,click:void 0},resetBtn:{theme:"default",loading:!1,disabled:!1,innerText:"",show:!1,col:void 0,click:void 0}}}function It(t,e){k(t,e)&&p.String(t[e])&&(t[e]={[e]:t[e],show:!0})}function X(t){return t===!1}function _n(t,e){k(t,e)&&!p.Object(t[e])&&(t[e]={show:!!t[e]})}function Je(t){const e=C({},t);return delete e.children,e}const Cn={validate(t){return new Promise((e,r)=>{const n=this.form();if(n)return n.validate(t).then(s=>{s===!0?e(s):r(s)}).catch(s=>{});e(!0)})},validateField(t){return this.validate({fields:[t]})},clearValidateState(t){const e=this.form();if(e)return e.clearValidate(t)},tidyOptions(t){return["submitBtn","resetBtn","row","info","wrap","col","title"].forEach(e=>{_n(t,e)}),t},tidyRule({prop:t}){return It(t,"title"),It(t,"info"),t},mergeProp(t){const e={info:{type:"popup",placement:"top-left",showArrow:!0,icon:"QuestionCircleOutlined"},title:{},col:{span:12},wrap:{}};["info","wrap","col","title"].forEach(r=>{t.prop[r]=K([this.options[r]||{},t.prop[r]||{}],e[r])})},getDefaultOptions(){return $n()},adapterValidate(t,e){return t.validator=r=>new Promise(n=>e(r,i=>{n(i?{message:i}:{result:!0})})),t},update(){const t=this.options.form;this.rule={props:C({},t),on:{submit:e=>{e.preventDefault&&e.preventDefault()}},style:t.style,type:"form"}},beforeRender(){const{key:t,ref:e,$handle:r}=this,n=this.options.form;S(this.rule,{key:t,ref:e,class:[n.className,n.class,"form-create",this.$handle.preview?"is-preview":""]}),S(this.rule.props,{data:r.formData})},render(t){return t.slotLen()&&!this.$handle.preview&&t.setSlot(void 0,()=>this.makeFormBtn()),this.$r(this.rule,X(this.options.row.show)?t.getSlots():[this.makeRow(t)])},makeWrap(t,e){const r=t.prop,n=`${this.key}${t.key}`,s=r.col,i=this.isTitle(r)&&r.wrap.title!==!1,o=!(s!=null&&s.labelWidth)&&!i?0:s==null?void 0:s.labelWidth,{layout:a,col:l}=this.rule.props,u=r.wrap.class;delete r.wrap.class,delete r.wrap.title;let c;return(p.Undef(r.wrap.show)?!t.input:X(r.wrap.show))?c=e:c=this.$r(K([r.wrap,{props:M(C({labelWidth:o===void 0?o:tt(o)},Je(r.wrap||{})),{name:t.id,rules:r.validate,label:i?()=>this.makeInfo(r,n,t):void 0}),class:this.$render.mergeClass(u||r.className,"fc-form-item"),key:`${n}fi`,ref:t.wrapRef,type:"formItem"}]),{default:()=>e}),a==="inline"||X(l)||X(s.show)?c:this.makeCol(r,n,[c])},isTitle(t){if(this.options.form.title===!1)return!1;const e=t.title;return!(!e.title&&!e.native||X(e.show))},makeInfo(t,e,r){var u,c,h,y,m,$;const n=C({},t.title),s=C({},t.info),i=this.options.form,o=this.getSlot("title"),a=[o?o({title:(c=(u=r.refRule)==null?void 0:u.__$title)==null?void 0:c.value,rule:r.rule,options:this.options}):((y=(h=r.refRule)==null?void 0:h.__$title)==null?void 0:y.value)+(i.labelSuffix||i["label-suffix"]||"")];if(!X(s.show)&&(s.info||s.native)&&!X(s.icon)){const w={type:s.type||"popup",props:Je(s),key:`${e}pop`};delete w.props.icon,delete w.props.show,delete w.props.info,delete w.props.align,delete w.props.native;const v="content";s.info&&!k(w.props,v)&&(w.props[v]=($=(m=r.refRule)==null?void 0:m.__$info)==null?void 0:$.value),a[s.align!=="left"?"unshift":"push"](this.$r(K([s,w]),{[n.slot||"default"]:()=>this.$r({type:s.icon===!0?"QuestionCircleOutlined":s.icon||"",key:`${e}i`})}))}const l=K([n,{props:Je(n),key:`${e}tit`,class:"fc-form-title",type:n.type||"span",on:{click:(...w)=>{this.$handle.targetHook(r,"titleClick",{args:w})}}}]);return delete l.props.show,delete l.props.title,delete l.props.native,this.$r(l,a)},makeCol(t,e,r){const n=C({},t.col);return delete n.show,this.$r({class:this.$render.mergeClass(n.class,"fc-form-col"),type:"col",props:n||{span:12},key:`${e}col`},r)},makeRow(t){const e=this.options.row||{};return this.$r({type:"row",props:e,class:this.$render.mergeClass(e.class,"fc-form-row"),key:`${this.key}row`},t)},makeFormBtn(){let t=[];if(X(this.options.submitBtn.show)||t.push(this.makeSubmitBtn()),X(this.options.resetBtn.show)||t.push(this.makeResetBtn()),!t.length)return;const e=this.$r({type:"formItem",class:"fc-form-item",props:{label:this.rule.props.layout==="inline"?"":" "},key:`${this.key}fb`},t);return this.rule.props.layout==="inline"?e:this.$r({type:"col",class:"fc-form-col fc-form-footer",props:{span:12},key:`${this.key}fc`},[e])},makeResetBtn(){const t=C({},this.options.resetBtn),e=t.innerText||this.$handle.api.t("reset")||"重置";return delete t.innerText,delete t.click,delete t.col,delete t.show,this.$r({type:"button",props:t,class:"fc-reset-btn",style:{width:t.width,marginLeft:"10px"},on:{click:()=>{const r=this.$handle.api;this.options.resetBtn.click?this.options.resetBtn.click(r):r.resetFields()}},key:`${this.key}b2`},[e])},makeSubmitBtn(){const t=C({},this.options.submitBtn),e=t.innerText||this.$handle.api.t("submit")||"提交";return delete t.innerText,delete t.click,delete t.col,delete t.show,this.$r({type:"button",props:t,class:"fc-submit-btn",style:{width:t.width},on:{click:()=>{const r=this.$handle.api;this.options.submitBtn.click?this.options.submitBtn.click(r):r.submit().catch(()=>{})}},key:`${this.key}b1`},[e])}},te={};wn(te),Sn(te),Vn(te),Fn(te),On(te),vn(te);function wn(t){["group","tree","treeSelect","switch","upload","cascader","autoComplete","rangeInput","transfer","tagInput","colorPicker","datePicker","dateRangePicker","timePicker","timeRangePicker","textarea","input","frame","inputNumber"].forEach(e=>{t[e]=U(e)}),t.auto=t.autoComplete,t.number=t.inputNumber,t.color=t.colorPicker,t.date=t.datePicker,t.dateRange=t.dateRangePicker,t.time=t.timePicker,t.timeRange=t.timeRangePicker,t.tag=t.tagInput}function Sn(t){t.treeSelectMultiple=U("treeSelect",{multiple:!0})}function Vn(t){["password","url","text","tel"].reduce((e,r)=>(e[r]=U("input",{type:r}),e),t)}function Fn(t){const e="select",r="multiple";t.selectMultiple=U(e,{[r]:!0}),t.selectOne=U(e,{[r]:!1})}function On(t){const e="upload",r={image:["image",0],file:["file",0],uploadFileOne:["file",1],uploadImageOne:["image",1]};Object.keys(r).reduce((n,s)=>(n[s]=U(e,i=>i.props({uploadType:r[s][0],max:r[s][1]})),n),t),t.uploadImage=t.image,t.uploadFile=t.file}function vn(t){const e={frameInputs:["input",0],frameFiles:["file",0],frameImages:["image",0],frameInputOne:["input",1],frameFileOne:["file",1],frameImageOne:["image",1]};return Object.keys(e).reduce((r,n)=>(r[n]=U("frame",s=>s.props({type:e[n][0],maxLength:e[n][1]})),r),t),t.frameInput=t.frameInputs,t.frameFile=t.frameFiles,t.frameImage=t.frameImages,t}function Nt(t,e){return p.Boolean(t)?t={show:t}:!p.Undef(t)&&!p.Object(t)&&(t={show:e}),t}function Rn(t,e){return{formEl(){return e.$manager.form()},wrapEl(r){const n=e.getFieldCtx(r);if(n)return e.vm.refs[n.wrapRef]},validate(r){return new Promise((n,s)=>{const i=t.children,o=[e.$manager.validate()];i.filter(a=>!a.isScope).forEach(a=>{o.push(a.validate())}),Promise.all(o).then(()=>{n(!0),r&&r(!0)}).catch(a=>{s(a),r&&r(a),e.vm.emit("validate-fail",a,{api:t}),e.emitEvent("validate-fail",a,{api:t})})})},validateField(r,n){return new Promise((s,i)=>{const a=typeof r=="object"?z(r):e.getCtx(r);if(!a){s(null),n&&n(null);return}const l=e.subForm[a.id],u=[e.$manager.validateField(a.id)];j(l).filter(c=>!c.isScope).forEach(c=>{u.push(c.validate())}),Promise.all(u).then(()=>{s(!0),n&&n(!0)}).catch(c=>{i(c),n&&n(c),e.vm.emit("validate-field-fail",c,{field:r,api:t})})})},validateFields(r,n){return new Promise((s,i)=>{Array.isArray(r)||(r=[r]);const o=r.map(a=>t.validateField(a));Promise.all(o).then(()=>{s(null),n&&n(null)}).catch(a=>{i(a),n&&n(a)})})},clearValidateState(r,n=!0){let s=[];t.helper.tidyFields(r).forEach(i=>{n&&this.clearSubValidateState(i),r&&(s=s.concat(e.getCtxs(i).map(o=>o.id)))}),r&&s.length?e.$manager.clearValidateState(s):r||e.$manager.clearValidateState()},clearSubValidateState(r){t.helper.tidyFields(r).forEach(n=>{e.getCtxs(n).forEach(s=>{const i=e.subForm[s.id];i&&(Array.isArray(i)?i.forEach(o=>{o.clearValidateState()}):i&&i.clearValidateState())})})},btn:{loading:(r=!0)=>{t.submitBtnProps({loading:!!r})},disabled:(r=!0)=>{t.submitBtnProps({disabled:!!r})},show:(r=!0)=>{t.submitBtnProps({show:!!r})}},resetBtn:{loading:(r=!0)=>{t.resetBtnProps({loading:!!r})},disabled:(r=!0)=>{t.resetBtnProps({disabled:!!r})},show:(r=!0)=>{t.resetBtnProps({show:!!r})}},submitBtnProps:(r={})=>{let n=Nt(e.options.submitBtn,!0);S(n,r),e.options.submitBtn=n,t.refreshOptions()},resetBtnProps:(r={})=>{let n=Nt(e.options.resetBtn,!1);S(n,r),e.options.resetBtn=n,t.refreshOptions()},submit(r,n){return new Promise((s,i)=>{(e.options.validateOnSubmit===!1?Promise.resolve():t.validate()).then(()=>{let a=t.formData();e.beforeSubmit(a).then(()=>{p.Function(r)&&F(()=>r(a,t)),p.Function(e.options.onSubmit)&&F(()=>e.options.onSubmit(a,t)),e.vm.emit("submit",a,t),s(a)}).catch(l=>{})}).catch((...a)=>{p.Function(n)&&F(()=>n(t,...a)),i(...a)})})}}}const Tt={name:"required",load(t,e,r){const n=kn(t.getValue());let s;if(n.required===!1)t.clearProp(),r.clearValidateState([e.field]);else{const i=C({trigger:"change",validator(a){return o(),!p.empty(a)}},n),o=()=>{var l;const a=(l=e.__fc__.refRule.__$title)==null?void 0:l.value;if(s!==a)if(s=a,!n.message)i.message=r.t("required",{title:a})||a+(r.getLocale()==="en"?" is required":"不能为空");else{const u=n.message.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);u&&(i.message=r.t(u[1],{title:a}))}};o(),t.getProp().validate=[i]}r.sync(e)},watch(...t){Tt.load(...t)}};function kn(t){return p.Boolean(t)?{required:t}:p.String(t)?{message:t}:p.Undef(t)?{required:!1}:p.Function(t)?{asyncValidator:t}:p.Object(t)?t:{}}function En(t){t.componentAlias(bn),pr.forEach(e=>{t.component(e.name,e)}),t.register(Tt),yn.forEach(e=>{t.parser(e)}),Object.keys(te).forEach(e=>{t.maker[e]=te[e]})}function Dn(){return At({ui:"tdesign",version:"3.3.5",manager:Cn,extendApi:Rn,install:En,attrs:{normal:["col","wrap"],array:["className"],key:["title","info"]}})}const We=Dn();typeof window!="undefined"&&(window.formCreate=We);const jn=We.maker;I.default=We,I.maker=jn,Object.defineProperties(I,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});