gepic
Version:
基于vue3的设计器,可视化开发页面表单
11 lines (8 loc) • 4.83 kB
JavaScript
;const e=require("vue"),R=require("../../../../utils/manager/pageManager.cjs"),S=require("../../../../utils/manager/pluginManager.cjs"),O=require("../../../../utils/manager/revoke.cjs"),l=require("../../../../utils/common/component.cjs"),c=require("../../../../utils/common/data.cjs");require("@vueuse/core");const z=require("../../../../hooks/store/index.cjs"),I=require("./modules/preview/index.vue.cjs"),p=u=>Object.freeze(Object.defineProperty({__proto__:null,default:u},Symbol.toStringTag,{value:"Module"})),T={key:0,class:"epic-loading-box"},Z={class:"epic-header-container"},j={class:"epic-loading-box"},W=e.defineComponent({__name:"designer",props:{disabledZoom:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},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","imported","toggleDeviceMode"],setup(u,{expose:k,emit:w}){const x=l.loadAsyncComponent(()=>Promise.resolve().then(()=>p(require("./modules/header/index.vue.cjs")))),E=l.loadAsyncComponent(()=>Promise.resolve().then(()=>p(require("./modules/activityBar/index.vue.cjs")))),N=l.loadAsyncComponent(()=>Promise.resolve().then(()=>p(require("./modules/editContainer/index.vue.cjs")))),_=l.loadAsyncComponent(()=>Promise.resolve().then(()=>p(require("./modules/rightSidebar/index.vue.cjs")))),M=l.loadAsyncComponent(()=>Promise.resolve().then(()=>p(require("../../asyncLoader/index.vue.cjs")))),s=R.usePageManager(),i=O.useRevoke(),a=u;let n={schemas:[{type:"page",id:"root",label:"页面",children:[],componentProps:{style:{padding:"16px"}}}],script:`const { defineExpose, find } = epic;
function test (){
console.log('test')
}
// 通过defineExpose暴露的函数或者属性
defineExpose({
test
})`};e.watchEffect(()=>{a.defaultSchema?n=a.defaultSchema:a.formMode&&(n.schemas=S.pluginManager.formSchemas),s.setDefaultComponentIds(n.schemas)}),s.setDesignMode();const d=w,g=e.ref(null),r=e.reactive({checkedNode:null,hoverNode:null,disableHover:!1,matched:[]}),t=s.pageSchema,{disabledZoom:b}=z.useStore();e.watchEffect(()=>{b.value=a.disabledZoom}),e.provide("pageSchema",t),e.provide("revoke",i),e.provide("pageManager",s),e.provide("designerProps",e.computed(()=>a)),e.provide("designer",{setCheckedNode:h,setHoverNode:B,setDisableHover:D,handleToggleDeviceMode:H,reset:C,preview:m,save:f,handleImported:$,state:r});function q(){t.schemas=c.deepClone(n.schemas),h(t.schemas[0]),i.push(t.schemas,"初始化")}async function h(o=t.schemas[0]){r.checkedNode=o,r.matched=c.getMatchedById(t.schemas,o.id)}async function B(o=null){var v;if(!o||r.disableHover)return r.hoverNode=null,!1;if((o==null?void 0:o.id)===((v=r.hoverNode)==null?void 0:v.id))return!1;r.hoverNode=o}function P(){e.nextTick(()=>{d("ready",{pageManager:s})})}async function D(o=!1){r.disableHover=o}function V(o){s.setPageSchema(o),i.push(t.schemas,"加载数据")}function y(){return c.deepClone(t)}function C(){c.deepEqual(t.schemas,n.schemas)&&t.script===n.script||(c.deepCompareAndModify(t.schemas,n.schemas),t.script=n.script,h(t.schemas[0]),i.push(t.schemas,"重置操作"),d("reset",t))}function f(){d("save",y())}function H(o){d("toggleDeviceMode",o)}function $(o){d("imported",o)}function m(){g.value.handleOpen()}function A(o){o.ctrlKey&&o.preventDefault()}return q(),k({revoke:i,setData:V,getData:y,reset:C,preview:m,save:f}),(o,v)=>e.unref(S.pluginManager).initialized.value?(e.openBlock(),e.createBlock(e.Suspense,{key:1,onResolve:P},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"epic-designer-main epic-scoped",onWheel:A},[e.createElementVNode("div",Z,[e.renderSlot(o.$slots,"header",{},()=>[a.hiddenHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(x),{key:0,onPreview:m,onSave:f},{header:e.withCtx(()=>[e.renderSlot(o.$slots,"header-prefix")]),prefix:e.withCtx(()=>[e.renderSlot(o.$slots,"header-prefix")]),title:e.withCtx(()=>[e.renderSlot(o.$slots,"header-title")]),"right-prefix":e.withCtx(()=>[e.renderSlot(o.$slots,"header-right-prefix")]),"right-action":e.withCtx(()=>[e.renderSlot(o.$slots,"header-right-action")]),"right-suffix":e.withCtx(()=>[e.renderSlot(o.$slots,"header-right-suffix")]),_:3}))])]),e.createElementVNode("div",{class:e.normalizeClass(["epic-split-view-container",{"hidden-header":o.hiddenHeader}])},[e.createVNode(e.unref(E)),e.createVNode(e.unref(N)),e.createVNode(e.unref(_))],2),e.createVNode(I,{ref_key:"previewRef",ref:g,"hide-confirm":a.hidePreviewConfirm},null,8,["hide-confirm"])],32)]),fallback:e.withCtx(()=>[e.createElementVNode("div",j,[e.createVNode(e.unref(M))])]),_:3})):(e.openBlock(),e.createElementBlock("div",T))}});module.exports=W;