@vtj/renderer 0.8.8 → 0.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("@vtj/core"),u=require("@vtj/utils"),j=require("vue"),te=require("vue-router"),T=require("element-plus"),D=require("mockjs"),we=require("@vueuse/core"),je=require("@vtj/ui");function $e(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const A=$e(j);/**!
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("@vtj/core"),u=require("@vtj/utils"),j=require("vue"),te=require("vue-router"),x=require("element-plus"),T=require("mockjs"),we=require("@vueuse/core"),je=require("@vtj/ui");function $e(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const A=$e(j);/**!
2
2
  * Copyright (c) 2024, VTJ.PRO All rights reserved.
3
3
  * @name @vtj/renderer
4
4
  * @author CHC chenhuachun1549@dingtalk.com
5
- * @version 0.8.8
5
+ * @version 0.8.9
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
- */const F="0.8.8";var S=(n=>(n.Runtime="Runtime",n.Design="Design",n.Raw="Raw",n.VNode="VNode",n))(S||{});const J=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ce=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],re=["vIf","vShow","vModel","vFor","vBind"],ne={String,Number,Boolean,Array,Object,Function,Date};function I(n,e){return n.map(t=>u.isUrl(t)?t:`${e}${t}`)}function B(n){return/\.css$/.test(n)}function N(n){return/\.js$/.test(n)}function se(n){return/\.json$/.test(n)}function Ee(n){return n.map(e=>`<script src="${u.url.append(e,{v:F})}"><\/script>`).join("")}function Pe(n=[]){return n.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:F})}" />`).join("")}function oe(n,e){const t=n.filter(d=>!!d.enabled),r=[],s=[],o=[],a=[],i={},l={},c=[],m={};return t.forEach(({urls:d,assetsUrl:f,library:v,assetsLibrary:h,localeLibrary:g})=>{d?.forEach(p=>{N(p)&&r.push(p),B(p)&&s.push(p)}),v&&(a.push(v),i[v]=I(d||[],e),g&&(l[v]=g)),f&&o.push(f),h&&c.push(h),v&&h&&(m[h]=v)}),{scripts:I(r,e),css:I(s,e),materials:I(o,e),libraryExports:a,materialExports:u.dedupArray(c),materialMapLibrary:m,libraryMap:i,libraryLocaleMap:l}}function ie(n,e){const{name:t,parent:r,alias:s}=n;return r?e[r]?.[s||t]:e[s||t]}function V(n){return u.isString(n)?n:JSON.stringify(n)}function Y(n,e,t){const r=n.CSSStyleSheet;if(r.prototype.replaceSync){const s=new r;s.id=e,s.replaceSync(t);const o=n.document,a=o.adoptedStyleSheets,i=Array.from(a).filter(l=>l.id!==e);o.adoptedStyleSheets=[...i,s]}else{const s=n.document;let o=s.getElementById(e);o?o.innerHTML=t:(o=s.createElement("style"),o.id=e,o.innerHTML=t,s.head.appendChild(o))}}async function ae(n,e){const t=await window.fetch(e).then(r=>r.text()).catch(()=>"");t&&Y(window,n,t)}function K(n,e=window){const t=e.document,r=e.document.head;for(const s of n)if(!t.getElementById(s)){const a=t.createElement("link");a.rel="stylesheet",a.id=s,a.href=s,r.appendChild(a)}}async function ce(n,e,t=window){const r=t.document,s=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const l of n){const c=r.createElement("script");c.src=l,c.onload=()=>{o=t[e],o&&a(o.default||o)},c.onerror=m=>{i(m)},s.appendChild(c)}})}function le(n){return u.isFunction(n)||u.isFunction(n?.install)}function R(n,e,t=!1,r=!1){try{const s=['"use strict";',"var __self = arguments[0];"];s.push("return ");let o=(n.value||"").trim();o=o.replace(/this(\W|$)/g,(i,l)=>`__self${l}`),o=s.join(`
8
- `)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(s){if(u.logger.error("parseExpression.error",s,n,e?.__self??e),r)throw s}}function L(n,e,t=!1,r=!1){const s=R(n,e,t,r);if(typeof s!="function"&&(u.logger.error("parseFunction.error","not a function",n,e?.__self??e),r))throw new Error(`"${n.value}" not a function`);return s}function w(n){return n&&n.type==="JSExpression"}function O(n){return typeof n=="object"&&n&&n.type==="JSFunction"}function ue(n){return w(n)||O(n)}function be(n){return ue(n)?n.value:JSON.stringify(n)}let b=null;const Fe=u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:n=>n.data?.code===0||!!n.data?.success,failMessage:!0,showError:n=>{T.ElNotification.error({message:n||"未知错误"})},showLoading:()=>{b&&b.close(),b=T.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{b&&(b.close(),b=null)}}});function pe(n,e){const{jsonp:t,request:r}=e;if(n.method==="jsonp")return(s={})=>t(n.url,{...n.jsonpOptions,query:s});{const s=n.headers?R(n.headers,{},!0):void 0,o={url:n.url,method:n.method,settings:{...n.settings,headers:s}};return(a,i)=>r.send(u.merge(o,i||{},{data:a}))}}function de(n=[],e){return n.reduce((t,r)=>(t[r.id]=pe(r,e),t),{})}function fe(n=[]){D.setup({timeout:"50-500"}),X(),n.forEach(e=>me(e))}function me(n){if(!n.mock)return;const{url:e,mockTemplate:t}=n;if(e&&t){const r=u.pathToRegexp(`${e}(.*)`),s=u.pathToRegexpMatch(e,{decode:decodeURIComponent}),o=R(t,{},!0);D.mock(r,a=>{const i=u.url.parse(a.url)||{},l=a.body instanceof FormData?u.formDataToJson(a.body):a.body,c=s(a.url)?.params;return Object.assign(a,{data:l,params:i,query:c}),D.mock(o(a))})}}function X(){D._mocked={}}class he{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};props={};$props={};$refs={};$el=null;$emit=null;$nextTick=null;$parent=null;$root=null;$attrs=null;$slots=null;$watch=null;$options=null;$forceUpdate=null;$components={};$libs={};$apis={};__transform={};constructor(e){const{mode:t,dsl:r,attrs:s}=e;this.__mode=t,r&&(this.__id=r.id||null,this.__transform=r.transform||{}),s&&Object.assign(this,s)}setup(e,t=A){const r=t.getCurrentInstance();if(!r)return;this.__instance=r.proxy;const s=r.appContext.config.globalProperties;Object.assign(this,s),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()})}__proxy(){this.__instance&&J.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){J.forEach(e=>{this[e]=null})}__parseFunction(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:r}=e,s=t?this.__transform[t]??e.value:e.value;return L({type:r,value:s},this)}else return L(e,this)}__parseExpression(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:r}=e,s=t?this.__transform[t]??e.value:e.value;return R({type:r,value:s},this)}else return R(e,this)}__ref(e=null,t){if(this.__mode!==S.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),r=>{let s=r?.$vtjEl||r?.$el||r;if(!s){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(s.nodeType===3&&s.nextSibling&&(s=s.nextSibling),s.__vtj__=e,S.Design===this.__mode&&(s.__context__=this),e&&(this.__refs[e]=r),typeof t=="function")t(r);else if(t){const o=this.$refs[t];if(o){const a=new Set([].concat(o,r));this.$refs[t]=Array.from(a)}else this.$refs[t]=r}return r}}__clone(e={}){const t={...this.context,...e},r={...t,context:t};return r.context.__proto__=this.context,r.__proto__=this,r}}function x(n){const{Vue:e=A,mode:t=S.Runtime,components:r={},libs:s={},apis:o={},loader:a}=n,i=e.computed(()=>n.dsl),l={$components:r,$libs:s,$apis:o},c=new he({mode:t,dsl:i.value,attrs:l}),m=e.defineComponent({name:i.value.name,props:{...Re(i.value.props??[],c)},setup(d){c.$props=d,c.props=d,i.value.id&&Y(n.window||window,i.value.id,i.value.css||""),c.state=Ie(e,i.value.state??{},c);const f=He(e,i.value.computed??{},c),v=Oe(i.value.methods??{},c),h=Me(e,i.value.inject,c),g=ve(i.value.dataSources||{},c),p={...h,...f,...v,...g};return c.setup(p,e),Te(e,i.value.watch??[],c),{vtj:c}},emits:[...i.value.emits??[]],expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?H(d[0],c,e,a):d.map(f=>H(f,c,e,a))},...De(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(m),context:c}}function Re(n=[],e){const t=r=>r?(Array.isArray(r)?r:[r]).map(o=>ne[o]):void 0;return n.map(r=>u.isString(r)?{name:r}:{name:r.name,type:r.type,required:r.required,default:w(r.default)?e.__parseExpression(r.default):r.default}).reduce((r,s)=>(r[s.name]={type:t(s.type),required:s.required,default:s.default},r),{})}function Ie(n,e,t){return n.reactive(Object.keys(e||{}).reduce((r,s)=>{let o=e[s];return w(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),r[s]=o,r},{}))}function He(n,e,t){return Object.entries(e??{}).reduce((r,[s,o])=>(r[s]=n.computed(t.__parseFunction(o)),r),{})}function Oe(n,e){return Object.entries(n??{}).reduce((t,[r,s])=>(t[r]=e.__parseFunction(s),t),{})}function Me(n,e=[],t){return e.reduce((r,s)=>{const{name:o,from:a}=s||{};s.default;const i=w(a)?t.__parseExpression(a)||o:a??o,l=w(s.default)?t.__parseExpression(s.default):s.default??null;return r[o]=n.inject(i,l),r},{})}function ve(n,e){return Object.keys(n).reduce((t,r)=>{const s=n[r],o=e.$apis[s.ref],a=O(s.transform)?s.transform.value?e.__parseFunction(s.transform):void 0:s.transform;return t[r]=async(...i)=>{const l=await o.apply(e,i);return a?a(l):l},t},{})}function Te(n,e=[],t){e.forEach(r=>{n.watch(t.__parseExpression(r.source),t.__parseFunction(r.handler),{deep:r.deep,immediate:r.immediate})})}function De(n,e){return Object.entries(n??{}).reduce((t,[r,s])=>(t[r]=e.__parseFunction(s),t),{})}let q=[];const ge=n=>n;async function W(n,e=window){const{urls:t=[],library:r}=n,s=t.filter(l=>N(l));if(s.length===0||!r)return null;const o=t.filter(l=>B(l));let a;const i=await ce(s,r,e).catch(()=>null);return i?.plugin&&(a=i.plugin),a?{component:a,css:o}:null}function k(n){const{getDsl:e,getDslByUrl:t,options:r}=n;return r.window&&(q.forEach(s=>{delete r.window[s]}),q=[]),(s,o,a=A)=>!o||typeof o=="string"?s:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=s),i?x({...r,Vue:a,dsl:i,mode:S.Runtime,loader:k(n)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=s),i?x({...r,Vue:a,dsl:i,mode:S.Runtime,loader:k(n)}).renderer:null}):o.type==="Plugin"?(o.library&&q.push(o.library),a.defineAsyncComponent(async()=>{const i=await W(o,r.window);return i?(K(i.css,r.window),i.component):null})):s}function H(n,e,t=A,r=ge){if(!n||!n.name||n.invisible)return null;const{id:s=null,directives:o=[]}=n,{vIf:a,vFor:i,vShow:l,vModels:c,vBind:m}=xe(o);if(a&&!ke(a,e))return null;const d=f=>{const v=f.$components,h=(()=>{if(n.name==="component")return Ae(f,n.props?.is);if(n.name==="slot")return n.name;const _=r(n.name,n.from,t);return u.isString(_)?v[_]??_:_})(),g=Be(s,n.props??{},f),p=Ne(t,n.events??{},f);if(n.name==="slot")return Ue(t,n,g,f,r);m&&Object.assign(g,f.__parseExpression(m.value)),l&&(g.style=Object.assign(g.style??{},Je(l,f))),c.forEach(_=>{Object.assign(g,Le(t,_,f))});const $=Ve(t,n.children??[],f,r,n);return t.createVNode(h,{...g,...p},$)};return i?Xe(i,d,e):d(e)}function xe(n=[]){const e=n.find(i=>u.camelCase(i.name)==="vIf"),t=n.find(i=>u.camelCase(i.name)==="vFor"),r=n.find(i=>u.camelCase(i.name)==="vShow"),s=n.find(i=>u.camelCase(i.name)==="vBind"),o=n.filter(i=>u.camelCase(i.name)==="vModel"),a=n.filter(i=>!re.includes(u.camelCase(i.name)));return{vIf:e,vFor:t,vShow:r,vModels:o,vBind:s,others:a}}function ke(n,e){return!!e.__parseExpression(n.value)}function Ae(n,e){return e?w(e)?n.__parseExpression(e):e:"div"}function Be(n,e,t){const r=Object.keys(e||{}).reduce((s,o)=>{let a=e[o];return w(a)?a=t.__parseExpression(a):O(a)&&(a=t.__parseFunction(a)),s[o]=a,s},{});return r.ref=t.__ref(n,r.ref),r}function Ne(n,e,t){const r=["passive","capture","once"],s={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],l=z(i.modifiers),c=l.find(f=>r.includes(f)),m="on"+u.upperFirst(a)+(c&&s[c]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=n.withModifiers(d,l)),o},{})}function z(n={},e=!1){const t=Object.keys(n);return e?t.map(r=>"."+r):t}function Ue(n,e,t,r,s){const{children:o}=e,a=qe(e,r),i=r.$slots?.[a.name];return i?i(t):o?u.isString(o)?n.createTextVNode(o):w(o)?n.createTextVNode(V(r.__parseExpression(o))):Array.isArray(o)?o.map(l=>H(l,r,n,s)):null:null}function qe(n,e){const{props:t}=n,r=t?.name||"default";return{name:w(r)?e.__parseExpression(r):r,params:[]}}function Je(n,e){return e.__parseExpression(n.value)?{}:{display:"none"}}function Le(n,e,t){const r={type:"JSFunction",value:e.value?.value?`(v) => {
7
+ */const F="0.8.9";var S=(n=>(n.Runtime="Runtime",n.Design="Design",n.Raw="Raw",n.VNode="VNode",n))(S||{});const J=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ee=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],re=["vIf","vShow","vModel","vFor","vBind"],ne={String,Number,Boolean,Array,Object,Function,Date};function I(n,e){return n.map(t=>u.isUrl(t)?t:`${e}${t}`)}function B(n){return/\.css$/.test(n)}function N(n){return/\.js$/.test(n)}function se(n){return/\.json$/.test(n)}function Ce(n){return n.map(e=>`<script src="${u.url.append(e,{v:F})}"><\/script>`).join("")}function Pe(n=[]){return n.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:F})}" />`).join("")}function oe(n,e){const t=n.filter(d=>!!d.enabled),r=[],s=[],o=[],a=[],i={},l={},c=[],m={};return t.forEach(({urls:d,assetsUrl:f,library:v,assetsLibrary:h,localeLibrary:g})=>{d?.forEach(p=>{N(p)&&r.push(p),B(p)&&s.push(p)}),v&&(a.push(v),i[v]=I(d||[],e),g&&(l[v]=g)),f&&o.push(f),h&&c.push(h),v&&h&&(m[h]=v)}),{scripts:I(r,e),css:I(s,e),materials:I(o,e),libraryExports:a,materialExports:u.dedupArray(c),materialMapLibrary:m,libraryMap:i,libraryLocaleMap:l}}function ie(n,e){const{name:t,parent:r,alias:s}=n;return r?e[r]?.[s||t]:e[s||t]}function V(n){return u.isString(n)?n:JSON.stringify(n)}function Y(n,e,t){const r=n.CSSStyleSheet;if(r.prototype.replaceSync){const s=new r;s.id=e,s.replaceSync(t);const o=n.document,a=o.adoptedStyleSheets,i=Array.from(a).filter(l=>l.id!==e);o.adoptedStyleSheets=[...i,s]}else{const s=n.document;let o=s.getElementById(e);o?o.innerHTML=t:(o=s.createElement("style"),o.id=e,o.innerHTML=t,s.head.appendChild(o))}}async function ae(n,e){const t=await window.fetch(e).then(r=>r.text()).catch(()=>"");t&&Y(window,n,t)}function K(n,e=window){const t=e.document,r=e.document.head;for(const s of n)if(!t.getElementById(s)){const a=t.createElement("link");a.rel="stylesheet",a.id=s,a.href=s,r.appendChild(a)}}async function ce(n,e,t=window){const r=t.document,s=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const l of n){const c=r.createElement("script");c.src=l,c.onload=()=>{o=t[e],o&&a(o.default||o)},c.onerror=m=>{i(m)},s.appendChild(c)}})}function le(n){return u.isFunction(n)||u.isFunction(n?.install)}function R(n,e,t=!1,r=!1){try{const s=['"use strict";',"var __self = arguments[0];"];s.push("return ");let o=(n.value||"").trim();o=o.replace(/this(\W|$)/g,(i,l)=>`__self${l}`),o=s.join(`
8
+ `)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(s){if(u.logger.error("parseExpression.error",s,n,e?.__self??e),r)throw s}}function L(n,e,t=!1,r=!1){const s=R(n,e,t,r);if(typeof s!="function"&&(u.logger.error("parseFunction.error","not a function",n,e?.__self??e),r))throw new Error(`"${n.value}" not a function`);return s}function w(n){return n&&n.type==="JSExpression"}function O(n){return typeof n=="object"&&n&&n.type==="JSFunction"}function ue(n){return w(n)||O(n)}function be(n){return ue(n)?n.value:JSON.stringify(n)}let b=null;const Fe=u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:n=>n.data?.code===0||!!n.data?.success,failMessage:!0,showError:n=>{x.ElNotification.error({message:n||"未知错误"})},showLoading:()=>{b&&b.close(),b=x.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{b&&(b.close(),b=null)}}});function pe(n,e){const{jsonp:t,request:r}=e;if(n.method==="jsonp")return(s={})=>t(n.url,{...n.jsonpOptions,query:s});{const s=n.headers?R(n.headers,{},!0):void 0,o={url:n.url,method:n.method,settings:{...n.settings,headers:s}};return(a,i)=>r.send(u.merge(o,i||{},{data:a}))}}function de(n=[],e){return n.reduce((t,r)=>(t[r.id]=pe(r,e),t),{})}function fe(n=[]){T.setup({timeout:"50-500"}),X(),n.forEach(e=>me(e))}function me(n){if(!n.mock)return;const{url:e,mockTemplate:t}=n;if(e&&t){const r=u.pathToRegexp(`${e}(.*)`),s=u.pathToRegexpMatch(e,{decode:decodeURIComponent}),o=R(t,{},!0);T.mock(r,a=>{const i=u.url.parse(a.url)||{},l=a.body instanceof FormData?u.formDataToJson(a.body):a.body,c=s(a.url)?.params;return Object.assign(a,{data:l,params:i,query:c}),T.mock(o(a))})}}function X(){T._mocked={}}class he{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};props={};$props={};$refs={};$el=null;$emit=null;$nextTick=null;$parent=null;$root=null;$attrs=null;$slots=null;$watch=null;$options=null;$forceUpdate=null;$components={};$libs={};$apis={};__transform={};constructor(e){const{mode:t,dsl:r,attrs:s}=e;this.__mode=t,r&&(this.__id=r.id||null,this.__transform=r.transform||{}),s&&Object.assign(this,s)}setup(e,t=A){const r=t.getCurrentInstance();if(!r)return;this.__instance=r.proxy;const s=r.appContext.config.globalProperties;Object.assign(this,s),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()})}__proxy(){this.__instance&&J.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){J.forEach(e=>{this[e]=null})}__parseFunction(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:r}=e,s=t?this.__transform[t]??e.value:e.value;return L({type:r,value:s},this)}else return L(e,this)}__parseExpression(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:r}=e,s=t?this.__transform[t]??e.value:e.value;return R({type:r,value:s},this)}else return R(e,this)}__ref(e=null,t){if(this.__mode!==S.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),r=>{let s=r?.$vtjEl||r?.$el||r;if(!s){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(s.nodeType===3&&s.nextSibling&&(s=s.nextSibling),s.__vtj__=e,S.Design===this.__mode&&(s.__context__=this),e&&(this.__refs[e]=r),typeof t=="function")t(r);else if(t){const o=this.$refs[t];if(o){const a=new Set([].concat(o,r));this.$refs[t]=Array.from(a)}else this.$refs[t]=r}return r}}__clone(e={}){const t={...this.context,...e},r={...t,context:t};return r.context.__proto__=this.context,r.__proto__=this,r}}function D(n){const{Vue:e=A,mode:t=S.Runtime,components:r={},libs:s={},apis:o={},loader:a}=n,i=e.computed(()=>n.dsl),l={$components:r,$libs:s,$apis:o},c=new he({mode:t,dsl:i.value,attrs:l}),m=e.defineComponent({name:i.value.name,props:{...Re(i.value.props??[],c)},setup(d){c.$props=d,c.props=d,i.value.id&&Y(n.window||window,i.value.id,i.value.css||""),c.state=Ie(e,i.value.state??{},c);const f=He(e,i.value.computed??{},c),v=Oe(i.value.methods??{},c),h=Me(e,i.value.inject,c),g=ve(i.value.dataSources||{},c),p={...h,...f,...v,...g};return c.setup(p,e),xe(e,i.value.watch??[],c),{vtj:c}},emits:[...i.value.emits??[]],expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?H(d[0],c,e,a):d.map(f=>H(f,c,e,a))},...Te(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(m),context:c}}function Re(n=[],e){const t=r=>r?(Array.isArray(r)?r:[r]).map(o=>ne[o]):void 0;return n.map(r=>u.isString(r)?{name:r}:{name:r.name,type:r.type,required:r.required,default:w(r.default)?e.__parseExpression(r.default):r.default}).reduce((r,s)=>(r[s.name]={type:t(s.type),required:s.required,default:s.default},r),{})}function Ie(n,e,t){return n.reactive(Object.keys(e||{}).reduce((r,s)=>{let o=e[s];return w(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),r[s]=o,r},{}))}function He(n,e,t){return Object.entries(e??{}).reduce((r,[s,o])=>(r[s]=n.computed(t.__parseFunction(o)),r),{})}function Oe(n,e){return Object.entries(n??{}).reduce((t,[r,s])=>(t[r]=e.__parseFunction(s),t),{})}function Me(n,e=[],t){return e.reduce((r,s)=>{const{name:o,from:a}=s||{};s.default;const i=w(a)?t.__parseExpression(a)||o:a??o,l=w(s.default)?t.__parseExpression(s.default):s.default??null;return r[o]=n.inject(i,l),r},{})}function ve(n,e){return Object.keys(n).reduce((t,r)=>{const s=n[r],o=e.$apis[s.ref],a=O(s.transform)?s.transform.value?e.__parseFunction(s.transform):void 0:s.transform;return t[r]=async(...i)=>{const l=await o.apply(e,i);return a?a(l):l},t},{})}function xe(n,e=[],t){e.forEach(r=>{n.watch(t.__parseExpression(r.source),t.__parseFunction(r.handler),{deep:r.deep,immediate:r.immediate})})}function Te(n,e){return Object.entries(n??{}).reduce((t,[r,s])=>(t[r]=e.__parseFunction(s),t),{})}let q=[];const ge=n=>n;async function W(n,e=window){const{urls:t=[],library:r}=n,s=t.filter(l=>N(l));if(s.length===0||!r)return null;const o=t.filter(l=>B(l));let a;const i=await ce(s,r,e).catch(()=>null);return i?.plugin&&(a=i.plugin),a?{component:a,css:o}:null}function k(n){const{getDsl:e,getDslByUrl:t,options:r}=n;return r.window&&(q.forEach(s=>{delete r.window[s]}),q=[]),(s,o,a=A)=>!o||typeof o=="string"?s:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=s),i?D({...r,Vue:a,dsl:i,mode:S.Runtime,loader:k(n)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=s),i?D({...r,Vue:a,dsl:i,mode:S.Runtime,loader:k(n)}).renderer:null}):o.type==="Plugin"?(o.library&&q.push(o.library),a.defineAsyncComponent(async()=>{const i=await W(o,r.window);return i?(K(i.css,r.window),i.component):null})):s}function H(n,e,t=A,r=ge){if(!n||!n.name||n.invisible)return null;const{id:s=null,directives:o=[]}=n,{vIf:a,vFor:i,vShow:l,vModels:c,vBind:m}=De(o);if(a&&!ke(a,e))return null;const d=f=>{const v=f.$components,h=(()=>{if(n.name==="component")return Ae(f,n.props?.is);if(n.name==="slot")return n.name;const _=r(n.name,n.from,t);return u.isString(_)?v[_]??_:_})(),g=Be(s,n.props??{},f),p=Ne(t,n.events??{},f);if(n.name==="slot")return Ue(t,n,g,f,r);m&&Object.assign(g,f.__parseExpression(m.value)),l&&(g.style=Object.assign(g.style??{},Je(l,f))),c.forEach(_=>{Object.assign(g,Le(t,_,f))});const $=Ve(t,n.children??[],f,r,n);return t.createVNode(h,{...g,...p},$)};return i?Xe(i,d,e):d(e)}function De(n=[]){const e=n.find(i=>u.camelCase(i.name)==="vIf"),t=n.find(i=>u.camelCase(i.name)==="vFor"),r=n.find(i=>u.camelCase(i.name)==="vShow"),s=n.find(i=>u.camelCase(i.name)==="vBind"),o=n.filter(i=>u.camelCase(i.name)==="vModel"),a=n.filter(i=>!re.includes(u.camelCase(i.name)));return{vIf:e,vFor:t,vShow:r,vModels:o,vBind:s,others:a}}function ke(n,e){return!!e.__parseExpression(n.value)}function Ae(n,e){return e?w(e)?n.__parseExpression(e):e:"div"}function Be(n,e,t){const r=Object.keys(e||{}).reduce((s,o)=>{let a=e[o];return w(a)?a=t.__parseExpression(a):O(a)&&(a=t.__parseFunction(a)),s[o]=a,s},{});return r.ref=t.__ref(n,r.ref),r}function Ne(n,e,t){const r=["passive","capture","once"],s={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],l=z(i.modifiers),c=l.find(f=>r.includes(f)),m="on"+u.upperFirst(a)+(c&&s[c]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=n.withModifiers(d,l)),o},{})}function z(n={},e=!1){const t=Object.keys(n);return e?t.map(r=>"."+r):t}function Ue(n,e,t,r,s){const{children:o}=e,a=qe(e,r),i=r.$slots?.[a.name];return i?i(t):o?u.isString(o)?n.createTextVNode(o):w(o)?n.createTextVNode(V(r.__parseExpression(o))):Array.isArray(o)?o.map(l=>H(l,r,n,s)):null:null}function qe(n,e){const{props:t}=n,r=t?.name||"default";return{name:w(r)?e.__parseExpression(r):r,params:[]}}function Je(n,e){return e.__parseExpression(n.value)?{}:{display:"none"}}function Le(n,e,t){const r={type:"JSFunction",value:e.value?.value?`(v) => {
9
9
  ${e.value.value} = v;
10
- }`:"(v) => {}"},s=t.__parseFunction(r),o=z(e.modifiers),a=w(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:o.length&&s?n.withModifiers(s,o):s}}function Ve(n,e,t,r,s){if(!e)return null;if(u.isString(e))return{default:()=>e};if(w(e))return{default:()=>V(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=Ye(e),a=i=>!i||!s?{}:s?.id&&Object.keys(i).length?{[`scope_${s.id}`]:i}:{};return Object.entries(o).reduce((i,[l,{nodes:c,params:m}])=>(i[l]=d=>{const f=m.length?u.pick(d??{},m):a(d);return c.map(v=>H(v,t.__clone(f),n,r))},i),{})}return null}function Ye(n){const e={default:{params:[],nodes:[]}};for(const t of n){const r=Ke(t.slot),s=r.name;e[s]?(e[s].nodes.push(t),e[s].params=e[s].params.concat(r.params)):e[s]={nodes:[t],params:r.params}}return e}function Ke(n="default"){return u.isString(n)?{name:n,params:[]}:{params:[],...n}}function Xe(n,e,t){const{value:r,iterator:s}=n,{item:o="item",index:a="index"}=s||{};let i=t.__parseExpression(r)||[];return Number.isInteger(i)&&(i=new Array(i).fill(!0).map((l,c)=>c+1)),Array.isArray(i)?i.map((l,c)=>e(t.__clone({[o]:l,[a]:c}))):(console.warn("[vForRender]:",`${r?.value} is not a Arrary`),[])}const ee=j.defineComponent({name:"VtjPageContainer",async setup(){const n=Q(),e=te.useRoute(),t=e.params.id,r=t?n.getPage(t):n.getHomepage(),s=r?await n.getRenderComponent(r.id):null;return r&&we.useTitle(r.title||"VTJ"),{provider:n,component:s,file:r,query:e.query}},render(){return this.component?j.h(this.component,this.query):j.h("div","页面不存在")}}),We=j.defineComponent({name:"VtjStartupContainer",render(){return j.h(je.XStartup)}}),G=Symbol("Provider");class ye extends C.Base{mode;globals={};modules={};adapter={request:Fe,jsonp:u.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};constructor(e){super();const{service:t,mode:r=S.Raw,dependencies:s,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:m=null,materialPath:d="./",nodeEnv:f="development"}=e;this.mode=r,this.modules=c,this.service=t,this.router=m,this.materialPath=d,this.nodeEnv=f,s&&(this.dependencies=s),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i),r!==S.Design&&this.load(a)}async load(e){const t=this.modules[`.vtj/projects/${e.id}.json`];if(this.project=t?await t():await this.service.init(e),!this.project)throw new Error("project is null");const{dependencies:r=[],apis:s}=this.project,{dependencies:o,library:a,components:i,materialPath:l}=this,{libraryExports:c,libraryMap:m,materials:d,materialExports:f,materialMapLibrary:v}=oe(r,l),h=window;h.CKEDITOR_VERSION=void 0;for(const p of c){const $=o[p],_=h[p];if(_)a[p]=_;else if($)h[p]=a[p]=await $();else{const E=m[p]||[];for(const P of E)B(P)&&await ae(p,u.url.append(P,{v:F})),N(P)&&await u.loadScript(u.url.append(P,{v:F}));a[p]=h[p]}}for(const p of d)await u.loadScript(u.url.append(p,{v:F}));const g=this.materials||{};for(const p of f){const $=h[v[p]],_=C.BUILT_IN_COMPONENTS[p];if(_)$&&_.forEach(E=>{i[E]=$[E]});else{const E=g[p]?(await g[p]()).default:h[p];E&&$&&(E.components||[]).forEach(P=>{i[P.name]=ie(P,$)})}}s&&(this.apis=de(s,this.adapter),X(),this.project.config?.mock&&fe(s)),this.initRouter(),this.triggerReady()}initRouter(){const{router:e,project:t}=this;e&&(e.addRoute({path:"/page/:id",name:"VtjPage",component:ee}),e.addRoute({path:"/",name:"VtjHomepage",component:t?.homepage?ee:We}))}install(e){const t=e.config.globalProperties.installed||{};for(const[r,s]of Object.entries(this.library))!t[r]&&le(s)&&(e.use(s),t[r]=!0);e.provide(G,this),e.config.globalProperties.installed=t}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(r=>r.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},r=(s,o=[])=>{for(const a of o){if(a.id===s)return a;if(a.children&&a.children.length){const i=r(s,a.children);if(i)return i}}};return r(e,t)||null}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const t=this.modules[`.vtj/files/${e}.json`];return t?await t():this.service.getFile(e).catch(()=>null)}async getDslByUrl(e){const t=this.urlDslCaches[e];return t||(this.urlDslCaches[e]=this.adapter.request.send({url:e,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(r=>r.data).catch(()=>null))}createDslRenderer(e,t={}){const{library:r,components:s,mode:o,apis:a}=this,i={mode:o,Vue:r.Vue,components:s,libs:r,apis:a,window,...t},l=k({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return x({...i,dsl:e,loader:l})}async getRenderComponent(e){const t=this.getFile(e);if(!t)return u.logger.warn(`Can not find file: ${e}`),null;const r=`.vtj/vue/${e}.vue`,s=this.modules[r];if(s)return(await s())?.default;const o=await this.getDsl(t.id);return o?this.createDslRenderer(o).renderer:(u.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return j.defineAsyncComponent(async()=>{const r=await this.getDslByUrl(e);return r?(r.name=t||r.name,this.createDslRenderer(r).renderer):null})}definePluginComponent(e){return j.defineAsyncComponent(async()=>{const t=await W(e,window);return t?(K(t.css),t.component):null})}}function ze(n){const e=new ye(n);return{provider:e,onReady:r=>e.ready(r)}}function Q(n={}){const e=j.inject(G);if(!e)throw new Error("Can not find provider");if(e.mode===S.Raw&&e.nodeEnv==="development"){const{id:t,version:r}=n;t&&r&&(async()=>{const s=await e.getDsl(t);s?.__VERSION__!==r&&T.ElNotification.warning({title:s?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const Z=new u.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:n=>n.data?.code===0,showError:n=>{T.ElNotification.error({message:n||"未知错误"})}}}),Ge=(n="/vtj/local/repository/${type}.json")=>(e,t)=>Z.send({url:n,method:"post",query:{type:e},data:{type:e,data:t}}),Qe=(n="/vtj/local/repository/uploader.json")=>async(e,t)=>await Z.send({url:n,method:"post",data:{files:e,projectId:t},settings:{type:"data"}}).then(r=>r&&r[0]?r[0]:null).catch(()=>null);class U{api;pluginCaches={};uploader;constructor(){this.api=Ge(),this.uploader=Qe()}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return console.log("BaseService.saveMaterials",e,t),!1}async saveFile(e){return console.log("BaseService.saveFile",e),!1}async getFile(e){return console.log("BaseService.getFile",e),{}}async removeFile(e){return console.log("BaseService.removeFile",e),!1}async saveHistory(e){return console.log("BaseService.saveHistory",e),!1}async removeHistory(e){return console.log("BaseService.removeHistory",e),!1}async getHistory(e){return console.log("BaseService.getHistory",e),{}}async getHistoryItem(e,t){return console.log("BaseService.getHistoryItem",e,t),{}}async saveHistoryItem(e,t){return console.log("BaseService.saveHistoryItem",e,t),!1}async removeHistoryItem(e,t){return console.log("BaseService.removeHistoryItem",e,t),!1}async publish(e){return!!await this.api("publish",e).catch(()=>!1)}async publishFile(e,t){return!!await this.api("publishFile",{project:e,file:t}).catch(()=>!1)}async genVueContent(e,t){return await this.api("genVueContent",{project:e,dsl:t}).catch(()=>"")}async createRawPage(e){return await this.api("createRawPage",e).catch(()=>"")}async removeRawPage(e){return await this.api("removeRawPage",e).catch(()=>"")}async uploadStaticFile(e,t){return await this.uploader(e,t).catch(()=>null)}async getStaticFiles(e){return await this.api("getStaticFiles",e).catch(()=>[])}async removeStaticFile(e,t){return await this.api("removeStaticFile",{name:e,projectId:t}).catch(()=>"")}async clearStaticFiles(e){return await this.api("clearStaticFiles",e).catch(()=>"")}async getPluginMaterial(e){const{urls:t=[]}=e,r=t.filter(o=>se(o))[0];if(!r)return null;const s=this.pluginCaches[r];return s||(this.pluginCaches[r]=Z.send({url:r,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}}const y=new u.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Ze extends U{init(e){const t=new C.ProjectModel(e),r=y.get(`project_${t.id}`),s=Object.assign(t.toDsl(),r||{});return y.save(`project_${t.id}`,s),Promise.resolve(s)}saveProject(e){const t=new C.ProjectModel(e);return y.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return y.save(`materials_${e.id}`,u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return y.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=y.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return y.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return y.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=y.get(`history_${e}`);if(t){const s=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,s),y.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=y.get(`history_${e}`),r=new C.HistoryModel(t||{id:e});return Promise.resolve(r.toDsl())}getHistoryItem(e,t){const r=y.get(`history_${e}_${t}`);return Promise.resolve(r)}saveHistoryItem(e,t){return y.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(r=>{y.remove(`history_${e}_${r}`)}),Promise.resolve(!0)}}class _e extends U{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new C.ProjectModel(e),r=this.projects[t.id]||{},s=Object.assign(t.toDsl(),r);return this.projects[s.id]=s,Promise.resolve(s)}saveProject(e){const t=new C.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return this.files[e.id]=e,Promise.resolve(!0)}getFile(e){const t=this.files[e];return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return delete this.files[e],Promise.resolve(!0)}saveHistory(e){return this.histories[e.id]=e,Promise.resolve(!0)}removeHistory(e){const t=this.histories[e];if(t){const s=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,s),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],r=new C.HistoryModel(t||{id:e});return Promise.resolve(r)}getHistoryItem(e,t){const r=`${e}_${t}`,s=this.historyItems[r]||{};return Promise.resolve(s)}saveHistoryItem(e,t){const r=`${e}_${t.id}`;return this.historyItems[r]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(r=>{const s=`${e}_${r}`;delete this.historyItems[s]}),Promise.resolve(!0)}}let M=null;function et(){return M||(M=new _e,M)}class tt extends U{getFileCaches={};async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:u.mapToObject(t)}).catch(()=>!1)}async saveFile(e){return!!await this.api("saveFile",e).catch(()=>!1)}async getFile(e){const t=this.getFileCaches[e];return t||(this.getFileCaches[e]=this.api("getFile",e).catch(()=>null)).finally(()=>{delete this.getFileCaches[e]})}async removeFile(e){return!!await this.api("removeFile",e).catch(()=>!1)}async saveHistory(e){return!!await this.api("saveHistory",e).catch(()=>!1)}async removeHistory(e){return!!await this.api("removeHistory",e).catch(()=>!1)}async getHistory(e){return await this.api("getHistory",e).catch(()=>null)||{}}async getHistoryItem(e,t){return await this.api("getHistoryItem",{fId:e,id:t}).catch(()=>null)||{}}async saveHistoryItem(e,t){return!!await this.api("saveHistoryItem",{fId:e,item:t}).catch(()=>!1)}async removeHistoryItem(e,t){return!!await this.api("removeHistoryItem",{fId:e,ids:t}).catch(()=>!1)}}function Se(n=[]){return n.map(e=>{const{id:t,title:r,icon:s,children:o,hidden:a}=e;return{id:t,title:r,icon:s,hidden:a,url:`/page/${t}`,children:o&&o.length?Se(o):void 0}})}function rt(){const n=Q(),e=te.useRoute(),t=j.ref(!1),r=n.project;j.watchEffect(()=>{const{name:a,params:i,meta:l}=e;if(a==="VtjPage"){const c=n.getPage(i.id);t.value=!c?.mask}else if(a==="VtjHomepage"){const c=n.getHomepage();t.value=!c?.mask}else t.value=!l.mask});const s=Se(r?.pages),o=r?.config;return{disabled:t,logo:o?.logo,themeSwitchable:o?.themeSwitchable,title:o?.title||r?.description||r?.name||"VTJ App",menus:s}}exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=U;exports.CONTEXT_HOST=J;exports.Context=he;exports.ContextMode=S;exports.DATA_TYPES=ne;exports.JSCodeToString=be;exports.LIFE_CYCLES_LIST=Ce;exports.LocalService=tt;exports.MemoryService=_e;exports.Provider=ye;exports.StorageService=Ze;exports.VTJ_RENDERER_VERSION=F;exports.adoptedStyleSheets=Y;exports.createAssetScripts=Ee;exports.createAssetsCss=Pe;exports.createDataSources=ve;exports.createLoader=k;exports.createMemoryService=et;exports.createProvider=ze;exports.createRenderer=x;exports.createSchemaApi=pe;exports.createSchemaApis=de;exports.defaultLoader=ge;exports.fillBasePath=I;exports.getModifiers=z;exports.getPlugin=W;exports.getRawComponent=ie;exports.isCSSUrl=B;exports.isJSCode=ue;exports.isJSExpression=w;exports.isJSFunction=O;exports.isJSON=se;exports.isJSUrl=N;exports.isVuePlugin=le;exports.loadCss=ae;exports.loadCssUrl=K;exports.loadScriptUrl=ce;exports.mockApi=me;exports.mockApis=fe;exports.mockCleanup=X;exports.nodeRender=H;exports.parseDeps=oe;exports.parseExpression=R;exports.parseFunction=L;exports.providerKey=G;exports.toString=V;exports.useMask=rt;exports.useProvider=Q;
10
+ }`:"(v) => {}"},s=t.__parseFunction(r),o=z(e.modifiers),a=w(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:o.length&&s?n.withModifiers(s,o):s}}function Ve(n,e,t,r,s){if(!e)return null;if(u.isString(e))return{default:()=>e};if(w(e))return{default:()=>V(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=Ye(e),a=i=>!i||!s?{}:s?.id&&Object.keys(i).length?{[`scope_${s.id}`]:i}:{};return Object.entries(o).reduce((i,[l,{nodes:c,params:m}])=>(i[l]=d=>{const f=m.length?u.pick(d??{},m):a(d);return c.map(v=>H(v,t.__clone(f),n,r))},i),{})}return null}function Ye(n){const e={default:{params:[],nodes:[]}};for(const t of n){const r=Ke(t.slot),s=r.name;e[s]?(e[s].nodes.push(t),e[s].params=e[s].params.concat(r.params)):e[s]={nodes:[t],params:r.params}}return e}function Ke(n="default"){return u.isString(n)?{name:n,params:[]}:{params:[],...n}}function Xe(n,e,t){const{value:r,iterator:s}=n,{item:o="item",index:a="index"}=s||{};let i=t.__parseExpression(r)||[];return Number.isInteger(i)&&(i=new Array(i).fill(!0).map((l,c)=>c+1)),Array.isArray(i)?i.map((l,c)=>e(t.__clone({[o]:l,[a]:c}))):(console.warn("[vForRender]:",`${r?.value} is not a Arrary`),[])}const ee=j.defineComponent({name:"VtjPageContainer",async setup(){const n=Q(),e=te.useRoute(),t=e.params.id,r=t?n.getPage(t):n.getHomepage(),s=r?await n.getRenderComponent(r.id):null;return r&&we.useTitle(r.title||"VTJ"),{provider:n,component:s,file:r,query:e.query}},render(){return this.component?j.h(this.component,this.query):j.h("div","页面不存在")}}),We=j.defineComponent({name:"VtjStartupContainer",render(){return j.h(je.XStartup)}}),G=Symbol("Provider");class ye extends E.Base{mode;globals={};modules={};adapter={request:Fe,jsonp:u.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};constructor(e){super();const{service:t,mode:r=S.Raw,dependencies:s,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:m=null,materialPath:d="./",nodeEnv:f="development"}=e;this.mode=r,this.modules=c,this.service=t,this.router=m,this.materialPath=d,this.nodeEnv=f,s&&(this.dependencies=s),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i),r!==S.Design&&this.load(a)}async load(e){const t=this.modules[`.vtj/projects/${e.id}.json`];if(this.project=t?await t():await this.service.init(e),!this.project)throw new Error("project is null");const{dependencies:r=[],apis:s}=this.project,{dependencies:o,library:a,components:i,materialPath:l}=this,{libraryExports:c,libraryMap:m,materials:d,materialExports:f,materialMapLibrary:v}=oe(r,l),h=window;h.CKEDITOR_VERSION=void 0;for(const p of c){const $=o[p],_=h[p];if(_)a[p]=_;else if($)h[p]=a[p]=await $();else{const C=m[p]||[];for(const P of C)B(P)&&await ae(p,u.url.append(P,{v:F})),N(P)&&await u.loadScript(u.url.append(P,{v:F}));a[p]=h[p]}}for(const p of d)await u.loadScript(u.url.append(p,{v:F}));const g=this.materials||{};for(const p of f){const $=h[v[p]],_=E.BUILT_IN_COMPONENTS[p];if(_)$&&_.forEach(C=>{i[C]=$[C]});else{const C=g[p]?(await g[p]()).default:h[p];C&&$&&(C.components||[]).forEach(P=>{i[P.name]=ie(P,$)})}}s&&(this.apis=de(s,this.adapter),X(),this.project.config?.mock&&fe(s)),this.initRouter(),this.triggerReady()}initRouter(){const{router:e,project:t}=this;e&&(e.addRoute({path:"/page/:id",name:"VtjPage",component:ee}),e.addRoute({path:"/",name:"VtjHomepage",component:t?.homepage?ee:We}))}install(e){const t=e.config.globalProperties.installed||{};for(const[r,s]of Object.entries(this.library))!t[r]&&le(s)&&(e.use(s),t[r]=!0);e.provide(G,this),e.config.globalProperties.installed=t}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(r=>r.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},r=(s,o=[])=>{for(const a of o){if(a.id===s)return a;if(a.children&&a.children.length){const i=r(s,a.children);if(i)return i}}};return r(e,t)||null}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const t=this.modules[`.vtj/files/${e}.json`];return t?await t():this.service.getFile(e).catch(()=>null)}async getDslByUrl(e){const t=this.urlDslCaches[e];return t||(this.urlDslCaches[e]=this.adapter.request.send({url:e,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(r=>r.data).catch(()=>null))}createDslRenderer(e,t={}){const{library:r,components:s,mode:o,apis:a}=this,i={mode:o,Vue:r.Vue,components:s,libs:r,apis:a,window,...t},l=k({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return D({...i,dsl:e,loader:l})}async getRenderComponent(e){const t=this.getFile(e);if(!t)return u.logger.warn(`Can not find file: ${e}`),null;const r=`.vtj/vue/${e}.vue`,s=this.modules[r];if(s)return(await s())?.default;const o=await this.getDsl(t.id);return o?this.createDslRenderer(o).renderer:(u.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return j.defineAsyncComponent(async()=>{const r=await this.getDslByUrl(e);return r?(r.name=t||r.name,this.createDslRenderer(r).renderer):null})}definePluginComponent(e){return j.defineAsyncComponent(async()=>{const t=await W(e,window);return t?(K(t.css),t.component):null})}}function ze(n){const e=new ye(n);return{provider:e,onReady:r=>e.ready(r)}}function Q(n={}){const e=j.inject(G);if(!e)throw new Error("Can not find provider");if(e.mode===S.Raw&&e.nodeEnv==="development"){const{id:t,version:r}=n;t&&r&&(async()=>{const s=await e.getDsl(t);s?.__VERSION__!==r&&x.ElNotification.warning({title:s?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const Z=new u.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:n=>n.data?.code===0,showError:n=>{x.ElNotification.error({message:n||"未知错误"})}}}),Ge=(n="/vtj/local/repository/${type}.json")=>(e,t)=>Z.send({url:n,method:"post",query:{type:e},data:{type:e,data:t}}),Qe=(n="/vtj/local/repository/uploader.json")=>async(e,t)=>await Z.send({url:n,method:"post",data:{files:e,projectId:t},settings:{type:"data"}}).then(r=>r&&r[0]?r[0]:null).catch(()=>null);class U{api;pluginCaches={};uploader;constructor(){this.api=Ge(),this.uploader=Qe()}async getExtension(){console.log("BaseService.getExtension")}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return console.log("BaseService.saveMaterials",e,t),!1}async saveFile(e){return console.log("BaseService.saveFile",e),!1}async getFile(e){return console.log("BaseService.getFile",e),{}}async removeFile(e){return console.log("BaseService.removeFile",e),!1}async saveHistory(e){return console.log("BaseService.saveHistory",e),!1}async removeHistory(e){return console.log("BaseService.removeHistory",e),!1}async getHistory(e){return console.log("BaseService.getHistory",e),{}}async getHistoryItem(e,t){return console.log("BaseService.getHistoryItem",e,t),{}}async saveHistoryItem(e,t){return console.log("BaseService.saveHistoryItem",e,t),!1}async removeHistoryItem(e,t){return console.log("BaseService.removeHistoryItem",e,t),!1}async publish(e){return!!await this.api("publish",e).catch(()=>!1)}async publishFile(e,t){return!!await this.api("publishFile",{project:e,file:t}).catch(()=>!1)}async genVueContent(e,t){return await this.api("genVueContent",{project:e,dsl:t}).catch(()=>"")}async createRawPage(e){return await this.api("createRawPage",e).catch(()=>"")}async removeRawPage(e){return await this.api("removeRawPage",e).catch(()=>"")}async uploadStaticFile(e,t){return await this.uploader(e,t).catch(()=>null)}async getStaticFiles(e){return await this.api("getStaticFiles",e).catch(()=>[])}async removeStaticFile(e,t){return await this.api("removeStaticFile",{name:e,projectId:t}).catch(()=>"")}async clearStaticFiles(e){return await this.api("clearStaticFiles",e).catch(()=>"")}async getPluginMaterial(e){const{urls:t=[]}=e,r=t.filter(o=>se(o))[0];if(!r)return null;const s=this.pluginCaches[r];return s||(this.pluginCaches[r]=Z.send({url:r,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}}const y=new u.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Ze extends U{init(e){const t=new E.ProjectModel(e),r=y.get(`project_${t.id}`),s=Object.assign(t.toDsl(),r||{});return y.save(`project_${t.id}`,s),Promise.resolve(s)}saveProject(e){const t=new E.ProjectModel(e);return y.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return y.save(`materials_${e.id}`,u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return y.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=y.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return y.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return y.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=y.get(`history_${e}`);if(t){const s=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,s),y.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=y.get(`history_${e}`),r=new E.HistoryModel(t||{id:e});return Promise.resolve(r.toDsl())}getHistoryItem(e,t){const r=y.get(`history_${e}_${t}`);return Promise.resolve(r)}saveHistoryItem(e,t){return y.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(r=>{y.remove(`history_${e}_${r}`)}),Promise.resolve(!0)}}class _e extends U{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new E.ProjectModel(e),r=this.projects[t.id]||{},s=Object.assign(t.toDsl(),r);return this.projects[s.id]=s,Promise.resolve(s)}saveProject(e){const t=new E.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return this.files[e.id]=e,Promise.resolve(!0)}getFile(e){const t=this.files[e];return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return delete this.files[e],Promise.resolve(!0)}saveHistory(e){return this.histories[e.id]=e,Promise.resolve(!0)}removeHistory(e){const t=this.histories[e];if(t){const s=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,s),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],r=new E.HistoryModel(t||{id:e});return Promise.resolve(r)}getHistoryItem(e,t){const r=`${e}_${t}`,s=this.historyItems[r]||{};return Promise.resolve(s)}saveHistoryItem(e,t){const r=`${e}_${t.id}`;return this.historyItems[r]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(r=>{const s=`${e}_${r}`;delete this.historyItems[s]}),Promise.resolve(!0)}}let M=null;function et(){return M||(M=new _e,M)}class tt extends U{getFileCaches={};async getExtension(){return await this.api("getExtension",{}).catch(()=>{})}async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:u.mapToObject(t)}).catch(()=>!1)}async saveFile(e){return!!await this.api("saveFile",e).catch(()=>!1)}async getFile(e){const t=this.getFileCaches[e];return t||(this.getFileCaches[e]=this.api("getFile",e).catch(()=>null)).finally(()=>{delete this.getFileCaches[e]})}async removeFile(e){return!!await this.api("removeFile",e).catch(()=>!1)}async saveHistory(e){return!!await this.api("saveHistory",e).catch(()=>!1)}async removeHistory(e){return!!await this.api("removeHistory",e).catch(()=>!1)}async getHistory(e){return await this.api("getHistory",e).catch(()=>null)||{}}async getHistoryItem(e,t){return await this.api("getHistoryItem",{fId:e,id:t}).catch(()=>null)||{}}async saveHistoryItem(e,t){return!!await this.api("saveHistoryItem",{fId:e,item:t}).catch(()=>!1)}async removeHistoryItem(e,t){return!!await this.api("removeHistoryItem",{fId:e,ids:t}).catch(()=>!1)}}function Se(n=[]){return n.map(e=>{const{id:t,title:r,icon:s,children:o,hidden:a}=e;return{id:t,title:r,icon:s,hidden:a,url:`/page/${t}`,children:o&&o.length?Se(o):void 0}})}function rt(){const n=Q(),e=te.useRoute(),t=j.ref(!1),r=n.project;j.watchEffect(()=>{const{name:a,params:i,meta:l}=e;if(a==="VtjPage"){const c=n.getPage(i.id);t.value=!c?.mask}else if(a==="VtjHomepage"){const c=n.getHomepage();t.value=!c?.mask}else t.value=!l.mask});const s=Se(r?.pages),o=r?.config;return{disabled:t,logo:o?.logo,themeSwitchable:o?.themeSwitchable,title:o?.title||r?.description||r?.name||"VTJ App",menus:s}}exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=U;exports.CONTEXT_HOST=J;exports.Context=he;exports.ContextMode=S;exports.DATA_TYPES=ne;exports.JSCodeToString=be;exports.LIFE_CYCLES_LIST=Ee;exports.LocalService=tt;exports.MemoryService=_e;exports.Provider=ye;exports.StorageService=Ze;exports.VTJ_RENDERER_VERSION=F;exports.adoptedStyleSheets=Y;exports.createAssetScripts=Ce;exports.createAssetsCss=Pe;exports.createDataSources=ve;exports.createLoader=k;exports.createMemoryService=et;exports.createProvider=ze;exports.createRenderer=D;exports.createSchemaApi=pe;exports.createSchemaApis=de;exports.defaultLoader=ge;exports.fillBasePath=I;exports.getModifiers=z;exports.getPlugin=W;exports.getRawComponent=ie;exports.isCSSUrl=B;exports.isJSCode=ue;exports.isJSExpression=w;exports.isJSFunction=O;exports.isJSON=se;exports.isJSUrl=N;exports.isVuePlugin=le;exports.loadCss=ae;exports.loadCssUrl=K;exports.loadScriptUrl=ce;exports.mockApi=me;exports.mockApis=fe;exports.mockCleanup=X;exports.nodeRender=H;exports.parseDeps=oe;exports.parseExpression=R;exports.parseFunction=L;exports.providerKey=G;exports.toString=V;exports.useMask=rt;exports.useProvider=Q;
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Base as fe, BUILT_IN_COMPONENTS as de, ProjectModel as x, HistoryModel as ee } from "@vtj/core";
2
- import { isUrl as me, url as F, dedupArray as he, isString as b, isFunction as X, logger as O, createRequest as ve, merge as ye, pathToRegexp as ge, pathToRegexpMatch as _e, formDataToJson as we, camelCase as E, upperFirst as Se, pick as $e, jsonp as je, loadScript as Y, Request as Ee, Storage as Pe, mapToObject as q } from "@vtj/utils";
2
+ import { isUrl as me, url as F, dedupArray as he, isString as b, isFunction as X, logger as O, createRequest as ve, merge as ge, pathToRegexp as ye, pathToRegexpMatch as _e, formDataToJson as we, camelCase as E, upperFirst as Se, pick as $e, jsonp as je, loadScript as Y, Request as Ee, Storage as Pe, mapToObject as q } from "@vtj/utils";
3
3
  import * as k from "vue";
4
- import { defineComponent as te, h as B, inject as Fe, defineAsyncComponent as z, ref as be, watchEffect as Ce } from "vue";
4
+ import { defineComponent as te, h as A, inject as Fe, defineAsyncComponent as z, ref as be, watchEffect as Ce } from "vue";
5
5
  import { useRoute as re } from "vue-router";
6
6
  import { ElNotification as J, ElLoading as Re } from "element-plus";
7
7
  import D from "mockjs";
@@ -11,10 +11,10 @@ import { XStartup as He } from "@vtj/ui";
11
11
  * Copyright (c) 2024, VTJ.PRO All rights reserved.
12
12
  * @name @vtj/renderer
13
13
  * @author CHC chenhuachun1549@dingtalk.com
14
- * @version 0.8.8
14
+ * @version 0.8.9
15
15
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
16
16
  */
17
- const C = "0.8.8";
17
+ const C = "0.8.9";
18
18
  var _ = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(_ || {});
19
19
  const G = [
20
20
  "$el",
@@ -126,7 +126,7 @@ function oe(n, e = window) {
126
126
  a.rel = "stylesheet", a.id = s, a.href = s, r.appendChild(a);
127
127
  }
128
128
  }
129
- async function Ae(n, e, t = window) {
129
+ async function Be(n, e, t = window) {
130
130
  const r = t.document, s = t.document.head;
131
131
  let o = t[e];
132
132
  return o ? o.default || o : new Promise((a, i) => {
@@ -140,7 +140,7 @@ async function Ae(n, e, t = window) {
140
140
  }
141
141
  });
142
142
  }
143
- function Be(n) {
143
+ function Ae(n) {
144
144
  return X(n) || X(n?.install);
145
145
  }
146
146
  function R(n, e, t = !1, r = !1) {
@@ -222,7 +222,7 @@ function qe(n, e) {
222
222
  headers: s
223
223
  }
224
224
  };
225
- return (a, i) => r.send(ye(o, i || {}, { data: a }));
225
+ return (a, i) => r.send(ge(o, i || {}, { data: a }));
226
226
  }
227
227
  }
228
228
  function Je(n = [], e) {
@@ -241,7 +241,7 @@ function Le(n) {
241
241
  return;
242
242
  const { url: e, mockTemplate: t } = n;
243
243
  if (e && t) {
244
- const r = ge(`${e}(.*)`), s = _e(e, { decode: decodeURIComponent }), o = R(t, {}, !0);
244
+ const r = ye(`${e}(.*)`), s = _e(e, { decode: decodeURIComponent }), o = R(t, {}, !0);
245
245
  D.mock(r, (a) => {
246
246
  const i = F.parse(a.url) || {}, l = a.body instanceof FormData ? we(a.body) : a.body, c = s(a.url)?.params;
247
247
  return Object.assign(a, { data: l, params: i, query: c }), D.mock(o(a));
@@ -484,7 +484,7 @@ function et(n, e) {
484
484
  {}
485
485
  );
486
486
  }
487
- let A = [];
487
+ let B = [];
488
488
  const tt = (n) => n;
489
489
  async function ae(n, e = window) {
490
490
  const { urls: t = [], library: r } = n, s = t.filter((l) => L(l));
@@ -492,7 +492,7 @@ async function ae(n, e = window) {
492
492
  return null;
493
493
  const o = t.filter((l) => V(l));
494
494
  let a;
495
- const i = await Ae(s, r, e).catch(
495
+ const i = await Be(s, r, e).catch(
496
496
  () => null
497
497
  );
498
498
  return i?.plugin && (a = i.plugin), a ? {
@@ -502,9 +502,9 @@ async function ae(n, e = window) {
502
502
  }
503
503
  function U(n) {
504
504
  const { getDsl: e, getDslByUrl: t, options: r } = n;
505
- return r.window && (A.forEach((s) => {
505
+ return r.window && (B.forEach((s) => {
506
506
  delete r.window[s];
507
- }), A = []), (s, o, a = k) => !o || typeof o == "string" ? s : o.type === "Schema" && o.id ? a.defineAsyncComponent(async () => {
507
+ }), B = []), (s, o, a = k) => !o || typeof o == "string" ? s : o.type === "Schema" && o.id ? a.defineAsyncComponent(async () => {
508
508
  const i = await e(o.id);
509
509
  return i && (i.name = s), i ? N({
510
510
  ...r,
@@ -522,7 +522,7 @@ function U(n) {
522
522
  mode: _.Runtime,
523
523
  loader: U(n)
524
524
  }).renderer : null;
525
- }) : o.type === "Plugin" ? (o.library && A.push(o.library), a.defineAsyncComponent(async () => {
525
+ }) : o.type === "Plugin" ? (o.library && B.push(o.library), a.defineAsyncComponent(async () => {
526
526
  const i = await ae(o, r.window);
527
527
  return i ? (oe(i.css, r.window), i.component) : null;
528
528
  })) : s;
@@ -539,16 +539,16 @@ function M(n, e, t = k, r = tt) {
539
539
  return st(f, n.props?.is);
540
540
  if (n.name === "slot")
541
541
  return n.name;
542
- const g = r(n.name, n.from, t);
543
- return b(g) ? h[g] ?? g : g;
542
+ const y = r(n.name, n.from, t);
543
+ return b(y) ? h[y] ?? y : y;
544
544
  })(), v = ot(s, n.props ?? {}, f), u = it(t, n.events ?? {}, f);
545
545
  if (n.name === "slot")
546
546
  return at(t, n, v, f, r);
547
547
  d && Object.assign(v, f.__parseExpression(d.value)), l && (v.style = Object.assign(
548
548
  v.style ?? {},
549
549
  lt(l, f)
550
- )), c.forEach((g) => {
551
- Object.assign(v, ut(t, g, f));
550
+ )), c.forEach((y) => {
551
+ Object.assign(v, ut(t, y, f));
552
552
  });
553
553
  const S = pt(
554
554
  t,
@@ -698,12 +698,12 @@ const Z = te({
698
698
  };
699
699
  },
700
700
  render() {
701
- return this.component ? B(this.component, this.query) : B("div", "页面不存在");
701
+ return this.component ? A(this.component, this.query) : A("div", "页面不存在");
702
702
  }
703
703
  }), ht = te({
704
704
  name: "VtjStartupContainer",
705
705
  render() {
706
- return B(He);
706
+ return A(He);
707
707
  }
708
708
  }), le = Symbol("Provider");
709
709
  class vt extends fe {
@@ -752,9 +752,9 @@ class vt extends fe {
752
752
  } = Me(r, l), m = window;
753
753
  m.CKEDITOR_VERSION = void 0;
754
754
  for (const u of c) {
755
- const S = o[u], g = m[u];
756
- if (g)
757
- a[u] = g;
755
+ const S = o[u], y = m[u];
756
+ if (y)
757
+ a[u] = y;
758
758
  else if (S)
759
759
  m[u] = a[u] = await S();
760
760
  else {
@@ -768,9 +768,9 @@ class vt extends fe {
768
768
  await Y(F.append(u, { v: C }));
769
769
  const v = this.materials || {};
770
770
  for (const u of f) {
771
- const S = m[h[u]], g = de[u];
772
- if (g)
773
- S && g.forEach(($) => {
771
+ const S = m[h[u]], y = de[u];
772
+ if (y)
773
+ S && y.forEach(($) => {
774
774
  i[$] = S[$];
775
775
  });
776
776
  else {
@@ -797,7 +797,7 @@ class vt extends fe {
797
797
  install(e) {
798
798
  const t = e.config.globalProperties.installed || {};
799
799
  for (const [r, s] of Object.entries(this.library))
800
- !t[r] && Be(s) && (e.use(s), t[r] = !0);
800
+ !t[r] && Ae(s) && (e.use(s), t[r] = !0);
801
801
  e.provide(le, this), e.config.globalProperties.installed = t;
802
802
  }
803
803
  getFile(e) {
@@ -916,7 +916,7 @@ const K = new Ee({
916
916
  });
917
917
  }
918
918
  }
919
- }), yt = (n = "/vtj/local/repository/${type}.json") => (e, t) => K.send({
919
+ }), gt = (n = "/vtj/local/repository/${type}.json") => (e, t) => K.send({
920
920
  url: n,
921
921
  method: "post",
922
922
  query: { type: e },
@@ -924,7 +924,7 @@ const K = new Ee({
924
924
  type: e,
925
925
  data: t
926
926
  }
927
- }), gt = (n = "/vtj/local/repository/uploader.json") => async (e, t) => await K.send({
927
+ }), yt = (n = "/vtj/local/repository/uploader.json") => async (e, t) => await K.send({
928
928
  url: n,
929
929
  method: "post",
930
930
  data: {
@@ -940,7 +940,10 @@ class W {
940
940
  pluginCaches = {};
941
941
  uploader;
942
942
  constructor() {
943
- this.api = yt(), this.uploader = gt();
943
+ this.api = gt(), this.uploader = yt();
944
+ }
945
+ async getExtension() {
946
+ console.log("BaseService.getExtension");
944
947
  }
945
948
  async init(e) {
946
949
  return console.log("BaseService.init", e), {};
@@ -1024,58 +1027,58 @@ class W {
1024
1027
  }).then((o) => o.data).catch(() => null));
1025
1028
  }
1026
1029
  }
1027
- const y = new Pe({
1030
+ const g = new Pe({
1028
1031
  type: "local",
1029
1032
  expired: 0,
1030
1033
  prefix: "__VTJ_"
1031
1034
  });
1032
1035
  class Ot extends W {
1033
1036
  init(e) {
1034
- const t = new x(e), r = y.get(`project_${t.id}`), s = Object.assign(t.toDsl(), r || {});
1035
- return y.save(`project_${t.id}`, s), Promise.resolve(s);
1037
+ const t = new x(e), r = g.get(`project_${t.id}`), s = Object.assign(t.toDsl(), r || {});
1038
+ return g.save(`project_${t.id}`, s), Promise.resolve(s);
1036
1039
  }
1037
1040
  saveProject(e) {
1038
1041
  const t = new x(e);
1039
- return y.save(`project_${t.id}`, t.toDsl()), Promise.resolve(!0);
1042
+ return g.save(`project_${t.id}`, t.toDsl()), Promise.resolve(!0);
1040
1043
  }
1041
1044
  saveMaterials(e, t) {
1042
- return y.save(`materials_${e.id}`, q(t)), Promise.resolve(!0);
1045
+ return g.save(`materials_${e.id}`, q(t)), Promise.resolve(!0);
1043
1046
  }
1044
1047
  saveFile(e) {
1045
- return y.save(`file_${e.id}`, e), Promise.resolve(!0);
1048
+ return g.save(`file_${e.id}`, e), Promise.resolve(!0);
1046
1049
  }
1047
1050
  getFile(e) {
1048
- const t = y.get(`file_${e}`);
1051
+ const t = g.get(`file_${e}`);
1049
1052
  return t ? Promise.resolve(t) : Promise.reject(null);
1050
1053
  }
1051
1054
  removeFile(e) {
1052
- return y.remove(`file_${e}`), Promise.resolve(!0);
1055
+ return g.remove(`file_${e}`), Promise.resolve(!0);
1053
1056
  }
1054
1057
  saveHistory(e) {
1055
- return y.save(`history_${e.id}`, e), Promise.resolve(!0);
1058
+ return g.save(`history_${e.id}`, e), Promise.resolve(!0);
1056
1059
  }
1057
1060
  removeHistory(e) {
1058
- const t = y.get(`history_${e}`);
1061
+ const t = g.get(`history_${e}`);
1059
1062
  if (t) {
1060
1063
  const s = (t.items || []).map((o) => o.id);
1061
- this.removeHistoryItem(e, s), y.remove(`history_${e}`);
1064
+ this.removeHistoryItem(e, s), g.remove(`history_${e}`);
1062
1065
  }
1063
1066
  return Promise.resolve(!0);
1064
1067
  }
1065
1068
  getHistory(e) {
1066
- const t = y.get(`history_${e}`), r = new ee(t || { id: e });
1069
+ const t = g.get(`history_${e}`), r = new ee(t || { id: e });
1067
1070
  return Promise.resolve(r.toDsl());
1068
1071
  }
1069
1072
  getHistoryItem(e, t) {
1070
- const r = y.get(`history_${e}_${t}`);
1073
+ const r = g.get(`history_${e}_${t}`);
1071
1074
  return Promise.resolve(r);
1072
1075
  }
1073
1076
  saveHistoryItem(e, t) {
1074
- return y.save(`history_${e}_${t.id}`, t), Promise.resolve(!0);
1077
+ return g.save(`history_${e}_${t.id}`, t), Promise.resolve(!0);
1075
1078
  }
1076
1079
  removeHistoryItem(e, t) {
1077
1080
  return t.forEach((r) => {
1078
- y.remove(`history_${e}_${r}`);
1081
+ g.remove(`history_${e}_${r}`);
1079
1082
  }), Promise.resolve(!0);
1080
1083
  }
1081
1084
  }
@@ -1142,6 +1145,10 @@ function Dt() {
1142
1145
  }
1143
1146
  class Mt extends W {
1144
1147
  getFileCaches = {};
1148
+ async getExtension() {
1149
+ return await this.api("getExtension", {}).catch(() => {
1150
+ });
1151
+ }
1145
1152
  async init(e) {
1146
1153
  return await this.api("init", e).catch(() => null) || {};
1147
1154
  }
@@ -1261,10 +1268,10 @@ export {
1261
1268
  T as isJSFunction,
1262
1269
  De as isJSON,
1263
1270
  L as isJSUrl,
1264
- Be as isVuePlugin,
1271
+ Ae as isVuePlugin,
1265
1272
  Te as loadCss,
1266
1273
  oe as loadCssUrl,
1267
- Ae as loadScriptUrl,
1274
+ Be as loadScriptUrl,
1268
1275
  Le as mockApi,
1269
1276
  Ve as mockApis,
1270
1277
  ie as mockCleanup,
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@vtj/renderer",
3
3
  "private": false,
4
- "version": "0.8.8",
4
+ "version": "0.8.9",
5
5
  "type": "module",
6
6
  "dependencies": {
7
7
  "mockjs": "~1.1.0",
8
- "@vtj/core": "~0.8.8",
9
- "@vtj/icons": "~0.8.8",
10
- "@vtj/utils": "~0.8.8",
11
- "@vtj/ui": "~0.8.8"
8
+ "@vtj/ui": "~0.8.9",
9
+ "@vtj/icons": "~0.8.9",
10
+ "@vtj/core": "~0.8.9",
11
+ "@vtj/utils": "~0.8.9"
12
12
  },
13
13
  "devDependencies": {
14
14
  "vue": "~3.4.15",
@@ -5,6 +5,10 @@ export declare class BaseService implements Service {
5
5
  private pluginCaches;
6
6
  protected uploader: (file: File, projectId: string) => Promise<StaticFileInfo>;
7
7
  constructor();
8
+ getExtension(): Promise<{
9
+ urls: string[];
10
+ library: string;
11
+ } | undefined>;
8
12
  init(project: ProjectSchema): Promise<ProjectSchema>;
9
13
  saveProject(project: ProjectSchema): Promise<boolean>;
10
14
  saveMaterials(project: ProjectSchema, materials: Map<string, MaterialDescription>): Promise<boolean>;
@@ -3,6 +3,10 @@ import { ProjectSchema, BlockSchema, HistorySchema, HistoryItem, MaterialDescrip
3
3
 
4
4
  export declare class LocalService extends BaseService {
5
5
  private getFileCaches;
6
+ getExtension(): Promise<{
7
+ urls: string[];
8
+ library: string;
9
+ } | undefined>;
6
10
  init(project: ProjectSchema): Promise<ProjectSchema>;
7
11
  saveProject(project: ProjectSchema): Promise<boolean>;
8
12
  saveMaterials(project: ProjectSchema, materials: Map<string, MaterialDescription>): Promise<boolean>;
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2024, VTJ.PRO All rights reserved.
3
3
  * @name @vtj/renderer
4
4
  * @author CHC chenhuachun1549@dingtalk.com
5
- * @version 0.8.7
5
+ * @version 0.8.8
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
7
  */
8
- export declare const version = "0.8.7";
8
+ export declare const version = "0.8.8";