@vtj/renderer 0.9.0-alpha.21 → 0.9.0-alpha.23

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
@@ -2,12 +2,12 @@
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.9.0-alpha.21
5
+ * @version 0.9.0-alpha.23
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
- */const C="0.9.0-alpha.21";var y=(s=>(s.Runtime="Runtime",s.Design="Design",s.Raw="Raw",s.VNode="VNode",s))(y||{});const J=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ne=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],re=["vIf","vShow","vModel","vFor","vBind"],oe={String,Number,Boolean,Array,Object,Function,Date},R="VtjPage",A="VtjHomepage";function k(s,e){return s.map(t=>u.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function N(s){return/\.css$/.test(s)}function U(s){return/\.js$/.test(s)}function ie(s){return/\.json$/.test(s)}function Ue(s){return s.map(e=>`<script src="${u.url.append(e,{v:C})}"><\/script>`).join("")}function Be(s=[]){return s.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:C})}" />`).join("")}function ae(s,e=!1){return e&&s.endsWith(".prod.js")?s.replace(".prod.js",".js"):s}function ce(s,e,t=!1){const n=s.filter(p=>!!p.enabled),r=[],o=[],a=[],i=[],l={},c={},m=[],d={};return n.forEach(({urls:p,assetsUrl:v,library:h,assetsLibrary:g,localeLibrary:j})=>{p?.forEach(_=>{U(_)&&r.push(ae(_,t)),N(_)&&o.push(_)}),h&&(i.push(h),l[h]=k(p||[],e),j&&(c[h]=j)),v&&a.push(v),g&&m.push(g),h&&g&&(d[g]=h)}),{scripts:k(r,e),css:k(o,e),materials:k(a,e),libraryExports:i,materialExports:u.dedupArray(m),materialMapLibrary:d,libraryMap:l,libraryLocaleMap:c}}function le(s,e){const{name:t,parent:n,alias:r}=s;return n?e[n]?.[r||t]:e[r||t]}function V(s){return u.isString(s)?s:JSON.stringify(s)}function z(s,e,t){const n=s.CSSStyleSheet;if(n.prototype.replaceSync){const r=new n;r.id=e,r.replaceSync(t);const o=s.document,a=o.adoptedStyleSheets,i=Array.from(a).filter(l=>l.id!==e);o.adoptedStyleSheets=[...i,r]}else{const r=s.document;let o=r.getElementById(e);o?o.innerHTML=t:(o=r.createElement("style"),o.id=e,o.innerHTML=t,r.head.appendChild(o))}}async function ue(s,e){const t=await window.fetch(e).then(n=>n.text()).catch(()=>"");t&&z(window,s,t)}function de(s,e=window){const t=e.document,n=e.document.head;for(const r of s)if(!t.getElementById(r)){const a=t.createElement("link");a.rel="stylesheet",a.id=r,a.href=r,n.appendChild(a)}}async function pe(s,e,t=window){const n=t.document,r=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const l of s){const c=n.createElement("script");c.src=l,c.onload=()=>{o=t[e],o?a(o.default||o):i(null)},c.onerror=m=>{i(m)},r.appendChild(c)}})}function fe(s){return u.isFunction(s)||u.isFunction(s?.install)}function x(s,e,t=!1,n=!1){try{const r=['"use strict";',"var __self = arguments[0];"];r.push("return ");let o=(s.value||"").trim();o=o.replace(/this(\W|$)/g,(i,l)=>`__self${l}`),o=r.join(`
8
- `)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(r){if(u.logger.error("parseExpression.error",r,s,e?.__self??e),n)throw r}}function q(s,e,t=!1,n=!1){const r=x(s,e,t,n);if(typeof r!="function"&&(u.logger.error("parseFunction.error","not a function",s,e?.__self??e),n))throw new Error(`"${s.value}" not a function`);return r}function E(s){return s&&s.type==="JSExpression"}function O(s){return typeof s=="object"&&s&&s.type==="JSFunction"}function he(s){return E(s)||O(s)}function Le(s){return he(s)?s.value:JSON.stringify(s)}let $=null;const Je=u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:s=>s.data?.code===0||!!s.data?.success,failMessage:!0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})},showLoading:()=>{$&&$.close(),$=F.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{$&&($.close(),$=null)}}});let P;function me(s,e){const{jsonp:t,request:n}=e;if(s.method==="jsonp")return(r={})=>t(s.url,{...s.jsonpOptions,query:r});{const r=s.headers?x(s.headers,{},!0):void 0,o={url:s.url,method:s.method,settings:{...s.settings,headers:r}};return(a,i)=>(delete o.data,n.send(u.merge(o,i||{},{data:a})))}}function ge(s,e){const{metaQuery:t}=e;if(!t)return;const{code:n,queryCode:r}=s;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(n,r,o,a)}}function ve(s=[],e=[],t){const n={};for(const r of s)n[r.id]=me(r,t);for(const r of e)n[r.id]=ge(r,t);return n}async function ye(s=[]){P=await import("mockjs").then(e=>e.default||e),P&&(P.setup({timeout:"50-500"}),K(),s.forEach(e=>_e(P,e)))}function _e(s,e){if(!e.mock)return;const{url:t,mockTemplate:n}=e;if(t&&n){const r=u.pathToRegexp(`${t}(.*)`),o=u.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=x(n,{},!0);s.mock(r,i=>{const l=u.url.parse(i.url)||{},c=i.body instanceof FormData?u.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:c,params:l,query:m}),s.mock(a(i))})}}function K(){P&&(P._mocked={})}const qe={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:""},W=Symbol("access");class Ve{options;data=null;mode=y.Raw;constructor(e){this.options=Object.assign({},qe,e),this.loadData()}connect(e){const{mode:t,router:n,request:r}=e;this.mode=t,n&&t===y.Raw&&this.setGuard(n),r&&this.setRequest(r)}login(e){const{storageKey:t,storagePrefix:n,session:r,authKey:o}=this.options;this.setData(e),this.data&&(u.storage.save(t,e,{type:"local",prefix:n}),r&&u.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:n,authKey:r}=this.options;this.data=null,u.storage.remove(e,{type:"local",prefix:t}),n&&u.cookie.remove(r)}logout(){this.clear(),this.toLogin()}getData(){return this.data}getToken(){return this.data?.token}can(e){const{appName:t}=this.options,{permissions:n={}}=this.data||{};return typeof e=="function"?e(n):u.toArray(e).every(o=>n[o]||n[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:n={}}=this.data||{};return u.toArray(e).some(o=>n[o]||n[t+"."+o])}install(e){e.config.globalProperties.$access||(e.config.globalProperties.$access=this),e.provide(W,this)}isAuthPath(e){const{auth:t,isAuth:n}=this.options;if(n)return n(e);if(e.path&&typeof t=="string"){const r=t.split("#")[1]||t;return e.path===r}return!1}toLogin(){const{auth:e,redirectParam:t}=this.options;if(!e||this.mode!==y.Raw)return;const n=t?`?${t}=${encodeURIComponent(location.href)}`:"";typeof e=="function"?e(n):location.href=t?`${e}${n}`:e}setData(e){const{privateKey:t}=this.options;if(Array.isArray(e)&&t){const n=e.map(r=>u.unRSA(r,t));this.data=JSON.parse(n.join(""));return}if(typeof e=="string")try{const n=t?u.unRSA(e,t):e;n?this.data=JSON.parse(n):console.warn("RSA解密失败或登录信息缺失")}catch(n){console.warn(n)}else this.data=e}loadData(){const{storageKey:e,storagePrefix:t}=this.options,n=u.storage.get(e,{type:"local",prefix:t});this.setData(n)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!u.cookie.get(t):!!this.data}hasRoutePermission(e){if(e.name===R){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,n,r)=>this.guard(t,r))}guard(e,t){if(this.isWhiteList(e)||this.isAuthPath(e))return t();if(this.isLogined()){if(this.hasRoutePermission(e))return t();{const{noPermissionMessage:n="无权限访问",unauthorized:r=!1}=this.options;return this.showTip(n),u.isFunction(r)?(r(),t(!1)):u.isString(r)?t(r):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(n=>e.fullPath.startsWith(n)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401}=this.options;return e.status===t||e.data.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await u.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(await this.showUnauthorizedAlert(t),t),async t=>{const n=t.response||t||{};return await this.showUnauthorizedAlert(n),Promise.reject(t)})}}function we(){return f.inject(W,null)}class Se{__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:n,attrs:r}=e;this.__mode=t,n&&(this.__id=n.id||null,this.__transform=n.transform||{}),r&&Object.assign(this,r)}setup(e,t=H){const n=t.getCurrentInstance();if(!n)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=n.proxy;const r=n.appContext.config.globalProperties;Object.assign(this,r),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__refs={},this.$refs={},this.__contextRefs={},this.context={}})}__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===y.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return q({type:n,value:r},this)}else return q(e,this)}__parseExpression(e){if(e)if(this.__mode===y.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return x({type:n,value:r},this)}else return x(e,this)}__ref(e=null,t){if(this.__mode!==y.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async n=>{await u.delay(0);let r=n?.$vtjEl||n?.$el||n?._?.vnode?.el||n;if(!r){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,y.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=n),typeof t=="function")t(n);else if(t){const o=this.$refs[t];if(o&&n!==o){const a=new Set([].concat(o,n));this.$refs[t]=Array.from(a)}else this.$refs[t]=n}return n}}__clone(e={}){const t={...this.context,...e},n={...t,context:t};return n.context.__proto__=this.context,n.__proto__=this,n}}function I(s){const{Vue:e=H,mode:t=y.Runtime,components:n={},libs:r={},apis:o={},loader:a}=s,i=e.computed(()=>s.dsl),l={$components:n,$libs:r,$apis:o},c=new Se({mode:t,dsl:i.value,attrs:l}),m=e.defineComponent({name:i.value.name,props:{...Ke(i.value.props??[],c)},setup(d){c.$props=d,c.props=d,i.value.id&&z(s.window||window,i.value.id,i.value.css||""),c.state=We(e,i.value.state??{},c);const p=Ge(e,i.value.computed??{},c),v=Ye(i.value.methods??{},c),h=Qe(e,i.value.inject,c),g=je(i.value.dataSources||{},c),j={...h,...p,...v,...g};return c.setup(j,e),Xe(e,i.value.watch??[],c),{vtj:c}},emits:ze(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?M(d[0],c,e,a):d.map(p=>M(p,c,e,a))},...Ze(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(m),context:c}}function ze(s=[]){return s.map(e=>u.isString(e)?e:e.name)}function Ke(s=[],e){const t=n=>n?(Array.isArray(n)?n:[n]).map(o=>oe[o]):void 0;return s.map(n=>u.isString(n)?{name:n}:{name:n.name,type:n.type,required:n.required,default:E(n.default)?e.__parseExpression(n.default):n.default}).reduce((n,r)=>(n[r.name]={type:t(r.type),required:r.required,default:r.default},n),{})}function We(s,e,t){return s.reactive(Object.keys(e||{}).reduce((n,r)=>{let o=e[r];return E(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),n[r]=o,n},{}))}function Ge(s,e,t){return Object.entries(e??{}).reduce((n,[r,o])=>(n[r]=s.computed(t.__parseFunction(o)),n),{})}function Ye(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}function Qe(s,e=[],t){return e.reduce((n,r)=>{const{name:o,from:a}=r||{};r.default;const i=E(a)?t.__parseExpression(a)||o:a??o,l=E(r.default)?t.__parseExpression(r.default):r.default??null;return n[o]=s.inject(i,l),n},{})}function je(s,e){return Object.keys(s).reduce((t,n)=>{const r=s[n],o=e.$apis[r.ref],a=O(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;return t[n]=async(...i)=>{const l=await o.apply(e,i);return a?a(l):l},t},{})}function Xe(s,e=[],t){e.forEach(n=>{s.watch(t.__parseExpression(n.source),t.__parseFunction(n.handler),{deep:n.deep,immediate:n.immediate})})}function Ze(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}let L=[];const Ee=s=>s;async function G(s,e=window){const{urls:t=[],library:n}=s,r=t.filter(i=>U(i));if(r.length===0||!n)return null;const o=t.filter(i=>N(i));return o.length&&de(o,e),await pe(r,n,e).catch(i=>(console.warn("loadScriptUrl error",r,n,i),null))}function D(s){const{getDsl:e,getDslByUrl:t,options:n}=s;return n.window&&(L.forEach(r=>{delete n.window[r]}),L=[]),(r,o,a=H)=>!o||typeof o=="string"?r:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:y.Runtime,loader:D(s)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:y.Runtime,loader:D(s)}).renderer:null}):o.type==="Plugin"?(o.library&&L.push(o.library),a.defineAsyncComponent(async()=>{const i=await G(o,n.window);return i||(console.warn("getPlugin result is null",o),null)})):r}function M(s,e,t=H,n=Ee){if(!s||!s.name||s.invisible)return null;const{id:r=null,directives:o=[]}=s,{vIf:a,vFor:i,vShow:l,vModels:c,vBind:m}=et(o);if(a&&!tt(a,e))return null;const d=p=>{const v=p.$components,h=(()=>{if(s.name==="component")return nt(p,s.props?.is);if(s.name==="slot")return s.name;const w=n(s.name,s.from,t);return u.isString(w)?v[w]??w:w})(),g=st(r,s.props??{},p),j=rt(t,s.events??{},p);if(s.name==="slot")return ot(t,s,g,p,n);m&&Object.assign(g,p.__parseExpression(m.value)),l&&(g.style=Object.assign(g.style??{},at(l,p))),c.forEach(w=>{Object.assign(g,ct(t,w,p))});const _=lt(t,s.children??[],p,n,s);return t.createVNode(h,{...g,...j},_)};return i?pt(i,d,e):d(e)}function et(s=[]){const e=s.find(i=>u.camelCase(i.name)==="vIf"),t=s.find(i=>u.camelCase(i.name)==="vFor"),n=s.find(i=>u.camelCase(i.name)==="vShow"),r=s.find(i=>u.camelCase(i.name)==="vBind"),o=s.filter(i=>u.camelCase(i.name)==="vModel"),a=s.filter(i=>!re.includes(u.camelCase(i.name)));return{vIf:e,vFor:t,vShow:n,vModels:o,vBind:r,others:a}}function tt(s,e){return!!e.__parseExpression(s.value)}function nt(s,e){return e?E(e)?s.__parseExpression(e):e:"div"}function st(s,e,t){const n=Object.keys(e||{}).reduce((r,o)=>{let a=e[o];return E(a)?a=t.__parseExpression(a):O(a)&&(a=t.__parseFunction(a)),r[o]=a,r},{});return n.ref=t.__ref(s,n.ref),n}function rt(s,e,t){const n=["passive","capture","once"],r={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],l=Y(i.modifiers),c=l.find(p=>n.includes(p)),m="on"+u.upperFirst(a)+(c&&r[c]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=s.withModifiers(d,l)),o},{})}function Y(s={},e=!1){const t=Object.keys(s);return e?t.map(n=>"."+n):t}function ot(s,e,t,n,r){const{children:o}=e,a=it(e,n),i=n.$slots?.[a.name];return i?i(t):o?u.isString(o)?s.createTextVNode(o):E(o)?s.createTextVNode(V(n.__parseExpression(o))):Array.isArray(o)?o.map(l=>M(l,n,s,r)):null:null}function it(s,e){const{props:t}=s,n=t?.name||"default";return{name:E(n)?e.__parseExpression(n):n,params:[]}}function at(s,e){return e.__parseExpression(s.value)?{}:{display:"none"}}function ct(s,e,t){const n={type:"JSFunction",value:e.value?.value?`(v) => {
7
+ */const C="0.9.0-alpha.23";var S=(s=>(s.Runtime="Runtime",s.Design="Design",s.Raw="Raw",s.VNode="VNode",s))(S||{});const J=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ne=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],re=["vIf","vShow","vModel","vFor","vBind"],oe={String,Number,Boolean,Array,Object,Function,Date},R="VtjPage",A="VtjHomepage";function x(s,e){return s.map(t=>u.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function N(s){return/\.css$/.test(s)}function U(s){return/\.js$/.test(s)}function ie(s){return/\.json$/.test(s)}function Ue(s){return s.map(e=>`<script src="${u.url.append(e,{v:C})}"><\/script>`).join("")}function Be(s=[]){return s.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:C})}" />`).join("")}function ae(s,e=!1){return e&&s.endsWith(".prod.js")?s.replace(".prod.js",".js"):s}function ce(s,e,t=!1){const n=s.filter(p=>!!p.enabled),r=[],o=[],a=[],i=[],l={},c={},m=[],d={};return n.forEach(({urls:p,assetsUrl:v,library:h,assetsLibrary:g,localeLibrary:j})=>{p?.forEach(y=>{U(y)&&r.push(ae(y,t)),N(y)&&o.push(y)}),h&&(i.push(h),l[h]=x(p||[],e),j&&(c[h]=j)),v&&a.push(v),g&&m.push(g),h&&g&&(d[g]=h)}),{scripts:x(r,e),css:x(o,e),materials:x(a,e),libraryExports:i,materialExports:u.dedupArray(m),materialMapLibrary:d,libraryMap:l,libraryLocaleMap:c}}function le(s,e){const{name:t,parent:n,alias:r}=s;return n?e[n]?.[r||t]:e[r||t]}function V(s){return u.isString(s)?s:JSON.stringify(s)}function z(s,e,t){const n=s.CSSStyleSheet;if(n.prototype.replaceSync){const r=new n;r.id=e,r.replaceSync(t);const o=s.document,a=o.adoptedStyleSheets,i=Array.from(a).filter(l=>l.id!==e);o.adoptedStyleSheets=[...i,r]}else{const r=s.document;let o=r.getElementById(e);o?o.innerHTML=t:(o=r.createElement("style"),o.id=e,o.innerHTML=t,r.head.appendChild(o))}}async function ue(s,e){const t=await window.fetch(e).then(n=>n.text()).catch(()=>"");t&&z(window,s,t)}function de(s,e=window){const t=e.document,n=e.document.head;for(const r of s)if(!t.getElementById(r)){const a=t.createElement("link");a.rel="stylesheet",a.id=r,a.href=r,n.appendChild(a)}}async function pe(s,e,t=window){const n=t.document,r=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const l of s){const c=n.createElement("script");c.src=l,c.onload=()=>{o=t[e],o?a(o.default||o):i(null)},c.onerror=m=>{i(m)},r.appendChild(c)}})}function fe(s){return u.isFunction(s)||u.isFunction(s?.install)}function k(s,e,t=!1,n=!1){try{const r=['"use strict";',"var __self = arguments[0];"];r.push("return ");let o=(s.value||"").trim();o=o.replace(/this(\W|$)/g,(i,l)=>`__self${l}`),o=r.join(`
8
+ `)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(r){if(u.logger.error("parseExpression.error",r,s,e?.__self??e),n)throw r}}function q(s,e,t=!1,n=!1){const r=k(s,e,t,n);if(typeof r!="function"&&(u.logger.error("parseFunction.error","not a function",s,e?.__self??e),n))throw new Error(`"${s.value}" not a function`);return r}function E(s){return s&&s.type==="JSExpression"}function O(s){return typeof s=="object"&&s&&s.type==="JSFunction"}function he(s){return E(s)||O(s)}function Le(s){return he(s)?s.value:JSON.stringify(s)}let $=null;const Je=u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:s=>s.data?.code===0||!!s.data?.success,failMessage:!0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})},showLoading:()=>{$&&$.close(),$=F.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{$&&($.close(),$=null)}}});let P;function me(s,e){const{jsonp:t,request:n}=e;if(s.method==="jsonp")return(r={})=>t(s.url,{...s.jsonpOptions,query:r});{const r=s.headers?k(s.headers,{},!0):void 0,o={url:s.url,method:s.method,settings:{...s.settings,headers:r}};return(a,i)=>(delete o.data,n.send(u.merge(o,i||{},{data:a})))}}function ge(s,e){const{metaQuery:t}=e;if(!t)return;const{code:n,queryCode:r}=s;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(n,r,o,a)}}function ve(s=[],e=[],t){const n={};for(const r of s)n[r.id]=me(r,t);for(const r of e)n[r.id]=ge(r,t);return n}async function ye(s=[]){P=await import("mockjs").then(e=>e.default||e),P&&(P.setup({timeout:"50-500"}),K(),s.forEach(e=>_e(P,e)))}function _e(s,e){if(!e.mock)return;const{url:t,mockTemplate:n}=e;if(t&&n){const r=u.pathToRegexp(`${t}(.*)`),o=u.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=k(n,{},!0);s.mock(r,i=>{const l=u.url.parse(i.url)||{},c=i.body instanceof FormData?u.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:c,params:l,query:m}),s.mock(a(i))})}}function K(){P&&(P._mocked={})}const qe={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:""},W=Symbol("access");class Ve{options;data=null;mode=S.Raw;constructor(e){this.options=Object.assign({},qe,e),this.loadData()}connect(e){const{mode:t,router:n,request:r}=e;this.mode=t,n&&this.mode===S.Raw&&this.setGuard(n),r&&this.setRequest(r)}login(e){const{storageKey:t,storagePrefix:n,session:r,authKey:o}=this.options;this.setData(e),this.data&&(u.storage.save(t,e,{type:"local",prefix:n}),r&&u.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:n,authKey:r}=this.options;this.data=null,u.storage.remove(e,{type:"local",prefix:t}),n&&u.cookie.remove(r)}logout(){this.clear(),this.toLogin()}getData(){return this.data}getToken(){return this.data?.token}can(e){const{appName:t}=this.options,{permissions:n={}}=this.data||{};return typeof e=="function"?e(n):u.toArray(e).every(o=>n[o]||n[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:n={}}=this.data||{};return u.toArray(e).some(o=>n[o]||n[t+"."+o])}install(e){e.config.globalProperties.$access||(e.config.globalProperties.$access=this),e.provide(W,this)}isAuthPath(e){const{auth:t,isAuth:n}=this.options;if(n)return n(e);if(e.path&&typeof t=="string"){const r=t.split("#")[1]||t;return e.path===r}return!1}toLogin(){const{auth:e,redirectParam:t}=this.options;if(!e)return;const n=t?`?${t}=${encodeURIComponent(location.href)}`:"";typeof e=="function"?e(n):location.href=t?`${e}${n}`:e}setData(e){const{privateKey:t}=this.options;if(Array.isArray(e)&&t){const n=e.map(r=>u.unRSA(r,t));this.data=JSON.parse(n.join(""));return}if(typeof e=="string")try{const n=t?u.unRSA(e,t):e;n?this.data=JSON.parse(n):console.warn("RSA解密失败或登录信息缺失")}catch(n){console.warn(n)}else this.data=e}loadData(){const{storageKey:e,storagePrefix:t}=this.options,n=u.storage.get(e,{type:"local",prefix:t});this.setData(n)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!u.cookie.get(t):!!this.data}hasRoutePermission(e){if(e.name===R){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,n,r)=>this.guard(t,r))}guard(e,t){if(this.isWhiteList(e)||this.isAuthPath(e))return t();if(this.isLogined()){if(this.hasRoutePermission(e))return t();{const{noPermissionMessage:n="无权限访问",unauthorized:r=!1}=this.options;return this.showTip(n),u.isFunction(r)?(r(),t(!1)):u.isString(r)?t(r):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(n=>e.fullPath.startsWith(n)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401}=this.options;return e.status===t||e.data.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await u.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(await this.showUnauthorizedAlert(t),t),async t=>{const n=t.response||t||{};return await this.showUnauthorizedAlert(n),Promise.reject(t)})}}function we(){return f.inject(W,null)}class Se{__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:n,attrs:r}=e;this.__mode=t,n&&(this.__id=n.id||null,this.__transform=n.transform||{}),r&&Object.assign(this,r)}setup(e,t=H){const n=t.getCurrentInstance();if(!n)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=n.proxy;const r=n.appContext.config.globalProperties;Object.assign(this,r),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__refs={},this.$refs={},this.__contextRefs={},this.context={}})}__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:n}=e,r=t?this.__transform[t]??e.value:e.value;return q({type:n,value:r},this)}else return q(e,this)}__parseExpression(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return k({type:n,value:r},this)}else return k(e,this)}__ref(e=null,t){if(this.__mode!==S.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async n=>{await u.delay(0);let r=n?.$vtjEl||n?.$el||n?._?.vnode?.el||n;if(!r){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,S.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=n),typeof t=="function")t(n);else if(t){const o=this.$refs[t];if(o&&n!==o){const a=new Set([].concat(o,n));this.$refs[t]=Array.from(a)}else this.$refs[t]=n}return n}}__clone(e={}){const t={...this.context,...e},n={...t,context:t};return n.context.__proto__=this.context,n.__proto__=this,n}}function I(s){const{Vue:e=H,mode:t=S.Runtime,components:n={},libs:r={},apis:o={},loader:a}=s,i=e.computed(()=>s.dsl),l={$components:n,$libs:r,$apis:o},c=new Se({mode:t,dsl:i.value,attrs:l}),m=e.defineComponent({name:i.value.name,props:{...Ke(i.value.props??[],c)},setup(d){c.$props=d,c.props=d,i.value.id&&z(s.window||window,i.value.id,i.value.css||""),c.state=We(e,i.value.state??{},c);const p=Ge(e,i.value.computed??{},c),v=Ye(i.value.methods??{},c),h=Qe(e,i.value.inject,c),g=je(i.value.dataSources||{},c),j={...h,...p,...v,...g};return c.setup(j,e),Xe(e,i.value.watch??[],c),{vtj:c}},emits:ze(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?M(d[0],c,e,a):d.map(p=>M(p,c,e,a))},...Ze(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(m),context:c}}function ze(s=[]){return s.map(e=>u.isString(e)?e:e.name)}function Ke(s=[],e){const t=n=>n?(Array.isArray(n)?n:[n]).map(o=>oe[o]):void 0;return s.map(n=>u.isString(n)?{name:n}:{name:n.name,type:n.type,required:n.required,default:E(n.default)?e.__parseExpression(n.default):n.default}).reduce((n,r)=>(n[r.name]={type:t(r.type),required:r.required,default:r.default},n),{})}function We(s,e,t){return s.reactive(Object.keys(e||{}).reduce((n,r)=>{let o=e[r];return E(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),n[r]=o,n},{}))}function Ge(s,e,t){return Object.entries(e??{}).reduce((n,[r,o])=>(n[r]=s.computed(t.__parseFunction(o)),n),{})}function Ye(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}function Qe(s,e=[],t){return e.reduce((n,r)=>{const{name:o,from:a}=r||{};r.default;const i=E(a)?t.__parseExpression(a)||o:a??o,l=E(r.default)?t.__parseExpression(r.default):r.default??null;return n[o]=s.inject(i,l),n},{})}function je(s,e){return Object.keys(s).reduce((t,n)=>{const r=s[n],o=e.$apis[r.ref],a=O(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;return t[n]=async(...i)=>{const l=await o.apply(e,i);return a?a(l):l},t},{})}function Xe(s,e=[],t){e.forEach(n=>{s.watch(t.__parseExpression(n.source),t.__parseFunction(n.handler),{deep:n.deep,immediate:n.immediate})})}function Ze(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}let L=[];const Ee=s=>s;async function G(s,e=window){const{urls:t=[],library:n}=s,r=t.filter(i=>U(i));if(r.length===0||!n)return null;const o=t.filter(i=>N(i));return o.length&&de(o,e),await pe(r,n,e).catch(i=>(console.warn("loadScriptUrl error",r,n,i),null))}function D(s){const{getDsl:e,getDslByUrl:t,options:n}=s;return n.window&&(L.forEach(r=>{delete n.window[r]}),L=[]),(r,o,a=H)=>!o||typeof o=="string"?r:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:S.Runtime,loader:D(s)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:S.Runtime,loader:D(s)}).renderer:null}):o.type==="Plugin"?(o.library&&L.push(o.library),a.defineAsyncComponent(async()=>{const i=await G(o,n.window);return i||(console.warn("getPlugin result is null",o),null)})):r}function M(s,e,t=H,n=Ee){if(!s||!s.name||s.invisible)return null;const{id:r=null,directives:o=[]}=s,{vIf:a,vFor:i,vShow:l,vModels:c,vBind:m}=et(o);if(a&&!tt(a,e))return null;const d=p=>{const v=p.$components,h=(()=>{if(s.name==="component")return nt(p,s.props?.is);if(s.name==="slot")return s.name;const _=n(s.name,s.from,t);return u.isString(_)?v[_]??_:_})(),g=st(r,s.props??{},p),j=rt(t,s.events??{},p);if(s.name==="slot")return ot(t,s,g,p,n);m&&Object.assign(g,p.__parseExpression(m.value)),l&&(g.style=Object.assign(g.style??{},at(l,p))),c.forEach(_=>{Object.assign(g,ct(t,_,p))});const y=lt(t,s.children??[],p,n,s);return t.createVNode(h,{...g,...j},y)};return i?pt(i,d,e):d(e)}function et(s=[]){const e=s.find(i=>u.camelCase(i.name)==="vIf"),t=s.find(i=>u.camelCase(i.name)==="vFor"),n=s.find(i=>u.camelCase(i.name)==="vShow"),r=s.find(i=>u.camelCase(i.name)==="vBind"),o=s.filter(i=>u.camelCase(i.name)==="vModel"),a=s.filter(i=>!re.includes(u.camelCase(i.name)));return{vIf:e,vFor:t,vShow:n,vModels:o,vBind:r,others:a}}function tt(s,e){return!!e.__parseExpression(s.value)}function nt(s,e){return e?E(e)?s.__parseExpression(e):e:"div"}function st(s,e,t){const n=Object.keys(e||{}).reduce((r,o)=>{let a=e[o];return E(a)?a=t.__parseExpression(a):O(a)&&(a=t.__parseFunction(a)),r[o]=a,r},{});return n.ref=t.__ref(s,n.ref),n}function rt(s,e,t){const n=["passive","capture","once"],r={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],l=Y(i.modifiers),c=l.find(p=>n.includes(p)),m="on"+u.upperFirst(a)+(c&&r[c]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=s.withModifiers(d,l)),o},{})}function Y(s={},e=!1){const t=Object.keys(s);return e?t.map(n=>"."+n):t}function ot(s,e,t,n,r){const{children:o}=e,a=it(e,n),i=n.$slots?.[a.name];return i?i(t):o?u.isString(o)?s.createTextVNode(o):E(o)?s.createTextVNode(V(n.__parseExpression(o))):Array.isArray(o)?o.map(l=>M(l,n,s,r)):null:null}function it(s,e){const{props:t}=s,n=t?.name||"default";return{name:E(n)?e.__parseExpression(n):n,params:[]}}function at(s,e){return e.__parseExpression(s.value)?{}:{display:"none"}}function ct(s,e,t){const n={type:"JSFunction",value:e.value?.value?`(v) => {
9
9
  ${e.value.value} = v;
10
- }`:"(v) => {}"},r=t.__parseFunction(n),o=Y(e.modifiers),a=E(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:o.length&&r?s.withModifiers(r,o):r}}function lt(s,e,t,n,r){if(!e)return null;if(u.isString(e))return{default:()=>e};if(E(e))return{default:()=>V(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=ut(e),a=i=>!i||!r?{}:r?.id&&Object.keys(i).length?{[`scope_${r.id}`]:i}:{};return Object.entries(o).reduce((i,[l,{nodes:c,params:m}])=>(i[l]=d=>{const p=m.length?u.pick(d??{},m):a(d);return c.map(v=>M(v,t.__clone(p),s,n))},i),{})}return null}function ut(s){const e={default:{params:[],nodes:[]}};for(const t of s){const n=dt(t.slot),r=n.name;e[r]?(e[r].nodes.push(t),e[r].params=e[r].params.concat(n.params)):e[r]={nodes:[t],params:n.params}}return e}function dt(s="default"){return u.isString(s)?{name:s,params:[]}:{params:[],...s}}function pt(s,e,t){const{value:n,iterator:r}=s,{item:o="item",index:a="index"}=r||{};let i=t.__parseExpression(n)||[];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]:",`${n?.value} is not a Arrary`),[])}function ft(s){return f.getCurrentScope()?(f.onScopeDispose(s),!0):!1}function Q(s){return typeof s=="function"?s():f.unref(s)}const be=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ht=s=>s!=null,mt=()=>{};function gt(s){return f.getCurrentInstance()}function vt(...s){if(s.length!==1)return f.toRef(...s);const e=s[0];return typeof e=="function"?f.readonly(f.customRef(()=>({get:e,set:mt}))):f.ref(e)}function yt(s,e){gt()&&f.onBeforeUnmount(s,e)}const _t=be?window:void 0,wt=be?window.document:void 0;function St(s){var e;const t=Q(s);return(e=t?.$el)!=null?e:t}function jt(){const s=f.ref(!1),e=f.getCurrentInstance();return e&&f.onMounted(()=>{s.value=!0},e),s}function Et(s){const e=jt();return f.computed(()=>(e.value,!!s()))}function bt(s,e,t={}){const{window:n=_t,...r}=t;let o;const a=Et(()=>n&&"MutationObserver"in n),i=()=>{o&&(o.disconnect(),o=void 0)},l=f.computed(()=>{const p=Q(s),v=(Array.isArray(p)?p:[p]).map(St).filter(ht);return new Set(v)}),c=f.watch(()=>l.value,p=>{i(),a.value&&p.size&&(o=new MutationObserver(e),p.forEach(v=>o.observe(v,r)))},{immediate:!0,flush:"post"}),m=()=>o?.takeRecords(),d=()=>{c(),i()};return ft(d),{isSupported:a,stop:d,takeRecords:m}}function $t(s=null,e={}){var t,n,r;const{document:o=wt,restoreOnUnmount:a=d=>d}=e,i=(t=o?.title)!=null?t:"",l=vt((n=s??o?.title)!=null?n:null),c=s&&typeof s=="function";function m(d){if(!("titleTemplate"in e))return d;const p=e.titleTemplate||"%s";return typeof p=="function"?p(d):Q(p).replace(/%s/g,d)}return f.watch(l,(d,p)=>{d!==p&&o&&(o.title=m(typeof d=="string"?d:""))},{immediate:!0}),e.observe&&!e.titleTemplate&&o&&!c&&bt((r=o.head)==null?void 0:r.querySelector("title"),()=>{o&&o.title!==l.value&&(l.value=m(o.title))},{childList:!0}),yt(()=>{if(a){const d=a(i,l.value||"");d!=null&&o&&(o.title=d)}}),l}const ne=f.defineComponent({name:"VtjPageContainer",async setup(){const s=Z(),e=se.useRoute(),t=e.params.id,n=t?s.getPage(t):s.getHomepage(),r=n?await s.getRenderComponent(n.id):null,o=f.ref(Symbol());return n&&(Object.assign(e.meta,n.meta||{},{cache:n.cache}),$t(n.title||"VTJ")),{provider:s,component:r,file:n,query:e.query,meta:e.meta,sid:o,route:e}},render(){const{component:s,query:e,sid:t}=this;return s?f.h(s,{...e,key:t}):f.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Pt={"data-l-h6o7ki7":"",class:"vtj-startup__wrapper"},Ct={"data-l-h6o7ki7":"",class:"vtj-startup"},Rt={"data-l-h6o7ki7":"",class:"vtj-startup__name"},xt={"data-l-h6o7ki7":""},kt={"data-l-h6o7ki7":"",class:"vtj-startup__tagline"},At={"data-l-h6o7ki7":"",class:"vtj-startup__actions"},$e=f.defineComponent({__name:"Startup",props:{name:{default:"VTJ.PRO"},tagline:{default:"基于 Vue3 + TypeScript 快速打造高生产力的低代码研发平台"},actionText:{default:"开始设计"},link:{}},setup(s){((r,o)=>{let a=document.getElementById("h6o7ki7");a||(a=document.createElement("style"),a.id="h6o7ki7",document.head.appendChild(a),a.innerHTML=o)})("h6o7ki7",`
10
+ }`:"(v) => {}"},r=t.__parseFunction(n),o=Y(e.modifiers),a=E(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:o.length&&r?s.withModifiers(r,o):r}}function lt(s,e,t,n,r){if(!e)return null;if(u.isString(e))return{default:()=>e};if(E(e))return{default:()=>V(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=ut(e),a=i=>!i||!r?{}:r?.id&&Object.keys(i).length?{[`scope_${r.id}`]:i}:{};return Object.entries(o).reduce((i,[l,{nodes:c,params:m}])=>(i[l]=d=>{const p=m.length?u.pick(d??{},m):a(d);return c.map(v=>M(v,t.__clone(p),s,n))},i),{})}return null}function ut(s){const e={default:{params:[],nodes:[]}};for(const t of s){const n=dt(t.slot),r=n.name;e[r]?(e[r].nodes.push(t),e[r].params=e[r].params.concat(n.params)):e[r]={nodes:[t],params:n.params}}return e}function dt(s="default"){return u.isString(s)?{name:s,params:[]}:{params:[],...s}}function pt(s,e,t){const{value:n,iterator:r}=s,{item:o="item",index:a="index"}=r||{};let i=t.__parseExpression(n)||[];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]:",`${n?.value} is not a Arrary`),[])}function ft(s){return f.getCurrentScope()?(f.onScopeDispose(s),!0):!1}function Q(s){return typeof s=="function"?s():f.unref(s)}const be=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ht=s=>s!=null,mt=()=>{};function gt(s){return f.getCurrentInstance()}function vt(...s){if(s.length!==1)return f.toRef(...s);const e=s[0];return typeof e=="function"?f.readonly(f.customRef(()=>({get:e,set:mt}))):f.ref(e)}function yt(s,e){gt()&&f.onBeforeUnmount(s,e)}const _t=be?window:void 0,wt=be?window.document:void 0;function St(s){var e;const t=Q(s);return(e=t?.$el)!=null?e:t}function jt(){const s=f.ref(!1),e=f.getCurrentInstance();return e&&f.onMounted(()=>{s.value=!0},e),s}function Et(s){const e=jt();return f.computed(()=>(e.value,!!s()))}function bt(s,e,t={}){const{window:n=_t,...r}=t;let o;const a=Et(()=>n&&"MutationObserver"in n),i=()=>{o&&(o.disconnect(),o=void 0)},l=f.computed(()=>{const p=Q(s),v=(Array.isArray(p)?p:[p]).map(St).filter(ht);return new Set(v)}),c=f.watch(()=>l.value,p=>{i(),a.value&&p.size&&(o=new MutationObserver(e),p.forEach(v=>o.observe(v,r)))},{immediate:!0,flush:"post"}),m=()=>o?.takeRecords(),d=()=>{c(),i()};return ft(d),{isSupported:a,stop:d,takeRecords:m}}function $t(s=null,e={}){var t,n,r;const{document:o=wt,restoreOnUnmount:a=d=>d}=e,i=(t=o?.title)!=null?t:"",l=vt((n=s??o?.title)!=null?n:null),c=s&&typeof s=="function";function m(d){if(!("titleTemplate"in e))return d;const p=e.titleTemplate||"%s";return typeof p=="function"?p(d):Q(p).replace(/%s/g,d)}return f.watch(l,(d,p)=>{d!==p&&o&&(o.title=m(typeof d=="string"?d:""))},{immediate:!0}),e.observe&&!e.titleTemplate&&o&&!c&&bt((r=o.head)==null?void 0:r.querySelector("title"),()=>{o&&o.title!==l.value&&(l.value=m(o.title))},{childList:!0}),yt(()=>{if(a){const d=a(i,l.value||"");d!=null&&o&&(o.title=d)}}),l}const ne=f.defineComponent({name:"VtjPageContainer",async setup(){const s=Z(),e=se.useRoute(),t=e.params.id,n=t?s.getPage(t):s.getHomepage(),r=n?await s.getRenderComponent(n.id):null,o=f.ref(Symbol());return n&&(Object.assign(e.meta,n.meta||{},{cache:n.cache}),$t(n.title||"VTJ")),{provider:s,component:r,file:n,query:e.query,meta:e.meta,sid:o,route:e}},render(){const{component:s,query:e,sid:t}=this;return s?f.h(s,{...e,key:t}):f.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Pt={"data-l-h6o7ki7":"",class:"vtj-startup__wrapper"},Ct={"data-l-h6o7ki7":"",class:"vtj-startup"},Rt={"data-l-h6o7ki7":"",class:"vtj-startup__name"},kt={"data-l-h6o7ki7":""},xt={"data-l-h6o7ki7":"",class:"vtj-startup__tagline"},At={"data-l-h6o7ki7":"",class:"vtj-startup__actions"},$e=f.defineComponent({__name:"Startup",props:{name:{default:"VTJ.PRO"},tagline:{default:"基于 Vue3 + TypeScript 快速打造高生产力的低代码研发平台"},actionText:{default:"开始设计"},link:{}},setup(s){((r,o)=>{let a=document.getElementById("h6o7ki7");a||(a=document.createElement("style"),a.id="h6o7ki7",document.head.appendChild(a),a.innerHTML=o)})("h6o7ki7",`
11
11
  .vtj-startup[data-l-h6o7ki7]{
12
12
  padding: 20px;
13
13
  border-radius: 4px;
@@ -72,4 +72,4 @@
72
72
  }
