@vtj/renderer 0.12.28 → 0.12.30

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.28
5
+ * @version 0.12.30
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
- */const M="0.12.28";var y=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(y||{});const z=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ke=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],le=["vIf","vElseIf","vElse","vShow","vModel","vFor","vBind","vHtml"],ue={String,Number,Boolean,Array,Object,Function,Date},T="VtjPage",D="VtjHomepage",pe="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(","),de="component,slot".split(",");function O(r,e){return r.map(t=>u.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function H(r){return/\.css$/.test(r)}function x(r){return/\.js$/.test(r)}function fe(r){return/\.json$/.test(r)}function Ve(r){return r.map(e=>`<script src="${u.url.append(e,{v:M})}"><\/script>`).join("")}function ze(r=[]){return r.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:M})}" />`).join("")}function he(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function me(r,e,t=!1){const s=r.filter(m=>!!m.enabled),n=[],i=[],a=[],o=[],c={},l={},p=[],d={};return s.forEach(({urls:m,assetsUrl:h,library:f,assetsLibrary:g,localeLibrary:_})=>{m?.forEach(v=>{x(v)&&n.push(he(v,t)),H(v)&&i.push(v)}),f&&(o.push(f),c[f]=O(m||[],e),_&&(l[f]=_)),h&&a.push(h),g&&p.push(g),f&&g&&(d[g]=f)}),{scripts:O(n,e),css:O(i,e),materials:O(a,e),libraryExports:o,materialExports:u.dedupArray(p),materialMapLibrary:d,libraryMap:c,libraryLocaleMap:l}}function ge(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function ve(r=[]){const e=r.filter(s=>H(s)),t=r.filter(s=>x(s));return{css:e,js:t}}function Ge(r,e){const t=/(@(keyframes|media)\s*([^{]*)){([\s\S]*?}\s*})/g,s=[];let o=r.replace(t,(c,l,p,d,m)=>(s.push({type:p,name:d.trim(),conditions:d,content:m}),"/* AT_RULE_PLACEHOLDER */")).replace(/::v-deep\(/g,":deep(").replace(/(\s*)>>>(\s*)/g,"$1:deep($2)").replace(/([\w-.:\s[\]>+~]+?):deep\(([^)]+)\)/g,(c,l,p)=>`${l.replace(/(\s*)$/,`[${e}]$1`)} ${p}`).replace(/([^{}]+)(?=\s*{)/g,c=>c.split(",").map(l=>{const p=l.trim();return p.includes(`[${e}]`)?p:p.replace(/(.*?)((?::[^:\s(]+(?:\([^)]*\))?)*)(\s*)$/,(d,m,h,f)=>`${m}[${e}]${h}${f}`)}).join(", "));return s.forEach(({type:c,conditions:l,content:p})=>{let d=p;c==="media"&&(d=d.replace(/([^{}]+)(?=\s*{)/g,m=>m.split(",").map(h=>{const f=h.trim();return f.includes(`[${e}]`)?f:f.replace(/(.*?)((?::[^:\s(]+(?:\([^)]*\))?)*)(\s*)$/,(g,_,v,P)=>`${_}[${e}]${v}${P}`)}).join(", "))),o=o.replace("/* AT_RULE_PLACEHOLDER */",`@${c} ${l}{${d}}`)}),o}function W(r){return u.isString(r)?r:JSON.stringify(r)}function Y(r,e,t,s=!1){const n=r.CSSStyleSheet,i=s?`data-v-${e}`:e,a=s?Ge(t,i):t;if(n.prototype.replaceSync){const o=new n;o.id=e,o.replaceSync(a);const c=r.document,l=c.adoptedStyleSheets,p=Array.from(l).filter(d=>d.id!==e);c.adoptedStyleSheets=[...p,o]}else{const o=r.document;let c=o.getElementById(e);c?c.innerHTML=a:(c=o.createElement("style"),c.id=e,c.innerHTML=a,o.head.appendChild(c))}}async function ye(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&Y(window,r,t)}function Q(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 X(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 l=s.createElement("script");l.src=c,l.onload=()=>{i=t[e],i?a(i.default||i):o(null)},l.onerror=p=>{o(p)},n.appendChild(l)}})}function _e(r){return u.isFunction(r)||u.isFunction(r?.install)}function Se(r){return de.includes(r)}function we(r){return pe.includes(r)}function k(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function We(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 F(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 M="0.12.30";var y=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(y||{});const z=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ke=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],le=["vIf","vElseIf","vElse","vShow","vModel","vFor","vBind","vHtml"],ue={String,Number,Boolean,Array,Object,Function,Date},T="VtjPage",D="VtjHomepage",pe="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(","),de="component,slot".split(",");function O(r,e){return r.map(t=>u.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function H(r){return/\.css$/.test(r)}function x(r){return/\.js$/.test(r)}function fe(r){return/\.json$/.test(r)}function Ve(r){return r.map(e=>`<script src="${u.url.append(e,{v:M})}"><\/script>`).join("")}function ze(r=[]){return r.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:M})}" />`).join("")}function he(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function me(r,e,t=!1){const s=r.filter(m=>!!m.enabled),n=[],i=[],a=[],o=[],c={},l={},p=[],d={};return s.forEach(({urls:m,assetsUrl:h,library:f,assetsLibrary:g,localeLibrary:_})=>{m?.forEach(v=>{x(v)&&n.push(he(v,t)),H(v)&&i.push(v)}),f&&(o.push(f),c[f]=O(m||[],e),_&&(l[f]=_)),h&&a.push(h),g&&p.push(g),f&&g&&(d[g]=f)}),{scripts:O(n,e),css:O(i,e),materials:O(a,e),libraryExports:o,materialExports:u.dedupArray(p),materialMapLibrary:d,libraryMap:c,libraryLocaleMap:l}}function ge(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function ve(r=[]){const e=r.filter(s=>H(s)),t=r.filter(s=>x(s));return{css:e,js:t}}function Ge(r,e){const t=/(@(keyframes|media)\s*([^{]*)){([\s\S]*?}\s*})/g,s=[];let o=r.replace(t,(c,l,p,d,m)=>(s.push({type:p,name:d.trim(),conditions:d,content:m}),"/* AT_RULE_PLACEHOLDER */")).replace(/::v-deep\(/g,":deep(").replace(/(\s*)>>>(\s*)/g,"$1:deep($2)").replace(/([\w-.:\s[\]>+~]+?):deep\(([^)]+)\)/g,(c,l,p)=>`${l.replace(/(\s*)$/,`[${e}]$1`)} ${p}`).replace(/([^{}]+)(?=\s*{)/g,c=>c.split(",").map(l=>{const p=l.trim();return p.includes(`[${e}]`)?p:p.replace(/(.*?)((?::[^:\s(]+(?:\([^)]*\))?)*)(\s*)$/,(d,m,h,f)=>`${m}[${e}]${h}${f}`)}).join(", "));return s.forEach(({type:c,conditions:l,content:p})=>{let d=p;c==="media"&&(d=d.replace(/([^{}]+)(?=\s*{)/g,m=>m.split(",").map(h=>{const f=h.trim();return f.includes(`[${e}]`)?f:f.replace(/(.*?)((?::[^:\s(]+(?:\([^)]*\))?)*)(\s*)$/,(g,_,v,P)=>`${_}[${e}]${v}${P}`)}).join(", "))),o=o.replace("/* AT_RULE_PLACEHOLDER */",`@${c} ${l}{${d}}`)}),o.replace(/}}/g,"}")}function W(r){return u.isString(r)?r:JSON.stringify(r)}function Y(r,e,t,s=!1){const n=r.CSSStyleSheet,i=s?`data-v-${e}`:e,a=s?Ge(t,i):t;if(n.prototype.replaceSync){const o=new n;o.id=e,o.replaceSync(a);const c=r.document,l=c.adoptedStyleSheets,p=Array.from(l).filter(d=>d.id!==e);c.adoptedStyleSheets=[...p,o]}else{const o=r.document;let c=o.getElementById(e);c?c.innerHTML=a:(c=o.createElement("style"),c.id=e,c.innerHTML=a,o.head.appendChild(c))}}async function ye(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&Y(window,r,t)}function Q(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 X(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 l=s.createElement("script");l.src=c,l.onload=()=>{i=t[e],i?a(i.default||i):o(null)},l.onerror=p=>{o(p)},n.appendChild(l)}})}function _e(r){return u.isFunction(r)||u.isFunction(r?.install)}function Se(r){return de.includes(r)}function we(r){return pe.includes(r)}function k(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function We(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 F(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(u.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function U(r,e,t=!1,s=!1){const n=F(r,e,t,s);if(typeof n!="function"&&(u.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function E(r){return r&&r.type==="JSExpression"}function I(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function Ee(r){return E(r)||I(r)}function Ye(r){return Ee(r)?r.value:JSON.stringify(r)}const Qe={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},Z=Symbol("access");class ee{options;data=null;mode=y.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},Qe,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&&(u.storage.save(t,e,{type:"local",prefix:s}),n&&u.cookie.set(i,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,u.storage.remove(e,{type:"local",prefix:t}),s&&u.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):u.toArray(e).every(i=>s[i]||s[t+"."+i])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return u.toArray(e).some(i=>s[i]||s[t+"."+i])}install(e){e.config.globalProperties.$access=this,e.provide(Z,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=>u.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?u.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=u.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!u.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===T){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),u.isFunction(n)?(n(),t(!1)):u.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 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=>(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 $e(){return w.inject(Z,null)}function Xe(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:i,useTitle:a,alert:o}=r;let c=null;return{request:u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:p=>p.data?.code===0||!!p.data?.success,failMessage:!0,showError:p=>{e&&e(p||"未知错误")},showLoading:()=>{c&&c.close(),t&&(c=t())},hideLoading:()=>{c&&(c.close(),c=null)},...s}}),jsonp:u.jsonp,notify:e,loading:t,useTitle:a,startupComponent:n,access:i?new ee({alert:o,...i}):void 0}}function Ze(r={}){return new ee(r)}function je(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?F(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(u.merge(i,o||{},{data:a})))}}function Pe(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 Re(r=[],e=[],t){const s={};for(const n of r)s[n.id]=je(n,t);for(const n of e)s[n.id]=Pe(n,t);return s}async function Ce(r=[],e=window){const t=k(e);t&&(te(e),r.forEach(s=>Ae(t,s)))}function be(r,e=window){const t=I(r.mockTemplate)&&r.mockTemplate.value?U(r.mockTemplate,{},!0):void 0,s=k(e);return async(...n)=>{let i={};if(t)try{i=await t.apply(t,n)}catch(a){u.logger.warn("模拟数据模版异常",a)}return s?.mock(i)}}function Ae(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const n=u.pathToRegexp(`${t}(.*)`),i=u.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=F(s,{},!0);r.mock(n,o=>{const c=u.url.parse(o.url)||{},l=o.body instanceof FormData?u.formDataToJson(o.body):o.body,p=i(o.url)?.params;return Object.assign(o,{data:l,params:c,query:p}),r.mock(a(o))})}}function te(r=window){const e=k(r);e&&(e._mocked={})}class Me{__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=q){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&&z.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){z.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 U({type:s,value:n},this)}else return U(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 F({type:s,value:n},this)}else return F(e,this)}__ref(e=null,t){if(this.__mode!==y.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await u.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 L(r){const{Vue:e=q,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},l=new Me({mode:t,dsl:o.value,attrs:c}),p=e.defineComponent({name:o.value.name,__scopeId:o.value.id?`data-v-${o.value.id}`:void 0,props:{...tt(o.value.props??[],l)},setup(d){l.$props=d,l.props=d,o.value.id&&Y(r.window||window,o.value.id,o.value.css||"",!0),l.state=st(e,o.value.state??{},l);const m=rt(e,o.value.computed??{},l),h=nt(o.value.methods??{},l),f=it(e,o.value.inject,l);for(const[v,P]of Object.entries(f||{}))f[v]=e.inject(v,P);const g=Te(o.value.dataSources||{},l),_={...f,...m,...h,...g};return l.setup(_,e),ot(e,o.value.watch??[],l),{vtj:l}},emits:et(o.value.emits),expose:["vtj"],render(){if(!o.value.nodes)return null;const d=o.value.nodes||[];return d.length===1?A(d[0],l,e,a,d):d.map(m=>A(m,l,e,a,d))},...at(o.value.lifeCycles??{},l)});return{renderer:e.markRaw(p),context:l}}function et(r=[]){return r.map(e=>u.isString(e)?e:e.name)}function tt(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(i=>ue[i]):void 0;return r.map(s=>u.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:E(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 st(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let i=e[n];return E(i)?i=t.__parseExpression(i):I(i)&&(i=t.__parseFunction(i)),s[n]=i,s},{}))}function rt(r,e,t){return Object.entries(e??{}).reduce((s,[n,i])=>(s[n]=r.computed(t.__parseFunction(i)),s),{})}function nt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function it(r,e=[],t){return e.reduce((s,n)=>{const{name:i,from:a}=n||{};n.default;const o=E(a)?t.__parseExpression(a)||i:a??i,c=E(n.default)?t.__parseExpression(n.default):n.default??null;return s[i]=r.inject(o,c),s},{})}function Te(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=I(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 ot(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function at(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}let V=[],b={};const ke=r=>r;async function se(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(o=>x(o));if(n.length===0||!s)return null;const i=t.filter(o=>H(o));return i.length&&Q(i,e),await X(n,s,e).catch(o=>(console.warn("loadScriptUrl error",n,s,o),null))}function B(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(V.forEach(n=>{delete s.window[n]}),V=[]),(n,i,a=q)=>{if(!i||typeof i=="string")return n;if(i.type==="Schema"&&i.id)return a.defineAsyncComponent(async()=>{const o=b[i.id]||await e(i.id);return o&&(o.name=n,b[i.id]=o),o?L({...s,Vue:a,dsl:u.cloneDeep(o),mode:y.Runtime,loader:B(r)}).renderer:null});if(i.type==="UrlSchema"&&i.url)return a.defineAsyncComponent(async()=>{const o=b[i.url]||await t(i.url);return o&&(o.name=n,b[i.url]=o),o?L({...s,Vue:a,dsl:u.cloneDeep(o),mode:y.Runtime,loader:B(r)}).renderer:null});if(i.type==="Plugin"){let o=i.library?b[i.library]:null;return o||(i.library&&V.push(i.library),o=b[i.library||Symbol()]=a.defineAsyncComponent(async()=>{const c=await se(i,s.window);return c||(console.warn("getPlugin result is null",i),null)}),o)}return n}}function ct(){b={}}function A(r,e,t=q,s=ke,n=[],i=!1){if(!r||!r.name||r.invisible)return null;const a=t.getCurrentInstance()?.appContext,{id:o=null,directives:c=[]}=r,{vIf:l,vElseIf:p,vElse:d,vFor:m,vShow:h,vModels:f,vBind:g,vHtml:_,others:v}=Fe(c);if(!i&&(p||d))return null;if(l&&!ut(l,e))return ht(r,e,t,s,n);const P=$=>{const Ue=$.$components,Le=(()=>{if(r.name==="component")return pt($,r.props?.is);if(r.name==="slot")return r.name;const j=s(r.name,r.from,t);return u.isString(j)?Se(j)||we(j)?j:Ue[j]??a?.app?.component(j)??j:j})(),C=dt(o,r.props??{},$),Be=ft(t,r.events??{},$);if(r.name==="slot")return mt(t,r,C,$,s);g&&Object.assign(C,$.__parseExpression(g.value)),h&&(C.style=Object.assign(C.style??{},vt(h,$))),_&&Object.assign(C,yt(_,$)),f.forEach(j=>{Object.assign(C,_t(t,j,$))});const qe=St(t,r.children??[],$,s,r);let K=t.createVNode(Le,{...C,...Be},qe);const oe=a?lt(a,v,$):[];return oe.length&&(K=t.withDirectives(K,oe)),K};return m?$t(m,P,e):P(e)}function lt(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 Fe(r=[]){const e=r.find(p=>u.camelCase(p.name)==="vIf"),t=r.find(p=>u.camelCase(p.name)==="vElseIf"),s=r.find(p=>u.camelCase(p.name)==="vElse"),n=r.find(p=>u.camelCase(p.name)==="vFor"),i=r.find(p=>u.camelCase(p.name)==="vShow"),a=r.find(p=>u.camelCase(p.name)==="vBind"),o=r.find(p=>u.camelCase(p.name)==="vHtml"),c=r.filter(p=>u.camelCase(p.name)==="vModel"),l=r.filter(p=>!le.includes(u.camelCase(p.name)));return{vIf:e,vElseIf:t,vElse:s,vFor:n,vShow:i,vModels:c,vBind:a,others:l,vHtml:o}}function ut(r,e){return!!e.__parseExpression(r.value)}function pt(r,e){return e?E(e)?r.__parseExpression(e):e:"div"}function dt(r,e,t){const s=G(e,t);return s.ref=t.__ref(r,s.ref),s}function G(r,e){return E(r)?e.__parseExpression(r):I(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>G(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=G(n,e),t},{}):r}function ft(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=re(o.modifiers),l=c.find(m=>s.includes(m)),p="on"+u.upperFirst(a)+(l&&n[l]||""),d=t.__parseFunction(o.handler);return d&&(i[p]=r.withModifiers(d,c)),i},{})}function ht(r,e,t,s,n=[]){let i=n.findIndex(a=>a.id===r.id);for(let a=++i;a<n.length;a++){const{directives:o=[]}=n[a],{vElseIf:c,vElse:l}=Fe(o);if(c){if(e.__parseExpression(c.value))return A(n[a],e,t,s,n,!0);continue}if(l)return A(n[a],e,t,s,n,!0)}return null}function re(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function mt(r,e,t,s,n){const{children:i}=e,a=gt(e,s),o=s.$slots?.[a.name];return o?o(t):i?u.isString(i)?r.createTextVNode(i):E(i)?r.createTextVNode(W(s.__parseExpression(i))):Array.isArray(i)?i.map(c=>A(c,s,r,n,i)):null:null}function gt(r,e){const{props:t}=r,s=t?.name||"default";return{name:E(s)?e.__parseExpression(s):s,params:[]}}function vt(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function yt(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function _t(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
9
9
  ${e.value.value} = v;
10
10
  }`:"(v) => {}"},n=t.__parseFunction(s),i=re(E(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=E(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 St(r,e,t,s,n){if(!e)return null;if(u.isString(e))return{default:()=>e};if(E(e))return{default:()=>W(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const i=wt(e),a=o=>!o||!n?{}:n?.id&&Object.keys(o).length?{[`scope_${n.id}`]:o}:{};return Object.entries(i).reduce((o,[c,{nodes:l,params:p}])=>(o[c]=d=>{const m=p.length?u.pick(d??{},p):a(d);return l.map(h=>A(h,t.__clone(m),r,s,l))},o),{})}return null}function wt(r){const e={default:{params:[],nodes:[]}};for(const t of r){const s=Et(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 Et(r="default"){return u.isString(r)?{name:r,params:[]}:{params:[],...r}}function $t(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,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`),[])}const ae=w.defineComponent({name:"VtjPageContainer",async setup(){const r=ie(),e=ce.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,i=w.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?w.h(r,{...e,key:t}):w.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),jt=w.defineComponent({name:"VtjStartupContainer",render(){return w.h("div","page not found!")}}),ne=Symbol("Provider");var Ie=(r=>(r.Production="production",r.Development="development",r))(Ie||{});class Oe extends R.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:l={},router:p=null,materialPath:d="./",nodeEnv:m="development"}=e;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);const{access:h,request:f}=this.adapter;h&&h.connect({mode:s,router:p,request:f}),a&&s!==y.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:u.request,jsonp:u.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){u.logger.warn("模拟数据模版异常",i)}return k()?.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=Re(s,n,this.adapter),te(i),Ce(s,i),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=k(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:l,materials:p,materialExports:d,materialMapLibrary:m}=me(t,a,o==="development");for(const h of c){const f=s[h],g=e[h];if(g)n[h]=g;else if(f)e[h]=n[h]=await f();else{const _=l[h]||[];for(const v of _)H(v)&&await ye(h,u.url.append(v,{v:M})),x(v)&&await u.loadScript(u.url.append(v,{v:M}));n[h]=e[h]}}if(o==="development"){for(const f of p)await u.loadScript(u.url.append(f,{v:M}));const h=this.materials||{};for(const f of d){const g=e[m[f]],_=R.BUILT_IN_COMPONENTS[f];if(_)g&&_.forEach(v=>{i[v]=g[v]});else{const v=h[f]?(await h[f]()).default:e[f];v&&g&&(v.components||[]).forEach(P=>{i[P.name]=ge(P,g)})}}}}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,l=a?"":"/",p={path:`${l}${o}/:id`,name:T,component:ae},d={path:l,name:D,component:t?.homepage?ae:n.startupComponent||jt,meta:c};e.hasRoute(T)&&e.removeRoute(T),e.hasRoute(D)&&e.removeRoute(D),a?(e.addRoute(a,p),e.addRoute(a,d)):(e.addRoute(p),e.addRoute(d))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&_e(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(ne,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")}),this.options.enhance&&e.use(this.options.enhance,this)}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=B({getDsl:async l=>await this.getDsl(l)||null,getDslByUrl:async l=>await this.getDslByUrl(l)||null,options:o});return L({...o,dsl:e,loader:c})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return u.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:(u.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return w.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return w.defineAsyncComponent(async()=>await se(e,window))}}function Pt(r){const e=new Oe(r);return{provider:e,onReady:s=>e.ready(s)}}function ie(r={}){const e=w.inject(ne,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}async function Rt(r,e=""){const{name:t,urls:s=[]}=r||{},n=s.map(o=>e+o),{css:i,js:a}=ve(n);if(i.length&&Q(i),a.length)return await X(a,t).catch(()=>{})}const De={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},Ct=(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:De}),bt=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...De,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function At(r){return u.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class J{constructor(e=u.request){this.req=e,this.api=Ct(e),this.uploader=bt(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=>fe(i))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=u.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 S=new u.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Mt extends J{init(e){const t=new R.ProjectModel(e),s=S.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return S.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new R.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 n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),S.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=S.get(`history_${e}`),s=new R.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=S.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return S.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{S.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class He extends J{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new R.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 R.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 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 R.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 N=null;function Tt(){return N||(N=new He,N)}class kt extends J{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: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(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?xe(r,e,o):void 0}})}function Ne(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=Ne(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function Ft(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=ie(),i=ce.useRoute(),a=$e(),o=w.ref(!1),c=w.ref(!1),l=n.project;w.watchEffect(()=>{const{name:m,params:h,meta:f}=i;if(m===T){const g=n.getPage(h.id);o.value=!g?.mask,c.value=!!g?.pure}else if(m===D){const g=n.getHomepage();o.value=!g?.mask,c.value=!!g?.pure}else o.value=!f.mask,c.value=!!f.pure});const p=xe(e,t,l?.pages),d=l?.config;return{disabled:o,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||l?.description||l?.name||"VTJ App",menus:s?p:Ne(p,a),pure:c}}exports.ACCESS_KEY=Z;exports.Access=ee;exports.BUILD_IN_TAGS=de;exports.BUILT_IN_DIRECTIVES=le;exports.BaseService=J;exports.CONTEXT_HOST=z;exports.Context=Me;exports.ContextMode=y;exports.DATA_TYPES=ue;exports.HOMEPAGE_ROUTE_NAME=D;exports.HTML_TAGS=pe;exports.JSCodeToString=Ye;exports.LIFE_CYCLES_LIST=Ke;exports.LocalService=kt;exports.MemoryService=He;exports.NodeEnv=Ie;exports.PAGE_ROUTE_NAME=T;exports.Provider=Oe;exports.StorageService=Mt;exports.VTJ_RENDERER_VERSION=M;exports.adoptedStyleSheets=Y;exports.clearLoaderCache=ct;exports.createAccess=Ze;exports.createAdapter=Xe;exports.createAssetScripts=Ve;exports.createAssetsCss=ze;exports.createDataSources=Te;exports.createLoader=B;exports.createMemoryService=Tt;exports.createMetaApi=Pe;exports.createMock=be;exports.createProvider=Pt;exports.createRenderer=L;exports.createSchemaApi=je;exports.createSchemaApis=Re;exports.createServiceRequest=At;exports.defaultLoader=ke;exports.fillBasePath=O;exports.getMock=k;exports.getModifiers=re;exports.getPlugin=se;exports.getRawComponent=ge;exports.isBuiltInTag=Se;exports.isCSSUrl=H;exports.isJSCode=Ee;exports.isJSExpression=E;exports.isJSFunction=I;exports.isJSON=fe;exports.isJSUrl=x;exports.isNativeTag=we;exports.isVuePlugin=_e;exports.loadCss=ye;exports.loadCssUrl=Q;exports.loadEnhance=Rt;exports.loadScriptUrl=X;exports.mockApi=Ae;exports.mockApis=Ce;exports.mockCleanup=te;exports.nodeRender=A;exports.parseDeps=me;exports.parseExpression=F;exports.parseFunction=U;exports.parseUrls=ve;exports.providerKey=ne;exports.removeProdFlag=he;exports.setupPageSetting=We;exports.toString=W;exports.useAccess=$e;exports.useMask=Ft;exports.useProvider=ie;
package/dist/index.mjs CHANGED
@@ -1,16 +1,16 @@
1
1
  import { Base as Oe, BUILT_IN_COMPONENTS as xe, ProjectModel as N, HistoryModel as pe } from "@vtj/core";
2
2
  import { isUrl as Ne, url as C, dedupArray as Ue, isString as R, isFunction as V, logger as A, storage as J, cookie as K, toArray as re, unRSA as ie, delay as de, createRequest as fe, jsonp as he, merge as Be, pathToRegexp as Le, pathToRegexpMatch as qe, formDataToJson as Je, cloneDeep as oe, camelCase as j, upperFirst as Ke, pick as ze, request as W, loadScript as ae, Storage as Ve, mapToObject as te } from "@vtj/utils";
3
3
  import * as U from "vue";
4
- import { inject as me, defineComponent as ve, h as G, ref as Y, defineAsyncComponent as ce, watchEffect as We } from "vue";
5
- import { useRoute as ge } from "vue-router";
4
+ import { inject as me, defineComponent as ge, h as G, ref as Y, defineAsyncComponent as ce, watchEffect as We } from "vue";
5
+ import { useRoute as ve } from "vue-router";
6
6
  /**!
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.28
10
+ * @version 0.12.30
11
11
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
12
12
  */
13
- const F = "0.12.28";
13
+ const F = "0.12.30";
14
14
  var _ = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(_ || {});
15
15
  const le = [
16
16
  "$el",
@@ -86,10 +86,10 @@ function et(n, e = !1) {
86
86
  function tt(n, e, t = !1) {
87
87
  const s = n.filter((h) => !!h.enabled), r = [], i = [], a = [], o = [], c = {}, l = {}, u = [], p = {};
88
88
  return s.forEach(
89
- ({ urls: h, assetsUrl: f, library: d, assetsLibrary: m, localeLibrary: g }) => {
90
- h?.forEach((v) => {
91
- L(v) && r.push(et(v, t)), B(v) && i.push(v);
92
- }), d && (o.push(d), c[d] = D(h || [], e), g && (l[d] = g)), f && a.push(f), m && u.push(m), d && m && (p[m] = d);
89
+ ({ urls: h, assetsUrl: f, library: d, assetsLibrary: m, localeLibrary: v }) => {
90
+ h?.forEach((g) => {
91
+ L(g) && r.push(et(g, t)), B(g) && i.push(g);
92
+ }), d && (o.push(d), c[d] = D(h || [], e), v && (l[d] = v)), f && a.push(f), m && u.push(m), d && m && (p[m] = d);
93
93
  }
94
94
  ), {
95
95
  scripts: D(r, e),
@@ -136,14 +136,14 @@ function rt(n, e) {
136
136
  const d = f.trim();
137
137
  return d.includes(`[${e}]`) ? d : d.replace(
138
138
  /(.*?)((?::[^:\s(]+(?:\([^)]*\))?)*)(\s*)$/,
139
- (m, g, v, E) => `${g}[${e}]${v}${E}`
139
+ (m, v, g, E) => `${v}[${e}]${g}${E}`
140
140
  );
141
141
  }).join(", ")
142
142
  )), o = o.replace(
143
143
  "/* AT_RULE_PLACEHOLDER */",
144
144
  `@${c} ${l}{${p}}`
145
145
  );
146
- }), o;
146
+ }), o.replace(/}}/g, "}");
147
147
  }
148
148
  function ye(n) {
149
149
  return R(n) ? n : JSON.stringify(n);
@@ -501,9 +501,9 @@ function ht(n = [], e = [], t) {
501
501
  }
502
502
  async function mt(n = [], e = window) {
503
503
  const t = I(e);
504
- t && (je(e), n.forEach((s) => gt(t, s)));
504
+ t && (je(e), n.forEach((s) => vt(t, s)));
505
505
  }
506
- function vt(n, e = window) {
506
+ function gt(n, e = window) {
507
507
  const t = T(n.mockTemplate) && n.mockTemplate.value ? Q(n.mockTemplate, {}, !0) : void 0, s = I(e);
508
508
  return async (...r) => {
509
509
  let i = {};
@@ -516,7 +516,7 @@ function vt(n, e = window) {
516
516
  return s?.mock(i);
517
517
  };
518
518
  }
519
- function gt(n, e) {
519
+ function vt(n, e) {
520
520
  if (!e.mock) return;
521
521
  const { url: t, mockTemplate: s } = e;
522
522
  if (t && s) {
@@ -660,18 +660,18 @@ function X(n) {
660
660
  !0
661
661
  ), l.state = St(e, o.value.state ?? {}, l);
662
662
  const h = $t(e, o.value.computed ?? {}, l), f = Et(o.value.methods ?? {}, l), d = jt(e, o.value.inject, l);
663
- for (const [v, E] of Object.entries(d || {}))
664
- d[v] = e.inject(v, E);
663
+ for (const [g, E] of Object.entries(d || {}))
664
+ d[g] = e.inject(g, E);
665
665
  const m = Rt(
666
666
  o.value.dataSources || {},
667
667
  l
668
- ), g = {
668
+ ), v = {
669
669
  ...d,
670
670
  ...h,
671
671
  ...f,
672
672
  ...m
673
673
  };
674
- return l.setup(g, e), Pt(e, o.value.watch ?? [], l), {
674
+ return l.setup(v, e), Pt(e, o.value.watch ?? [], l), {
675
675
  vtj: l
676
676
  };
677
677
  },
@@ -751,7 +751,7 @@ function Rt(n, e) {
751
751
  (t, s) => {
752
752
  const r = n[s];
753
753
  if (r.type === "mock")
754
- t[s] = vt(r);
754
+ t[s] = gt(r);
755
755
  else if (r.ref) {
756
756
  const i = e.$apis[r.ref], a = T(r.transform) ? r.transform.value ? e.__parseFunction(r.transform) : void 0 : r.transform;
757
757
  t[s] = async (...o) => {
@@ -837,7 +837,7 @@ function as() {
837
837
  }
838
838
  function k(n, e, t = U, s = Ct, r = [], i = !1) {
839
839
  if (!n || !n.name || n.invisible) return null;
840
- const a = t.getCurrentInstance()?.appContext, { id: o = null, directives: c = [] } = n, { vIf: l, vElseIf: u, vElse: p, vFor: h, vShow: f, vModels: d, vBind: m, vHtml: g, others: v } = Pe(c);
840
+ const a = t.getCurrentInstance()?.appContext, { id: o = null, directives: c = [] } = n, { vIf: l, vElseIf: u, vElse: p, vFor: h, vShow: f, vModels: d, vBind: m, vHtml: v, others: g } = Pe(c);
841
841
  if (!i && (u || p))
842
842
  return null;
843
843
  if (l && !kt(l, e))
@@ -855,7 +855,7 @@ function k(n, e, t = U, s = Ct, r = [], i = !1) {
855
855
  m && Object.assign(P, S.__parseExpression(m.value)), f && (P.style = Object.assign(
856
856
  P.style ?? {},
857
857
  Ot(f, S)
858
- )), g && Object.assign(P, xt(g, S)), d.forEach(($) => {
858
+ )), v && Object.assign(P, xt(v, S)), d.forEach(($) => {
859
859
  Object.assign(P, Nt(t, $, S));
860
860
  });
861
861
  const De = Ut(
@@ -866,7 +866,7 @@ function k(n, e, t = U, s = Ct, r = [], i = !1) {
866
866
  n
867
867
  );
868
868
  let q = t.createVNode(He, { ...P, ...Te }, De);
869
- const ne = a ? At(a, v, S) : [];
869
+ const ne = a ? At(a, g, S) : [];
870
870
  return ne.length && (q = t.withDirectives(q, ne)), q;
871
871
  };
872
872
  return h ? qt(h, E, e) : E(e);
@@ -1035,10 +1035,10 @@ function qt(n, e, t) {
1035
1035
  let o = t.__parseExpression(s) || [];
1036
1036
  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`), []);
1037
1037
  }
1038
- const ue = ve({
1038
+ const ue = ge({
1039
1039
  name: "VtjPageContainer",
1040
1040
  async setup() {
1041
- const n = Ae(), e = ge(), t = e.params.id, s = t ? n.getPage(t) : n.getHomepage(), r = s ? await n.getRenderComponent(s.id) : null, i = Y(Symbol());
1041
+ const n = Ae(), e = ve(), t = e.params.id, s = t ? n.getPage(t) : n.getHomepage(), r = s ? await n.getRenderComponent(s.id) : null, i = Y(Symbol());
1042
1042
  if (s) {
1043
1043
  Object.assign(e.meta, s.meta || {}, { cache: s.cache });
1044
1044
  const { useTitle: a } = n?.adapter;
@@ -1061,7 +1061,7 @@ const ue = ve({
1061
1061
  activated() {
1062
1062
  this.meta.cache === !1 && (this.sid = Symbol());
1063
1063
  }
1064
- }), Jt = ve({
1064
+ }), Jt = ge({
1065
1065
  name: "VtjStartupContainer",
1066
1066
  render() {
1067
1067
  return G("div", "page not found!");
@@ -1182,9 +1182,9 @@ class zt extends Oe {
1182
1182
  else if (d)
1183
1183
  e[f] = r[f] = await d();
1184
1184
  else {
1185
- const g = l[f] || [];
1186
- for (const v of g)
1187
- B(v) && await it(f, C.append(v, { v: F })), L(v) && await ae(C.append(v, { v: F }));
1185
+ const v = l[f] || [];
1186
+ for (const g of v)
1187
+ B(g) && await it(f, C.append(g, { v: F })), L(g) && await ae(C.append(g, { v: F }));
1188
1188
  r[f] = e[f];
1189
1189
  }
1190
1190
  }
@@ -1193,14 +1193,14 @@ class zt extends Oe {
1193
1193
  await ae(C.append(d, { v: F }));
1194
1194
  const f = this.materials || {};
1195
1195
  for (const d of p) {
1196
- const m = e[h[d]], g = xe[d];
1197
- if (g)
1198
- m && g.forEach((v) => {
1199
- i[v] = m[v];
1196
+ const m = e[h[d]], v = xe[d];
1197
+ if (v)
1198
+ m && v.forEach((g) => {
1199
+ i[g] = m[g];
1200
1200
  });
1201
1201
  else {
1202
- const v = f[d] ? (await f[d]()).default : e[d];
1203
- v && m && (v.components || []).forEach((E) => {
1202
+ const g = f[d] ? (await f[d]()).default : e[d];
1203
+ g && m && (g.components || []).forEach((E) => {
1204
1204
  i[E.name] = st(E, m);
1205
1205
  });
1206
1206
  }
@@ -1744,7 +1744,7 @@ function hs(n) {
1744
1744
  menuPathPrefix: e = "",
1745
1745
  pageRouteName: t = "page",
1746
1746
  disableMenusFilter: s = !1
1747
- } = n || {}, r = Ae(), i = ge(), a = pt(), o = Y(!1), c = Y(!1), l = r.project;
1747
+ } = n || {}, r = Ae(), i = ve(), a = pt(), o = Y(!1), c = Y(!1), l = r.project;
1748
1748
  We(() => {
1749
1749
  const { name: h, params: f, meta: d } = i;
1750
1750
  if (h === M) {
@@ -1801,7 +1801,7 @@ export {
1801
1801
  Z as createLoader,
1802
1802
  ds as createMemoryService,
1803
1803
  ft as createMetaApi,
1804
- vt as createMock,
1804
+ gt as createMock,
1805
1805
  cs as createProvider,
1806
1806
  X as createRenderer,
1807
1807
  dt as createSchemaApi,
@@ -1826,7 +1826,7 @@ export {
1826
1826
  we as loadCssUrl,
1827
1827
  ls as loadEnhance,
1828
1828
  Se as loadScriptUrl,
1829
- gt as mockApi,
1829
+ vt as mockApi,
1830
1830
  mt as mockApis,
1831
1831
  je as mockCleanup,
1832
1832
  k 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.28",
4
+ "version": "0.12.30",
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.28",
25
- "@vtj/utils": "~0.12.28"
24
+ "@vtj/utils": "~0.12.30",
25
+ "@vtj/core": "~0.12.30"
26
26
  },
27
27
  "devDependencies": {
28
28
  "vue": "~3.5.5",
29
29
  "vue-router": "~4.5.0",
30
- "@vtj/ui": "~0.12.28",
31
30
  "@vtj/cli": "~0.12.3",
32
- "@vtj/icons": "~0.12.28"
31
+ "@vtj/icons": "~0.12.30",
32
+ "@vtj/ui": "~0.12.30"
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.27
5
+ * @version 0.12.29
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
7
  */
8
- export declare const version = "0.12.27";
8
+ export declare const version = "0.12.29";