@vtj/renderer 0.12.0-alpha.1 → 0.12.0-alpha.2

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,9 +2,9 @@
2
2
  * Copyright (c) 2025, VTJ.PRO All rights reserved.
3
3
  * @name @vtj/renderer
4
4
  * @author CHC chenhuachun1549@dingtalk.com
5
- * @version 0.12.0-alpha.1
5
+ * @version 0.12.0-alpha.2
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
- */const R="0.12.0-alpha.1";var y=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(y||{});const K=["$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"],ie=["vIf","vShow","vModel","vFor","vBind","vHtml"],oe={String,Number,Boolean,Array,Object,Function,Date},C="VtjPage",F="VtjHomepage",ae="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot".split(","),ce="component,slot".split(",");function k(r,e){return r.map(t=>l.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function U(r){return/\.css$/.test(r)}function B(r){return/\.js$/.test(r)}function le(r){return/\.json$/.test(r)}function Ue(r){return r.map(e=>`<script src="${l.url.append(e,{v:R})}"><\/script>`).join("")}function Be(r=[]){return r.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:R})}" />`).join("")}function ue(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function pe(r,e,t=!1){const s=r.filter(g=>!!g.enabled),n=[],i=[],a=[],o=[],c={},u={},d=[],f={};return s.forEach(({urls:g,assetsUrl:m,library:h,assetsLibrary:p,localeLibrary:j})=>{g?.forEach(v=>{B(v)&&n.push(ue(v,t)),U(v)&&i.push(v)}),h&&(o.push(h),c[h]=k(g||[],e),j&&(u[h]=j)),m&&a.push(m),p&&d.push(p),h&&p&&(f[p]=h)}),{scripts:k(n,e),css:k(i,e),materials:k(a,e),libraryExports:o,materialExports:l.dedupArray(d),materialMapLibrary:f,libraryMap:c,libraryLocaleMap:u}}function de(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function z(r){return l.isString(r)?r:JSON.stringify(r)}function G(r,e,t){const s=r.CSSStyleSheet;if(s.prototype.replaceSync){const n=new s;n.id=e,n.replaceSync(t);const i=r.document,a=i.adoptedStyleSheets,o=Array.from(a).filter(c=>c.id!==e);i.adoptedStyleSheets=[...o,n]}else{const n=r.document;let i=n.getElementById(e);i?i.innerHTML=t:(i=n.createElement("style"),i.id=e,i.innerHTML=t,n.head.appendChild(i))}}async function fe(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&G(window,r,t)}function he(r,e=window){const t=e.document,s=e.document.head;for(const n of r)if(!t.getElementById(n)){const a=t.createElement("link");a.rel="stylesheet",a.id=n,a.href=n,s.appendChild(a)}}async function me(r,e,t=window){const s=t.document,n=t.document.head;let i=t[e];return i?i.default||i:new Promise((a,o)=>{for(const c of r){const u=s.createElement("script");u.src=c,u.onload=()=>{i=t[e],i?a(i.default||i):o(null)},u.onerror=d=>{o(d)},n.appendChild(u)}})}function ge(r){return l.isFunction(r)||l.isFunction(r?.install)}function ve(r){return ce.includes(r)}function ye(r){return ae.includes(r)}function A(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function Le(r,e,t){Object.assign(e.meta,t.meta);const s=r?._container;t?.type==="page"&&s.classList.add("is-page"),t?.pure&&s.classList.add("is-pure")}function M(r,e,t=!1,s=!1){try{const n=['"use strict";',"var __self = arguments[0];"];n.push("return ");let i=(r.value||"").trim();i=i.replace(/this(\W|$)/g,(o,c)=>`__self${c}`),i=n.join(`
7
+ */const R="0.12.0-alpha.2";var y=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(y||{});const K=["$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"],ie=["vIf","vShow","vModel","vFor","vBind","vHtml"],oe={String,Number,Boolean,Array,Object,Function,Date},C="VtjPage",F="VtjHomepage",ae="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot".split(","),ce="component,slot".split(",");function k(r,e){return r.map(t=>l.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function U(r){return/\.css$/.test(r)}function B(r){return/\.js$/.test(r)}function le(r){return/\.json$/.test(r)}function Ue(r){return r.map(e=>`<script src="${l.url.append(e,{v:R})}"><\/script>`).join("")}function Be(r=[]){return r.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:R})}" />`).join("")}function ue(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function pe(r,e,t=!1){const s=r.filter(g=>!!g.enabled),n=[],i=[],a=[],o=[],c={},u={},d=[],f={};return s.forEach(({urls:g,assetsUrl:m,library:h,assetsLibrary:p,localeLibrary:j})=>{g?.forEach(v=>{B(v)&&n.push(ue(v,t)),U(v)&&i.push(v)}),h&&(o.push(h),c[h]=k(g||[],e),j&&(u[h]=j)),m&&a.push(m),p&&d.push(p),h&&p&&(f[p]=h)}),{scripts:k(n,e),css:k(i,e),materials:k(a,e),libraryExports:o,materialExports:l.dedupArray(d),materialMapLibrary:f,libraryMap:c,libraryLocaleMap:u}}function de(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function z(r){return l.isString(r)?r:JSON.stringify(r)}function G(r,e,t){const s=r.CSSStyleSheet;if(s.prototype.replaceSync){const n=new s;n.id=e,n.replaceSync(t);const i=r.document,a=i.adoptedStyleSheets,o=Array.from(a).filter(c=>c.id!==e);i.adoptedStyleSheets=[...o,n]}else{const n=r.document;let i=n.getElementById(e);i?i.innerHTML=t:(i=n.createElement("style"),i.id=e,i.innerHTML=t,n.head.appendChild(i))}}async function fe(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&G(window,r,t)}function he(r,e=window){const t=e.document,s=e.document.head;for(const n of r)if(!t.getElementById(n)){const a=t.createElement("link");a.rel="stylesheet",a.id=n,a.href=n,s.appendChild(a)}}async function me(r,e,t=window){const s=t.document,n=t.document.head;let i=t[e];return i?i.default||i:new Promise((a,o)=>{for(const c of r){const u=s.createElement("script");u.src=c,u.onload=()=>{i=t[e],i?a(i.default||i):o(null)},u.onerror=d=>{o(d)},n.appendChild(u)}})}function ge(r){return l.isFunction(r)||l.isFunction(r?.install)}function ve(r){return ce.includes(r)}function ye(r){return ae.includes(r)}function A(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function Le(r,e,t){Object.assign(e.meta,t.meta);const s=r?._container;t?.type==="page"&&s.classList.add("is-page"),t?.pure&&s.classList.add("is-pure")}function M(r,e,t=!1,s=!1){try{const n=['"use strict";',"var __self = arguments[0];"];n.push("return ");let i=(r.value||"").trim();i=i.replace(/this(\W|$)/g,(o,c)=>`__self${c}`),i=n.join(`
8
8
  `)+i;const a=`with(${t?"{}":"$scope || {}"}) { ${i} }`;return new Function("$scope",a)(e)}catch(n){if(l.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function D(r,e,t=!1,s=!1){const n=M(r,e,t,s);if(typeof n!="function"&&(l.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function w(r){return r&&r.type==="JSExpression"}function T(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function _e(r){return w(r)||T(r)}function qe(r){return _e(r)?r.value:JSON.stringify(r)}const Je={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},W=Symbol("access");class Y{options;data=null;mode=y.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},Je,e),this.loadData()}enableIntercept(){this.interceptResponse=!0}disableIntercept(){this.interceptResponse=!1}connect(e){const{mode:t,router:s,request:n}=e;this.mode=t,s&&this.mode===y.Raw&&this.setGuard(s),n&&this.setRequest(n)}login(e){const{storageKey:t,storagePrefix:s,session:n,authKey:i}=this.options;this.setData(e),this.data&&(l.storage.save(t,e,{type:"local",prefix:s}),n&&l.cookie.set(i,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,l.storage.remove(e,{type:"local",prefix:t}),s&&l.cookie.remove(n)}logout(){this.clear(),this.toLogin()}getData(){return this.data?this.data:(this.loadData(),this.data)}getToken(){return this.data||this.loadData(),this.data?.token}can(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return typeof e=="function"?e(s):l.toArray(e).every(i=>s[i]||s[t+"."+i])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return l.toArray(e).some(i=>s[i]||s[t+"."+i])}install(e){e.config.globalProperties.$access=this,e.provide(W,this)}isAuthPath(e){const{auth:t,isAuth:s}=this.options;if(s)return s(e);if(e.path&&typeof t=="string"){const n=t.split("#")[1]||t;return e.path===n}return!1}toLogin(){const{auth:e,redirectParam:t}=this.options;if(!e)return;const s=t?`?${t}=${encodeURIComponent(location.href)}`:"";typeof e=="function"?e(s):location.href=t?`${e}${s}`:e}setData(e){const{privateKey:t}=this.options;if(Array.isArray(e)&&t){const s=e.map(n=>l.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?l.unRSA(e,t):e;s?this.data=JSON.parse(s):console.warn("RSA解密失败或登录信息缺失")}catch(s){console.warn(s)}else this.data=e}loadData(){const{storageKey:e,storagePrefix:t}=this.options,s=l.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!l.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===C){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,s,n)=>this.guard(t,n))}async guard(e,t){if(this.isWhiteList(e)||this.isAuthPath(e))return t();if(this.isLogined()){if(this.hasRoutePermission(e))return t();{const{noPermissionMessage:s="无权限访问",unauthorized:n=!1}=this.options;return await this.showTip(s),l.isFunction(n)?(n(),t(!1)):l.isString(n)?t(n):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(s=>e.fullPath.startsWith(s)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401,statusKey:s="code"}=this.options;return e.status===t||e.data?.[s]===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 l.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=>(this.interceptResponse&&await this.showUnauthorizedAlert(t),t),async t=>{if(!this.interceptResponse)return Promise.reject(t);const s=t.response||t||{};return await this.showUnauthorizedAlert(s),Promise.reject(t)})}}function Se(){return S.inject(W,null)}function Ke(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:i,useTitle:a,alert:o}=r;let c=null;return{request:l.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:d=>d.data?.code===0||!!d.data?.success,failMessage:!0,showError:d=>{e&&e(d||"未知错误")},showLoading:()=>{c&&c.close(),t&&(c=t())},hideLoading:()=>{c&&(c.close(),c=null)},...s}}),jsonp:l.jsonp,notify:e,loading:t,useTitle:a,startupComponent:n,access:i?new Y({alert:o,...i}):void 0}}function Ve(r={}){return new Y(r)}function we(r,e){const{jsonp:t,request:s}=e;if(r.method==="jsonp")return(n={})=>t(r.url,{...r.jsonpOptions,query:n});{const n=r.headers?M(r.headers,{},!0):void 0,i={url:r.url,method:r.method,settings:{...r.settings,headers:n}};return(a,o)=>(delete i.data,s.send(l.merge(i,o||{},{data:a})))}}function je(r,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:n}=r;return(i,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,n,i,a)}}function Ee(r=[],e=[],t){const s={};for(const n of r)s[n.id]=we(n,t);for(const n of e)s[n.id]=je(n,t);return s}async function Pe(r=[],e=window){const t=A(e);t&&(Q(e),r.forEach(s=>$e(t,s)))}function be(r,e=window){const t=T(r.mockTemplate)&&r.mockTemplate.value?D(r.mockTemplate,{},!0):void 0,s=A(e);return async(...n)=>{let i={};if(t)try{i=await t.apply(t,n)}catch(a){l.logger.warn("模拟数据模版异常",a)}return s?.mock(i)}}function $e(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const n=l.pathToRegexp(`${t}(.*)`),i=l.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=M(s,{},!0);r.mock(n,o=>{const c=l.url.parse(o.url)||{},u=o.body instanceof FormData?l.formDataToJson(o.body):o.body,d=i(o.url)?.params;return Object.assign(o,{data:u,params:c,query:d}),r.mock(a(o))})}}function Q(r=window){const e=A(r);e&&(e._mocked={})}class Re{__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:s,attrs:n}=e;this.__mode=t,s&&(this.__id=s.id||null,this.__transform=s.transform||{}),n&&Object.assign(this,n)}setup(e,t=N){const s=t.getCurrentInstance();if(!s)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=s.proxy;const n=s.appContext.config.globalProperties;Object.assign(this,n),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__reset()})}__proxy(){this.__instance&&K.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){K.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===y.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return D({type:s,value:n},this)}else return D(e,this)}__parseExpression(e){if(e)if(this.__mode===y.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return M({type:s,value:n},this)}else return M(e,this)}__ref(e=null,t){if(this.__mode!==y.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await l.delay(0);let n=s?.$vtjEl||s?.$el||s?._?.vnode?.el||s;if(!n){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}return n.nodeType===3&&n.nextSibling&&(n=n.nextSibling),n.__vtj__=e,y.Design===this.__mode&&(n.__context__=this,n.draggable=!0),e&&(this.__refs[e]=this.__getRefEl(this.__refs,e,s)),typeof t=="function"?t(s):t&&(this.$refs[t]=this.__getRefEl(this.$refs,t,s)),s}}__getRefEl(e,t,s){const n=e[t];if(n&&s!==n){const i=new Set([].concat(n,s));return Array.from(i)}else return s}__clone(e={}){const t={...this.context,...e},s={...t,context:t};return s.context.__proto__=this.context,s.__proto__=this,s}}function H(r){const{Vue:e=N,mode:t=y.Runtime,components:s={},libs:n={},apis:i={},loader:a}=r,o=e.computed(()=>r.dsl),c={$components:s,$libs:n,$apis:i},u=new Re({mode:t,dsl:o.value,attrs:c}),d=e.defineComponent({name:o.value.name,props:{...Ge(o.value.props??[],u)},setup(f){u.$props=f,u.props=f,o.value.id&&G(r.window||window,o.value.id,o.value.css||""),u.state=We(e,o.value.state??{},u);const g=Ye(e,o.value.computed??{},u),m=Qe(o.value.methods??{},u),h=Xe(e,o.value.inject,u),p=Ce(o.value.dataSources||{},u),j={...h,...g,...m,...p};return u.setup(j,e),Ze(e,o.value.watch??[],u),{vtj:u}},emits:ze(o.value.emits),expose:["vtj"],render(){if(!o.value.nodes)return null;const f=o.value.nodes||[];return f.length===1?I(f[0],u,e,a):f.map(g=>I(g,u,e,a))},...et(o.value.lifeCycles??{},u)});return{renderer:e.markRaw(d),context:u}}function ze(r=[]){return r.map(e=>l.isString(e)?e:e.name)}function Ge(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(i=>oe[i]):void 0;return r.map(s=>l.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:w(s.default)?e.__parseExpression(s.default):s.default}).reduce((s,n)=>(s[n.name]={type:t(n.type),required:n.required,default:n.default},s),{})}function We(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let i=e[n];return w(i)?i=t.__parseExpression(i):T(i)&&(i=t.__parseFunction(i)),s[n]=i,s},{}))}function Ye(r,e,t){return Object.entries(e??{}).reduce((s,[n,i])=>(s[n]=r.computed(t.__parseFunction(i)),s),{})}function Qe(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function Xe(r,e=[],t){return e.reduce((s,n)=>{const{name:i,from:a}=n||{};n.default;const o=w(a)?t.__parseExpression(a)||i:a??i,c=w(n.default)?t.__parseExpression(n.default):n.default??null;return s[i]=r.inject(o,c),s},{})}function Ce(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=be(n);else if(n.ref){const i=e.$apis[n.ref],a=T(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...o)=>{const c=await i.apply(e,o);return a?a(c):c}}return t},{})}function Ze(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function et(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}let J=[],$={};const Ae=r=>r;async function X(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(o=>B(o));if(n.length===0||!s)return null;const i=t.filter(o=>U(o));return i.length&&he(i,e),await me(n,s,e).catch(o=>(console.warn("loadScriptUrl error",n,s,o),null))}function x(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(J.forEach(n=>{delete s.window[n]}),J=[]),(n,i,a=N)=>{if(!i||typeof i=="string")return n;if(i.type==="Schema"&&i.id)return a.defineAsyncComponent(async()=>{const o=$[i.id]||await e(i.id);return o&&(o.name=n,$[i.id]=o),o?H({...s,Vue:a,dsl:l.cloneDeep(o),mode:y.Runtime,loader:x(r)}).renderer:null});if(i.type==="UrlSchema"&&i.url)return a.defineAsyncComponent(async()=>{const o=$[i.url]||await t(i.url);return o&&(o.name=n,$[i.url]=o),o?H({...s,Vue:a,dsl:l.cloneDeep(o),mode:y.Runtime,loader:x(r)}).renderer:null});if(i.type==="Plugin"){let o=i.library?$[i.library]:null;return o||(i.library&&J.push(i.library),o=$[i.library||Symbol()]=a.defineAsyncComponent(async()=>{const c=await X(i,s.window);return c||(console.warn("getPlugin result is null",i),null)}),o)}return n}}function tt(){$={}}function I(r,e,t=N,s=Ae){if(!r||!r.name||r.invisible)return null;const n=t.getCurrentInstance()?.appContext,{id:i=null,directives:a=[]}=r,{vIf:o,vFor:c,vShow:u,vModels:d,vBind:f,vHtml:g,others:m}=rt(a);if(o&&!nt(o,e))return null;const h=p=>{const j=p.$components,v=(()=>{if(r.name==="component")return it(p,r.props?.is);if(r.name==="slot")return r.name;const P=s(r.name,r.from,t);return l.isString(P)?ve(P)||ye(P)?P:j[P]??n?.app?.component(P)??P:P})(),E=ot(i,r.props??{},p),De=at(t,r.events??{},p);if(r.name==="slot")return ct(t,r,E,p,s);f&&Object.assign(E,p.__parseExpression(f.value)),u&&(E.style=Object.assign(E.style??{},ut(u,p))),g&&Object.assign(E,pt(g,p)),d.forEach(P=>{Object.assign(E,dt(t,P,p))});const He=ft(t,r.children??[],p,s,r);let q=t.createVNode(v,{...E,...De},He);const se=n?st(n,m,p):[];return se.length&&(q=t.withDirectives(q,se)),q};return c?gt(c,h,e):h(e)}function st(r,e,t){const s=r.app;return e.map(n=>{const i=typeof n.name=="string"?s.directive(n.name):t.__parseExpression(n.name);if(!i)return null;const a=[i];return n.value&&a.push(t.__parseExpression(n.value)),n.arg&&a.push(n.arg),n.modifiers&&a.push(n.modifiers),a}).filter(n=>!!n)}function rt(r=[]){const e=r.find(c=>l.camelCase(c.name)==="vIf"),t=r.find(c=>l.camelCase(c.name)==="vFor"),s=r.find(c=>l.camelCase(c.name)==="vShow"),n=r.find(c=>l.camelCase(c.name)==="vBind"),i=r.find(c=>l.camelCase(c.name)==="vHtml"),a=r.filter(c=>l.camelCase(c.name)==="vModel"),o=r.filter(c=>!ie.includes(l.camelCase(c.name)));return{vIf:e,vFor:t,vShow:s,vModels:a,vBind:n,others:o,vHtml:i}}function nt(r,e){return!!e.__parseExpression(r.value)}function it(r,e){return e?w(e)?r.__parseExpression(e):e:"div"}function ot(r,e,t){const s=V(e,t);return s.ref=t.__ref(r,s.ref),s}function V(r,e){return w(r)?e.__parseExpression(r):T(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>V(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=V(n,e),t},{}):r}function at(r,e,t){const s=["passive","capture","once"],n={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((i,a)=>{const o=e[a],c=Z(o.modifiers),u=c.find(g=>s.includes(g)),d="on"+l.upperFirst(a)+(u&&n[u]||""),f=t.__parseFunction(o.handler);return f&&(i[d]=r.withModifiers(f,c)),i},{})}function Z(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function ct(r,e,t,s,n){const{children:i}=e,a=lt(e,s),o=s.$slots?.[a.name];return o?o(t):i?l.isString(i)?r.createTextVNode(i):w(i)?r.createTextVNode(z(s.__parseExpression(i))):Array.isArray(i)?i.map(c=>I(c,s,r,n)):null:null}function lt(r,e){const{props:t}=r,s=t?.name||"default";return{name:w(s)?e.__parseExpression(s):s,params:[]}}function ut(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function pt(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function dt(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
9
9
  ${e.value.value} = v;
10
- }`:"(v) => {}"},n=t.__parseFunction(s),i=Z(w(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=w(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:i.length&&n?r.withModifiers(n,i):n}}function ft(r,e,t,s,n){if(!e)return null;if(l.isString(e))return{default:()=>e};if(w(e))return{default:()=>z(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const i=ht(e),a=o=>!o||!n?{}:n?.id&&Object.keys(o).length?{[`scope_${n.id}`]:o}:{};return Object.entries(i).reduce((o,[c,{nodes:u,params:d}])=>(o[c]=f=>{const g=d.length?l.pick(f??{},d):a(f);return u.map(m=>I(m,t.__clone(g),r,s))},o),{})}return null}function ht(r){const e={default:{params:[],nodes:[]}};for(const t of r){const s=mt(t.slot),n=s.name;e[n]?(e[n].nodes.push(t),e[n].params=e[n].params.concat(s.params)):e[n]={nodes:[t],params:s.params}}return e}function mt(r="default"){return l.isString(r)?{name:r,params:[]}:{params:[],...r}}function gt(r,e,t){const{value:s,iterator:n}=r,{item:i="item",index:a="index"}=n||{};let o=t.__parseExpression(s)||[];return Number.isInteger(o)&&(o=new Array(o).fill(!0).map((c,u)=>u+1)),Array.isArray(o)?o.map((c,u)=>e(t.__clone({[i]:c,[a]:u}))):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const re=S.defineComponent({name:"VtjPageContainer",async setup(){const r=te(),e=ne.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,i=S.ref(Symbol());if(s){Object.assign(e.meta,s.meta||{},{cache:s.cache});const{useTitle:a}=r?.adapter;a&&a(s.title||"VTJ")}return{provider:r,component:n,file:s,query:e.query,meta:e.meta,sid:i,route:e}},render(){const{component:r,query:e,sid:t}=this;return r?S.h(r,{...e,key:t}):S.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),vt=S.defineComponent({name:"VtjStartupContainer",render(){return S.h("div","page not found!")}}),ee=Symbol("Provider");var Me=(r=>(r.Production="production",r.Development="development",r))(Me||{});class Te extends b.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=y.Raw,dependencies:n,materials:i,project:a={},adapter:o={},globals:c={},modules:u={},router:d=null,materialPath:f="./",nodeEnv:g="development"}=e;this.mode=s,this.modules=u,this.service=t,this.router=d,this.materialPath=f,this.nodeEnv=g,n&&(this.dependencies=n),i&&(this.materials=i),Object.assign(this.globals,c),Object.assign(this.adapter,o);const{access:m,request:h}=this.adapter;m&&m.connect({mode:s,router:d,request:h}),a&&s!==y.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:l.request,jsonp:l.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};createMock(e){return async(...t)=>{let s={};if(e)try{s=await e.apply(e,t)}catch(i){l.logger.warn("模拟数据模版异常",i)}return A()?.mock(s)}}async load(e){const t=this.modules[`.vtj/projects/${e.id}.json`]||this.modules[`/src/.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:s=[],meta:n=[]}=this.project,i=window;i&&(i.CKEDITOR_VERSION=void 0),this.mode===y.Raw?await this.loadDependencies(i):await this.loadAssets(i),this.initMock(i),this.apis=Ee(s,n,this.adapter),Q(i),Pe(s,i),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=A(e);t&&t.setup({timeout:"50-500"})}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[s,n]of t)e[s]||(e[s]=this.library[s]=await n())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:s,library:n,components:i,materialPath:a,nodeEnv:o}=this,{libraryExports:c,libraryMap:u,materials:d,materialExports:f,materialMapLibrary:g}=pe(t,a,o==="development");for(const m of c){const h=s[m],p=e[m];if(p)n[m]=p;else if(h)e[m]=n[m]=await h();else{const j=u[m]||[];for(const v of j)U(v)&&await fe(m,l.url.append(v,{v:R})),B(v)&&await l.loadScript(l.url.append(v,{v:R}));n[m]=e[m]}}if(o==="development"){for(const h of d)await l.loadScript(l.url.append(h,{v:R}));const m=this.materials||{};for(const h of f){const p=e[g[h]],j=b.BUILT_IN_COMPONENTS[h];if(j)p&&j.forEach(v=>{i[v]=p[v]});else{const v=m[h]?(await m[h]()).default:e[h];v&&p&&(v.components||[]).forEach(E=>{i[E.name]=de(E,p)})}}}}initRouter(){const{router:e,project:t,options:s,adapter:n}=this;if(!e)return;const i=t?.platform==="uniapp"?"pages":"page",{routeAppendTo:a,pageRouteName:o=i,routeMeta:c}=s,u=a?"":"/",d={path:`${u}${o}/:id`,name:C,component:re},f={path:u,name:F,component:t?.homepage?re:n.startupComponent||vt,meta:c};e.hasRoute(C)&&e.removeRoute(C),e.hasRoute(F)&&e.removeRoute(F),a?(e.addRoute(a,d),e.addRoute(a,f)):(e.addRoute(d),e.addRoute(f))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&ge(n)&&(e.use(n),t[s]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),e.provide(ee,this),e.config.globalProperties.$provider=this,e.config.globalProperties.installed=t,this.mode===y.Design&&(e.config.errorHandler=(s,n,i)=>{const a=n?.$options.name,o=typeof s=="string"?s:s?.message||s?.msg||"未知错误",c=`[ ${a} ] ${o} ${i}`;console.error("[VTJ Error]:",{err:s,instance:n,info:i},s?.stack),this.adapter.notify&&this.adapter.notify(c,"组件渲染错误","error")})}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(s=>s.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},s=(n,i=[])=>{for(const a of i){if(a.id===n)return a;if(a.children&&a.children.length){const o=s(n,a.children);if(o)return o}}};return s(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`]||this.modules[`/src/.vtj/files/${e}.json`];return t?await t():this.service.getFile(e,this.project||void 0).catch(()=>null)}async getDslByUrl(e){const t=this.urlDslCaches[e];return t||(this.adapter.request?this.urlDslCaches[e]=this.adapter.request.send({url:e,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(s=>s.data).catch(()=>null):null)}createDslRenderer(e,t={}){const{library:s,components:n,mode:i,apis:a}=this,o={mode:i,Vue:s.Vue,components:n,libs:s,apis:a,window,...t},c=x({getDsl:async u=>await this.getDsl(u)||null,getDslByUrl:async u=>await this.getDslByUrl(u)||null,options:o});return H({...o,dsl:e,loader:c})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return l.logger.warn(`Can not find file: ${e}`),null;t&&t(s);const n=`.vtj/vue/${e}.vue`,i=this.modules[n]||this.modules[`/src/pages/${e}.vue`];if(i)return(await i())?.default;const a=await this.getDsl(s.id);return a?this.createDslRenderer(a).renderer:(l.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return S.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return S.defineAsyncComponent(async()=>await X(e,window))}}function yt(r){const e=new Te(r);return{provider:e,onReady:s=>e.ready(s)}}function te(r={}){const e=S.inject(ee,null);if(!e)throw new Error("Can not find provider");if(e.nodeEnv==="development"){const{id:t,version:s}=r;t&&s&&(async()=>{const n=await e.getDsl(t);n?.__VERSION__!==s&&e.adapter.notify&&e.adapter.notify(`[ ${n?.name} ] 组件源码版本与运行时版本不一致,请重新发布组件`,"版本不一致","warning")})()}return e}const ke={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},_t=(r,e="/__vtj__/api/:type.json")=>(t,s,n)=>r.send({url:e,method:"post",params:{type:t},query:n,data:{type:t,data:s},settings:ke}),St=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...ke,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function wt(r){return l.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class L{constructor(e=l.request){this.req=e,this.api=_t(e),this.uploader=St(e)}api;pluginCaches={};uploader;async getExtension(){console.log("BaseService.getExtension")}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e,t){return!!await this.api("saveProject",e,{type:t}).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 parseVue(e,t){return await this.api("parseVue",{project:e,...t}).catch(()=>null)}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,s=t.filter(i=>le(i))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=l.request.send({url:s,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(i=>i.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const _=new l.Storage({type:"local",expired:0,prefix:"__VTJ_"});class jt extends L{init(e){const t=new b.ProjectModel(e),s=_.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return _.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new b.ProjectModel(e);return _.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return _.save(`materials_${e.id}`,l.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return _.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=_.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return _.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return _.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=_.get(`history_${e}`);if(t){const n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),_.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=_.get(`history_${e}`),s=new b.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=_.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return _.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{_.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class Fe extends L{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new b.ProjectModel(e),s=this.projects[t.id]||{},n=Object.assign(t.toDsl(),s);return this.projects[n.id]=n,Promise.resolve(n)}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]=l.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 n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new b.HistoryModel(t||{id:e});return Promise.resolve(s)}getHistoryItem(e,t){const s=`${e}_${t}`,n=this.historyItems[s]||{};return Promise.resolve(n)}saveHistoryItem(e,t){const s=`${e}_${t.id}`;return this.historyItems[s]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{const n=`${e}_${s}`;delete this.historyItems[n]}),Promise.resolve(!0)}}let O=null;function Et(){return O||(O=new Fe,O)}class Pt extends L{getFileCaches={};async getExtension(){return await this.api("getExtension",{}).catch(()=>{})}async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e,t){return!!await this.api("saveProject",e,{type:t}).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:l.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 Ie(r,e,t=[]){return t.map(s=>{const{id:n,title:i,icon:a,children:o,hidden:c}=s;return{id:n,title:i,icon:a,hidden:c,url:`${r}/${e}/${n}`,children:o&&o.length?Ie(r,e,o):void 0}})}function Oe(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=Oe(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function bt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=te(),i=ne.useRoute(),a=Se(),o=S.ref(!1),c=S.ref(!1),u=n.project;S.watchEffect(()=>{const{name:g,params:m,meta:h}=i;if(g===C){const p=n.getPage(m.id);o.value=!p?.mask,c.value=!!p?.pure}else if(g===F){const p=n.getHomepage();o.value=!p?.mask,c.value=!!p?.pure}else o.value=!h.mask,c.value=!!h.pure});const d=Ie(e,t,u?.pages),f=u?.config;return{disabled:o,logo:f?.logo,themeSwitchable:f?.themeSwitchable,title:f?.title||u?.description||u?.name||"VTJ App",menus:s?d:Oe(d,a),pure:c}}exports.ACCESS_KEY=W;exports.Access=Y;exports.BUILD_IN_TAGS=ce;exports.BUILT_IN_DIRECTIVES=ie;exports.BaseService=L;exports.CONTEXT_HOST=K;exports.Context=Re;exports.ContextMode=y;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=F;exports.HTML_TAGS=ae;exports.JSCodeToString=qe;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Pt;exports.MemoryService=Fe;exports.NodeEnv=Me;exports.PAGE_ROUTE_NAME=C;exports.Provider=Te;exports.StorageService=jt;exports.VTJ_RENDERER_VERSION=R;exports.adoptedStyleSheets=G;exports.clearLoaderCache=tt;exports.createAccess=Ve;exports.createAdapter=Ke;exports.createAssetScripts=Ue;exports.createAssetsCss=Be;exports.createDataSources=Ce;exports.createLoader=x;exports.createMemoryService=Et;exports.createMetaApi=je;exports.createMock=be;exports.createProvider=yt;exports.createRenderer=H;exports.createSchemaApi=we;exports.createSchemaApis=Ee;exports.createServiceRequest=wt;exports.defaultLoader=Ae;exports.fillBasePath=k;exports.getMock=A;exports.getModifiers=Z;exports.getPlugin=X;exports.getRawComponent=de;exports.isBuiltInTag=ve;exports.isCSSUrl=U;exports.isJSCode=_e;exports.isJSExpression=w;exports.isJSFunction=T;exports.isJSON=le;exports.isJSUrl=B;exports.isNativeTag=ye;exports.isVuePlugin=ge;exports.loadCss=fe;exports.loadCssUrl=he;exports.loadScriptUrl=me;exports.mockApi=$e;exports.mockApis=Pe;exports.mockCleanup=Q;exports.nodeRender=I;exports.parseDeps=pe;exports.parseExpression=M;exports.parseFunction=D;exports.providerKey=ee;exports.removeProdFlag=ue;exports.setupPageSetting=Le;exports.toString=z;exports.useAccess=Se;exports.useMask=bt;exports.useProvider=te;
10
+ }`:"(v) => {}"},n=t.__parseFunction(s),i=Z(w(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=w(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:i.length&&n?r.withModifiers(n,i):n}}function ft(r,e,t,s,n){if(!e)return null;if(l.isString(e))return{default:()=>e};if(w(e))return{default:()=>z(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const i=ht(e),a=o=>!o||!n?{}:n?.id&&Object.keys(o).length?{[`scope_${n.id}`]:o}:{};return Object.entries(i).reduce((o,[c,{nodes:u,params:d}])=>(o[c]=f=>{const g=d.length?l.pick(f??{},d):a(f);return u.map(m=>I(m,t.__clone(g),r,s))},o),{})}return null}function ht(r){const e={default:{params:[],nodes:[]}};for(const t of r){const s=mt(t.slot),n=s.name;e[n]?(e[n].nodes.push(t),e[n].params=e[n].params.concat(s.params)):e[n]={nodes:[t],params:s.params}}return e}function mt(r="default"){return l.isString(r)?{name:r,params:[]}:{params:[],...r}}function gt(r,e,t){const{value:s,iterator:n}=r,{item:i="item",index:a="index"}=n||{};let o=t.__parseExpression(s)||[];return Number.isInteger(o)&&(o=new Array(o).fill(!0).map((c,u)=>u+1)),Array.isArray(o)?o.map((c,u)=>e(t.__clone({[i]:c,[a]:u}))):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const re=S.defineComponent({name:"VtjPageContainer",async setup(){const r=te(),e=ne.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,i=S.ref(Symbol());if(s){Object.assign(e.meta,s.meta||{},{cache:s.cache});const{useTitle:a}=r?.adapter;a&&a(s.title||"VTJ")}return{provider:r,component:n,file:s,query:e.query,meta:e.meta,sid:i,route:e}},render(){const{component:r,query:e,sid:t}=this;return r?S.h(r,{...e,key:t}):S.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),vt=S.defineComponent({name:"VtjStartupContainer",render(){return S.h("div","page not found!")}}),ee=Symbol("Provider");var Me=(r=>(r.Production="production",r.Development="development",r))(Me||{});class Te extends b.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=y.Raw,dependencies:n,materials:i,project:a={},adapter:o={},globals:c={},modules:u={},router:d=null,materialPath:f="./",nodeEnv:g="development"}=e;this.mode=s,this.modules=u,this.service=t,this.router=d,this.materialPath=f,this.nodeEnv=g,n&&(this.dependencies=n),i&&(this.materials=i),Object.assign(this.globals,c),Object.assign(this.adapter,o);const{access:m,request:h}=this.adapter;m&&m.connect({mode:s,router:d,request:h}),a&&s!==y.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:l.request,jsonp:l.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};createMock(e){return async(...t)=>{let s={};if(e)try{s=await e.apply(e,t)}catch(i){l.logger.warn("模拟数据模版异常",i)}return A()?.mock(s)}}async load(e){const t=this.modules[`.vtj/projects/${e.id}.json`]||this.modules[`/src/.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:s=[],meta:n=[]}=this.project,i=window;i&&(i.CKEDITOR_VERSION=void 0),this.mode===y.Raw?await this.loadDependencies(i):await this.loadAssets(i),this.initMock(i),this.apis=Ee(s,n,this.adapter),Q(i),Pe(s,i),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=A(e);t&&t.setup({timeout:"50-500"})}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[s,n]of t)e[s]||(e[s]=this.library[s]=await n())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:s,library:n,components:i,materialPath:a,nodeEnv:o}=this,{libraryExports:c,libraryMap:u,materials:d,materialExports:f,materialMapLibrary:g}=pe(t,a,o==="development");for(const m of c){const h=s[m],p=e[m];if(p)n[m]=p;else if(h)e[m]=n[m]=await h();else{const j=u[m]||[];for(const v of j)U(v)&&await fe(m,l.url.append(v,{v:R})),B(v)&&await l.loadScript(l.url.append(v,{v:R}));n[m]=e[m]}}if(o==="development"){for(const h of d)await l.loadScript(l.url.append(h,{v:R}));const m=this.materials||{};for(const h of f){const p=e[g[h]],j=b.BUILT_IN_COMPONENTS[h];if(j)p&&j.forEach(v=>{i[v]=p[v]});else{const v=m[h]?(await m[h]()).default:e[h];v&&p&&(v.components||[]).forEach(E=>{i[E.name]=de(E,p)})}}}}initRouter(){const{router:e,project:t,options:s,adapter:n}=this;if(!e)return;const i=t?.platform==="uniapp"?"pages":"page",{routeAppendTo:a,pageRouteName:o=i,routeMeta:c}=s,u=a?"":"/",d={path:`${u}${o}/:id`,name:C,component:re},f={path:u,name:F,component:t?.homepage?re:n.startupComponent||vt,meta:c};e.hasRoute(C)&&e.removeRoute(C),e.hasRoute(F)&&e.removeRoute(F),a?(e.addRoute(a,d),e.addRoute(a,f)):(e.addRoute(d),e.addRoute(f))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&ge(n)&&(e.use(n),t[s]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),e.provide(ee,this),e.config.globalProperties.$provider=this,e.config.globalProperties.installed=t,this.mode===y.Design&&(e.config.errorHandler=(s,n,i)=>{const a=n?.$options.name,o=typeof s=="string"?s:s?.message||s?.msg||"未知错误",c=`[ ${a} ] ${o} ${i}`;console.error("[VTJ Error]:",{err:s,instance:n,info:i},s?.stack),this.adapter.notify&&this.adapter.notify(c,"组件渲染错误","error")})}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(s=>s.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},s=(n,i=[])=>{for(const a of i){if(a.id===n)return a;if(a.children&&a.children.length){const o=s(n,a.children);if(o)return o}}};return s(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`]||this.modules[`/src/.vtj/files/${e}.json`];return t?await t():this.service.getFile(e,this.project||void 0).catch(()=>null)}async getDslByUrl(e){const t=this.urlDslCaches[e];return t||(this.adapter.request?this.urlDslCaches[e]=this.adapter.request.send({url:e,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(s=>s.data).catch(()=>null):null)}createDslRenderer(e,t={}){const{library:s,components:n,mode:i,apis:a}=this,o={mode:i,Vue:s.Vue,components:n,libs:s,apis:a,window,...t},c=x({getDsl:async u=>await this.getDsl(u)||null,getDslByUrl:async u=>await this.getDslByUrl(u)||null,options:o});return H({...o,dsl:e,loader:c})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return l.logger.warn(`Can not find file: ${e}`),null;t&&t(s);const n=`.vtj/vue/${e}.vue`,i=this.modules[n]||this.modules[`/src/pages/${e}.vue`];if(i)return(await i())?.default;const a=await this.getDsl(s.id);return a?this.createDslRenderer(a).renderer:(l.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return S.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return S.defineAsyncComponent(async()=>await X(e,window))}}function yt(r){const e=new Te(r);return{provider:e,onReady:s=>e.ready(s)}}function te(r={}){const e=S.inject(ee,null);if(!e)throw new Error("Can not find provider");if(e.nodeEnv==="development"){const{id:t,version:s}=r;t&&s&&(async()=>{const n=await e.getDsl(t);n?.__VERSION__!==s&&e.adapter.notify&&e.adapter.notify(`[ ${n?.name} ] 组件源码版本与运行时版本不一致,请重新发布组件`,"版本不一致","warning")})()}return e}const ke={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},_t=(r,e="/__vtj__/api/:type.json")=>(t,s,n)=>r.send({url:e,method:"post",params:{type:t},query:n,data:{type:t,data:s},settings:ke}),St=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...ke,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function wt(r){return l.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class L{constructor(e=l.request){this.req=e,this.api=_t(e),this.uploader=St(e)}api;pluginCaches={};uploader;async getExtension(){console.log("BaseService.getExtension")}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e,t){return!!await this.api("saveProject",e,{type:t}).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 parseVue(e,t){return await this.api("parseVue",{project:e,...t})}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,s=t.filter(i=>le(i))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=l.request.send({url:s,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(i=>i.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const _=new l.Storage({type:"local",expired:0,prefix:"__VTJ_"});class jt extends L{init(e){const t=new b.ProjectModel(e),s=_.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return _.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new b.ProjectModel(e);return _.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return _.save(`materials_${e.id}`,l.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return _.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=_.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return _.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return _.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=_.get(`history_${e}`);if(t){const n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),_.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=_.get(`history_${e}`),s=new b.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=_.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return _.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{_.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class Fe extends L{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new b.ProjectModel(e),s=this.projects[t.id]||{},n=Object.assign(t.toDsl(),s);return this.projects[n.id]=n,Promise.resolve(n)}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]=l.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 n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new b.HistoryModel(t||{id:e});return Promise.resolve(s)}getHistoryItem(e,t){const s=`${e}_${t}`,n=this.historyItems[s]||{};return Promise.resolve(n)}saveHistoryItem(e,t){const s=`${e}_${t.id}`;return this.historyItems[s]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{const n=`${e}_${s}`;delete this.historyItems[n]}),Promise.resolve(!0)}}let O=null;function Et(){return O||(O=new Fe,O)}class Pt extends L{getFileCaches={};async getExtension(){return await this.api("getExtension",{}).catch(()=>{})}async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e,t){return!!await this.api("saveProject",e,{type:t}).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:l.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 Ie(r,e,t=[]){return t.map(s=>{const{id:n,title:i,icon:a,children:o,hidden:c}=s;return{id:n,title:i,icon:a,hidden:c,url:`${r}/${e}/${n}`,children:o&&o.length?Ie(r,e,o):void 0}})}function Oe(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=Oe(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function bt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=te(),i=ne.useRoute(),a=Se(),o=S.ref(!1),c=S.ref(!1),u=n.project;S.watchEffect(()=>{const{name:g,params:m,meta:h}=i;if(g===C){const p=n.getPage(m.id);o.value=!p?.mask,c.value=!!p?.pure}else if(g===F){const p=n.getHomepage();o.value=!p?.mask,c.value=!!p?.pure}else o.value=!h.mask,c.value=!!h.pure});const d=Ie(e,t,u?.pages),f=u?.config;return{disabled:o,logo:f?.logo,themeSwitchable:f?.themeSwitchable,title:f?.title||u?.description||u?.name||"VTJ App",menus:s?d:Oe(d,a),pure:c}}exports.ACCESS_KEY=W;exports.Access=Y;exports.BUILD_IN_TAGS=ce;exports.BUILT_IN_DIRECTIVES=ie;exports.BaseService=L;exports.CONTEXT_HOST=K;exports.Context=Re;exports.ContextMode=y;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=F;exports.HTML_TAGS=ae;exports.JSCodeToString=qe;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Pt;exports.MemoryService=Fe;exports.NodeEnv=Me;exports.PAGE_ROUTE_NAME=C;exports.Provider=Te;exports.StorageService=jt;exports.VTJ_RENDERER_VERSION=R;exports.adoptedStyleSheets=G;exports.clearLoaderCache=tt;exports.createAccess=Ve;exports.createAdapter=Ke;exports.createAssetScripts=Ue;exports.createAssetsCss=Be;exports.createDataSources=Ce;exports.createLoader=x;exports.createMemoryService=Et;exports.createMetaApi=je;exports.createMock=be;exports.createProvider=yt;exports.createRenderer=H;exports.createSchemaApi=we;exports.createSchemaApis=Ee;exports.createServiceRequest=wt;exports.defaultLoader=Ae;exports.fillBasePath=k;exports.getMock=A;exports.getModifiers=Z;exports.getPlugin=X;exports.getRawComponent=de;exports.isBuiltInTag=ve;exports.isCSSUrl=U;exports.isJSCode=_e;exports.isJSExpression=w;exports.isJSFunction=T;exports.isJSON=le;exports.isJSUrl=B;exports.isNativeTag=ye;exports.isVuePlugin=ge;exports.loadCss=fe;exports.loadCssUrl=he;exports.loadScriptUrl=me;exports.mockApi=$e;exports.mockApis=Pe;exports.mockCleanup=Q;exports.nodeRender=I;exports.parseDeps=pe;exports.parseExpression=M;exports.parseFunction=D;exports.providerKey=ee;exports.removeProdFlag=ue;exports.setupPageSetting=Le;exports.toString=z;exports.useAccess=Se;exports.useMask=bt;exports.useProvider=te;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { Base as Fe, BUILT_IN_COMPONENTS as Ae, ProjectModel as D, HistoryModel as le } from "@vtj/core";
2
- import { isUrl as Me, url as P, dedupArray as Ie, isString as j, isFunction as q, logger as R, storage as B, cookie as U, toArray as se, unRSA as re, delay as ue, createRequest as pe, jsonp as de, merge as He, pathToRegexp as Te, pathToRegexpMatch as De, formDataToJson as xe, cloneDeep as ne, camelCase as b, upperFirst as Oe, pick as Ne, request as J, loadScript as ie, Storage as Be, mapToObject as Q } from "@vtj/utils";
1
+ import { Base as Fe, BUILT_IN_COMPONENTS as Ae, ProjectModel as D, HistoryModel as ue } from "@vtj/core";
2
+ import { isUrl as Me, url as P, dedupArray as Ie, isString as j, isFunction as q, logger as R, storage as B, cookie as U, toArray as se, unRSA as re, delay as le, createRequest as pe, jsonp as de, merge as He, pathToRegexp as Te, pathToRegexpMatch as De, formDataToJson as xe, cloneDeep as ne, camelCase as b, upperFirst as Oe, pick as Ne, request as J, loadScript as ie, Storage as Be, mapToObject as Q } from "@vtj/utils";
3
3
  import * as O from "vue";
4
4
  import { inject as fe, defineComponent as he, h as K, ref as V, defineAsyncComponent as oe, watchEffect as Ue } from "vue";
5
5
  import { useRoute as me } from "vue-router";
@@ -7,10 +7,10 @@ import { useRoute as me } from "vue-router";
7
7
  * Copyright (c) 2025, VTJ.PRO All rights reserved.
8
8
  * @name @vtj/renderer
9
9
  * @author CHC chenhuachun1549@dingtalk.com
10
- * @version 0.12.0-alpha.1
10
+ * @version 0.12.0-alpha.2
11
11
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
12
12
  */
13
- const C = "0.12.0-alpha.1";
13
+ const C = "0.12.0-alpha.2";
14
14
  var y = /* @__PURE__ */ ((r) => (r.Runtime = "Runtime", r.Design = "Design", r.Raw = "Raw", r.VNode = "VNode", r))(y || {});
15
15
  const ae = [
16
16
  "$el",
@@ -82,12 +82,12 @@ function ze(r, e = !1) {
82
82
  return e && r.endsWith(".prod.js") ? r.replace(".prod.js", ".js") : r;
83
83
  }
84
84
  function We(r, e, t = !1) {
85
- const s = r.filter((m) => !!m.enabled), n = [], i = [], a = [], o = [], c = {}, l = {}, p = [], d = {};
85
+ const s = r.filter((m) => !!m.enabled), n = [], i = [], a = [], o = [], c = {}, u = {}, p = [], d = {};
86
86
  return s.forEach(
87
- ({ urls: m, assetsUrl: h, library: f, assetsLibrary: u, localeLibrary: w }) => {
87
+ ({ urls: m, assetsUrl: h, library: f, assetsLibrary: l, localeLibrary: w }) => {
88
88
  m?.forEach((g) => {
89
89
  Z(g) && n.push(ze(g, t)), X(g) && i.push(g);
90
- }), f && (o.push(f), c[f] = I(m || [], e), w && (l[f] = w)), h && a.push(h), u && p.push(u), f && u && (d[u] = f);
90
+ }), f && (o.push(f), c[f] = I(m || [], e), w && (u[f] = w)), h && a.push(h), l && p.push(l), f && l && (d[l] = f);
91
91
  }
92
92
  ), {
93
93
  scripts: I(n, e),
@@ -97,7 +97,7 @@ function We(r, e, t = !1) {
97
97
  materialExports: Ie(p),
98
98
  materialMapLibrary: d,
99
99
  libraryMap: c,
100
- libraryLocaleMap: l
100
+ libraryLocaleMap: u
101
101
  };
102
102
  }
103
103
  function Ge(r, e) {
@@ -139,12 +139,12 @@ async function Xe(r, e, t = window) {
139
139
  let i = t[e];
140
140
  return i ? i.default || i : new Promise((a, o) => {
141
141
  for (const c of r) {
142
- const l = s.createElement("script");
143
- l.src = c, l.onload = () => {
142
+ const u = s.createElement("script");
143
+ u.src = c, u.onload = () => {
144
144
  i = t[e], i ? a(i.default || i) : o(null);
145
- }, l.onerror = (p) => {
145
+ }, u.onerror = (p) => {
146
146
  o(p);
147
- }, n.appendChild(l);
147
+ }, n.appendChild(u);
148
148
  }
149
149
  });
150
150
  }
@@ -357,7 +357,7 @@ class _e {
357
357
  }
358
358
  async showTip(e) {
359
359
  const { alert: t } = this.options;
360
- return t ? (await ue(150), await t(e, {
360
+ return t ? (await le(150), await t(e, {
361
361
  title: "提示",
362
362
  type: "warning"
363
363
  }).catch(() => !1)) : !1;
@@ -460,9 +460,9 @@ function at(r = [], e = [], t) {
460
460
  }
461
461
  async function ct(r = [], e = window) {
462
462
  const t = F(e);
463
- t && (we(e), r.forEach((s) => ut(t, s)));
463
+ t && (we(e), r.forEach((s) => lt(t, s)));
464
464
  }
465
- function lt(r, e = window) {
465
+ function ut(r, e = window) {
466
466
  const t = M(r.mockTemplate) && r.mockTemplate.value ? z(r.mockTemplate, {}, !0) : void 0, s = F(e);
467
467
  return async (...n) => {
468
468
  let i = {};
@@ -475,14 +475,14 @@ function lt(r, e = window) {
475
475
  return s?.mock(i);
476
476
  };
477
477
  }
478
- function ut(r, e) {
478
+ function lt(r, e) {
479
479
  if (!e.mock) return;
480
480
  const { url: t, mockTemplate: s } = e;
481
481
  if (t && s) {
482
482
  const n = Te(`${t}(.*)`), i = De(t, { decode: decodeURIComponent }), a = A(s, {}, !0);
483
483
  r.mock(n, (o) => {
484
- const c = P.parse(o.url) || {}, l = o.body instanceof FormData ? xe(o.body) : o.body, p = i(o.url)?.params;
485
- return Object.assign(o, { data: l, params: c, query: p }), r.mock(a(o));
484
+ const c = P.parse(o.url) || {}, u = o.body instanceof FormData ? xe(o.body) : o.body, p = i(o.url)?.params;
485
+ return Object.assign(o, { data: u, params: c, query: p }), r.mock(a(o));
486
486
  });
487
487
  }
488
488
  }
@@ -564,7 +564,7 @@ class pt {
564
564
  __ref(e = null, t) {
565
565
  if (this.__mode !== y.VNode)
566
566
  return e && e !== this.__id && (this.__contextRefs[e] = this), async (s) => {
567
- await ue(0);
567
+ await le(0);
568
568
  let n = s?.$vtjEl || s?.$el || s?._?.vnode?.el || s;
569
569
  if (!n) {
570
570
  typeof t == "string" && (delete this.$refs[t], e && delete this.__refs[e]);
@@ -601,32 +601,32 @@ function W(r) {
601
601
  $components: s,
602
602
  $libs: n,
603
603
  $apis: i
604
- }, l = new pt({
604
+ }, u = new pt({
605
605
  mode: t,
606
606
  dsl: o.value,
607
607
  attrs: c
608
608
  }), p = e.defineComponent({
609
609
  name: o.value.name,
610
610
  props: {
611
- ...ft(o.value.props ?? [], l)
611
+ ...ft(o.value.props ?? [], u)
612
612
  },
613
613
  setup(d) {
614
- l.$props = d, l.props = d, o.value.id && ve(
614
+ u.$props = d, u.props = d, o.value.id && ve(
615
615
  r.window || window,
616
616
  o.value.id,
617
617
  o.value.css || ""
618
- ), l.state = ht(e, o.value.state ?? {}, l);
619
- const m = mt(e, o.value.computed ?? {}, l), h = gt(o.value.methods ?? {}, l), f = vt(e, o.value.inject, l), u = yt(
618
+ ), u.state = ht(e, o.value.state ?? {}, u);
619
+ const m = mt(e, o.value.computed ?? {}, u), h = gt(o.value.methods ?? {}, u), f = vt(e, o.value.inject, u), l = yt(
620
620
  o.value.dataSources || {},
621
- l
621
+ u
622
622
  ), w = {
623
623
  ...f,
624
624
  ...m,
625
625
  ...h,
626
- ...u
626
+ ...l
627
627
  };
628
- return l.setup(w, e), _t(e, o.value.watch ?? [], l), {
629
- vtj: l
628
+ return u.setup(w, e), _t(e, o.value.watch ?? [], u), {
629
+ vtj: u
630
630
  };
631
631
  },
632
632
  emits: dt(o.value.emits),
@@ -634,13 +634,13 @@ function W(r) {
634
634
  render() {
635
635
  if (!o.value.nodes) return null;
636
636
  const d = o.value.nodes || [];
637
- return d.length === 1 ? x(d[0], l, e, a) : d.map((m) => x(m, l, e, a));
637
+ return d.length === 1 ? x(d[0], u, e, a) : d.map((m) => x(m, u, e, a));
638
638
  },
639
- ...wt(o.value.lifeCycles ?? {}, l)
639
+ ...wt(o.value.lifeCycles ?? {}, u)
640
640
  });
641
641
  return {
642
642
  renderer: e.markRaw(p),
643
- context: l
643
+ context: u
644
644
  };
645
645
  }
646
646
  function dt(r = []) {
@@ -703,7 +703,7 @@ function yt(r, e) {
703
703
  (t, s) => {
704
704
  const n = r[s];
705
705
  if (n.type === "mock")
706
- t[s] = lt(n);
706
+ t[s] = ut(n);
707
707
  else if (n.ref) {
708
708
  const i = e.$apis[n.ref], a = M(n.transform) ? n.transform.value ? e.__parseFunction(n.transform) : void 0 : n.transform;
709
709
  t[s] = async (...o) => {
@@ -789,34 +789,34 @@ function es() {
789
789
  }
790
790
  function x(r, e, t = O, s = St) {
791
791
  if (!r || !r.name || r.invisible) return null;
792
- const n = t.getCurrentInstance()?.appContext, { id: i = null, directives: a = [] } = r, { vIf: o, vFor: c, vShow: l, vModels: p, vBind: d, vHtml: m, others: h } = jt(a);
792
+ const n = t.getCurrentInstance()?.appContext, { id: i = null, directives: a = [] } = r, { vIf: o, vFor: c, vShow: u, vModels: p, vBind: d, vHtml: m, others: h } = jt(a);
793
793
  if (o && !bt(o, e))
794
794
  return null;
795
- const f = (u) => {
796
- const w = u.$components, g = (() => {
795
+ const f = (l) => {
796
+ const w = l.$components, g = (() => {
797
797
  if (r.name === "component")
798
- return Et(u, r.props?.is);
798
+ return Et(l, r.props?.is);
799
799
  if (r.name === "slot") return r.name;
800
800
  const $ = s(r.name, r.from, t);
801
801
  return j($) ? et($) || tt($) ? $ : w[$] ?? n?.app?.component($) ?? $ : $;
802
- })(), S = Pt(i, r.props ?? {}, u), Ce = Rt(t, r.events ?? {}, u);
802
+ })(), S = Pt(i, r.props ?? {}, l), Ce = Rt(t, r.events ?? {}, l);
803
803
  if (r.name === "slot")
804
- return Ct(t, r, S, u, s);
805
- d && Object.assign(S, u.__parseExpression(d.value)), l && (S.style = Object.assign(
804
+ return Ct(t, r, S, l, s);
805
+ d && Object.assign(S, l.__parseExpression(d.value)), u && (S.style = Object.assign(
806
806
  S.style ?? {},
807
- Ft(l, u)
808
- )), m && Object.assign(S, At(m, u)), p.forEach(($) => {
809
- Object.assign(S, Mt(t, $, u));
807
+ Ft(u, l)
808
+ )), m && Object.assign(S, At(m, l)), p.forEach(($) => {
809
+ Object.assign(S, Mt(t, $, l));
810
810
  });
811
811
  const ke = It(
812
812
  t,
813
813
  r.children ?? [],
814
- u,
814
+ l,
815
815
  s,
816
816
  r
817
817
  );
818
818
  let N = t.createVNode(g, { ...S, ...Ce }, ke);
819
- const te = n ? $t(n, h, u) : [];
819
+ const te = n ? $t(n, h, l) : [];
820
820
  return te.length && (N = t.withDirectives(N, te)), N;
821
821
  };
822
822
  return c ? Dt(c, f, e) : f(e);
@@ -873,7 +873,7 @@ function Rt(r, e, t) {
873
873
  };
874
874
  return Object.keys(e || {}).reduce(
875
875
  (i, a) => {
876
- const o = e[a], c = $e(o.modifiers), l = c.find((m) => s.includes(m)), p = "on" + Oe(a) + (l && n[l] || ""), d = t.__parseFunction(o.handler);
876
+ const o = e[a], c = $e(o.modifiers), u = c.find((m) => s.includes(m)), p = "on" + Oe(a) + (u && n[u] || ""), d = t.__parseFunction(o.handler);
877
877
  return d && (i[p] = r.withModifiers(d, c)), i;
878
878
  },
879
879
  {}
@@ -934,9 +934,9 @@ function It(r, e, t, s, n) {
934
934
  const i = Ht(e), a = (o) => !o || !n ? {} : n?.id && Object.keys(o).length ? {
935
935
  [`scope_${n.id}`]: o
936
936
  } : {};
937
- return Object.entries(i).reduce((o, [c, { nodes: l, params: p }]) => (o[c] = (d) => {
937
+ return Object.entries(i).reduce((o, [c, { nodes: u, params: p }]) => (o[c] = (d) => {
938
938
  const m = p.length ? Ne(d ?? {}, p) : a(d);
939
- return l.map(
939
+ return u.map(
940
940
  (h) => x(h, t.__clone(m), r, s)
941
941
  );
942
942
  }, o), {});
@@ -965,7 +965,7 @@ function Tt(r = "default") {
965
965
  function Dt(r, e, t) {
966
966
  const { value: s, iterator: n } = r, { item: i = "item", index: a = "index" } = n || {};
967
967
  let o = t.__parseExpression(s) || [];
968
- return Number.isInteger(o) && (o = new Array(o).fill(!0).map((c, l) => l + 1)), Array.isArray(o) ? o.map((c, l) => e(t.__clone({ [i]: c, [a]: l }))) : (console.warn("[vForRender]:", `${s?.value} is not a Arrary`), []);
968
+ return Number.isInteger(o) && (o = new Array(o).fill(!0).map((c, u) => u + 1)), Array.isArray(o) ? o.map((c, u) => e(t.__clone({ [i]: c, [a]: u }))) : (console.warn("[vForRender]:", `${s?.value} is not a Arrary`), []);
969
969
  }
970
970
  const ce = he({
971
971
  name: "VtjPageContainer",
@@ -1011,13 +1011,13 @@ class Nt extends Fe {
1011
1011
  project: a = {},
1012
1012
  adapter: o = {},
1013
1013
  globals: c = {},
1014
- modules: l = {},
1014
+ modules: u = {},
1015
1015
  router: p = null,
1016
1016
  materialPath: d = "./",
1017
1017
  nodeEnv: m = "development"
1018
1018
  /* Development */
1019
1019
  } = e;
1020
- this.mode = s, this.modules = l, this.service = t, this.router = p, this.materialPath = d, this.nodeEnv = m, n && (this.dependencies = n), i && (this.materials = i), Object.assign(this.globals, c), Object.assign(this.adapter, o);
1020
+ this.mode = s, this.modules = u, this.service = t, this.router = p, this.materialPath = d, this.nodeEnv = m, n && (this.dependencies = n), i && (this.materials = i), Object.assign(this.globals, c), Object.assign(this.adapter, o);
1021
1021
  const { access: h, request: f } = this.adapter;
1022
1022
  h && h.connect({ mode: s, router: p, request: f }), a && s !== y.Design ? this.load(a) : this.project = a;
1023
1023
  }
@@ -1069,7 +1069,7 @@ class Nt extends Fe {
1069
1069
  async loadAssets(e) {
1070
1070
  const { dependencies: t = [] } = this.project, { dependencies: s, library: n, components: i, materialPath: a, nodeEnv: o } = this, {
1071
1071
  libraryExports: c,
1072
- libraryMap: l,
1072
+ libraryMap: u,
1073
1073
  materials: p,
1074
1074
  materialExports: d,
1075
1075
  materialMapLibrary: m
@@ -1080,13 +1080,13 @@ class Nt extends Fe {
1080
1080
  /* Development */
1081
1081
  );
1082
1082
  for (const h of c) {
1083
- const f = s[h], u = e[h];
1084
- if (u)
1085
- n[h] = u;
1083
+ const f = s[h], l = e[h];
1084
+ if (l)
1085
+ n[h] = l;
1086
1086
  else if (f)
1087
1087
  e[h] = n[h] = await f();
1088
1088
  else {
1089
- const w = l[h] || [];
1089
+ const w = u[h] || [];
1090
1090
  for (const g of w)
1091
1091
  X(g) && await Ye(h, P.append(g, { v: C })), Z(g) && await ie(P.append(g, { v: C }));
1092
1092
  n[h] = e[h];
@@ -1097,15 +1097,15 @@ class Nt extends Fe {
1097
1097
  await ie(P.append(f, { v: C }));
1098
1098
  const h = this.materials || {};
1099
1099
  for (const f of d) {
1100
- const u = e[m[f]], w = Ae[f];
1100
+ const l = e[m[f]], w = Ae[f];
1101
1101
  if (w)
1102
- u && w.forEach((g) => {
1103
- i[g] = u[g];
1102
+ l && w.forEach((g) => {
1103
+ i[g] = l[g];
1104
1104
  });
1105
1105
  else {
1106
1106
  const g = h[f] ? (await h[f]()).default : e[f];
1107
- g && u && (g.components || []).forEach((S) => {
1108
- i[S.name] = Ge(S, u);
1107
+ g && l && (g.components || []).forEach((S) => {
1108
+ i[S.name] = Ge(S, l);
1109
1109
  });
1110
1110
  }
1111
1111
  }
@@ -1118,12 +1118,12 @@ class Nt extends Fe {
1118
1118
  routeAppendTo: a,
1119
1119
  pageRouteName: o = i,
1120
1120
  routeMeta: c
1121
- } = s, l = a ? "" : "/", p = {
1122
- path: `${l}${o}/:id`,
1121
+ } = s, u = a ? "" : "/", p = {
1122
+ path: `${u}${o}/:id`,
1123
1123
  name: k,
1124
1124
  component: ce
1125
1125
  }, d = {
1126
- path: l,
1126
+ path: u,
1127
1127
  name: T,
1128
1128
  component: t?.homepage ? ce : n.startupComponent || xt,
1129
1129
  meta: c
@@ -1194,8 +1194,8 @@ class Nt extends Fe {
1194
1194
  window,
1195
1195
  ...t
1196
1196
  }, c = G({
1197
- getDsl: async (l) => await this.getDsl(l) || null,
1198
- getDslByUrl: async (l) => await this.getDslByUrl(l) || null,
1197
+ getDsl: async (u) => await this.getDsl(u) || null,
1198
+ getDslByUrl: async (u) => await this.getDslByUrl(u) || null,
1199
1199
  options: o
1200
1200
  });
1201
1201
  return W({
@@ -1354,7 +1354,7 @@ class ee {
1354
1354
  return await this.api("parseVue", {
1355
1355
  project: e,
1356
1356
  ...t
1357
- }).catch(() => null);
1357
+ });
1358
1358
  }
1359
1359
  async createRawPage(e) {
1360
1360
  return await this.api("createRawPage", e).catch(() => "");
@@ -1432,7 +1432,7 @@ class rs extends ee {
1432
1432
  return Promise.resolve(!0);
1433
1433
  }
1434
1434
  getHistory(e) {
1435
- const t = v.get(`history_${e}`), s = new le(t || { id: e });
1435
+ const t = v.get(`history_${e}`), s = new ue(t || { id: e });
1436
1436
  return Promise.resolve(s.toDsl());
1437
1437
  }
1438
1438
  getHistoryItem(e, t) {
@@ -1487,7 +1487,7 @@ class Lt extends ee {
1487
1487
  return Promise.resolve(!0);
1488
1488
  }
1489
1489
  getHistory(e) {
1490
- const t = this.histories[e], s = new le(t || { id: e });
1490
+ const t = this.histories[e], s = new ue(t || { id: e });
1491
1491
  return Promise.resolve(s);
1492
1492
  }
1493
1493
  getHistoryItem(e, t) {
@@ -1595,28 +1595,28 @@ function os(r) {
1595
1595
  menuPathPrefix: e = "",
1596
1596
  pageRouteName: t = "page",
1597
1597
  disableMenusFilter: s = !1
1598
- } = r || {}, n = be(), i = me(), a = nt(), o = V(!1), c = V(!1), l = n.project;
1598
+ } = r || {}, n = be(), i = me(), a = nt(), o = V(!1), c = V(!1), u = n.project;
1599
1599
  Ue(() => {
1600
1600
  const { name: m, params: h, meta: f } = i;
1601
1601
  if (m === k) {
1602
- const u = n.getPage(h.id);
1603
- o.value = !u?.mask, c.value = !!u?.pure;
1602
+ const l = n.getPage(h.id);
1603
+ o.value = !l?.mask, c.value = !!l?.pure;
1604
1604
  } else if (m === T) {
1605
- const u = n.getHomepage();
1606
- o.value = !u?.mask, c.value = !!u?.pure;
1605
+ const l = n.getHomepage();
1606
+ o.value = !l?.mask, c.value = !!l?.pure;
1607
1607
  } else
1608
1608
  o.value = !f.mask, c.value = !!f.pure;
1609
1609
  });
1610
1610
  const p = Pe(
1611
1611
  e,
1612
1612
  t,
1613
- l?.pages
1614
- ), d = l?.config;
1613
+ u?.pages
1614
+ ), d = u?.config;
1615
1615
  return {
1616
1616
  disabled: o,
1617
1617
  logo: d?.logo,
1618
1618
  themeSwitchable: d?.themeSwitchable,
1619
- title: d?.title || l?.description || l?.name || "VTJ App",
1619
+ title: d?.title || u?.description || u?.name || "VTJ App",
1620
1620
  menus: s ? p : Re(p, a),
1621
1621
  pure: c
1622
1622
  };
@@ -1652,7 +1652,7 @@ export {
1652
1652
  G as createLoader,
1653
1653
  ns as createMemoryService,
1654
1654
  ot as createMetaApi,
1655
- lt as createMock,
1655
+ ut as createMock,
1656
1656
  ts as createProvider,
1657
1657
  W as createRenderer,
1658
1658
  it as createSchemaApi,
@@ -1676,7 +1676,7 @@ export {
1676
1676
  Ye as loadCss,
1677
1677
  Qe as loadCssUrl,
1678
1678
  Xe as loadScriptUrl,
1679
- ut as mockApi,
1679
+ lt as mockApi,
1680
1680
  ct as mockApis,
1681
1681
  we as mockCleanup,
1682
1682
  x as nodeRender,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vtj/renderer",
3
3
  "private": false,
4
- "version": "0.12.0-alpha.1",
4
+ "version": "0.12.0-alpha.2",
5
5
  "type": "module",
6
6
  "keywords": [
7
7
  "低代码引擎",
@@ -21,15 +21,15 @@
21
21
  "author": "chenhuachun",
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
- "@vtj/core": "~0.12.0-alpha.1",
25
- "@vtj/utils": "~0.12.0-alpha.1"
24
+ "@vtj/core": "~0.12.0-alpha.2",
25
+ "@vtj/utils": "~0.12.0-alpha.2"
26
26
  },
27
27
  "devDependencies": {
28
28
  "vue": "~3.5.5",
29
29
  "vue-router": "~4.5.0",
30
30
  "@vtj/cli": "~0.12.0-alpha.1",
31
- "@vtj/ui": "~0.12.0-alpha.1",
32
- "@vtj/icons": "~0.12.0-alpha.1"
31
+ "@vtj/icons": "~0.12.0-alpha.2",
32
+ "@vtj/ui": "~0.12.0-alpha.2"
33
33
  },
34
34
  "exports": {
35
35
  ".": {
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025, VTJ.PRO All rights reserved.
3
3
  * @name @vtj/renderer
4
4
  * @author CHC chenhuachun1549@dingtalk.com
5
- * @version 0.12.0-alpha.0
5
+ * @version 0.12.0-alpha.1
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
7
  */
8
- export declare const version = "0.12.0-alpha.0";
8
+ export declare const version = "0.12.0-alpha.1";