73
73
  .vtj-startup__actions button[data-l-h6o7ki7]:hover{
74
74
  opacity: 0.7;
75
- }`);const t=s,n=()=>{if(typeof window<"u"){if(t.link){window.location.href=t.link;return}let o=(window.__VTJ_LINK__||{}).href||window.location.pathname+"__vtj__/#/";window.location.href=o}};return(r,o)=>(f.openBlock(),f.createElementBlock("div",Pt,[f.createElementVNode("div",Ct,[f.createElementVNode("h1",Rt,[f.createElementVNode("span",xt,f.toDisplayString(t.name),1)]),f.createElementVNode("div",kt,f.toDisplayString(t.tagline),1),f.createElementVNode("div",At,[f.createElementVNode("button",{"data-l-h6o7ki7":"",onClick:n},f.toDisplayString(t.actionText),1)])])]))}}),Ft=f.defineComponent({name:"VtjStartupContainer",render(){return f.h($e)}}),X=Symbol("Provider");var Pe=(s=>(s.Production="production",s.Development="development",s))(Pe||{});class Ce extends b.Base{constructor(e){super(),this.options=e;const{service:t,mode:n=y.Raw,dependencies:r,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:m=null,materialPath:d="./",nodeEnv:p="development"}=e;this.mode=n,this.modules=c,this.service=t,this.router=m,this.materialPath=d,this.nodeEnv=p,r&&(this.dependencies=r),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i);const{access:v,request:h}=this.adapter;v&&v.connect({mode:n,router:m,request:h}),a&&n!==y.Design&&this.load(a)}mode;globals={};modules={};adapter={request:Je,jsonp:u.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};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{apis:n=[],meta:r=[]}=this.project,o=window;o.CKEDITOR_VERSION=void 0,this.nodeEnv!=="production"?await this.loadAssets(o):await this.loadDependencies(o),this.apis=ve(n,r,this.adapter),K(),this.project.config?.mock&&ye(n),this.initRouter(),this.triggerReady()}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[n,r]of t)e[n]||(e[n]=await r())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:n,library:r,components:o,materialPath:a,nodeEnv:i}=this,{libraryExports:l,libraryMap:c,materials:m,materialExports:d,materialMapLibrary:p}=ce(t,a,i==="development");for(const h of l){const g=n[h],j=e[h];if(j)r[h]=j;else if(g)e[h]=r[h]=await g();else{const _=c[h]||[];for(const w of _)N(w)&&await ue(h,u.url.append(w,{v:C})),U(w)&&await u.loadScript(u.url.append(w,{v:C}));r[h]=e[h]}}for(const h of m)await u.loadScript(u.url.append(h,{v:C}));const v=this.materials||{};for(const h of d){const g=e[p[h]],j=b.BUILT_IN_COMPONENTS[h];if(j)g&&j.forEach(_=>{o[_]=g[_]});else{const _=v[h]?(await v[h]()).default:e[h];_&&g&&(_.components||[]).forEach(w=>{o[w.name]=le(w,g)})}}}initRouter(){const{router:e,project:t,options:n,adapter:r}=this;if(!e)return;const{routeAppendTo:o,pageRouteName:a="page",routeMeta:i}=n,l=o?"":"/",c={path:`${l}${a}/:id`,name:R,component:ne},m={path:l,name:A,component:t?.homepage?ne:r.startupComponent||Ft,meta:i};e.hasRoute(R)&&e.removeRoute(R),e.hasRoute(A)&&e.removeRoute(A),o?(e.addRoute(o,c),e.addRoute(o,m)):(e.addRoute(c),e.addRoute(m))}install(e){const t=e.config.globalProperties.installed||{};for(const[n,r]of Object.entries(this.library))!t[n]&&fe(r)&&(e.use(r),t[n]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),e.provide(X,this),e.config.globalProperties.installed=t,this.mode===y.Design&&(e.config.errorHandler=(n,r,o)=>{const a=r?.$options.name,i=typeof n=="string"?n:n?.message||n?.msg||"未知错误",l=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:n,instance:r,info:o},n?.stack),F.ElNotification.error({title:"未处理的异常:请在控制台查看详情",message:l})})}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(n=>n.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},n=(r,o=[])=>{for(const a of o){if(a.id===r)return a;if(a.children&&a.children.length){const i=n(r,a.children);if(i)return i}}};return n(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(n=>n.data).catch(()=>null))}createDslRenderer(e,t={}){const{library:n,components:r,mode:o,apis:a}=this,i={mode:o,Vue:n.Vue,components:r,libs:n,apis:a,window,...t},l=D({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return I({...i,dsl:e,loader:l})}async getRenderComponent(e,t){const n=this.getFile(e);if(!n)return u.logger.warn(`Can not find file: ${e}`),null;t&&t(n);const r=`.vtj/vue/${e}.vue`,o=this.modules[r];if(o)return(await o())?.default;const a=await this.getDsl(n.id);return a?this.createDslRenderer(a).renderer:(u.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return f.defineAsyncComponent(async()=>{const n=await this.getDslByUrl(e);return n?(n.name=t||n.name,this.createDslRenderer(n).renderer):null})}definePluginComponent(e){return f.defineAsyncComponent(async()=>await G(e,window))}}function Mt(s){const e=new Ce(s);return{provider:e,onReady:n=>e.ready(n)}}function Z(s={}){const e=f.inject(X);if(!e)throw new Error("Can not find provider");if(e.nodeEnv==="development"){const{id:t,version:n}=s;t&&n&&(async()=>{const r=await e.getDsl(t);r?.__VERSION__!==n&&F.ElNotification.warning({title:r?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const ee=new u.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:s=>s.data?.code===0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})}}}),Ot=(s="/__vtj__/api/:type.json")=>(e,t)=>ee.send({url:s,method:"post",params:{type:e},data:{type:e,data:t}}),Tt=(s="/__vtj__/api/uploader.json")=>async(e,t)=>await ee.send({url:s,method:"post",data:{files:e,projectId:t},settings:{type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);class B{api;pluginCaches={};uploader;constructor(){this.api=Ot(),this.uploader=Tt()}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,n=t.filter(o=>ie(o))[0];if(!n)return null;const r=this.pluginCaches[n];return r||(this.pluginCaches[n]=ee.send({url:n,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const S=new u.Storage({type:"local",expired:0,prefix:"__VTJ_"});class It extends B{init(e){const t=new b.ProjectModel(e),n=S.get(`project_${t.id}`),r=Object.assign(t.toDsl(),n||{});return S.save(`project_${t.id}`,r),Promise.resolve(r)}saveProject(e){const t=new b.ProjectModel(e);return S.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return S.save(`materials_${e.id}`,u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return S.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=S.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return S.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return S.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=S.get(`history_${e}`);if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),S.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=S.get(`history_${e}`),n=new b.HistoryModel(t||{id:e});return Promise.resolve(n.toDsl())}getHistoryItem(e,t){const n=S.get(`history_${e}_${t}`);return Promise.resolve(n)}saveHistoryItem(e,t){return S.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{S.remove(`history_${e}_${n}`)}),Promise.resolve(!0)}}class Re extends B{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new b.ProjectModel(e),n=this.projects[t.id]||{},r=Object.assign(t.toDsl(),n);return this.projects[r.id]=r,Promise.resolve(r)}saveProject(e){const t=new b.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 r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],n=new b.HistoryModel(t||{id:e});return Promise.resolve(n)}getHistoryItem(e,t){const n=`${e}_${t}`,r=this.historyItems[n]||{};return Promise.resolve(r)}saveHistoryItem(e,t){const n=`${e}_${t.id}`;return this.historyItems[n]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{const r=`${e}_${n}`;delete this.historyItems[r]}),Promise.resolve(!0)}}let T=null;function Dt(){return T||(T=new Re,T)}class Ht extends B{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 xe(s,e,t=[]){return t.map(n=>{const{id:r,title:o,icon:a,children:i,hidden:l}=n;return{id:r,title:o,icon:a,hidden:l,url:`${s}/${e}/${r}`,children:i&&i.length?xe(s,e,i):void 0}})}function ke(s,e){if(!e)return s;let t=[];for(const n of s)if(n.children&&n.children.length){const r=ke(n.children,e);r.length&&(n.children=r,t.push(n))}else e.can(n.id.toString())&&t.push(n);return t}function Nt(s){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:n=!1}=s||{},r=Z(),o=se.useRoute(),a=we(),i=f.ref(!1),l=f.ref(!1),c=r.project;f.watchEffect(()=>{const{name:p,params:v,meta:h}=o;if(p===R){const g=r.getPage(v.id);i.value=!g?.mask,l.value=!!g?.pure}else if(p===A){const g=r.getHomepage();i.value=!g?.mask,l.value=!!g?.pure}else i.value=!h.mask,l.value=!!h.pure});const m=xe(e,t,c?.pages),d=c?.config;return{disabled:i,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||c?.description||c?.name||"VTJ App",menus:n?m:ke(m,a),pure:l}}exports.ACCESS_KEY=W;exports.Access=Ve;exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=B;exports.CONTEXT_HOST=J;exports.Context=Se;exports.ContextMode=y;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=A;exports.JSCodeToString=Le;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Ht;exports.MemoryService=Re;exports.NodeEnv=Pe;exports.PAGE_ROUTE_NAME=R;exports.Provider=Ce;exports.Startup=$e;exports.StorageService=It;exports.VTJ_RENDERER_VERSION=C;exports.adoptedStyleSheets=z;exports.createAssetScripts=Ue;exports.createAssetsCss=Be;exports.createDataSources=je;exports.createLoader=D;exports.createMemoryService=Dt;exports.createMetaApi=ge;exports.createProvider=Mt;exports.createRenderer=I;exports.createSchemaApi=me;exports.createSchemaApis=ve;exports.defaultLoader=Ee;exports.fillBasePath=k;exports.getModifiers=Y;exports.getPlugin=G;exports.getRawComponent=le;exports.isCSSUrl=N;exports.isJSCode=he;exports.isJSExpression=E;exports.isJSFunction=O;exports.isJSON=ie;exports.isJSUrl=U;exports.isVuePlugin=fe;exports.loadCss=ue;exports.loadCssUrl=de;exports.loadScriptUrl=pe;exports.mockApi=_e;exports.mockApis=ye;exports.mockCleanup=K;exports.nodeRender=M;exports.parseDeps=ce;exports.parseExpression=x;exports.parseFunction=q;exports.providerKey=X;exports.removeProdFlag=ae;exports.toString=V;exports.useAccess=we;exports.useMask=Nt;exports.useProvider=Z;
75
+ }`);const t=s,n=()=>{if(typeof window<"u"){if(t.link){typeof t.link=="function"?t.link():window.location.href=t.link;return}let o=(window.__VTJ_LINK__||{}).href||window.location.pathname+"__vtj__/#/";window.location.href=o}};return(r,o)=>(f.openBlock(),f.createElementBlock("div",Pt,[f.createElementVNode("div",Ct,[f.createElementVNode("h1",Rt,[f.createElementVNode("span",kt,f.toDisplayString(t.name),1)]),f.createElementVNode("div",xt,f.toDisplayString(t.tagline),1),f.createElementVNode("div",At,[f.createElementVNode("button",{"data-l-h6o7ki7":"",onClick:n},f.toDisplayString(t.actionText),1)])])]))}}),Ft=f.defineComponent({name:"VtjStartupContainer",render(){return f.h($e)}}),X=Symbol("Provider");var Pe=(s=>(s.Production="production",s.Development="development",s))(Pe||{});class Ce extends b.Base{constructor(e){super(),this.options=e;const{service:t,mode:n=S.Raw,dependencies:r,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:m=null,materialPath:d="./",nodeEnv:p="development"}=e;this.mode=n,this.modules=c,this.service=t,this.router=m,this.materialPath=d,this.nodeEnv=p,r&&(this.dependencies=r),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i);const{access:v,request:h}=this.adapter;v&&v.connect({mode:n,router:m,request:h}),a&&n!==S.Design&&this.load(a)}mode;globals={};modules={};adapter={request:Je,jsonp:u.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};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{apis:n=[],meta:r=[]}=this.project,o=window;o.CKEDITOR_VERSION=void 0,this.nodeEnv!=="production"?await this.loadAssets(o):await this.loadDependencies(o),this.apis=ve(n,r,this.adapter),K(),this.project.config?.mock&&ye(n),this.initRouter(),this.triggerReady()}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[n,r]of t)e[n]||(e[n]=await r())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:n,library:r,components:o,materialPath:a,nodeEnv:i}=this,{libraryExports:l,libraryMap:c,materials:m,materialExports:d,materialMapLibrary:p}=ce(t,a,i==="development");for(const h of l){const g=n[h],j=e[h];if(j)r[h]=j;else if(g)e[h]=r[h]=await g();else{const y=c[h]||[];for(const _ of y)N(_)&&await ue(h,u.url.append(_,{v:C})),U(_)&&await u.loadScript(u.url.append(_,{v:C}));r[h]=e[h]}}for(const h of m)await u.loadScript(u.url.append(h,{v:C}));const v=this.materials||{};for(const h of d){const g=e[p[h]],j=b.BUILT_IN_COMPONENTS[h];if(j)g&&j.forEach(y=>{o[y]=g[y]});else{const y=v[h]?(await v[h]()).default:e[h];y&&g&&(y.components||[]).forEach(_=>{o[_.name]=le(_,g)})}}}initRouter(){const{router:e,project:t,options:n,adapter:r}=this;if(!e)return;const{routeAppendTo:o,pageRouteName:a="page",routeMeta:i}=n,l=o?"":"/",c={path:`${l}${a}/:id`,name:R,component:ne},m={path:l,name:A,component:t?.homepage?ne:r.startupComponent||Ft,meta:i};e.hasRoute(R)&&e.removeRoute(R),e.hasRoute(A)&&e.removeRoute(A),o?(e.addRoute(o,c),e.addRoute(o,m)):(e.addRoute(c),e.addRoute(m))}install(e){const t=e.config.globalProperties.installed||{};for(const[n,r]of Object.entries(this.library))!t[n]&&fe(r)&&(e.use(r),t[n]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),e.provide(X,this),e.config.globalProperties.installed=t,this.mode===S.Design&&(e.config.errorHandler=(n,r,o)=>{const a=r?.$options.name,i=typeof n=="string"?n:n?.message||n?.msg||"未知错误",l=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:n,instance:r,info:o},n?.stack),F.ElNotification.error({title:"未处理的异常:请在控制台查看详情",message:l})})}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(n=>n.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},n=(r,o=[])=>{for(const a of o){if(a.id===r)return a;if(a.children&&a.children.length){const i=n(r,a.children);if(i)return i}}};return n(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(n=>n.data).catch(()=>null))}createDslRenderer(e,t={}){const{library:n,components:r,mode:o,apis:a}=this,i={mode:o,Vue:n.Vue,components:r,libs:n,apis:a,window,...t},l=D({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return I({...i,dsl:e,loader:l})}async getRenderComponent(e,t){const n=this.getFile(e);if(!n)return u.logger.warn(`Can not find file: ${e}`),null;t&&t(n);const r=`.vtj/vue/${e}.vue`,o=this.modules[r];if(o)return(await o())?.default;const a=await this.getDsl(n.id);return a?this.createDslRenderer(a).renderer:(u.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return f.defineAsyncComponent(async()=>{const n=await this.getDslByUrl(e);return n?(n.name=t||n.name,this.createDslRenderer(n).renderer):null})}definePluginComponent(e){return f.defineAsyncComponent(async()=>await G(e,window))}}function Mt(s){const e=new Ce(s);return{provider:e,onReady:n=>e.ready(n)}}function Z(s={}){const e=f.inject(X);if(!e)throw new Error("Can not find provider");if(e.nodeEnv==="development"){const{id:t,version:n}=s;t&&n&&(async()=>{const r=await e.getDsl(t);r?.__VERSION__!==n&&F.ElNotification.warning({title:r?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const ee=new u.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:s=>s.data?.code===0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})}}}),Ot=(s="/__vtj__/api/:type.json")=>(e,t)=>ee.send({url:s,method:"post",params:{type:e},data:{type:e,data:t}}),Tt=(s="/__vtj__/api/uploader.json")=>async(e,t)=>await ee.send({url:s,method:"post",data:{files:e,projectId:t},settings:{type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);class B{api;pluginCaches={};uploader;constructor(){this.api=Ot(),this.uploader=Tt()}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,n=t.filter(o=>ie(o))[0];if(!n)return null;const r=this.pluginCaches[n];return r||(this.pluginCaches[n]=ee.send({url:n,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const w=new u.Storage({type:"local",expired:0,prefix:"__VTJ_"});class It extends B{init(e){const t=new b.ProjectModel(e),n=w.get(`project_${t.id}`),r=Object.assign(t.toDsl(),n||{});return w.save(`project_${t.id}`,r),Promise.resolve(r)}saveProject(e){const t=new b.ProjectModel(e);return w.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return w.save(`materials_${e.id}`,u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return w.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=w.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return w.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return w.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=w.get(`history_${e}`);if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),w.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=w.get(`history_${e}`),n=new b.HistoryModel(t||{id:e});return Promise.resolve(n.toDsl())}getHistoryItem(e,t){const n=w.get(`history_${e}_${t}`);return Promise.resolve(n)}saveHistoryItem(e,t){return w.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{w.remove(`history_${e}_${n}`)}),Promise.resolve(!0)}}class Re extends B{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new b.ProjectModel(e),n=this.projects[t.id]||{},r=Object.assign(t.toDsl(),n);return this.projects[r.id]=r,Promise.resolve(r)}saveProject(e){const t=new b.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 r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],n=new b.HistoryModel(t||{id:e});return Promise.resolve(n)}getHistoryItem(e,t){const n=`${e}_${t}`,r=this.historyItems[n]||{};return Promise.resolve(r)}saveHistoryItem(e,t){const n=`${e}_${t.id}`;return this.historyItems[n]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{const r=`${e}_${n}`;delete this.historyItems[r]}),Promise.resolve(!0)}}let T=null;function Dt(){return T||(T=new Re,T)}class Ht extends B{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 ke(s,e,t=[]){return t.map(n=>{const{id:r,title:o,icon:a,children:i,hidden:l}=n;return{id:r,title:o,icon:a,hidden:l,url:`${s}/${e}/${r}`,children:i&&i.length?ke(s,e,i):void 0}})}function xe(s,e){if(!e)return s;let t=[];for(const n of s)if(n.children&&n.children.length){const r=xe(n.children,e);r.length&&(n.children=r,t.push(n))}else e.can(n.id.toString())&&t.push(n);return t}function Nt(s){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:n=!1}=s||{},r=Z(),o=se.useRoute(),a=we(),i=f.ref(!1),l=f.ref(!1),c=r.project;f.watchEffect(()=>{const{name:p,params:v,meta:h}=o;if(p===R){const g=r.getPage(v.id);i.value=!g?.mask,l.value=!!g?.pure}else if(p===A){const g=r.getHomepage();i.value=!g?.mask,l.value=!!g?.pure}else i.value=!h.mask,l.value=!!h.pure});const m=ke(e,t,c?.pages),d=c?.config;return{disabled:i,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||c?.description||c?.name||"VTJ App",menus:n?m:xe(m,a),pure:l}}exports.ACCESS_KEY=W;exports.Access=Ve;exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=B;exports.CONTEXT_HOST=J;exports.Context=Se;exports.ContextMode=S;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=A;exports.JSCodeToString=Le;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Ht;exports.MemoryService=Re;exports.NodeEnv=Pe;exports.PAGE_ROUTE_NAME=R;exports.Provider=Ce;exports.Startup=$e;exports.StorageService=It;exports.VTJ_RENDERER_VERSION=C;exports.adoptedStyleSheets=z;exports.createAssetScripts=Ue;exports.createAssetsCss=Be;exports.createDataSources=je;exports.createLoader=D;exports.createMemoryService=Dt;exports.createMetaApi=ge;exports.createProvider=Mt;exports.createRenderer=I;exports.createSchemaApi=me;exports.createSchemaApis=ve;exports.defaultLoader=Ee;exports.fillBasePath=x;exports.getModifiers=Y;exports.getPlugin=G;exports.getRawComponent=le;exports.isCSSUrl=N;exports.isJSCode=he;exports.isJSExpression=E;exports.isJSFunction=O;exports.isJSON=ie;exports.isJSUrl=U;exports.isVuePlugin=fe;exports.loadCss=ue;exports.loadCssUrl=de;exports.loadScriptUrl=pe;exports.mockApi=_e;exports.mockApis=ye;exports.mockCleanup=K;exports.nodeRender=M;exports.parseDeps=ce;exports.parseExpression=k;exports.parseFunction=q;exports.providerKey=X;exports.removeProdFlag=ae;exports.toString=V;exports.useAccess=we;exports.useMask=Nt;exports.useProvider=Z;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { Base as Pe, BUILT_IN_COMPONENTS as xe, ProjectModel as M, HistoryModel as le } from "@vtj/core";
2
- import { isUrl as ke, url as P, dedupArray as Ce, isString as $, isFunction as V, logger as T, createRequest as Fe, merge as Ae, pathToRegexp as Ie, pathToRegexpMatch as Oe, formDataToJson as Me, storage as U, cookie as L, toArray as se, unRSA as ne, delay as ue, camelCase as j, upperFirst as Te, pick as De, jsonp as He, loadScript as re, Request as Be, Storage as Ne, mapToObject as G } from "@vtj/utils";
1
+ import { Base as Re, BUILT_IN_COMPONENTS as xe, ProjectModel as M, HistoryModel as le } from "@vtj/core";
2
+ import { isUrl as ke, url as R, dedupArray as Ce, isString as $, isFunction as V, logger as T, createRequest as Fe, merge as Ae, pathToRegexp as Ie, pathToRegexpMatch as Oe, formDataToJson as Me, storage as U, cookie as L, toArray as se, unRSA as ne, delay as ue, camelCase as j, upperFirst as Te, pick as De, jsonp as He, loadScript as re, Request as Be, Storage as Ne, mapToObject as G } from "@vtj/utils";
3
3
  import * as H from "vue";
4
4
  import { inject as de, toRef as Ue, readonly as Le, customRef as qe, ref as C, onBeforeUnmount as Je, getCurrentScope as Ve, onScopeDispose as ze, unref as Ke, getCurrentInstance as pe, watch as fe, computed as he, onMounted as We, defineComponent as Y, h as z, openBlock as Ge, createElementBlock as Ye, createElementVNode as b, toDisplayString as q, defineAsyncComponent as oe, watchEffect as Qe } from "vue";
5
5
  import { ElNotification as B, ElLoading as Xe } from "element-plus";
@@ -8,10 +8,10 @@ import { useRoute as me } from "vue-router";
8
8
  * Copyright (c) 2024, VTJ.PRO All rights reserved.
9
9
  * @name @vtj/renderer
10
10
  * @author CHC chenhuachun1549@dingtalk.com
11
- * @version 0.9.0-alpha.21
11
+ * @version 0.9.0-alpha.23
12
12
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
13
13
  */
14
- const x = "0.9.0-alpha.21";
14
+ const x = "0.9.0-alpha.23";
15
15
  var _ = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(_ || {});
16
16
  const ie = [
17
17
  "$el",
@@ -62,12 +62,12 @@ function tt(n) {
62
62
  }
63
63
  function ws(n) {
64
64
  return n.map(
65
- (e) => `<script src="${P.append(e, { v: x })}"><\/script>`
65
+ (e) => `<script src="${R.append(e, { v: x })}"><\/script>`
66
66
  ).join("");
67
67
  }
68
68
  function Ss(n = []) {
69
69
  return n.map(
70
- (e) => `<link rel="stylesheet" href="${P.append(e, { v: x })}" />`
70
+ (e) => `<link rel="stylesheet" href="${R.append(e, { v: x })}" />`
71
71
  ).join("");
72
72
  }
73
73
  function st(n, e = !1) {
@@ -206,7 +206,7 @@ const ut = Fe({
206
206
  }
207
207
  }
208
208
  });
209
- let R;
209
+ let P;
210
210
  function dt(n, e) {
211
211
  const { jsonp: t, request: s } = e;
212
212
  if (n.method === "jsonp")
@@ -247,9 +247,9 @@ function ft(n = [], e = [], t) {
247
247
  return s;
248
248
  }
249
249
  async function ht(n = []) {
250
- R = await import("mockjs").then((e) => e.default || e), R && (R.setup({
250
+ P = await import("mockjs").then((e) => e.default || e), P && (P.setup({
251
251
  timeout: "50-500"
252
- }), ye(), n.forEach((e) => mt(R, e)));
252
+ }), ye(), n.forEach((e) => mt(P, e)));
253
253
  }
254
254
  function mt(n, e) {
255
255
  if (!e.mock) return;
@@ -257,13 +257,13 @@ function mt(n, e) {
257
257
  if (t && s) {
258
258
  const r = Ie(`${t}(.*)`), o = Oe(t, { decode: decodeURIComponent }), a = F(s, {}, !0);
259
259
  n.mock(r, (i) => {
260
- const l = P.parse(i.url) || {}, c = i.body instanceof FormData ? Me(i.body) : i.body, f = o(i.url)?.params;
260
+ const l = R.parse(i.url) || {}, c = i.body instanceof FormData ? Me(i.body) : i.body, f = o(i.url)?.params;
261
261
  return Object.assign(i, { data: c, params: l, query: f }), n.mock(a(i));
262
262
  });
263
263
  }
264
264
  }
265
265
  function ye() {
266
- R && (R._mocked = {});
266
+ P && (P._mocked = {});
267
267
  }
268
268
  const gt = {
269
269
  session: !1,
@@ -287,7 +287,7 @@ class js {
287
287
  }
288
288
  connect(e) {
289
289
  const { mode: t, router: s, request: r } = e;
290
- this.mode = t, s && t === _.Raw && this.setGuard(s), r && this.setRequest(r);
290
+ this.mode = t, s && this.mode === _.Raw && this.setGuard(s), r && this.setRequest(r);
291
291
  }
292
292
  login(e) {
293
293
  const { storageKey: t, storagePrefix: s, session: r, authKey: o } = this.options;
@@ -335,7 +335,7 @@ class js {
335
335
  }
336
336
  toLogin() {
337
337
  const { auth: e, redirectParam: t } = this.options;
338
- if (!e || this.mode !== _.Raw) return;
338
+ if (!e) return;
339
339
  const s = t ? `?${t}=${encodeURIComponent(location.href)}` : "";
340
340
  typeof e == "function" ? e(s) : location.href = t ? `${e}${s}` : e;
341
341
  }
@@ -556,7 +556,7 @@ function K(n) {
556
556
  ...m,
557
557
  ...h
558
558
  };
559
- return c.setup(w, e), Rt(e, i.value.watch ?? [], c), {
559
+ return c.setup(w, e), Pt(e, i.value.watch ?? [], c), {
560
560
  vtj: c
561
561
  };
562
562
  },
@@ -567,7 +567,7 @@ function K(n) {
567
567
  const u = i.value.nodes || [];
568
568
  return u.length === 1 ? D(u[0], c, e, a) : u.map((d) => D(d, c, e, a));
569
569
  },
570
- ...Pt(i.value.lifeCycles ?? {}, c)
570
+ ...Rt(i.value.lifeCycles ?? {}, c)
571
571
  });
572
572
  return {
573
573
  renderer: e.markRaw(f),
@@ -641,7 +641,7 @@ function Et(n, e) {
641
641
  {}
642
642
  );
643
643
  }
644
- function Rt(n, e = [], t) {
644
+ function Pt(n, e = [], t) {
645
645
  e.forEach((s) => {
646
646
  n.watch(
647
647
  t.__parseExpression(s.source),
@@ -653,7 +653,7 @@ function Rt(n, e = [], t) {
653
653
  );
654
654
  });
655
655
  }
656
- function Pt(n, e) {
656
+ function Rt(n, e) {
657
657
  return Object.entries(n ?? {}).reduce(
658
658
  (t, [s, r]) => (t[s] = e.__parseFunction(r), t),
659
659
  {}
@@ -1061,7 +1061,7 @@ const ce = Y({
1061
1061
  const t = n, s = () => {
1062
1062
  if (typeof window < "u") {
1063
1063
  if (t.link) {
1064
- window.location.href = t.link;
1064
+ typeof t.link == "function" ? t.link() : window.location.href = t.link;
1065
1065
  return;
1066
1066
  }
1067
1067
  let o = (window.__VTJ_LINK__ || {}).href || window.location.pathname + "__vtj__/#/";
@@ -1090,7 +1090,7 @@ const ce = Y({
1090
1090
  }
1091
1091
  }), je = Symbol("Provider");
1092
1092
  var ls = /* @__PURE__ */ ((n) => (n.Production = "production", n.Development = "development", n))(ls || {});
1093
- class us extends Pe {
1093
+ class us extends Re {
1094
1094
  constructor(e) {
1095
1095
  super(), this.options = e;
1096
1096
  const {
@@ -1160,12 +1160,12 @@ class us extends Pe {
1160
1160
  else {
1161
1161
  const g = c[p] || [];
1162
1162
  for (const v of g)
1163
- Q(v) && await ot(p, P.append(v, { v: x })), X(v) && await re(P.append(v, { v: x }));
1163
+ Q(v) && await ot(p, R.append(v, { v: x })), X(v) && await re(R.append(v, { v: x }));
1164
1164
  r[p] = e[p];
1165
1165
  }
1166
1166
  }
1167
1167
  for (const p of f)
1168
- await re(P.append(p, { v: x }));
1168
+ await re(R.append(p, { v: x }));
1169
1169
  const m = this.materials || {};
1170
1170
  for (const p of u) {
1171
1171
  const h = e[d[p]], w = xe[p];
@@ -1556,10 +1556,10 @@ class fs extends te {
1556
1556
  }
1557
1557
  }
1558
1558
  let I = null;
1559
- function Rs() {
1559
+ function Ps() {
1560
1560
  return I || (I = new fs(), I);
1561
1561
  }
1562
- class Ps extends te {
1562
+ class Rs extends te {
1563
1563
  getFileCaches = {};
1564
1564
  async getExtension() {
1565
1565
  return await this.api("getExtension", {}).catch(() => {
@@ -1627,12 +1627,12 @@ function Ee(n, e, t = []) {
1627
1627
  };
1628
1628
  });
1629
1629
  }
1630
- function Re(n, e) {
1630
+ function Pe(n, e) {
1631
1631
  if (!e) return n;
1632
1632
  let t = [];
1633
1633
  for (const s of n)
1634
1634
  if (s.children && s.children.length) {
1635
- const r = Re(s.children, e);
1635
+ const r = Pe(s.children, e);
1636
1636
  r.length && (s.children = r, t.push(s));
1637
1637
  } else
1638
1638
  e.can(s.id.toString()) && t.push(s);
@@ -1665,7 +1665,7 @@ function xs(n) {
1665
1665
  logo: u?.logo,
1666
1666
  themeSwitchable: u?.themeSwitchable,
1667
1667
  title: u?.title || c?.description || c?.name || "VTJ App",
1668
- menus: s ? f : Re(f, a),
1668
+ menus: s ? f : Pe(f, a),
1669
1669
  pure: l
1670
1670
  };
1671
1671
  }
@@ -1681,7 +1681,7 @@ export {
1681
1681
  O as HOMEPAGE_ROUTE_NAME,
1682
1682
  $s as JSCodeToString,
1683
1683
  _s as LIFE_CYCLES_LIST,
1684
- Ps as LocalService,
1684
+ Rs as LocalService,
1685
1685
  fs as MemoryService,
1686
1686
  ls as NodeEnv,
1687
1687
  k as PAGE_ROUTE_NAME,
@@ -1694,7 +1694,7 @@ export {
1694
1694
  Ss as createAssetsCss,
1695
1695
  Et as createDataSources,
1696
1696
  W as createLoader,
1697
- Rs as createMemoryService,
1697
+ Ps as createMemoryService,
1698
1698
  pt as createMetaApi,
1699
1699
  bs as createProvider,
1700
1700
  K as createRenderer,
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@vtj/renderer",
3
3
  "private": false,
4
- "version": "0.9.0-alpha.21",
4
+ "version": "0.9.0-alpha.23",
5
5
  "type": "module",
6
6
  "dependencies": {
7
7
  "mockjs": "~1.1.0",
8
- "@vtj/core": "~0.9.0-alpha.21",
9
- "@vtj/utils": "~0.9.0-alpha.21"
8
+ "@vtj/core": "~0.9.0-alpha.23",
9
+ "@vtj/utils": "~0.9.0-alpha.23"
10
10
  },
11
11
  "devDependencies": {
12
12
  "vue": "~3.5.5",
13
13
  "vue-router": "~4.4.0",
14
- "@vtj/icons": "~0.9.0-alpha.21",
15
14
  "@vtj/cli": "~0.9.0-alpha.2",
16
- "@vtj/ui": "~0.9.0-alpha.21"
15
+ "@vtj/icons": "~0.9.0-alpha.23",
16
+ "@vtj/ui": "~0.9.0-alpha.23"
17
17
  },
18
18
  "exports": {
19
19
  ".": {
@@ -3,7 +3,7 @@ export interface Props {
3
3
  name?: string;
4
4
  tagline?: string;
5
5
  actionText?: string;
6
- link?: string;
6
+ link?: string | (() => void);
7
7
  }
8
8
  declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {
9
9
  name: string;
@@ -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.9.0-alpha.20
5
+ * @version 0.9.0-alpha.22
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
7
  */
8
- export declare const version = "0.9.0-alpha.20";
8
+ export declare const version = "0.9.0-alpha.22";