ai-form-designer
Version:
vue3+adv的设计器,可视化开发页面表单
11 lines (8 loc) • 36 kB
JavaScript
;var pe=Object.defineProperty;var me=(t,e,o)=>e in t?pe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var V=(t,e,o)=>me(t,typeof e!="symbol"?e+"":e,o);const n=require("vue"),B=(t,e)=>n.defineAsyncComponent({loader:t,loadingComponent:e,delay:80});function G(t=10){const e="abcdefghijklmnopqrstuvwxyz0123456789";let o="";for(let r=0;r<t;r++){const s=Math.floor(Math.random()*e.length);o+=e[s]}return o}function Y(t){return t.charAt(0).toUpperCase()+t.slice(1)}function X(t){return t.replace(/-/g,"")}function _(t,e=new WeakMap){if(typeof t!="object"||t===null)return t;if(e.has(t))return e.get(t);if(Array.isArray(t)){const r=t.map(s=>_(s,e));return e.set(t,r),r}const o={};return e.set(t,o),Object.keys(t).forEach(r=>{o[r]=_(t[r],e)}),o}function he(t){const[e]=te([_(t)],o=>{var s,i;const r={...o,id:`${X(o.type)}${G(8)}`};return(r.field||r.input)&&!((i=(s=I.getComponentConfingByType(r.type))==null?void 0:s.editConstraints)!=null&&i.fixedField)&&(r.field=r.id),r});return e}function M(t,e,o=!0){for(const[r,s]of Object.entries(e))t[r]&&s&&typeof t[r]=="object"&&typeof s=="object"?(Array.isArray(t[r])&&!Array.isArray(s)?t[r]={}:!Array.isArray(t[r])&&Array.isArray(s)&&(t[r]=[]),M(t[r],s,o)):t[r]=s;o&&Object.keys(t).reverse().forEach(r=>{e.hasOwnProperty(r)||(Array.isArray(t)?t.splice(Number(r),1):delete t[r])})}function K(t,e,o=[],r=new WeakMap){const s=i=>{if(Array.isArray(i))return i.map(s);if(typeof i=="object"&&i!==null){if(r.has(i))return"[Circular]";r.set(i,!0);const l=Object.keys(i).sort(),c={};return l.forEach(u=>{o.includes(u)||(c[u]=s(i[u]))}),r.delete(i),c}else return i};return JSON.stringify(s(t))===JSON.stringify(s(e))}function j(t,e){const o=[];let r=!1;function s(i){if(o.push(i),i.id===e&&(r=!0),!r&&i.children!=null&&i.children.length>0)for(let l=0;l<i.children.length&&(s(i.children[l]),!r);l++);if(!r&&i.slots)for(let l in i.slots)for(let c=0;c<i.slots[l].length&&(s(i.slots[l][c]),!r);c++);r||o.pop()}return t.forEach(s),r||console.error(`没有查询到id为${e}的节点`),o}function ve(t,e,o){const r=e.split(".");let s=t;for(let i=0;i<r.length;i++){if(s==null)return o;s=s[r[i]]}return s===void 0?o:s}function ye(t,e,o){const r=e.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean);let s=t;for(let i=0;i<r.length-1;i++){const l=r[i];s[l]==null&&(s[l]=isNaN(Number(r[i+1]))?{}:[]),s=s[l]}return s[r[r.length-1]]=o,t}function ge(t,e="default"){return ee(t,e).map(r=>r.field)}function ee(t,e="default"){const o=$(t,s=>{var i;return s.type==="form"&&(((i=s.componentProps)==null?void 0:i.name)??s.name===e)},!0);return $((o==null?void 0:o.children)??[],s=>!!s.input,!1,s=>s.type!=="subform")}function $(t,e,o=!1,r){const s=[],i=[...t];for(;i.length;){const l=i.pop();if(l!=null&&l.children&&(!r||r(l))&&i.push(...l.children),l!=null&&l.slots&&(!r||r(l)))for(let c in l.slots)i.push(...l.slots[c]);if(e(l)&&(s.push(l),o))return l}return o?!1:s}function te(t,e,o){const r=[...t];for(;r.length;){const s=r.pop();if(s!=null&&s.children&&(!o||o(s))&&r.push(...s.children),s!=null&&s.slots&&(!o||o(s)))for(let i in s.slots)r.push(...s.slots[i]);M(s,e(s))}return t}function we(t,e){const o=$(t,r=>r.id===e,!0);if(!o)throw new Error(`没有查询到id为${e}的节点`);return o}function Ce(t,e){const o=[{type:"",children:t}];let r=0,s=null;if($(o,i=>{if(s=i.children??null,!s){if(i!=null&&i.slots)for(let l in i.slots){s=i.slots[l];for(let c=0;c<s.length;c++)if(s[c].id===e)return r=c,!0}return!1}for(let l=0;l<s.length;l++)if(s[l].id===e)return r=l,!0;return!1},!0),!s)throw new Error(`没有查询到id为${e}的节点`);return{list:s,schema:s[r],index:r}}function be(t){const e={schemas:[{type:"page",id:"root",label:"页面",children:[{label:"表单",type:"form",icon:"epic-icon-daibanshixiang",labelWidth:t.config.labelWidth||100,name:"default",componentProps:{layout:t.config.layout||"horizontal",labelWidth:t.config.labelWidth||100,labelLayout:t.config.labelLayout==="flex"?"fixed":"flex",labelCol:t.config.labelCol||{span:5},wrapperCol:t.config.wrapperCol||{span:19},hideRequiredMark:t.config.hideRequiredMark||!1,colon:t.config.colon||!0,labelAlign:t.config.labelAlign||"right",size:t.config.size||"middle"},children:[],id:"form_"+G()}],componentProps:{style:{padding:"16px"}}}],script:t.script||""};return e.schemas[0].children[0].children=O(t.list),e}function O(t,e){return t.map(o=>{var u,C,v;let r=o.type??"";const s=o.options??{},i=(a,y)=>{r===a&&(r=y,s.defaultValue&&(s.defaultValue=JSON.parse(s.defaultValue)))};if(i("uploadImg","upload-image"),i("uploadFile","upload-file"),r==="date"&&s.range&&(s.type="daterange",delete s.range),(r==="date"||r==="time")&&(s.valueFormat=s.format),r==="textarea"){const{minRows:a,maxRows:y}=s;s.autoSize={minRows:a,maxRows:y},delete s.minRows,delete s.maxRows}r==="number"&&!s.precision&&delete s.precision,s.width&&(s.style={width:s.width},delete s.width),r==="grid"&&(r="row"),e&&e.type==="grid"&&(r="col",s.span=o.span,o.key=G());const l={label:o.label,type:r,icon:o.icon||"",field:o.model,componentProps:s,id:o.key};return(s.noFormItem||!s.showLabel)&&(l.noFormItem=!0,delete s.noFormItem,delete s.showLabel),s.clearable&&(s.allowClear=!0,delete s.clearable),["input","textarea","number","password","select","cascader","checkbox","radio","date","time","slider","switch","color-picker","upload-file","upload-image"].includes(r)&&(l.input=!0,((C=(u=o.rules)==null?void 0:u[0])==null?void 0:C.required)===!1&&o.rules.shift(),((v=o.rules)==null?void 0:v.length)>0&&(l.rules=o.rules)),o.list&&(l.children=O(o.list,o)),o.columns&&(l.children=O(o.columns,o)),o.trs&&(l.children=O(o.trs,o)),o.tds&&(l.children=O(o.tds,o)),l})}function Se(t,e){let o=null;return(...r)=>{o&&clearTimeout(o),o=setTimeout(()=>{t(...r)},e)}}class ne{constructor(){V(this,"initialized",n.ref(!1));V(this,"components",{});V(this,"componentConfigs",{});V(this,"baseComponentTypes",[]);V(this,"componentSchemaGroups",n.ref([]));V(this,"hiddenComponents",[]);V(this,"formSchemas",[{label:"表单",type:"form",componentProps:{layout:"horizontal",name:"default",labelWidth:100,labelLayout:"fixed",labelCol:{span:5},wrapperCol:{span:19},colon:!0,labelAlign:"right",labelPlacement:"left"},children:[],id:"root"}]);V(this,"componentGroupNameMap",{});V(this,"sortedGroups",["表单","布局"]);V(this,"viewsContainers",{activitybars:n.shallowRef([]),rightSidebars:n.shallowRef([])});V(this,"publicMethods",{})}component(e,o){typeof o=="function"&&(o=B(o)),this.components[e]=o}registerComponent(e){this.component(e.defaultSchema.type,e.component),e.defaultSchema.input&&(e.config.action||(e.config.action=[]),e.config.action.unshift({type:"setValue",describe:"设置值",argsConfigs:[{...e.defaultSchema,label:"设置数据",field:"0"}]},{type:"getValue",describe:"获取值"})),this.componentConfigs[e.defaultSchema.type]=e,this.computedComponentSchemaGroups()}removeComponent(e){delete this.componentConfigs[e],delete this.components[e]}setBaseComponentTypes(e){this.baseComponentTypes=e}addBaseComponentTypes(e){this.baseComponentTypes.push(e)}removeBaseComponents(){this.baseComponentTypes.forEach(e=>{this.removeComponent(e)}),this.setBaseComponentTypes([]),this.computedComponentSchemaGroups()}getComponents(){return this.components}getComponent(e){return this.components[e]}registerActivitybar(e){typeof e.component=="function"&&(e.component=B(e.component)),typeof e.visible>"u"&&(e.visible=!0);const o=this.viewsContainers.activitybars.value.findIndex(r=>r.id===e.id);o!==-1?this.viewsContainers.activitybars.value[o]=e:this.viewsContainers.activitybars.value.push(e)}getActivitybars(){return this.viewsContainers.activitybars.value}hideActivitybar(e,o="title"){const r=this.viewsContainers.activitybars.value.findIndex(s=>s[o]===e);r!==-1&&(this.viewsContainers.activitybars.value[r].visible=!1)}showActivitybar(e,o="title"){const r=this.viewsContainers.activitybars.value.findIndex(s=>s[o]===e);r!==-1&&(this.viewsContainers.activitybars.value[r].visible=!0)}registerRightSidebar(e){typeof e.component=="function"&&(e.component=B(e.component)),typeof e.visible>"u"&&(e.visible=!0);const o=this.viewsContainers.rightSidebars.value.findIndex(r=>r.id===e.id);o!==-1?this.viewsContainers.rightSidebars.value[o]=e:this.viewsContainers.rightSidebars.value.push(e)}getRightSidebars(){return this.viewsContainers.rightSidebars.value}hideRightSidebar(e,o="title"){const r=this.viewsContainers.rightSidebars.value.findIndex(s=>s[o]===e);r!==-1&&(this.viewsContainers.rightSidebars.value[r].visible=!1)}showRightSidebar(e,o="title"){const r=this.viewsContainers.rightSidebars.value.findIndex(s=>s[o]===e);r!==-1&&(this.viewsContainers.rightSidebars.value[r].visible=!0)}getComponentConfings(){return this.componentConfigs}getComponentConfingByType(e){return this.componentConfigs[e]}computedComponentSchemaGroups(){const e=[];Object.values(this.componentConfigs).forEach(o=>{if(!this.hiddenComponents.includes(o.defaultSchema.type)&&o.groupName){const r=this.componentGroupNameMap[o.groupName]??o.groupName;let s=e.findIndex(l=>l.title===r);s===-1&&(e.push({title:r,list:[]}),s=e.length-1);let i=e[s].list.findIndex(l=>l.type===o.defaultSchema.type);i!==-1?e[s].list[i]=o.defaultSchema:e[s].list.push(o.defaultSchema)}}),e.sort((o,r)=>{const s=this.sortedGroups.indexOf(o.title),i=this.sortedGroups.indexOf(r.title);return s===-1?1:i===-1?-1:s-i}),e.forEach(o=>{o.list.sort((r,s)=>{var c,u;const i=((c=this.componentConfigs[r.type])==null?void 0:c.sort)??1e3,l=((u=this.componentConfigs[s.type])==null?void 0:u.sort)??1e3;return i-l})}),this.componentSchemaGroups.value=e}getComponentSchemaGroups(){return this.componentSchemaGroups}setComponentGroupNameMap(e,o){this.componentGroupNameMap[e]=o}clearComponentGroupNameMap(){this.componentGroupNameMap={}}setSortedGroups(e){this.sortedGroups=e,this.computedComponentSchemaGroups()}clearSortedGroups(){this.sortedGroups=[],this.computedComponentSchemaGroups()}hideComponent(e){this.hiddenComponents.push(e),this.computedComponentSchemaGroups()}showComponent(e){this.hiddenComponents=this.hiddenComponents.filter(o=>o!==e),this.computedComponentSchemaGroups()}setHideComponents(e){this.hiddenComponents=e,this.computedComponentSchemaGroups()}setInitialized(e){this.initialized.value=e}addPublicMethod(e){const o=e.methodName??e.name,r=e.method??e.handler;this.publicMethods[o]={...e,name:o,handler:r}}removePublicMethod(e){delete this.publicMethods[e]}}const I=new ne;function Z(){const t=n.ref({}),e=n.ref({}),o=n.ref(!1),r=n.ref([]),s=n.reactive({});function i(f){return console.log("==============="),console.log(f),console.log(t),console.log("==============="),t.value[f]}function l(f,g){t.value[f]=g}function c(f){delete t.value[f]}function u(f,g=!1){const w=Object.entries(I.publicMethods).reduce((S,[E,N])=>(S[E]=N.handler,S),{});try{new Function(`const epic = this;${f}`).bind({...w,getComponent:i,find:i,defineExpose:C,publicMethods:w,pluginManager:I})()}catch(S){g&&console.error("[epic:自定义函数]异常:",S)}}function C(f){f!=null&&(e.value=f)}function v(f,...g){if(!f||f.length===0){console.warn("未提供任何动作");return}f.forEach(w=>{const S=w.args?JSON.parse(w.args):g;switch(w.type){case"public":a(w,S);break;case"custom":y(w,S);break;case"component":p(w,S);break;default:console.warn(`未知的动作类型: ${w.type}`);break}})}function a(f,g){var w;try{(w=I.publicMethods[f.methodName])==null||w.handler(...g)}catch(S){console.error(`[Epic:公共函数(${f.methodName})]执行异常:`,S)}}function y(f,g){var w,S;try{(S=(w=e.value)[f.methodName])==null||S.call(w,...g)}catch(E){console.error(`[Epic:自定义函数(${f.methodName})]执行异常:`,E)}}function p(f,g){const w=f.componentId!=null&&i(f.componentId);if(!w){console.warn(`[Epic:组件${f.componentId}]未找到`);return}try{w[f.methodName](...g)}catch(S){console.error(`[Epic:组件${f.componentId}函数(${f.methodName})]执行异常:`,S)}}function m(f=!0){o.value=f}function h(f){const g=$(f,()=>!0);r.value=g.map(w=>w.id)}function b(f,g="default"){if(s[g]){const w=s[g];M(f,w)}s[g]=f}function k(f,g="default"){if(s[g]){M(s[g],f,!1);return}s[g]=f}return{componentInstances:t,funcs:e,isDesignMode:o,defaultComponentIds:r,forms:s,addFormData:b,setFormData:k,getComponentInstance:i,find:i,addComponentInstance:l,removeComponentInstance:c,setMethods:u,doActions:v,setDesignMode:m,setDefaultComponentIds:h}}function oe(){const t=n.ref([]),e=n.ref([]),o=n.ref(null);let r=0;function s(u,C="插入组件"){const v=Date.now();r+150>v||(r=v,o.value!=null&&(t.value.push(o.value),e.value.splice(0,e.value.length)),o.value={type:C,componentSchema:JSON.stringify(u)},t.value.length>60&&t.value.unshift())}function i(){if(t.value.length===0)return!1;const u=t.value.pop();return o.value!=null&&e.value.push(o.value),o.value=u,JSON.parse(u.componentSchema)}function l(){if(e.value.length===0)return!1;const u=e.value.pop();return o.value!=null&&t.value.push(o.value),o.value=u,JSON.parse(u.componentSchema)}function c(){t.value=[],e.value=[],o.value=null}return{recordList:t,undoList:e,currentRecord:o,push:s,undo:i,redo:l,reset:c}}const xe=n.defineComponent({inheritAttrs:!1,__name:"dynamicFormItem",props:{hasFormItem:{type:Boolean},formItemProps:{}},emits:["updateFormItemRef"],setup(t,{emit:e}){const o=I.getComponent("form-item"),r=t,s=e,i=n.ref(),l=()=>{s("updateFormItemRef",i.value)};return(c,u)=>r.hasFormItem?(n.openBlock(),n.createBlock(n.unref(o),n.mergeProps({key:0,ref_key:"formItemRef",ref:i,onVnodeMounted:l},r.formItemProps),{default:n.withCtx(()=>[n.renderSlot(c.$slots,"default")]),_:3},16,["onVnodeMounted"])):n.renderSlot(c.$slots,"default",{key:1})}}),re=n.defineComponent({name:"ENode",__name:"node",props:{componentSchema:{},modelValue:{},ruleField:{},resetFormData:{type:Boolean},name:{}},emits:["update:modelValue","change"],setup(t,{emit:e}){const{proxy:o}=n.getCurrentInstance(),r=t,s=n.ref(null);let i=n.inject("formData",n.reactive({}));const l=n.inject("slots",{}),c=n.inject("pageManager",{}),u=n.inject("disabled",{value:!1}),C=n.inject("ruleFieldPrefix",null),v=n.inject("resetFormData",!1);let a=n.reactive(_(r.componentSchema));y(),n.watch(()=>r.componentSchema,d=>{K(a,d,["children"])||(M(a,_(d)),y())},{deep:!0});function y(){c.isDesignMode.value&&typeof a.field=="string"&&(a.field+="-design-mode")}(r.resetFormData||v)&&(i={});const p=e,m=n.ref(),h=n.ref(),b=d=>{h.value=d},k=n.useAttrs();Object.keys(k).length&&n.provide("nodeAttrs",k);const f=n.shallowRef(null),g=n.computed(()=>{var d,x;return(d=a.componentProps)!=null&&d.hidden?!1:typeof a.show=="boolean"?a.show:((x=a.show)==null?void 0:x.call(a,{values:i}))??!0}),w=n.computed(()=>{var D;const d=g.value&&((D=a.rules)==null?void 0:D.map(A=>({...A,validator:A.validator&&c.funcs.value[A.validator]})));let x=a.field;r.ruleField?x=r.ruleField:C&&a.field&&(x=_(C),x.push(a.field));const P={...a,rules:d,rule:d,field:x};return P.children&&delete P.children,P}),S=n.computed(()=>{var P,D;const d=((P=E.value)==null?void 0:P.bindModel)??"modelValue",x={};return a.on&&Object.keys(a.on).forEach(A=>{x[`on${Y(A)}`]=(...fe)=>c.doActions(a.on[A],...fe)}),{...r,...a.componentProps,disabled:(u==null?void 0:u.value)||((D=a.componentProps)==null?void 0:D.disabled),bindModel:d,...x}}),E=n.computed(()=>I.getComponentConfingByType(a.type)??null);n.watchEffect(()=>{s.value=r.modelValue??i[a.field??""]}),n.watch(()=>s.value,()=>{s.value!==(r.modelValue??i[a.field??""])&&F(s.value)}),n.watch(()=>m.value,()=>{N()},{immediate:!0});function N(){var x;const d=m.value||o;a.id&&d&&(a.input&&(d.setValue=F,d.getValue=()=>i[a.field]||r.modelValue),d.setAttr=(P,D)=>(a.componentProps||(a.componentProps={}),a.componentProps[P]=D),d.getAttr=P=>a.componentProps[P],c.addComponentInstance(a.id,d),(x=E.value)!=null&&x.defaultSchema.input&&a.noFormItem!==!0&&h.value&&c.addComponentInstance(a.id+"formItem",h.value))}function z(){var d;a.id&&(c.removeComponentInstance(a.id),(d=E.value)!=null&&d.defaultSchema.input&&a.noFormItem!==!0&&c.removeComponentInstance(a.id+"formItem"))}async function H(){var x,P,D;if(typeof((x=a.componentProps)==null?void 0:x.defaultValue)<"u"){const A=c.isDesignMode.value?(P=a.componentProps)==null?void 0:P.defaultValue:i[a.field]??((D=a.componentProps)==null?void 0:D.defaultValue);F(_(A))}if(a.type==="slot"){const A=a.slotName;if(!A)return;f.value=n.defineComponent({setup(){return()=>n.renderSlot(l,A,{componentSchema:a,model:i})}});return}const d=I.getComponent(a.type);if(!d){console.error(`组件${a.type}未注册`);return}if(typeof d=="function"){const A=await d();f.value=A.default??A}else f.value=d}function F(d){p("update:modelValue",d),p("change",d),a.field&&(i[a.field]=d)}let q=null;return n.watch(()=>a,d=>{const x=JSON.stringify({...d,children:void 0});if(x===q)return!1;q=x,H()},{immediate:!0,deep:!0}),n.onUnmounted(z),(d,x)=>{var D;const P=n.resolveComponent("ENode");return f.value&&g.value?(n.openBlock(),n.createBlock(xe,{key:0,hasFormItem:n.unref(a).noFormItem!==!0&&((D=E.value)==null?void 0:D.defaultSchema.input),formItemProps:w.value,onUpdateFormItemRef:b},{default:n.withCtx(()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(f.value),n.mergeProps({ref_key:"componentInstance",ref:m,onVnodeMounted:N,model:n.unref(i)},{...S.value},{[S.value.bindModel]:s.value,["onUpdate:"+S.value.bindModel]:x[0]||(x[0]=A=>s.value=A),[`onUpdate:${S.value.bindModel}`||""]:F}),{node:n.withCtx(A=>[n.createVNode(P,n.normalizeProps(n.guardReactiveProps(A)),null,16)]),"edit-node":n.withCtx(()=>[n.renderSlot(d.$slots,"edit-node")]),_:3},16,["model"]))]),_:3},8,["hasFormItem","formItemProps"])):n.createCommentVNode("",!0)}}});function ke(){const t=n.ref(!1),e=Z(),o=n.ref({});function r(){return new Promise(p=>{if(t.value)p();else{const m=n.watch(t,()=>{m(),p()})}})}async function s(p="default"){var h;await r();const m=(h=o.value)==null?void 0:h[p];if(!m)throw new Error(`表单 [name=${p}] 不存在`);return m}async function i(p,m){const h=await s(p);return _(await m(h))}async function l(p="default"){return await i(p,m=>m.getData())}function c(p,m="default"){var b;e.setFormData(p,m);const h=(b=o.value)==null?void 0:b[m];h==null||h.clearValidate()}async function u(p="default"){return await i(p,async m=>(await m.validate(),await m.getData()))}async function C(p){await r();const m={};for(const h in o.value){const b=o.value[h];b&&(m[h]=_(await p(b)))}return m}async function v(){return await C(p=>p.getData())}function a(p){for(const m in p)c(p[m],m)}async function y(){return await C(async p=>(await p.validate(),await p.getData()))}return{ready:t,pageManager:e,forms:o,getData:l,setData:c,validate:u,getForms:v,setForms:a,validateAll:y,getFormInstance:s}}const Ae={key:0,class:"epic-loading-box"},Ee={class:"epic-builder-main"},Pe={class:"epic-loading-box"},se=n.defineComponent({__name:"builder",props:{pageSchema:{},formData:{},disabled:{type:Boolean}},emits:["ready"],setup(t,{expose:e,emit:o}){const r=B(()=>Promise.resolve().then(()=>require("./index-Cap7FkuS.cjs"))),s=o,{ready:i,pageManager:l,forms:c,getData:u,setData:C,validate:v,getForms:a,setForms:y,validateAll:p,getFormInstance:m}=ke(),h=t,b=n.reactive({schemas:[]});n.watch(()=>h.pageSchema,w=>{M(b,w)},{immediate:!0,deep:!0}),n.watch(()=>h.formData,w=>{w&&C(w)},{immediate:!0,deep:!0}),n.watch(()=>b.script,w=>{w&&l.setMethods(w,!0)},{immediate:!0}),n.provide("slots",n.useSlots()),n.provide("pageManager",l),n.provide("forms",c),n.provide("pageSchema",b),n.provide("disabled",n.computed(()=>h.disabled));const k=n.getCurrentInstance(),f=k==null?void 0:k.proxy;function g(){n.nextTick(()=>{i.value=!0,s("ready",l),f&&l.addComponentInstance("builder",f)})}return e({ready:i,pageManager:l,getData:u,setData:C,validate:v,getForms:a,setForms:y,validateAll:p,getFormInstance:m}),(w,S)=>n.unref(I).initialized.value?(n.openBlock(),n.createBlock(n.Suspense,{key:1,onResolve:g},{default:n.withCtx(()=>[n.createElementVNode("div",Ee,[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(b.schemas,(E,N)=>(n.openBlock(),n.createBlock(n.unref(re),{key:N,componentSchema:E},null,8,["componentSchema"]))),128))])]),fallback:n.withCtx(()=>[n.createElementVNode("div",Pe,[n.createVNode(n.unref(r))])]),_:1})):(n.openBlock(),n.createElementBlock("div",Ae))}});function Q(t){return n.getCurrentScope()?(n.onScopeDispose(t),!0):!1}function Ie(t){let e=0,o,r;const s=()=>{e-=1,r&&e<=0&&(r.stop(),o=void 0,r=void 0)};return(...i)=>(e+=1,r||(r=n.effectScope(!0),o=r.run(()=>t(...i))),Q(s),o)}function T(t){return typeof t=="function"?t():n.unref(t)}const De=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const _e=t=>typeof t<"u",Ve=Object.prototype.toString,Be=t=>Ve.call(t)==="[object Object]",Ne=()=>{};function Me(t){return n.getCurrentInstance()}function Re(t,e=!0,o){Me()?n.onMounted(t,o):e?t():n.nextTick(t)}function Fe(t=!1,e={}){const{truthyValue:o=!0,falsyValue:r=!1}=e,s=n.isRef(t),i=n.ref(t);function l(c){if(arguments.length)return i.value=c,i.value;{const u=T(o);return i.value=i.value===u?T(r):u,i.value}}return s?l:[i,l]}function Oe(t,e,o){const r=n.watch(t,(...s)=>(n.nextTick(()=>r()),e(...s)),o);return r}const U=De?window:void 0;function R(t){var e;const o=T(t);return(e=o==null?void 0:o.$el)!=null?e:o}function $e(...t){let e,o,r,s;if(typeof t[0]=="string"||Array.isArray(t[0])?([o,r,s]=t,e=U):[e,o,r,s]=t,!e)return Ne;Array.isArray(o)||(o=[o]),Array.isArray(r)||(r=[r]);const i=[],l=()=>{i.forEach(v=>v()),i.length=0},c=(v,a,y,p)=>(v.addEventListener(a,y,p),()=>v.removeEventListener(a,y,p)),u=n.watch(()=>[R(e),T(s)],([v,a])=>{if(l(),!v)return;const y=Be(a)?{...a}:a;i.push(...o.flatMap(p=>r.map(m=>c(v,p,m,y))))},{immediate:!0,flush:"post"}),C=()=>{u(),l()};return Q(C),C}function Te(t){return typeof t=="function"?t:typeof t=="string"?e=>e.key===t:Array.isArray(t)?e=>t.includes(e.key):()=>!0}function ie(...t){let e,o,r={};t.length===3?(e=t[0],o=t[1],r=t[2]):t.length===2?typeof t[1]=="object"?(e=!0,o=t[0],r=t[1]):(e=t[0],o=t[1]):(e=!0,o=t[0]);const{target:s=U,eventName:i="keydown",passive:l=!1,dedupe:c=!1}=r,u=Te(e);return $e(s,i,v=>{v.repeat&&T(c)||u(v)&&o(v)},l)}function J(t,e,o={}){return ie(t,e,{...o,eventName:"keydown"})}function W(t,e,o={}){return ie(t,e,{...o,eventName:"keyup"})}function qe(){const t=n.ref(!1),e=n.getCurrentInstance();return e&&n.onMounted(()=>{t.value=!0},e),t}function Ge(t){const e=qe();return n.computed(()=>(e.value,!!t()))}function Le(t){return JSON.parse(JSON.stringify(t))}function ae(t,e,o={}){const{window:r=U,...s}=o;let i;const l=Ge(()=>r&&"ResizeObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},u=n.computed(()=>{const a=T(t);return Array.isArray(a)?a.map(y=>R(y)):[R(a)]}),C=n.watch(u,a=>{if(c(),l.value&&r){i=new ResizeObserver(e);for(const y of a)y&&i.observe(y,s)}},{immediate:!0,flush:"post"}),v=()=>{c(),C()};return Q(v),{isSupported:l,stop:v}}function ze(t,e={width:0,height:0},o={}){const{window:r=U,box:s="content-box"}=o,i=n.computed(()=>{var a,y;return(y=(a=R(t))==null?void 0:a.namespaceURI)==null?void 0:y.includes("svg")}),l=n.ref(e.width),c=n.ref(e.height),{stop:u}=ae(t,([a])=>{const y=s==="border-box"?a.borderBoxSize:s==="content-box"?a.contentBoxSize:a.devicePixelContentBoxSize;if(r&&i.value){const p=R(t);if(p){const m=p.getBoundingClientRect();l.value=m.width,c.value=m.height}}else if(y){const p=Array.isArray(y)?y:[y];l.value=p.reduce((m,{inlineSize:h})=>m+h,0),c.value=p.reduce((m,{blockSize:h})=>m+h,0)}else l.value=a.contentRect.width,c.value=a.contentRect.height},o);Re(()=>{const a=R(t);a&&(l.value="offsetWidth"in a?a.offsetWidth:e.width,c.value="offsetHeight"in a?a.offsetHeight:e.height)});const C=n.watch(()=>R(t),a=>{l.value=a?e.width:0,c.value=a?e.height:0});function v(){u(),C()}return{width:l,height:c,stop:v}}function Ue(t,e,o,r={}){var s,i,l;const{clone:c=!1,passive:u=!1,eventName:C,deep:v=!1,defaultValue:a,shouldEmit:y}=r,p=n.getCurrentInstance(),m=o||(p==null?void 0:p.emit)||((s=p==null?void 0:p.$emit)==null?void 0:s.bind(p))||((l=(i=p==null?void 0:p.proxy)==null?void 0:i.$emit)==null?void 0:l.bind(p==null?void 0:p.proxy));let h=C;h=h||`update:${e.toString()}`;const b=g=>c?typeof c=="function"?c(g):Le(g):g,k=()=>_e(t[e])?b(t[e]):a,f=g=>{y?y(g)&&m(h,g):m(h,g)};if(u){const g=k(),w=n.ref(g);let S=!1;return n.watch(()=>t[e],E=>{S||(S=!0,w.value=b(E),n.nextTick(()=>S=!1))}),n.watch(w,E=>{!S&&(E!==t[e]||v)&&f(E)},{deep:v}),w}else return n.computed({get(){return k()},set(g){f(g)}})}function He(){const{isDark:t}=L(),e=Fe(t);return{isDark:t,toggleDark:e}}function le(){const t=n.ref(!1);return n.onMounted(()=>{ce(t),Je(t)}),n.watch(()=>t.value,()=>{t.value?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}),{isDark:t}}function ce(t){var e=document.documentElement;e&&(e.classList.contains("dark")?t.value=!0:t.value=!1)}function Je(t){var e=document.querySelector("html"),o=new MutationObserver(function(r){for(var s of r)if(s.type==="attributes"&&s.attributeName==="class"){const i=s.target;new Array(...i.classList).includes("dark")?t.value=!0:t.value=!1}});o.observe(e,{attributes:!0,attributeFilter:["class"]}),n.onUnmounted(()=>{o.disconnect()})}function ue(){const t=n.ref(1),e=n.ref(!1),{isDark:o}=le(),{pressSpace:r,pressShift:s,pressCtrl:i}=de();return{canvasScale:t,pressSpace:r,pressShift:s,pressCtrl:i,disabledZoom:e,isDark:o}}const L=Ie(ue);function de(){const t=n.ref(!1),e=n.ref(!1),o=n.ref(!1);return J(" ",()=>{t.value=!0}),W(" ",()=>{t.value=!1}),J("Shift",r=>{r.preventDefault(),e.value=!0}),W("Shift",()=>{e.value=!1}),J("Control",r=>{r.preventDefault(),o.value=!0}),W("Control",()=>{o.value=!1}),{pressSpace:t,pressShift:e,pressCtrl:o}}function We(t){const{pressSpace:e}=L(),o=new Image(1,1);o.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==";let r=0,s=0;function i(u){var C;e.value&&(r=u.x,s=u.y,(C=u.dataTransfer)==null||C.setDragImage(document.createElement("div"),0,0))}function l(u){if(u.preventDefault(),!u.x||!u.y||!e.value)return;const C=u.x-r,v=u.y-s;r=u.x,s=u.y,t.value&&(t.value.scrollTop-=v,t.value.scrollLeft-=C)}function c(){e.value=!1}return{handleElementDragStart:i,handleElementDrag:l,handleElementDragEnd:c}}function Ke(t){const{pressCtrl:e,canvasScale:o,disabledZoom:r}=L();function s(i){if(!e.value||r.value)return;i.preventDefault();let l=0;i.deltaY<0?l=o.value+.05:l=o.value-.05,!(l>150||l<.5)&&(o.value=l)}return n.watch(()=>o.value,i=>{t.value&&!r.value&&(t.value.style.transform=`scale(${i})`)}),{handleZoom:s,canvasScale:o}}function Ze(t,e=16.66){let o;function r(){s(),o=window.setInterval(t,e)}function s(){window.clearInterval(o)}return{startTimedQuery:r,stopTimedQuery:s}}const Qe={class:"min-w-750px rounded"},Ye={class:"h-full rounded"},Xe=n.defineComponent({__name:"index",props:{hideConfirm:{type:Boolean}},setup(t,{expose:e}){const o=t,r=I.getComponent("monacoEditor"),s=I.getComponent("modal"),i=n.ref(null),l=n.ref(!1),c=n.ref(!1),u=n.ref({}),C=n.inject("pageSchema"),v=n.ref(null),a=n.ref("");function y(){c.value=!1}function p(){l.value=!1}function m(){l.value=!0,a.value=G()}async function h(){try{let b=await v.value.validateAll();if(!Object.keys(b).length){alert("请添加表单组件后再尝试!");return}Object.keys(b).length===1&&(b=b.default),u.value=JSON.stringify(b,null,2),n.nextTick(()=>{var k;(k=i.value)==null||k.setValue(u.value)}),c.value=!0}catch(b){console.error(b)}}return e({handleOpen:m}),(b,k)=>(n.openBlock(),n.createBlock(n.unref(s),{modelValue:l.value,"onUpdate:modelValue":k[1]||(k[1]=f=>l.value=f),title:"预览",class:"w-900px",width:"900px",onClose:p,onOk:h,hideConfirm:o.hideConfirm,okText:"表单数据"},{default:n.withCtx(()=>[n.createElementVNode("div",Qe,[(n.openBlock(),n.createBlock(n.unref(se),{key:a.value,ref_key:"kb",ref:v,"page-schema":n.unref(C)},null,8,["page-schema"])),n.createVNode(n.unref(s),{modelValue:c.value,"onUpdate:modelValue":k[0]||(k[0]=f=>c.value=f),title:"表单数据",class:"w-860px",width:"860px",onClose:y,onOk:y},{default:n.withCtx(()=>[n.createElementVNode("div",Ye,[n.createVNode(n.unref(r),{ref_key:"monacoEditorRef",ref:i,autoToggleTheme:"",readOnly:"",class:"h-full editor","model-value":u.value},null,8,["model-value"])])]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","hideConfirm"]))}}),je={key:0,class:"epic-loading-box"},et={class:"ai-form-designer-main"},tt={class:"epic-header-container"},nt={class:"epic-loading-box"},ot=n.defineComponent({__name:"designer",props:{disabledZoom:{type:Boolean,default:!1},hiddenHeader:{type:Boolean,default:!1},lockDefaultSchemaEdit:{type:Boolean,default:!1},formMode:{type:Boolean,default:!1},title:{default:"EpicDesigner默认项目"},defaultSchema:{},sourceCodeReadOnly:{type:Boolean},hidePreviewConfirm:{type:Boolean}},emits:["ready","save","reset","toggleDeviceMode"],setup(t,{expose:e,emit:o}){const r=B(()=>Promise.resolve().then(()=>require("./index-CTLFsNvw.cjs"))),s=B(()=>Promise.resolve().then(()=>require("./index-C9EBYKvN.cjs"))),i=B(()=>Promise.resolve().then(()=>require("./index-Bq_a_pcC.cjs"))),l=B(()=>Promise.resolve().then(()=>require("./index-BWnGIUoO.cjs"))),c=B(()=>Promise.resolve().then(()=>require("./index-Cap7FkuS.cjs"))),u=Z(),C=oe(),v=t;let a={schemas:[{type:"page",id:"root",label:"页面",children:[],componentProps:{style:{padding:"16px"}}}],script:`const { defineExpose, find } = epic;
function test (){
console.log('test')
}
// 通过defineExpose暴露的函数或者属性
defineExpose({
test
})`};n.watchEffect(()=>{if(v.defaultSchema){a=v.defaultSchema;return}v.formMode&&(a.schemas=I.formSchemas)}),u.setDesignMode(),u.setDefaultComponentIds(a.schemas);const y=o,p=n.ref(null),m=n.reactive({checkedNode:null,hoverNode:null,disableHover:!1,matched:[]}),h=n.reactive({schemas:[],script:a.script}),{disabledZoom:b}=L();n.watchEffect(()=>{b.value=v.disabledZoom}),n.watchEffect(()=>{const d=h.script;d&&d!==""&&u.setMethods(d)}),n.provide("pageSchema",h),n.provide("revoke",C),n.provide("pageManager",u),n.provide("designerProps",n.computed(()=>v)),n.provide("designer",{setCheckedNode:f,setHoverNode:g,setDisableHover:S,handleToggleDeviceMode:F,reset:z,state:m});function k(){h.schemas=_(a.schemas),f(h.schemas[0]),C.push(h.schemas,"初始化撤销功能")}async function f(d=h.schemas[0]){m.checkedNode=d,m.matched=j(h.schemas,d.id)}async function g(d=null){var x;if(!d||m.disableHover)return m.hoverNode=null,!1;if((d==null?void 0:d.id)===((x=m.hoverNode)==null?void 0:x.id))return!1;m.hoverNode=d}function w(){n.nextTick(()=>{y("ready",{pageManager:u})})}async function S(d=!1){m.disableHover=d}function E(d){M(h,_(d))}function N(){return _(h)}function z(){K(h.schemas,a.schemas)&&h.script===a.script||(M(h.schemas,a.schemas),h.script=a.script,f(h.schemas[0]),C.push(h.schemas,"重置操作"),y("reset",h))}function H(){y("save",N())}function F(d){y("toggleDeviceMode",d)}function q(){p.value.handleOpen()}return k(),e({revoke:C,setData:E,getData:N,reset:z,preview:q}),(d,x)=>n.unref(I).initialized.value?(n.openBlock(),n.createBlock(n.Suspense,{key:1,onResolve:w},{default:n.withCtx(()=>[n.createElementVNode("div",et,[n.createElementVNode("div",tt,[n.renderSlot(d.$slots,"header",{},()=>[v.hiddenHeader?n.createCommentVNode("",!0):(n.openBlock(),n.createBlock(n.unref(r),{key:0,onPreview:q,onSave:H},{header:n.withCtx(()=>[n.renderSlot(d.$slots,"header-prefix")]),prefix:n.withCtx(()=>[n.renderSlot(d.$slots,"header-prefix")]),title:n.withCtx(()=>[n.renderSlot(d.$slots,"header-title")]),"right-prefix":n.withCtx(()=>[n.renderSlot(d.$slots,"header-right-prefix")]),"right-action":n.withCtx(()=>[n.renderSlot(d.$slots,"header-right-action")]),"right-suffix":n.withCtx(()=>[n.renderSlot(d.$slots,"header-right-suffix")]),_:3}))])]),n.createElementVNode("div",{class:n.normalizeClass(["epic-split-view-container",{"hidden-header":d.hiddenHeader}])},[n.createVNode(n.unref(s)),n.createVNode(n.unref(i)),n.createVNode(n.unref(l))],2),n.createVNode(Xe,{hideConfirm:v.hidePreviewConfirm,ref_key:"previewRef",ref:p},null,8,["hideConfirm"])])]),fallback:n.withCtx(()=>[n.createElementVNode("div",nt,[n.createVNode(n.unref(c))])]),_:3})):(n.openBlock(),n.createElementBlock("div",je))}}),rt={component:async()=>await Promise.resolve().then(()=>require("./index-DI4FoIYf.cjs")),defaultSchema:{label:"代码编辑器",type:"monacoEditor",field:"monacoEditor",icon:"epic-icon-write",input:!0},config:{attribute:[{label:"字段名",type:"input",field:"field"},{label:"标题",type:"input",field:"label"},{label:"默认值",type:"monacoEditor",field:"componentProps.defaultValue"}]},bindModel:"model-value"},st={component:async()=>await Promise.resolve().then(()=>require("./index-Ch9jeYmj.cjs")),defaultSchema:{label:"页面",type:"page",componentProps:{},children:[]},config:{attribute:[{label:"页面名称",type:"input",componentProps:{placeholder:"请输入"},field:"componentProps.name"}]}};function it(t){t.component("EInputSize",async()=>await Promise.resolve().then(()=>require("./index-BOJhz7ld.cjs"))),t.component("EColEditor",async()=>await Promise.resolve().then(()=>require("./index-DTnoD3aV.cjs"))),t.component("EActionEditor",async()=>await Promise.resolve().then(()=>require("./index-CT3EMOcz.cjs"))),t.component("ERuleEditor",async()=>await Promise.resolve().then(()=>require("./index-maSjXcln.cjs"))),t.component("EOptionsEditor",async()=>await Promise.resolve().then(()=>require("./index-CfJM1vW9.cjs"))),t.component("SelectPanel",async()=>await Promise.resolve().then(()=>require("./index-DbyUQqm9.cjs"))),t.component("CasPanel",async()=>await Promise.resolve().then(()=>require("./index-C_HOgNpt.cjs"))),t.component("RelSelectPanel",async()=>await Promise.resolve().then(()=>require("./index-B7c3etvP.cjs"))),t.component("DepartmentPanel",async()=>await Promise.resolve().then(()=>require("./index-r0h5-iQR.cjs"))),t.component("DocumentNumberRule",async()=>await Promise.resolve().then(()=>require("./index-ClKo9f_M.cjs"))),t.component("ENode",async()=>await Promise.resolve().then(()=>require("./index-BKswar5u.cjs"))),t.registerActivitybar({id:"component_view",title:"组件",icon:"icon--epic--extension-outline",component:async()=>await Promise.resolve().then(()=>require("./index-elRge9S8.cjs"))}),t.registerActivitybar({id:"sound_code_view",title:"源码",icon:"icon--epic--sdk-outline-rounded",component:async()=>await Promise.resolve().then(()=>require("./index-DiSNJwp2.cjs"))}),t.registerActivitybar({id:"outline_view",title:"大纲",icon:"icon--epic--account-tree-outline-rounded",component:async()=>await Promise.resolve().then(()=>require("./outline-8gKr2WJj.cjs"))}),t.registerRightSidebar({id:"attribute_view",title:"属性",component:async()=>await Promise.resolve().then(()=>require("./attributeView-Bc8auDGZ.cjs"))}),t.registerRightSidebar({id:"style_view",title:"样式",component:async()=>await Promise.resolve().then(()=>require("./styleView-vApN6tCr.cjs"))}),t.registerRightSidebar({id:"event_view",title:"事件",component:async()=>await Promise.resolve().then(()=>require("./eventView-C8vof9u8.cjs"))}),[rt,st].forEach(o=>{t.registerComponent(o)})}it(I);exports.PluginManager=ne;exports._sfc_main=re;exports._sfc_main$1=se;exports._sfc_main$2=ot;exports.capitalizeFirstLetter=Y;exports.convertKFormData=be;exports.debounce=Se;exports.deepClone=_;exports.deepCompareAndModify=M;exports.deepEqual=K;exports.findSchemaById=we;exports.findSchemaInfoById=Ce;exports.findSchemas=$;exports.generateNewSchema=he;exports.getDarkState=ce;exports.getFormFields=ge;exports.getFormSchemas=ee;exports.getMatchedById=j;exports.getUUID=G;exports.getValueByPath=ve;exports.initStore=ue;exports.loadAsyncComponent=B;exports.mapSchemas=te;exports.pluginManager=I;exports.recursionConvertedNode=O;exports.removeHyphens=X;exports.setValueByPath=ye;exports.useDark=le;exports.useElementDrag=We;exports.useElementSize=ze;exports.useElementZoom=Ke;exports.useKeyPress=de;exports.usePageManager=Z;exports.useResizeObserver=ae;exports.useRevoke=oe;exports.useStore=L;exports.useTheme=He;exports.useTimedQuery=Ze;exports.useVModel=Ue;exports.watchOnce=Oe;