@vtj/renderer 0.12.63 → 0.12.65

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,10 +2,10 @@
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.63
5
+ * @version 0.12.65
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
- */const M="0.12.63";var _=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(_||{});const Y=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Xe=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],ve=["vIf","vElseIf","vElse","vShow","vModel","vFor","vBind","vHtml"],ye={String,Number,Boolean,Array,Object,Function,Date},T="VtjPage",H="VtjHomepage",_e="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,svg".split(","),Se="component,slot".split(","),Ze=["h","t","t","p","s",":","/","/","l","c","d","p",".","v","t","j",".","p","r","o"].join(""),et={auth:["h","t","t","p","s",":","/","/","l","c","d","p",".","v","t","j",".","p","r","o","/","a","u","t","h",".","h","t","m","l"].join(""),storageKey:["R","R","O","_","I","D","E","_","A","C","C","E","S","S","_","S","T","O","R","A","G","E","_","_"].join(""),privateKey:"MIIBOgIBAAJBAKoIzmn1FYQ1YOhOBw9EhABxZ+PySAIaydI+zdhoKflrdgJ4A5E4/5gbQmRpk09hPWG8nvX7h+l/QLU8kXxAIBECAwEAAQJAAlgpxQY6sByLsXqzJcthC8LSGsLf2JEJkHwlnpwFqlEV8UCkoINpuZ2Wzl+aftURu5rIfAzRCQBvHmeOTW9/zQIhAO5ufWDmnSLyfAAsNo5JRNpVuLFCFodR8Xm+ulDlosR/AiEAtpAltyP9wmCABKG/v/hrtTr3mcvFNGCjoGa9bUAok28CIHbrVs9w1ijrBlvTsXYwJw46uP539uKRRT4ymZzlm9QjAiB+1KH/G9f9pEEL9rtaSOG7JF5D0JcOjlze4MGVFs+ZrQIhALKOUFBNr2zEsyJIjw2PlvEucdlG77UniszjXTROHSPd"};function D(r,e){return r.map(t=>d.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function x(r){return/\.css$/.test(r)}function B(r){return/\.js$/.test(r)}function we(r){return/\.json$/.test(r)}function tt(r){return r.map(e=>`<script src="${d.url.append(e,{v:M})}"><\/script>`).join("")}function st(r=[]){return r.map(e=>`<link rel="stylesheet" href="${d.url.append(e,{v:M})}" />`).join("")}function Ee(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function je(r,e,t=!1){const s=r.filter(m=>!!m.enabled),n=[],i=[],a=[],o=[],p={},c={},u=[],l={};return s.forEach(({urls:m,assetsUrl:f,library:h,assetsLibrary:v,localeLibrary:S})=>{m?.forEach(g=>{B(g)&&n.push(Ee(g,t)),x(g)&&i.push(g)}),h&&(o.push(h),p[h]=D(m||[],e),S&&(c[h]=S)),f&&a.push(f),v&&u.push(v),h&&v&&(l[v]=h)}),{scripts:D(n,e),css:D(i,e),materials:D(a,e),libraryExports:o,materialExports:d.dedupArray(u),materialMapLibrary:l,libraryMap:p,libraryLocaleMap:c}}function $e(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function Ce(r=[]){const e=r.filter(s=>x(s)),t=r.filter(s=>B(s));return{css:e,js:t}}function be(r,e){const t=c=>{const u=[];let l=0;for(;l<c.length;){if(/\s/.test(c[l])){l++;continue}if(c.substring(l,l+2)==="/*"){const g=c.indexOf("*/",l+2);if(g!==-1){l=g+2;continue}}if(c[l]==="@"){const g=l;for(;l<c.length&&c[l]!=="{"&&c[l]!==";";)l++;const C=c.substring(g,l).trim(),y=C.includes("@keyframes");if(c[l]===";")u.push({type:"simple-at-rule",content:c.substring(g,l+1)}),l++;else if(c[l]==="{"){const N=l+1;let P=1;for(l++;l<c.length&&P>0;)c[l]==="{"?P++:c[l]==="}"&&P--,l++;const V=c.substring(g,l),b=c.substring(N,l-1);u.push({type:y?"keyframes":"at-rule",rule:C,content:V,inner:b})}continue}const m=l;for(;l<c.length&&c[l]!=="{";)l++;if(l>=c.length)break;const f=c.substring(m,l).trim();if(!f){l++;continue}const h=l+1;let v=1;for(l++;l<c.length&&v>0;)c[l]==="{"?v++:c[l]==="}"&&v--,l++;const S=c.substring(h,l-1);u.push({type:"rule",selector:f,content:S.trim()})}return u},s=c=>{const u=c.trim();return/^(from|to|\d+(\.\d+)?%)$/.test(u)},n=c=>c.replace(/::v-deep\(/g,":deep(").replace(/::v-deep\s+/g,":deep(").replace(/\/deep\//g," ").replace(/>>>/g," ").replace(/(.*?):deep\(([^)]+)\)/g,(u,l,m)=>{const f=l.trim(),h=m.trim();return f?`${f}[${e}] ${h}`:h}),i=c=>{const u=c.trim();if(!u||u.includes(`[${e}]`)||/^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(u)||s(u))return u;const l=u.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);if(l){const[,m,f=""]=l,h=m.trim();return h?`${h}[${e}]${f}`:u}return`${u}[${e}]`},a=c=>n(c).split(",").map(l=>i(l)).filter(l=>l.trim()).join(", "),o=c=>c.map(u=>{switch(u.type){case"simple-at-rule":return u.content;case"keyframes":return u.content;case"at-rule":try{const m=t(u.inner),f=o(m);return`${u.rule} { ${f} }`}catch{return u.content}case"rule":if(!u.selector||!u.content)return"";const l=a(u.selector);return l.trim()?`${l} { ${u.content} }`:"";default:return""}}).filter(u=>u.trim()).join(" "),p=c=>c.replace(/\s*{\s*/g," { ").replace(/\s*}\s*/g," } ").replace(/\s*;\s*/g,"; ").replace(/\s*,\s*/g,", ").replace(/\s+/g," ").replace(/^\s+|\s+$/g,"").replace(/\s*}\s*}/g," } }").trim();try{const c=r.replace(/\/\*(?!\s*!)[\s\S]*?\*\//g,"").replace(/^\s+|\s+$/gm,"").replace(/\n\s*\n/g,`
8
- `),u=t(c),l=o(u);return p(l)}catch(c){return console.error("CSS scoping failed:",c),console.error("Input CSS:",r),r.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(@keyframes\s+[^{]+\s*{[^{}]*(?:{[^}]*}[^{}]*)*})/g,u=>u).replace(/([^{}@]+)(?=\s*{)/g,u=>{const l=u.trim();return!l||l.startsWith("@")||l.includes(`[${e}]`)||s(l)?u:`${l}[${e}]`})}}function Z(r){return d.isString(r)?r:JSON.stringify(r)}function ee(r,e,t,s=!1){const n=r.CSSStyleSheet,i=s?`data-v-${e}`:e,a=s?be(t,i):t;if(n.prototype.replaceSync){const o=new n;o.id=e,o.replaceSync(a);const p=r.document,c=p.adoptedStyleSheets,u=Array.from(c).filter(l=>l.id!==e);p.adoptedStyleSheets=[...u,o]}else{const o=r.document;let p=o.getElementById(e);p?p.innerHTML=a:(p=o.createElement("style"),p.id=e,p.innerHTML=a,o.head.appendChild(p))}}async function Re(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&ee(window,r,t)}function te(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 se(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 p of r){const c=s.createElement("script");c.src=p,c.onload=()=>{i=t[e],i?a(i.default||i):o(null)},c.onerror=u=>{o(u)},n.appendChild(c)}})}function Pe(r){return d.isFunction(r)||d.isFunction(r?.install)}function Ae(r){return Se.includes(r)}function Ie(r){return _e.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 rt(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,p)=>`__self${p}`),i=n.join(`
9
- `)+i;const a=`with(${t?"{}":"$scope || {}"}) { ${i} }`;return new Function("$scope",a)(e)}catch(n){if(d.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function L(r,e,t=!1,s=!1){const n=F(r,e,t,s);if(typeof n!="function"&&(d.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function j(r){return r&&r.type==="JSExpression"}function O(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function Me(r){return j(r)||O(r)}function nt(r){return Me(r)?r.value:JSON.stringify(r)}const it={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},re=Symbol("access");class ne{options;data=null;mode=_.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},it,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===_.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&&(d.storage.save(t,e,{type:"local",prefix:s}),n&&d.cookie.set(i,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,d.storage.remove(e,{type:"local",prefix:t}),s&&d.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):d.toArray(e).every(i=>s[i]||s[t+"."+i])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return d.toArray(e).some(i=>s[i]||s[t+"."+i])}install(e){e.config.globalProperties.$access=this,e.provide(re,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=>d.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?d.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=d.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!d.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),d.isFunction(n)?(n(),t(!1)):d.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 d.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 Te(){return E.inject(re,null)}function ot(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:i,useTitle:a,alert:o}=r;let p=null;return{request:d.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:u=>u.data?.code===0||!!u.data?.success,failMessage:!0,showError:u=>{e&&e(u||"未知错误")},showLoading:()=>{p&&p.close(),t&&(p=t())},hideLoading:()=>{p&&(p.close(),p=null)},...s}}),jsonp:d.jsonp,notify:e,loading:t,useTitle:a,startupComponent:n,access:i?new ne({alert:o,...i}):void 0}}function at(r={}){return new ne(r)}function ke(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(d.merge(i,o||{},{data:a})))}}function Fe(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 Oe(r=[],e=[],t){const s={};for(const n of r)s[n.id]=ke(n,t);for(const n of e)s[n.id]=Fe(n,t);return s}async function De(r=[],e=window){const t=k(e);t&&(ie(e),r.forEach(s=>xe(t,s)))}function He(r,e=window){const t=O(r.mockTemplate)&&r.mockTemplate.value?L(r.mockTemplate,{},!0):void 0,s=k(e);return async(...n)=>{let i={};if(t)try{i=await t.apply(t,n)}catch(a){d.logger.warn("模拟数据模版异常",a)}return s?.mock(i)}}function xe(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const n=d.pathToRegexp(`${t}(.*)`),i=d.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=F(s,{},!0);r.mock(n,o=>{const p=d.url.parse(o.url)||{},c=o.body instanceof FormData?d.formDataToJson(o.body):o.body,u=i(o.url)?.params;return Object.assign(o,{data:c,params:p,query:u}),r.mock(a(o))})}}function ie(r=window){const e=k(r);e&&(e._mocked={})}class Be{__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=K){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&&Y.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){Y.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return L({type:s,value:n},this)}else return L(e,this)}__parseExpression(e){if(e)if(this.__mode===_.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!==_.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await d.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,_.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 J(r){const{Vue:e=K,mode:t=_.Runtime,components:s={},libs:n={},apis:i={},loader:a}=r,o=e.computed(()=>r.dsl),p={$components:s,$libs:n,$apis:i},c=new Be({mode:t,dsl:o.value,attrs:p}),u=e.defineComponent({name:o.value.name,__scopeId:o.value.id?`data-v-${o.value.id}`:void 0,props:{...lt(o.value.props??[],c)},setup(l){c.$props=l,c.props=l,o.value.id&&ee(r.window||window,o.value.id,o.value.css||"",!0),c.state=ut(e,o.value.state??{},c);const m=pt(e,o.value.computed??{},c),f=dt(o.value.methods??{},c),h=ft(e,o.value.inject,c);for(const[g,C]of Object.entries(h||{}))h[g]=e.inject(g,C);const v=Ne(o.value.dataSources||{},c),S={...h,...m,...f,...v};return c.setup(S,e),ht(e,o.value.watch??[],c),{vtj:c}},emits:ct(o.value.emits),expose:["vtj"],render(){if(!o.value.nodes)return null;const l=o.value.nodes||[];return l.length===1?I(l[0],c,e,a,l):l.map(m=>I(m,c,e,a,l))},...mt(o.value.lifeCycles??{},c)});return{renderer:e.markRaw(u),context:c}}function ct(r=[]){return r.map(e=>d.isString(e)?e:e.name)}function lt(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(i=>ye[i]):void 0;return r.map(s=>d.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:j(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 ut(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let i=e[n];return j(i)?i=t.__parseExpression(i):O(i)&&(i=t.__parseFunction(i)),s[n]=i,s},{}))}function pt(r,e,t){return Object.entries(e??{}).reduce((s,[n,i])=>(s[n]=r.computed(t.__parseFunction(i)),s),{})}function dt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function ft(r,e=[],t){return e.reduce((s,n)=>{const{name:i,from:a}=n||{};n.default;const o=j(a)?t.__parseExpression(a)||i:a??i,p=j(n.default)?t.__parseExpression(n.default):n.default??null;return s[i]=r.inject(o,p),s},{})}function Ne(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=He(n);else if(n.ref){const i=e.$apis[n.ref],a=O(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...o)=>{const p=await i.apply(e,o);return a?a(p):p}}return t},{})}function ht(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function mt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>{const i=e.__parseFunction(n);return t[s]=async()=>{await d.delay(0),d.isFunction(i)&&i()},t},{})}const Ue=new d.Queue;let Q=[],A={};const Le=r=>r;async function oe(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=>x(o));return i.length&&te(i,e),await se(n,s,e).catch(o=>(console.warn("loadScriptUrl error",n,s,o),null))}function q(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(Q.forEach(n=>{delete s.window[n]}),Q=[]),(n,i,a=K)=>{if(!i||typeof i=="string")return n;if(i.type==="Schema"&&i.id)return a.defineAsyncComponent(async()=>{const o=A[i.id]||await Ue.add(i.id,()=>e(i.id));return o&&(o.name=n,A[i.id]=o),o?J({...s,Vue:a,dsl:d.cloneDeep(o),mode:_.Runtime,loader:q(r)}).renderer:null});if(i.type==="UrlSchema"&&i.url)return a.defineAsyncComponent(async()=>{const o=A[i.url]||await t(i.url);return o&&(o.name=n,A[i.url]=o),o?J({...s,Vue:a,dsl:d.cloneDeep(o),mode:_.Runtime,loader:q(r)}).renderer:null});if(i.type==="Plugin"){let o=i.library?A[i.library]:null;return o||(i.library&&Q.push(i.library),o=A[i.library||Symbol()]=a.defineAsyncComponent(async()=>{const p=await oe(i,s.window);return p||(console.warn("getPlugin result is null",i),null)}),o)}return n}}function gt(){A={},Ue.clearAllCache()}function I(r,e,t=K,s=Le,n=[],i=!1){if(!r||!r.name||r.invisible)return null;const a=t.getCurrentInstance()?.appContext,{id:o=null,directives:p=[]}=r,{vIf:c,vElseIf:u,vElse:l,vFor:m,vShow:f,vModels:h,vBind:v,vHtml:S,others:g}=Je(p);if(!i&&(u||l))return null;if(c&&!yt(c,e))return Et(r,e,t,s,n);const C=(y,N=0)=>{const P=y.$components,V=(()=>{if(r.name==="component")return _t(y,r.props?.is);if(r.name==="slot")return r.name;const $=s(r.name,r.from,t);if(d.isString($))return Ae($)||Ie($)?$:P[$]??a?.app?.component($)??$;if(d.isObject($)&&r.id){const fe=`Loader${r.id}_${N}`,he=P[fe];return he||(P[fe]=$)}return $})(),b=St(o,r.props??{},y),Ve=wt(t,r.events??{},y);if(r.name==="slot")return jt(t,r,b,y,s);v&&Object.assign(b,y.__parseExpression(v.value)),f&&(b.style=Object.assign(b.style??{},Ct(f,y))),S&&Object.assign(b,bt(S,y)),h.forEach($=>{Object.assign(b,Rt(t,$,y))});const We=Pt(t,r.children??[],y,s,r),pe=y?.__id?`data-v-${y.__id}`:void 0,Qe=pe?{[pe]:""}:{};let W=t.createVNode(V,{key:`${o}_${N}`,...Qe,...b,...Ve},We);const de=a?vt(a,g,y):[];return de.length&&(W=t.withDirectives(W,de)),W};return m?Mt(m,C,e):C(e)}function vt(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 Je(r=[]){const e=r.find(u=>d.camelCase(u.name)==="vIf"),t=r.find(u=>d.camelCase(u.name)==="vElseIf"),s=r.find(u=>d.camelCase(u.name)==="vElse"),n=r.find(u=>d.camelCase(u.name)==="vFor"),i=r.find(u=>d.camelCase(u.name)==="vShow"),a=r.find(u=>d.camelCase(u.name)==="vBind"),o=r.find(u=>d.camelCase(u.name)==="vHtml"),p=r.filter(u=>d.camelCase(u.name)==="vModel"),c=r.filter(u=>!ve.includes(d.camelCase(u.name)));return{vIf:e,vElseIf:t,vElse:s,vFor:n,vShow:i,vModels:p,vBind:a,others:c,vHtml:o}}function yt(r,e){return!!e.__parseExpression(r.value)}function _t(r,e){return e?j(e)?r.__parseExpression(e):e:"div"}function St(r,e,t){const s=X(e,t);return s.ref=t.__ref(r,s.ref),s}function X(r,e){return j(r)?e.__parseExpression(r):O(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>X(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=X(n,e),t},{}):r}function wt(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],p=ae(o.modifiers),c=p.find(m=>s.includes(m)),u="on"+d.upperFirst(a)+(c&&n[c]||""),l=t.__parseFunction(o.handler);return l&&(i[u]=r.withModifiers(l,p)),i},{})}function Et(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:p,vElse:c}=Je(o);if(p){if(e.__parseExpression(p.value))return I(n[a],e,t,s,n,!0);continue}if(c)return I(n[a],e,t,s,n,!0)}return null}function ae(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function jt(r,e,t,s,n){const{children:i}=e,a=$t(e,s),o=s.$slots?.[a.name];return o?o(t):i?d.isString(i)?r.createTextVNode(i):j(i)?r.createTextVNode(Z(s.__parseExpression(i))):Array.isArray(i)?i.map(p=>I(p,s,r,n,i)):null:null}function $t(r,e){const{props:t}=r,s=t?.name||"default";return{name:j(s)?e.__parseExpression(s):s,params:[]}}function Ct(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function bt(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function Rt(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
7
+ */const M="0.12.65";var _=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(_||{});const Y=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Xe=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],ve=["vIf","vElseIf","vElse","vShow","vModel","vFor","vBind","vHtml"],ye={String,Number,Boolean,Array,Object,Function,Date},T="VtjPage",H="VtjHomepage",_e="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,svg".split(","),Se="component,slot".split(","),Ze=["h","t","t","p","s",":","/","/","l","c","d","p",".","v","t","j",".","p","r","o"].join(""),et={auth:["h","t","t","p","s",":","/","/","l","c","d","p",".","v","t","j",".","p","r","o","/","a","u","t","h",".","h","t","m","l"].join(""),storageKey:["R","R","O","_","I","D","E","_","A","C","C","E","S","S","_","S","T","O","R","A","G","E","_","_"].join(""),privateKey:"MIIBOgIBAAJBAKoIzmn1FYQ1YOhOBw9EhABxZ+PySAIaydI+zdhoKflrdgJ4A5E4/5gbQmRpk09hPWG8nvX7h+l/QLU8kXxAIBECAwEAAQJAAlgpxQY6sByLsXqzJcthC8LSGsLf2JEJkHwlnpwFqlEV8UCkoINpuZ2Wzl+aftURu5rIfAzRCQBvHmeOTW9/zQIhAO5ufWDmnSLyfAAsNo5JRNpVuLFCFodR8Xm+ulDlosR/AiEAtpAltyP9wmCABKG/v/hrtTr3mcvFNGCjoGa9bUAok28CIHbrVs9w1ijrBlvTsXYwJw46uP539uKRRT4ymZzlm9QjAiB+1KH/G9f9pEEL9rtaSOG7JF5D0JcOjlze4MGVFs+ZrQIhALKOUFBNr2zEsyJIjw2PlvEucdlG77UniszjXTROHSPd"};function D(r,e){return r.map(t=>d.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function x(r){return/\.css$/.test(r)}function B(r){return/\.js$/.test(r)}function we(r){return/\.json$/.test(r)}function tt(r){return r.map(e=>`<script src="${d.url.append(e,{v:M})}"><\/script>`).join("")}function st(r=[]){return r.map(e=>`<link rel="stylesheet" href="${d.url.append(e,{v:M})}" />`).join("")}function Ee(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function je(r,e,t=!1){const s=r.filter(m=>!!m.enabled),n=[],i=[],a=[],o=[],p={},c={},l=[],u={};return s.forEach(({urls:m,assetsUrl:h,library:f,assetsLibrary:v,localeLibrary:S})=>{m?.forEach(g=>{B(g)&&n.push(Ee(g,t)),x(g)&&i.push(g)}),f&&(o.push(f),p[f]=D(m||[],e),S&&(c[f]=S)),h&&a.push(h),v&&l.push(v),f&&v&&(u[v]=f)}),{scripts:D(n,e),css:D(i,e),materials:D(a,e),libraryExports:o,materialExports:d.dedupArray(l),materialMapLibrary:u,libraryMap:p,libraryLocaleMap:c}}function $e(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function Ce(r=[]){const e=r.filter(s=>x(s)),t=r.filter(s=>B(s));return{css:e,js:t}}function be(r,e){const t=c=>{const l=[];let u=0;for(;u<c.length;){if(/\s/.test(c[u])){u++;continue}if(c.substring(u,u+2)==="/*"){const g=c.indexOf("*/",u+2);if(g!==-1){u=g+2;continue}}if(c[u]==="@"){const g=u;for(;u<c.length&&c[u]!=="{"&&c[u]!==";";)u++;const C=c.substring(g,u).trim(),y=C.includes("@keyframes");if(c[u]===";")l.push({type:"simple-at-rule",content:c.substring(g,u+1)}),u++;else if(c[u]==="{"){const N=u+1;let P=1;for(u++;u<c.length&&P>0;)c[u]==="{"?P++:c[u]==="}"&&P--,u++;const V=c.substring(g,u),b=c.substring(N,u-1);l.push({type:y?"keyframes":"at-rule",rule:C,content:V,inner:b})}continue}const m=u;for(;u<c.length&&c[u]!=="{";)u++;if(u>=c.length)break;const h=c.substring(m,u).trim();if(!h){u++;continue}const f=u+1;let v=1;for(u++;u<c.length&&v>0;)c[u]==="{"?v++:c[u]==="}"&&v--,u++;const S=c.substring(f,u-1);l.push({type:"rule",selector:h,content:S.trim()})}return l},s=c=>{const l=c.trim();return/^(from|to|\d+(\.\d+)?%)$/.test(l)},n=c=>c.replace(/::v-deep\(/g,":deep(").replace(/::v-deep\s+/g,":deep(").replace(/\/deep\//g," ").replace(/>>>/g," ").replace(/(.*?):deep\(([^)]+)\)/g,(l,u,m)=>{const h=u.trim(),f=m.trim();return h?`${h}[${e}] ${f}`:f}),i=c=>{const l=c.trim();if(!l||l.includes(`[${e}]`)||/^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(l)||s(l))return l;const u=l.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);if(u){const[,m,h=""]=u,f=m.trim();return f?`${f}[${e}]${h}`:l}return`${l}[${e}]`},a=c=>n(c).split(",").map(u=>i(u)).filter(u=>u.trim()).join(", "),o=c=>c.map(l=>{switch(l.type){case"simple-at-rule":return l.content;case"keyframes":return l.content;case"at-rule":try{const m=t(l.inner),h=o(m);return`${l.rule} { ${h} }`}catch{return l.content}case"rule":if(!l.selector||!l.content)return"";const u=a(l.selector);return u.trim()?`${u} { ${l.content} }`:"";default:return""}}).filter(l=>l.trim()).join(" "),p=c=>c.replace(/\s*{\s*/g," { ").replace(/\s*}\s*/g," } ").replace(/\s*;\s*/g,"; ").replace(/\s*,\s*/g,", ").replace(/\s+/g," ").replace(/^\s+|\s+$/g,"").replace(/\s*}\s*}/g," } }").trim();try{const c=r.replace(/\/\*(?!\s*!)[\s\S]*?\*\//g,"").replace(/^\s+|\s+$/gm,"").replace(/\n\s*\n/g,`
8
+ `),l=t(c),u=o(l);return p(u)}catch(c){return console.error("CSS scoping failed:",c),console.error("Input CSS:",r),r.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(@keyframes\s+[^{]+\s*{[^{}]*(?:{[^}]*}[^{}]*)*})/g,l=>l).replace(/([^{}@]+)(?=\s*{)/g,l=>{const u=l.trim();return!u||u.startsWith("@")||u.includes(`[${e}]`)||s(u)?l:`${u}[${e}]`})}}function Z(r){return d.isString(r)?r:JSON.stringify(r)}function ee(r,e,t,s=!1){const n=r.CSSStyleSheet,i=s?`data-v-${e}`:e,a=s?be(t,i):t;if(n.prototype.replaceSync){const o=new n;o.id=e,o.replaceSync(a);const p=r.document,c=p.adoptedStyleSheets,l=Array.from(c).filter(u=>u.id!==e);p.adoptedStyleSheets=[...l,o]}else{const o=r.document;let p=o.getElementById(e);p?p.innerHTML=a:(p=o.createElement("style"),p.id=e,p.innerHTML=a,o.head.appendChild(p))}}async function Re(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&ee(window,r,t)}function te(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 se(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 p of r){const c=s.createElement("script");c.src=p,c.onload=()=>{i=t[e],i?a(i.default||i):o(null)},c.onerror=l=>{o(l)},n.appendChild(c)}})}function Pe(r){return d.isFunction(r)||d.isFunction(r?.install)}function Ae(r){return Se.includes(r)}function Ie(r){return _e.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 rt(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,p)=>`__self${p}`),i=n.join(`
9
+ `)+i;const a=`with(${t?"{}":"$scope || {}"}) { ${i} }`;return new Function("$scope",a)(e)}catch(n){if(d.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function L(r,e,t=!1,s=!1){const n=F(r,e,t,s);if(typeof n!="function"&&(d.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function j(r){return r&&r.type==="JSExpression"}function O(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function Me(r){return j(r)||O(r)}function nt(r){return Me(r)?r.value:JSON.stringify(r)}const it={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},re=Symbol("access");class ne{options;data=null;mode=_.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},it,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===_.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&&(d.storage.save(t,e,{type:"local",prefix:s}),n&&d.cookie.set(i,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,d.storage.remove(e,{type:"local",prefix:t}),s&&d.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):d.toArray(e).every(i=>s[i]||s[t+"."+i])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return d.toArray(e).some(i=>s[i]||s[t+"."+i])}install(e){e.config.globalProperties.$access=this,e.provide(re,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=>d.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?d.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=d.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!d.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),d.isFunction(n)?(n(),t(!1)):d.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 d.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 Te(){return E.inject(re,null)}function ot(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:i,useTitle:a,alert:o}=r;let p=null;return{request:d.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:l=>l.data?.code===0||!!l.data?.success,failMessage:!0,showError:l=>{e&&e(l||"未知错误")},showLoading:()=>{p&&p.close(),t&&(p=t())},hideLoading:()=>{p&&(p.close(),p=null)},...s}}),jsonp:d.jsonp,notify:e,loading:t,useTitle:a,startupComponent:n,access:i?new ne({alert:o,...i}):void 0}}function at(r={}){return new ne(r)}function ke(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(d.merge(i,o||{},{data:a})))}}function Fe(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 Oe(r=[],e=[],t){const s={};for(const n of r)s[n.id]=ke(n,t);for(const n of e)s[n.id]=Fe(n,t);return s}async function De(r=[],e=window){const t=k(e);t&&(ie(e),r.forEach(s=>xe(t,s)))}function He(r,e=window){const t=O(r.mockTemplate)&&r.mockTemplate.value?L(r.mockTemplate,{},!0):void 0,s=k(e);return async(...n)=>{let i={};if(t)try{i=await t.apply(t,n)}catch(a){d.logger.warn("模拟数据模版异常",a)}return s?.mock(i)}}function xe(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const n=d.pathToRegexp(`${t}(.*)`),i=d.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=F(s,{},!0);r.mock(n,o=>{const p=d.url.parse(o.url)||{},c=o.body instanceof FormData?d.formDataToJson(o.body):o.body,l=i(o.url)?.params;return Object.assign(o,{data:c,params:p,query:l}),r.mock(a(o))})}}function ie(r=window){const e=k(r);e&&(e._mocked={})}class Be{__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=K){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&&Y.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){Y.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return L({type:s,value:n},this)}else return L(e,this)}__parseExpression(e){if(e)if(this.__mode===_.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!==_.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await d.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,_.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 J(r){const{Vue:e=K,mode:t=_.Runtime,components:s={},libs:n={},apis:i={},loader:a}=r,o=e.computed(()=>r.dsl),p={$components:s,$libs:n,$apis:i},c=new Be({mode:t,dsl:o.value,attrs:p}),l=e.defineComponent({name:o.value.name,__scopeId:o.value.id?`data-v-${o.value.id}`:void 0,props:{...lt(o.value.props??[],c)},setup(u){c.$props=u,c.props=u,o.value.id&&ee(r.window||window,o.value.id,o.value.css||"",!0),c.state=ut(e,o.value.state??{},c);const m=pt(e,o.value.computed??{},c),h=dt(o.value.methods??{},c),f=ft(e,o.value.inject,c);for(const[g,C]of Object.entries(f||{}))f[g]=e.inject(g,C);const v=Ne(o.value.dataSources||{},c),S={...f,...m,...h,...v};return c.setup(S,e),ht(e,o.value.watch??[],c),{vtj:c}},emits:ct(o.value.emits),expose:["vtj"],render(){if(!o.value.nodes)return null;const u=o.value.nodes||[];return u.length===1?I(u[0],c,e,a,u):u.map(m=>I(m,c,e,a,u))},...mt(o.value.lifeCycles??{},c)});return{renderer:e.markRaw(l),context:c}}function ct(r=[]){return r.map(e=>d.isString(e)?e:e.name)}function lt(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(i=>ye[i]):void 0;return r.map(s=>d.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:j(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 ut(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let i=e[n];return j(i)?i=t.__parseExpression(i):O(i)&&(i=t.__parseFunction(i)),s[n]=i,s},{}))}function pt(r,e,t){return Object.entries(e??{}).reduce((s,[n,i])=>(s[n]=r.computed(t.__parseFunction(i)),s),{})}function dt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function ft(r,e=[],t){return e.reduce((s,n)=>{const{name:i,from:a}=n||{};n.default;const o=j(a)?t.__parseExpression(a)||i:a??i,p=j(n.default)?t.__parseExpression(n.default):n.default??null;return s[i]=r.inject(o,p),s},{})}function Ne(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=He(n);else if(n.ref){const i=e.$apis[n.ref],a=O(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...o)=>{const p=await i.apply(e,o);return a?a(p):p}}return t},{})}function ht(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function mt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>{const i=e.__parseFunction(n);return t[s]=async()=>{await d.delay(0),d.isFunction(i)&&i()},t},{})}const Ue=new d.Queue;let Q=[],A={};const Le=r=>r;async function oe(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=>x(o));return i.length&&te(i,e),await se(n,s,e).catch(o=>(console.warn("loadScriptUrl error",n,s,o),null))}function q(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(Q.forEach(n=>{delete s.window[n]}),Q=[]),(n,i,a=K)=>{if(!i||typeof i=="string")return n;if(i.type==="Schema"&&i.id)return a.defineAsyncComponent(async()=>{const o=A[i.id]||await Ue.add(i.id,()=>e(i.id));return o&&(o.name=n,A[i.id]=o),o?J({...s,Vue:a,dsl:d.cloneDeep(o),mode:_.Runtime,loader:q(r)}).renderer:null});if(i.type==="UrlSchema"&&i.url)return a.defineAsyncComponent(async()=>{const o=A[i.url]||await t(i.url);return o&&(o.name=n,A[i.url]=o),o?J({...s,Vue:a,dsl:d.cloneDeep(o),mode:_.Runtime,loader:q(r)}).renderer:null});if(i.type==="Plugin"){let o=i.library?A[i.library]:null;return o||(i.library&&Q.push(i.library),o=A[i.library||Symbol()]=a.defineAsyncComponent(async()=>{const p=await oe(i,s.window);return p||(console.warn("getPlugin result is null",i),null)}),o)}return n}}function gt(){A={},Ue.clearAllCache()}function I(r,e,t=K,s=Le,n=[],i=!1){if(!r||!r.name||r.invisible)return null;const a=t.getCurrentInstance()?.appContext,{id:o=null,directives:p=[]}=r,{vIf:c,vElseIf:l,vElse:u,vFor:m,vShow:h,vModels:f,vBind:v,vHtml:S,others:g}=Je(p);if(!i&&(l||u))return null;if(c&&!yt(c,e))return Et(r,e,t,s,n);const C=(y,N=0)=>{const P=y.$components,V=(()=>{if(r.name==="component")return _t(y,r.props?.is);if(r.name==="slot")return r.name;const $=s(r.name,r.from,t);if(d.isString($))return Ae($)||Ie($)?$:P[$]??a?.app?.component($)??$;if(d.isObject($)&&r.id){const fe=`Loader${r.id}_${N}`,he=P[fe];return he||(P[fe]=$)}return $})(),b=St(o,r.props??{},y),Ve=wt(t,r.events??{},y);if(r.name==="slot")return jt(t,r,b,y,s);v&&Object.assign(b,y.__parseExpression(v.value)),h&&(b.style=Object.assign(b.style??{},Ct(h,y))),S&&Object.assign(b,bt(S,y)),f.forEach($=>{Object.assign(b,Rt(t,$,y))});const We=Pt(t,r.children??[],y,s,r),pe=y?.__id?`data-v-${y.__id}`:void 0,Qe=pe?{[pe]:""}:{};let W=t.createVNode(V,{key:`${o}_${N}`,...Qe,...b,...Ve},We);const de=a?vt(a,g,y):[];return de.length&&(W=t.withDirectives(W,de)),W};return m?Mt(m,C,e):C(e)}function vt(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 Je(r=[]){const e=r.find(l=>d.camelCase(l.name)==="vIf"),t=r.find(l=>d.camelCase(l.name)==="vElseIf"),s=r.find(l=>d.camelCase(l.name)==="vElse"),n=r.find(l=>d.camelCase(l.name)==="vFor"),i=r.find(l=>d.camelCase(l.name)==="vShow"),a=r.find(l=>d.camelCase(l.name)==="vBind"),o=r.find(l=>d.camelCase(l.name)==="vHtml"),p=r.filter(l=>d.camelCase(l.name)==="vModel"),c=r.filter(l=>!ve.includes(d.camelCase(l.name)));return{vIf:e,vElseIf:t,vElse:s,vFor:n,vShow:i,vModels:p,vBind:a,others:c,vHtml:o}}function yt(r,e){return!!e.__parseExpression(r.value)}function _t(r,e){return e?j(e)?r.__parseExpression(e):e:"div"}function St(r,e,t){const s=X(e,t);return s.ref=t.__ref(r,s.ref),s}function X(r,e){return j(r)?e.__parseExpression(r):O(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>X(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=X(n,e),t},{}):r}function wt(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],p=ae(o.modifiers),c=p.find(m=>s.includes(m)),l="on"+d.upperFirst(a)+(c&&n[c]||""),u=t.__parseFunction(o.handler);return u&&(i[l]=r.withModifiers(u,p)),i},{})}function Et(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:p,vElse:c}=Je(o);if(p){if(e.__parseExpression(p.value))return I(n[a],e,t,s,n,!0);continue}if(c)return I(n[a],e,t,s,n,!0)}return null}function ae(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function jt(r,e,t,s,n){const{children:i}=e,a=$t(e,s),o=s.$slots?.[a.name];return o?o(t):i?d.isString(i)?r.createTextVNode(i):j(i)?r.createTextVNode(Z(s.__parseExpression(i))):Array.isArray(i)?i.map(p=>I(p,s,r,n,i)):null:null}function $t(r,e){const{props:t}=r,s=t?.name||"default";return{name:j(s)?e.__parseExpression(s):s,params:[]}}function Ct(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function bt(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function Rt(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
10
10
  ${e.value.value} = v;
11
- }`:"(v) => {}"},n=t.__parseFunction(s),i=ae(j(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=j(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 Pt(r,e,t,s,n){if(!e)return null;if(d.isString(e))return{default:()=>e};if(j(e))return{default:()=>Z(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const i=At(e),a=o=>!o||!n?{}:n?.id&&Object.keys(o).length?{[`scope_${n.id}`]:o}:{};return Object.entries(i).reduce((o,[p,{nodes:c,params:u}])=>(o[p]=l=>{const m=u.length?d.pick(l??{},u):a(l);return c.map(f=>I(f,t.__clone(m),r,s,c))},o),{})}return null}function At(r){const e={};for(const t of r){const s=It(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 It(r="default"){return d.isString(r)?{name:r,params:[]}:{params:[],...r}}function Mt(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((p,c)=>c+1)),Array.isArray(o)?o.map((p,c)=>e(t.__clone({[i]:p,[a]:c}),c)):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const me=E.defineComponent({name:"VtjPageContainer",async setup(){const r=ue(),e=ge.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,i=E.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?E.h(r,{...e,key:t}):E.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Tt=E.defineComponent({name:"VtjStartupContainer",render(){return E.h("div","page not found!")}});function z(r,e,t=[]){return t.map(s=>{const{id:n,title:i,icon:a,children:o,hidden:p}=s;return{id:n,title:i,icon:a,hidden:p,url:`${r}/${e}/${n}`,children:o&&o.length?z(r,e,o):void 0}})}function ce(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=ce(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function kt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=ue(),i=ge.useRoute(),a=Te(),o=E.ref(!1),p=E.ref(!1),c=n.project;E.watchEffect(()=>{const{name:m,params:f,meta:h}=i;if(m===T){const v=n.getPage(f.id);o.value=!v?.mask,p.value=!!v?.pure}else if(m===H){const v=n.getHomepage();o.value=!v?.mask,p.value=!!v?.pure}else o.value=!h.mask,p.value=!!h.pure});const u=z(e,t,c?.pages),l=c?.config;return{disabled:o,logo:l?.logo,themeSwitchable:l?.themeSwitchable,title:l?.title||c?.description||c?.name||"VTJ App",menus:s?u:ce(u,a),pure:p}}const le=Symbol("Provider");var qe=(r=>(r.Production="production",r.Development="development",r))(qe||{});class Ke extends R.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=_.Raw,dependencies:n,materials:i,project:a={},adapter:o={},globals:p={},modules:c={},router:u=null,materialPath:l="./",nodeEnv:m="development"}=e;this.mode=s,this.modules=c,this.service=t,this.router=u,this.materialPath=l,this.nodeEnv=m,n&&(this.dependencies=n),i&&(this.materials=i),Object.assign(this.globals,p),Object.assign(this.adapter,o);const{access:f,request:h}=this.adapter;f&&f.connect({mode:s,router:u,request:h}),a&&s!==_.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:d.request,jsonp:d.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){d.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===_.Raw?await this.loadDependencies(i):await this.loadAssets(i),this.initMock(i),this.apis=Oe(s,n,this.adapter),ie(i),De(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:p,libraryMap:c,materials:u,materialExports:l,materialMapLibrary:m}=je(t,a,o==="development");for(const f of p){const h=s[f],v=e[f];if(v)n[f]=v;else if(h)e[f]=n[f]=await h();else{const S=c[f]||[];for(const g of S)x(g)&&await Re(g,d.url.append(g,{v:M})),B(g)&&await d.loadScript(d.url.append(g,{v:M}));n[f]=e[f]}}if(o==="development"){for(const h of u)await d.loadScript(d.url.append(h,{v:M}));const f=this.materials||{};for(const h of l){const v=e[m[h]],S=R.BUILT_IN_COMPONENTS[h];if(S)v&&S.forEach(g=>{i[g]=v[g]});else{const g=f[h]?(await f[h]()).default:e[h];g&&v&&(g.components||[]).forEach(C=>{i[C.name]=$e(C,v)})}}}}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:p}=s,c=a?"":"/",u={path:`${c}${o}/:id`,name:T,component:me},l={path:c,name:H,component:t?.homepage?me:n.startupComponent||Tt,meta:p};e.hasRoute(T)&&e.removeRoute(T),e.hasRoute(H)&&e.removeRoute(H),a?(e.addRoute(a,u),e.addRoute(a,l)):(e.addRoute(u),e.addRoute(l))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&Pe(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(le,this),e.config.globalProperties.$provider=this,e.config.globalProperties.installed=t,this.mode===_.Design&&(e.config.errorHandler=(s,n,i)=>{const a=n?.$options.name,o=typeof s=="string"?s:s?.message||s?.msg||"未知错误",p=`[ ${a} ] ${o} ${i}`;console.error("[VTJ Error]:",{err:s,instance:n,info:i},s?.stack),this.adapter.notify&&this.adapter.notify(p,"组件渲染错误","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}getMenus(e="page",t=""){return z(t,e,this.project?.pages||[])}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},p=q({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:o});return J({...o,dsl:e,loader:p})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return d.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:(d.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return E.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return E.defineAsyncComponent(async()=>await oe(e,window))}}function Ft(r){const e=new Ke(r);return{provider:e,onReady:s=>e.ready(s)}}function ue(r={}){const e=E.inject(le,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 Ot(r,e=""){const{name:t,urls:s=[]}=r||{},n=s.map(o=>e+o),{css:i,js:a}=Ce(n);if(i.length&&te(i),a.length)return await se(a,t).catch(()=>{})}const ze={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},Dt=(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:ze}),Ht=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...ze,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function xt(r){return d.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class G{constructor(e=d.request){this.req=e,this.api=Dt(e),this.uploader=Ht(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=>we(i))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=d.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 w=new d.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Bt extends G{init(e){const t=new R.ProjectModel(e),s=w.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return w.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new R.ProjectModel(e);return w.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return w.save(`materials_${e.id}`,d.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return w.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=w.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return w.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return w.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=w.get(`history_${e}`);if(t){const n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),w.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=w.get(`history_${e}`),s=new R.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=w.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return w.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{w.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class Ge extends G{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]=d.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 U=null;function Nt(){return U||(U=new Ge,U)}class Ut extends G{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:d.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)}}exports.ACCESS=et;exports.ACCESS_KEY=re;exports.Access=ne;exports.BUILD_IN_TAGS=Se;exports.BUILT_IN_DIRECTIVES=ve;exports.BaseService=G;exports.CONTEXT_HOST=Y;exports.Context=Be;exports.ContextMode=_;exports.DATA_TYPES=ye;exports.HOMEPAGE_ROUTE_NAME=H;exports.HTML_TAGS=_e;exports.JSCodeToString=nt;exports.LIFE_CYCLES_LIST=Xe;exports.LocalService=Ut;exports.MemoryService=Ge;exports.NodeEnv=qe;exports.PAGE_ROUTE_NAME=T;exports.Provider=Ke;exports.REMOTE=Ze;exports.StorageService=Bt;exports.VTJ_RENDERER_VERSION=M;exports.adoptedStyleSheets=ee;exports.clearLoaderCache=gt;exports.compileScopedCSS=be;exports.createAccess=at;exports.createAdapter=ot;exports.createAssetScripts=tt;exports.createAssetsCss=st;exports.createDataSources=Ne;exports.createLoader=q;exports.createMemoryService=Nt;exports.createMenus=z;exports.createMetaApi=Fe;exports.createMock=He;exports.createProvider=Ft;exports.createRenderer=J;exports.createSchemaApi=ke;exports.createSchemaApis=Oe;exports.createServiceRequest=xt;exports.defaultLoader=Le;exports.fillBasePath=D;exports.getMock=k;exports.getModifiers=ae;exports.getPlugin=oe;exports.getRawComponent=$e;exports.isBuiltInTag=Ae;exports.isCSSUrl=x;exports.isJSCode=Me;exports.isJSExpression=j;exports.isJSFunction=O;exports.isJSON=we;exports.isJSUrl=B;exports.isNativeTag=Ie;exports.isVuePlugin=Pe;exports.loadCss=Re;exports.loadCssUrl=te;exports.loadEnhance=Ot;exports.loadScriptUrl=se;exports.menusFilter=ce;exports.mockApi=xe;exports.mockApis=De;exports.mockCleanup=ie;exports.nodeRender=I;exports.parseDeps=je;exports.parseExpression=F;exports.parseFunction=L;exports.parseUrls=Ce;exports.providerKey=le;exports.removeProdFlag=Ee;exports.setupPageSetting=rt;exports.toString=Z;exports.useAccess=Te;exports.useMask=kt;exports.useProvider=ue;
11
+ }`:"(v) => {}"},n=t.__parseFunction(s),i=ae(j(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=j(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 Pt(r,e,t,s,n){if(!e)return null;if(d.isString(e))return{default:()=>e};if(j(e))return{default:()=>Z(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const i=At(e),a=(o,p)=>!o||!n?{}:n?.id&&Object.keys(o).length?p?{[p]:o}:{[`scope_${n.id}`]:o}:p?{[p]:Object.create(null)}:{};return Object.entries(i).reduce((o,[p,{nodes:c,params:l,scope:u}])=>(o[p]=m=>{const h=l.length?d.pick(m??{},l):a(m,u);return c.map(f=>I(f,t.__clone(h),r,s,c))},o),{})}return null}function At(r){const e={};for(const t of r){const s=It(t.slot),n=s.name;e[n]?(e[n].nodes.push(t),e[n].params=e[n].params.concat(s.params),e[n].scope=s.scope||""):e[n]={nodes:[t],params:s.params,scope:s.scope||""}}return e}function It(r="default"){return d.isString(r)?{name:r,params:[],scope:""}:{params:[],scope:"",...r}}function Mt(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((p,c)=>c+1)),Array.isArray(o)?o.map((p,c)=>e(t.__clone({[i]:p,[a]:c}),c)):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const me=E.defineComponent({name:"VtjPageContainer",async setup(){const r=ue(),e=ge.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,i=E.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?E.h(r,{...e,key:t}):E.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Tt=E.defineComponent({name:"VtjStartupContainer",render(){return E.h("div","page not found!")}});function z(r,e,t=[]){return t.map(s=>{const{id:n,title:i,icon:a,children:o,hidden:p}=s;return{id:n,title:i,icon:a,hidden:p,url:`${r}/${e}/${n}`,children:o&&o.length?z(r,e,o):void 0}})}function ce(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=ce(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function kt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=ue(),i=ge.useRoute(),a=Te(),o=E.ref(!1),p=E.ref(!1),c=n.project;E.watchEffect(()=>{const{name:m,params:h,meta:f}=i;if(m===T){const v=n.getPage(h.id);o.value=!v?.mask,p.value=!!v?.pure}else if(m===H){const v=n.getHomepage();o.value=!v?.mask,p.value=!!v?.pure}else o.value=!f.mask,p.value=!!f.pure});const l=z(e,t,c?.pages),u=c?.config;return{disabled:o,logo:u?.logo,themeSwitchable:u?.themeSwitchable,title:u?.title||c?.description||c?.name||"VTJ App",menus:s?l:ce(l,a),pure:p}}const le=Symbol("Provider");var qe=(r=>(r.Production="production",r.Development="development",r))(qe||{});class Ke extends R.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=_.Raw,dependencies:n,materials:i,project:a={},adapter:o={},globals:p={},modules:c={},router:l=null,materialPath:u="./",nodeEnv:m="development"}=e;this.mode=s,this.modules=c,this.service=t,this.router=l,this.materialPath=u,this.nodeEnv=m,n&&(this.dependencies=n),i&&(this.materials=i),Object.assign(this.globals,p),Object.assign(this.adapter,o);const{access:h,request:f}=this.adapter;h&&h.connect({mode:s,router:l,request:f}),a&&s!==_.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:d.request,jsonp:d.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){d.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===_.Raw?await this.loadDependencies(i):await this.loadAssets(i),this.initMock(i),this.apis=Oe(s,n,this.adapter),ie(i),De(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:p,libraryMap:c,materials:l,materialExports:u,materialMapLibrary:m}=je(t,a,o==="development");for(const h of p){const f=s[h],v=e[h];if(v)n[h]=v;else if(f)e[h]=n[h]=await f();else{const S=c[h]||[];for(const g of S)x(g)&&await Re(g,d.url.append(g,{v:M})),B(g)&&await d.loadScript(d.url.append(g,{v:M}));n[h]=e[h]}}if(o==="development"){for(const f of l)await d.loadScript(d.url.append(f,{v:M}));const h=this.materials||{};for(const f of u){const v=e[m[f]],S=R.BUILT_IN_COMPONENTS[f];if(S)v&&S.forEach(g=>{i[g]=v[g]});else{const g=h[f]?(await h[f]()).default:e[f];g&&v&&(g.components||[]).forEach(C=>{i[C.name]=$e(C,v)})}}}}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:p}=s,c=a?"":"/",l={path:`${c}${o}/:id`,name:T,component:me},u={path:c,name:H,component:t?.homepage?me:n.startupComponent||Tt,meta:p};e.hasRoute(T)&&e.removeRoute(T),e.hasRoute(H)&&e.removeRoute(H),a?(e.addRoute(a,l),e.addRoute(a,u)):(e.addRoute(l),e.addRoute(u))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&Pe(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(le,this),e.config.globalProperties.$provider=this,e.config.globalProperties.installed=t,this.mode===_.Design&&(e.config.errorHandler=(s,n,i)=>{const a=n?.$options.name,o=typeof s=="string"?s:s?.message||s?.msg||"未知错误",p=`[ ${a} ] ${o} ${i}`;console.error("[VTJ Error]:",{err:s,instance:n,info:i},s?.stack),this.adapter.notify&&this.adapter.notify(p,"组件渲染错误","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}getMenus(e="page",t=""){return z(t,e,this.project?.pages||[])}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},p=q({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:o});return J({...o,dsl:e,loader:p})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return d.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:(d.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return E.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return E.defineAsyncComponent(async()=>await oe(e,window))}}function Ft(r){const e=new Ke(r);return{provider:e,onReady:s=>e.ready(s)}}function ue(r={}){const e=E.inject(le,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 Ot(r,e=""){const{name:t,urls:s=[]}=r||{},n=s.map(o=>e+o),{css:i,js:a}=Ce(n);if(i.length&&te(i),a.length)return await se(a,t).catch(()=>{})}const ze={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},Dt=(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:ze}),Ht=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...ze,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function xt(r){return d.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class G{constructor(e=d.request){this.req=e,this.api=Dt(e),this.uploader=Ht(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=>we(i))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=d.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 w=new d.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Bt extends G{init(e){const t=new R.ProjectModel(e),s=w.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return w.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new R.ProjectModel(e);return w.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return w.save(`materials_${e.id}`,d.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return w.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=w.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return w.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return w.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=w.get(`history_${e}`);if(t){const n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),w.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=w.get(`history_${e}`),s=new R.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=w.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return w.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{w.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class Ge extends G{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]=d.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 U=null;function Nt(){return U||(U=new Ge,U)}class Ut extends G{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:d.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)}}exports.ACCESS=et;exports.ACCESS_KEY=re;exports.Access=ne;exports.BUILD_IN_TAGS=Se;exports.BUILT_IN_DIRECTIVES=ve;exports.BaseService=G;exports.CONTEXT_HOST=Y;exports.Context=Be;exports.ContextMode=_;exports.DATA_TYPES=ye;exports.HOMEPAGE_ROUTE_NAME=H;exports.HTML_TAGS=_e;exports.JSCodeToString=nt;exports.LIFE_CYCLES_LIST=Xe;exports.LocalService=Ut;exports.MemoryService=Ge;exports.NodeEnv=qe;exports.PAGE_ROUTE_NAME=T;exports.Provider=Ke;exports.REMOTE=Ze;exports.StorageService=Bt;exports.VTJ_RENDERER_VERSION=M;exports.adoptedStyleSheets=ee;exports.clearLoaderCache=gt;exports.compileScopedCSS=be;exports.createAccess=at;exports.createAdapter=ot;exports.createAssetScripts=tt;exports.createAssetsCss=st;exports.createDataSources=Ne;exports.createLoader=q;exports.createMemoryService=Nt;exports.createMenus=z;exports.createMetaApi=Fe;exports.createMock=He;exports.createProvider=Ft;exports.createRenderer=J;exports.createSchemaApi=ke;exports.createSchemaApis=Oe;exports.createServiceRequest=xt;exports.defaultLoader=Le;exports.fillBasePath=D;exports.getMock=k;exports.getModifiers=ae;exports.getPlugin=oe;exports.getRawComponent=$e;exports.isBuiltInTag=Ae;exports.isCSSUrl=x;exports.isJSCode=Me;exports.isJSExpression=j;exports.isJSFunction=O;exports.isJSON=we;exports.isJSUrl=B;exports.isNativeTag=Ie;exports.isVuePlugin=Pe;exports.loadCss=Re;exports.loadCssUrl=te;exports.loadEnhance=Ot;exports.loadScriptUrl=se;exports.menusFilter=ce;exports.mockApi=xe;exports.mockApis=De;exports.mockCleanup=ie;exports.nodeRender=I;exports.parseDeps=je;exports.parseExpression=F;exports.parseFunction=L;exports.parseUrls=Ce;exports.providerKey=le;exports.removeProdFlag=Ee;exports.setupPageSetting=rt;exports.toString=Z;exports.useAccess=Te;exports.useMask=kt;exports.useProvider=ue;
package/dist/index.mjs CHANGED
@@ -7,10 +7,10 @@ import { useRoute as je } 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.63
10
+ * @version 0.12.65
11
11
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
12
12
  */
13
- const k = "0.12.63";
13
+ const k = "0.12.65";
14
14
  var w = /* @__PURE__ */ ((r) => (r.Runtime = "Runtime", r.Design = "Design", r.Raw = "Raw", r.VNode = "VNode", r))(w || {});
15
15
  const ve = [
16
16
  "$el",
@@ -165,20 +165,20 @@ function ct(r, e = !1) {
165
165
  return e && r.endsWith(".prod.js") ? r.replace(".prod.js", ".js") : r;
166
166
  }
167
167
  function lt(r, e, t = !1) {
168
- const s = r.filter((h) => !!h.enabled), n = [], i = [], a = [], o = [], p = {}, c = {}, u = [], l = {};
168
+ const s = r.filter((h) => !!h.enabled), n = [], i = [], a = [], o = [], p = {}, c = {}, l = [], u = {};
169
169
  return s.forEach(
170
- ({ urls: h, assetsUrl: f, library: d, assetsLibrary: g, localeLibrary: y }) => {
170
+ ({ urls: h, assetsUrl: d, library: f, assetsLibrary: g, localeLibrary: y }) => {
171
171
  h?.forEach((m) => {
172
172
  K(m) && n.push(ct(m, t)), q(m) && i.push(m);
173
- }), d && (o.push(d), p[d] = x(h || [], e), y && (c[d] = y)), f && a.push(f), g && u.push(g), d && g && (l[g] = d);
173
+ }), f && (o.push(f), p[f] = x(h || [], e), y && (c[f] = y)), d && a.push(d), g && l.push(g), f && g && (u[g] = f);
174
174
  }
175
175
  ), {
176
176
  scripts: x(n, e),
177
177
  css: x(i, e),
178
178
  materials: x(a, e),
179
179
  libraryExports: o,
180
- materialExports: ze(u),
181
- materialMapLibrary: l,
180
+ materialExports: ze(l),
181
+ materialMapLibrary: u,
182
182
  libraryMap: p,
183
183
  libraryLocaleMap: c
184
184
  };
@@ -196,37 +196,37 @@ function pt(r = []) {
196
196
  }
197
197
  function ft(r, e) {
198
198
  const t = (c) => {
199
- const u = [];
200
- let l = 0;
201
- for (; l < c.length; ) {
202
- if (/\s/.test(c[l])) {
203
- l++;
199
+ const l = [];
200
+ let u = 0;
201
+ for (; u < c.length; ) {
202
+ if (/\s/.test(c[u])) {
203
+ u++;
204
204
  continue;
205
205
  }
206
- if (c.substring(l, l + 2) === "/*") {
207
- const m = c.indexOf("*/", l + 2);
206
+ if (c.substring(u, u + 2) === "/*") {
207
+ const m = c.indexOf("*/", u + 2);
208
208
  if (m !== -1) {
209
- l = m + 2;
209
+ u = m + 2;
210
210
  continue;
211
211
  }
212
212
  }
213
- if (c[l] === "@") {
214
- const m = l;
215
- for (; l < c.length && c[l] !== "{" && c[l] !== ";"; )
216
- l++;
217
- const E = c.substring(m, l).trim(), v = E.includes("@keyframes");
218
- if (c[l] === ";")
219
- u.push({
213
+ if (c[u] === "@") {
214
+ const m = u;
215
+ for (; u < c.length && c[u] !== "{" && c[u] !== ";"; )
216
+ u++;
217
+ const E = c.substring(m, u).trim(), v = E.includes("@keyframes");
218
+ if (c[u] === ";")
219
+ l.push({
220
220
  type: "simple-at-rule",
221
- content: c.substring(m, l + 1)
222
- }), l++;
223
- else if (c[l] === "{") {
224
- const H = l + 1;
221
+ content: c.substring(m, u + 1)
222
+ }), u++;
223
+ else if (c[u] === "{") {
224
+ const H = u + 1;
225
225
  let P = 1;
226
- for (l++; l < c.length && P > 0; )
227
- c[l] === "{" ? P++ : c[l] === "}" && P--, l++;
228
- const z = c.substring(m, l), j = c.substring(H, l - 1);
229
- u.push({
226
+ for (u++; u < c.length && P > 0; )
227
+ c[u] === "{" ? P++ : c[u] === "}" && P--, u++;
228
+ const z = c.substring(m, u), j = c.substring(H, u - 1);
229
+ l.push({
230
230
  type: v ? "keyframes" : "at-rule",
231
231
  rule: E,
232
232
  content: z,
@@ -235,76 +235,76 @@ function ft(r, e) {
235
235
  }
236
236
  continue;
237
237
  }
238
- const h = l;
239
- for (; l < c.length && c[l] !== "{"; )
240
- l++;
241
- if (l >= c.length) break;
242
- const f = c.substring(h, l).trim();
243
- if (!f) {
244
- l++;
238
+ const h = u;
239
+ for (; u < c.length && c[u] !== "{"; )
240
+ u++;
241
+ if (u >= c.length) break;
242
+ const d = c.substring(h, u).trim();
243
+ if (!d) {
244
+ u++;
245
245
  continue;
246
246
  }
247
- const d = l + 1;
247
+ const f = u + 1;
248
248
  let g = 1;
249
- for (l++; l < c.length && g > 0; )
250
- c[l] === "{" ? g++ : c[l] === "}" && g--, l++;
251
- const y = c.substring(d, l - 1);
252
- u.push({
249
+ for (u++; u < c.length && g > 0; )
250
+ c[u] === "{" ? g++ : c[u] === "}" && g--, u++;
251
+ const y = c.substring(f, u - 1);
252
+ l.push({
253
253
  type: "rule",
254
- selector: f,
254
+ selector: d,
255
255
  content: y.trim()
256
256
  });
257
257
  }
258
- return u;
258
+ return l;
259
259
  }, s = (c) => {
260
- const u = c.trim();
261
- return /^(from|to|\d+(\.\d+)?%)$/.test(u);
262
- }, n = (c) => c.replace(/::v-deep\(/g, ":deep(").replace(/::v-deep\s+/g, ":deep(").replace(/\/deep\//g, " ").replace(/>>>/g, " ").replace(/(.*?):deep\(([^)]+)\)/g, (u, l, h) => {
263
- const f = l.trim(), d = h.trim();
264
- return f ? `${f}[${e}] ${d}` : d;
260
+ const l = c.trim();
261
+ return /^(from|to|\d+(\.\d+)?%)$/.test(l);
262
+ }, n = (c) => c.replace(/::v-deep\(/g, ":deep(").replace(/::v-deep\s+/g, ":deep(").replace(/\/deep\//g, " ").replace(/>>>/g, " ").replace(/(.*?):deep\(([^)]+)\)/g, (l, u, h) => {
263
+ const d = u.trim(), f = h.trim();
264
+ return d ? `${d}[${e}] ${f}` : f;
265
265
  }), i = (c) => {
266
- const u = c.trim();
267
- if (!u || u.includes(`[${e}]`) || /^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(u) || s(u))
268
- return u;
269
- const l = u.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);
270
- if (l) {
271
- const [, h, f = ""] = l, d = h.trim();
272
- return d ? `${d}[${e}]${f}` : u;
266
+ const l = c.trim();
267
+ if (!l || l.includes(`[${e}]`) || /^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(l) || s(l))
268
+ return l;
269
+ const u = l.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);
270
+ if (u) {
271
+ const [, h, d = ""] = u, f = h.trim();
272
+ return f ? `${f}[${e}]${d}` : l;
273
273
  }
274
- return `${u}[${e}]`;
275
- }, a = (c) => n(c).split(",").map((l) => i(l)).filter((l) => l.trim()).join(", "), o = (c) => c.map((u) => {
276
- switch (u.type) {
274
+ return `${l}[${e}]`;
275
+ }, a = (c) => n(c).split(",").map((u) => i(u)).filter((u) => u.trim()).join(", "), o = (c) => c.map((l) => {
276
+ switch (l.type) {
277
277
  case "simple-at-rule":
278
- return u.content;
278
+ return l.content;
279
279
  case "keyframes":
280
- return u.content;
280
+ return l.content;
281
281
  case "at-rule":
282
282
  try {
283
- const h = t(u.inner), f = o(h);
284
- return `${u.rule} { ${f} }`;
283
+ const h = t(l.inner), d = o(h);
284
+ return `${l.rule} { ${d} }`;
285
285
  } catch {
286
- return u.content;
286
+ return l.content;
287
287
  }
288
288
  case "rule":
289
- if (!u.selector || !u.content)
289
+ if (!l.selector || !l.content)
290
290
  return "";
291
- const l = a(u.selector);
292
- return l.trim() ? `${l} { ${u.content} }` : "";
291
+ const u = a(l.selector);
292
+ return u.trim() ? `${u} { ${l.content} }` : "";
293
293
  default:
294
294
  return "";
295
295
  }
296
- }).filter((u) => u.trim()).join(" "), p = (c) => c.replace(/\s*{\s*/g, " { ").replace(/\s*}\s*/g, " } ").replace(/\s*;\s*/g, "; ").replace(/\s*,\s*/g, ", ").replace(/\s+/g, " ").replace(/^\s+|\s+$/g, "").replace(/\s*}\s*}/g, " } }").trim();
296
+ }).filter((l) => l.trim()).join(" "), p = (c) => c.replace(/\s*{\s*/g, " { ").replace(/\s*}\s*/g, " } ").replace(/\s*;\s*/g, "; ").replace(/\s*,\s*/g, ", ").replace(/\s+/g, " ").replace(/^\s+|\s+$/g, "").replace(/\s*}\s*}/g, " } }").trim();
297
297
  try {
298
298
  const c = r.replace(/\/\*(?!\s*!)[\s\S]*?\*\//g, "").replace(/^\s+|\s+$/gm, "").replace(/\n\s*\n/g, `
299
- `), u = t(c), l = o(u);
300
- return p(l);
299
+ `), l = t(c), u = o(l);
300
+ return p(u);
301
301
  } catch (c) {
302
302
  return console.error("CSS scoping failed:", c), console.error("Input CSS:", r), r.replace(/\/\*[\s\S]*?\*\//g, "").replace(
303
303
  /(@keyframes\s+[^{]+\s*{[^{}]*(?:{[^}]*}[^{}]*)*})/g,
304
- (u) => u
305
- ).replace(/([^{}@]+)(?=\s*{)/g, (u) => {
306
- const l = u.trim();
307
- return !l || l.startsWith("@") || l.includes(`[${e}]`) || s(l) ? u : `${l}[${e}]`;
304
+ (l) => l
305
+ ).replace(/([^{}@]+)(?=\s*{)/g, (l) => {
306
+ const u = l.trim();
307
+ return !u || u.startsWith("@") || u.includes(`[${e}]`) || s(u) ? l : `${u}[${e}]`;
308
308
  });
309
309
  }
310
310
  }
@@ -316,10 +316,10 @@ function Re(r, e, t, s = !1) {
316
316
  if (n.prototype.replaceSync) {
317
317
  const o = new n();
318
318
  o.id = e, o.replaceSync(a);
319
- const p = r.document, c = p.adoptedStyleSheets, u = Array.from(c).filter(
320
- (l) => l.id !== e
319
+ const p = r.document, c = p.adoptedStyleSheets, l = Array.from(c).filter(
320
+ (u) => u.id !== e
321
321
  );
322
- p.adoptedStyleSheets = [...u, o];
322
+ p.adoptedStyleSheets = [...l, o];
323
323
  } else {
324
324
  const o = r.document;
325
325
  let p = o.getElementById(e);
@@ -346,8 +346,8 @@ async function Ce(r, e, t = window) {
346
346
  const c = s.createElement("script");
347
347
  c.src = p, c.onload = () => {
348
348
  i = t[e], i ? a(i.default || i) : o(null);
349
- }, c.onerror = (u) => {
350
- o(u);
349
+ }, c.onerror = (l) => {
350
+ o(l);
351
351
  }, n.appendChild(c);
352
352
  }
353
353
  });
@@ -598,10 +598,10 @@ function ms(r = {}) {
598
598
  validSuccess: !0,
599
599
  originResponse: !1,
600
600
  loading: !0,
601
- validate: (u) => u.data?.code === 0 || !!u.data?.success,
601
+ validate: (l) => l.data?.code === 0 || !!l.data?.success,
602
602
  failMessage: !0,
603
- showError: (u) => {
604
- e && e(u || "未知错误");
603
+ showError: (l) => {
604
+ e && e(l || "未知错误");
605
605
  },
606
606
  showLoading: () => {
607
607
  p && p.close(), t && (p = t());
@@ -685,8 +685,8 @@ function bt(r, e) {
685
685
  if (t && s) {
686
686
  const n = Ve(`${t}(.*)`), i = We(t, { decode: decodeURIComponent }), a = T(s, {}, !0);
687
687
  r.mock(n, (o) => {
688
- const p = A.parse(o.url) || {}, c = o.body instanceof FormData ? Qe(o.body) : o.body, u = i(o.url)?.params;
689
- return Object.assign(o, { data: c, params: p, query: u }), r.mock(a(o));
688
+ const p = A.parse(o.url) || {}, c = o.body instanceof FormData ? Qe(o.body) : o.body, l = i(o.url)?.params;
689
+ return Object.assign(o, { data: c, params: p, query: l }), r.mock(a(o));
690
690
  });
691
691
  }
692
692
  }
@@ -809,29 +809,29 @@ function te(r) {
809
809
  mode: t,
810
810
  dsl: o.value,
811
811
  attrs: p
812
- }), u = e.defineComponent({
812
+ }), l = e.defineComponent({
813
813
  name: o.value.name,
814
814
  __scopeId: o.value.id ? `data-v-${o.value.id}` : void 0,
815
815
  props: {
816
816
  ...Ct(o.value.props ?? [], c)
817
817
  },
818
- setup(l) {
819
- c.$props = l, c.props = l, o.value.id && Re(
818
+ setup(u) {
819
+ c.$props = u, c.props = u, o.value.id && Re(
820
820
  r.window || window,
821
821
  o.value.id,
822
822
  o.value.css || "",
823
823
  !0
824
824
  ), c.state = At(e, o.value.state ?? {}, c);
825
- const h = It(e, o.value.computed ?? {}, c), f = Ft(o.value.methods ?? {}, c), d = kt(e, o.value.inject, c);
826
- for (const [m, E] of Object.entries(d || {}))
827
- d[m] = e.inject(m, E);
825
+ const h = It(e, o.value.computed ?? {}, c), d = Ft(o.value.methods ?? {}, c), f = kt(e, o.value.inject, c);
826
+ for (const [m, E] of Object.entries(f || {}))
827
+ f[m] = e.inject(m, E);
828
828
  const g = Mt(
829
829
  o.value.dataSources || {},
830
830
  c
831
831
  ), y = {
832
- ...d,
833
- ...h,
834
832
  ...f,
833
+ ...h,
834
+ ...d,
835
835
  ...g
836
836
  };
837
837
  return c.setup(y, e), Ot(e, o.value.watch ?? [], c), {
@@ -842,15 +842,15 @@ function te(r) {
842
842
  expose: ["vtj"],
843
843
  render() {
844
844
  if (!o.value.nodes) return null;
845
- const l = o.value.nodes || [];
846
- return l.length === 1 ? F(l[0], c, e, a, l) : l.map(
847
- (h) => F(h, c, e, a, l)
845
+ const u = o.value.nodes || [];
846
+ return u.length === 1 ? F(u[0], c, e, a, u) : u.map(
847
+ (h) => F(h, c, e, a, u)
848
848
  );
849
849
  },
850
850
  ...Tt(o.value.lifeCycles ?? {}, c)
851
851
  });
852
852
  return {
853
- renderer: e.markRaw(u),
853
+ renderer: e.markRaw(l),
854
854
  context: c
855
855
  };
856
856
  }
@@ -1009,8 +1009,8 @@ function vs() {
1009
1009
  }
1010
1010
  function F(r, e, t = J, s = Dt, n = [], i = !1) {
1011
1011
  if (!r || !r.name || r.invisible) return null;
1012
- const a = t.getCurrentInstance()?.appContext, { id: o = null, directives: p = [] } = r, { vIf: c, vElseIf: u, vElse: l, vFor: h, vShow: f, vModels: d, vBind: g, vHtml: y, others: m } = Oe(p);
1013
- if (!i && (u || l))
1012
+ const a = t.getCurrentInstance()?.appContext, { id: o = null, directives: p = [] } = r, { vIf: c, vElseIf: l, vElse: u, vFor: h, vShow: d, vModels: f, vBind: g, vHtml: y, others: m } = Oe(p);
1013
+ if (!i && (l || u))
1014
1014
  return null;
1015
1015
  if (c && !xt(c, e))
1016
1016
  return Lt(r, e, t, s, n);
@@ -1030,10 +1030,10 @@ function F(r, e, t = J, s = Dt, n = [], i = !1) {
1030
1030
  })(), j = Nt(o, r.props ?? {}, v), Ne = Ut(t, r.events ?? {}, v);
1031
1031
  if (r.name === "slot")
1032
1032
  return Jt(t, r, j, v, s);
1033
- g && Object.assign(j, v.__parseExpression(g.value)), f && (j.style = Object.assign(
1033
+ g && Object.assign(j, v.__parseExpression(g.value)), d && (j.style = Object.assign(
1034
1034
  j.style ?? {},
1035
- Kt(f, v)
1036
- )), y && Object.assign(j, zt(y, v)), d.forEach((S) => {
1035
+ Kt(d, v)
1036
+ )), y && Object.assign(j, zt(y, v)), f.forEach((S) => {
1037
1037
  Object.assign(j, Gt(t, S, v));
1038
1038
  });
1039
1039
  const Ue = Vt(
@@ -1063,12 +1063,12 @@ function Ht(r, e, t) {
1063
1063
  }).filter((n) => !!n);
1064
1064
  }
1065
1065
  function Oe(r = []) {
1066
- const e = r.find((u) => b(u.name) === "vIf"), t = r.find(
1067
- (u) => b(u.name) === "vElseIf"
1068
- ), s = r.find((u) => b(u.name) === "vElse"), n = r.find((u) => b(u.name) === "vFor"), i = r.find((u) => b(u.name) === "vShow"), a = r.find((u) => b(u.name) === "vBind"), o = r.find((u) => b(u.name) === "vHtml"), p = r.filter(
1069
- (u) => b(u.name) === "vModel"
1066
+ const e = r.find((l) => b(l.name) === "vIf"), t = r.find(
1067
+ (l) => b(l.name) === "vElseIf"
1068
+ ), s = r.find((l) => b(l.name) === "vElse"), n = r.find((l) => b(l.name) === "vFor"), i = r.find((l) => b(l.name) === "vShow"), a = r.find((l) => b(l.name) === "vBind"), o = r.find((l) => b(l.name) === "vHtml"), p = r.filter(
1069
+ (l) => b(l.name) === "vModel"
1070
1070
  ), c = r.filter(
1071
- (u) => !rt.includes(b(u.name))
1071
+ (l) => !rt.includes(b(l.name))
1072
1072
  );
1073
1073
  return {
1074
1074
  vIf: e,
@@ -1109,8 +1109,8 @@ function Ut(r, e, t) {
1109
1109
  };
1110
1110
  return Object.keys(e || {}).reduce(
1111
1111
  (i, a) => {
1112
- const o = e[a], p = Te(o.modifiers), c = p.find((h) => s.includes(h)), u = "on" + Ze(a) + (c && n[c] || ""), l = t.__parseFunction(o.handler);
1113
- return l && (i[u] = r.withModifiers(l, p)), i;
1112
+ const o = e[a], p = Te(o.modifiers), c = p.find((h) => s.includes(h)), l = "on" + Ze(a) + (c && n[c] || ""), u = t.__parseFunction(o.handler);
1113
+ return u && (i[l] = r.withModifiers(u, p)), i;
1114
1114
  },
1115
1115
  {}
1116
1116
  );
@@ -1181,15 +1181,20 @@ function Vt(r, e, t, s, n) {
1181
1181
  default: () => be(t.__parseExpression(e))
1182
1182
  };
1183
1183
  if (Array.isArray(e) && e.length > 0) {
1184
- const i = Wt(e), a = (o) => !o || !n ? {} : n?.id && Object.keys(o).length ? {
1184
+ const i = Wt(e), a = (o, p) => !o || !n ? {} : n?.id && Object.keys(o).length ? p ? {
1185
+ [p]: o
1186
+ } : {
1185
1187
  [`scope_${n.id}`]: o
1186
- } : {};
1187
- return Object.entries(i).reduce((o, [p, { nodes: c, params: u }]) => (o[p] = (l) => {
1188
- const h = u.length ? et(l ?? {}, u) : a(l);
1189
- return c.map(
1190
- (f) => F(f, t.__clone(h), r, s, c)
1191
- );
1192
- }, o), {});
1188
+ } : p ? { [p]: /* @__PURE__ */ Object.create(null) } : {};
1189
+ return Object.entries(i).reduce(
1190
+ (o, [p, { nodes: c, params: l, scope: u }]) => (o[p] = (h) => {
1191
+ const d = l.length ? et(h ?? {}, l) : a(h, u);
1192
+ return c.map(
1193
+ (f) => F(f, t.__clone(d), r, s, c)
1194
+ );
1195
+ }, o),
1196
+ {}
1197
+ );
1193
1198
  }
1194
1199
  return null;
1195
1200
  }
@@ -1197,15 +1202,16 @@ function Wt(r) {
1197
1202
  const e = {};
1198
1203
  for (const t of r) {
1199
1204
  const s = Qt(t.slot), n = s.name;
1200
- e[n] ? (e[n].nodes.push(t), e[n].params = e[n].params.concat(s.params)) : e[n] = {
1205
+ e[n] ? (e[n].nodes.push(t), e[n].params = e[n].params.concat(s.params), e[n].scope = s.scope || "") : e[n] = {
1201
1206
  nodes: [t],
1202
- params: s.params
1207
+ params: s.params,
1208
+ scope: s.scope || ""
1203
1209
  };
1204
1210
  }
1205
1211
  return e;
1206
1212
  }
1207
1213
  function Qt(r = "default") {
1208
- return R(r) ? { name: r, params: [] } : { params: [], ...r };
1214
+ return R(r) ? { name: r, params: [], scope: "" } : { params: [], scope: "", ...r };
1209
1215
  }
1210
1216
  function Xt(r, e, t) {
1211
1217
  const { value: s, iterator: n } = r, { item: i = "item", index: a = "index" } = n || {};
@@ -1275,27 +1281,27 @@ function ys(r) {
1275
1281
  disableMenusFilter: s = !1
1276
1282
  } = r || {}, n = xe(), i = je(), a = _t(), o = Z(!1), p = Z(!1), c = n.project;
1277
1283
  st(() => {
1278
- const { name: h, params: f, meta: d } = i;
1284
+ const { name: h, params: d, meta: f } = i;
1279
1285
  if (h === M) {
1280
- const g = n.getPage(f.id);
1286
+ const g = n.getPage(d.id);
1281
1287
  o.value = !g?.mask, p.value = !!g?.pure;
1282
1288
  } else if (h === N) {
1283
1289
  const g = n.getHomepage();
1284
1290
  o.value = !g?.mask, p.value = !!g?.pure;
1285
1291
  } else
1286
- o.value = !d.mask, p.value = !!d.pure;
1292
+ o.value = !f.mask, p.value = !!f.pure;
1287
1293
  });
1288
- const u = oe(
1294
+ const l = oe(
1289
1295
  e,
1290
1296
  t,
1291
1297
  c?.pages
1292
- ), l = c?.config;
1298
+ ), u = c?.config;
1293
1299
  return {
1294
1300
  disabled: o,
1295
- logo: l?.logo,
1296
- themeSwitchable: l?.themeSwitchable,
1297
- title: l?.title || c?.description || c?.name || "VTJ App",
1298
- menus: s ? u : De(u, a),
1301
+ logo: u?.logo,
1302
+ themeSwitchable: u?.themeSwitchable,
1303
+ title: u?.title || c?.description || c?.name || "VTJ App",
1304
+ menus: s ? l : De(l, a),
1299
1305
  pure: p
1300
1306
  };
1301
1307
  }
@@ -1318,14 +1324,14 @@ class es extends Je {
1318
1324
  adapter: o = {},
1319
1325
  globals: p = {},
1320
1326
  modules: c = {},
1321
- router: u = null,
1322
- materialPath: l = "./",
1327
+ router: l = null,
1328
+ materialPath: u = "./",
1323
1329
  nodeEnv: h = "development"
1324
1330
  /* Development */
1325
1331
  } = e;
1326
- this.mode = s, this.modules = c, this.service = t, this.router = u, this.materialPath = l, this.nodeEnv = h, n && (this.dependencies = n), i && (this.materials = i), Object.assign(this.globals, p), Object.assign(this.adapter, o);
1327
- const { access: f, request: d } = this.adapter;
1328
- f && f.connect({ mode: s, router: u, request: d }), a && s !== w.Design ? this.load(a) : this.project = a;
1332
+ this.mode = s, this.modules = c, this.service = t, this.router = l, this.materialPath = u, this.nodeEnv = h, n && (this.dependencies = n), i && (this.materials = i), Object.assign(this.globals, p), Object.assign(this.adapter, o);
1333
+ const { access: d, request: f } = this.adapter;
1334
+ d && d.connect({ mode: s, router: l, request: f }), a && s !== w.Design ? this.load(a) : this.project = a;
1329
1335
  }
1330
1336
  mode;
1331
1337
  // 当前运行模式(设计/源码/预览等)
@@ -1399,8 +1405,8 @@ class es extends Je {
1399
1405
  const { dependencies: t = [] } = this.project, { dependencies: s, library: n, components: i, materialPath: a, nodeEnv: o } = this, {
1400
1406
  libraryExports: p,
1401
1407
  libraryMap: c,
1402
- materials: u,
1403
- materialExports: l,
1408
+ materials: l,
1409
+ materialExports: u,
1404
1410
  materialMapLibrary: h
1405
1411
  } = lt(
1406
1412
  t,
@@ -1408,31 +1414,31 @@ class es extends Je {
1408
1414
  o === "development"
1409
1415
  /* Development */
1410
1416
  );
1411
- for (const f of p) {
1412
- const d = s[f], g = e[f];
1417
+ for (const d of p) {
1418
+ const f = s[d], g = e[d];
1413
1419
  if (g)
1414
- n[f] = g;
1415
- else if (d)
1416
- e[f] = n[f] = await d();
1420
+ n[d] = g;
1421
+ else if (f)
1422
+ e[d] = n[d] = await f();
1417
1423
  else {
1418
- const y = c[f] || [];
1424
+ const y = c[d] || [];
1419
1425
  for (const m of y)
1420
1426
  q(m) && await dt(m, A.append(m, { v: k })), K(m) && await me(A.append(m, { v: k }));
1421
- n[f] = e[f];
1427
+ n[d] = e[d];
1422
1428
  }
1423
1429
  }
1424
1430
  if (o === "development") {
1425
- for (const d of u)
1426
- await me(A.append(d, { v: k }));
1427
- const f = this.materials || {};
1428
- for (const d of l) {
1429
- const g = e[h[d]], y = qe[d];
1431
+ for (const f of l)
1432
+ await me(A.append(f, { v: k }));
1433
+ const d = this.materials || {};
1434
+ for (const f of u) {
1435
+ const g = e[h[f]], y = qe[f];
1430
1436
  if (y)
1431
1437
  g && y.forEach((m) => {
1432
1438
  i[m] = g[m];
1433
1439
  });
1434
1440
  else {
1435
- const m = f[d] ? (await f[d]()).default : e[d];
1441
+ const m = d[f] ? (await d[f]()).default : e[f];
1436
1442
  m && g && (m.components || []).forEach((E) => {
1437
1443
  i[E.name] = ut(E, g);
1438
1444
  });
@@ -1447,17 +1453,17 @@ class es extends Je {
1447
1453
  routeAppendTo: a,
1448
1454
  pageRouteName: o = i,
1449
1455
  routeMeta: p
1450
- } = s, c = a ? "" : "/", u = {
1456
+ } = s, c = a ? "" : "/", l = {
1451
1457
  path: `${c}${o}/:id`,
1452
1458
  name: M,
1453
1459
  component: ye
1454
- }, l = {
1460
+ }, u = {
1455
1461
  path: c,
1456
1462
  name: N,
1457
1463
  component: t?.homepage ? ye : n.startupComponent || Yt,
1458
1464
  meta: p
1459
1465
  };
1460
- e.hasRoute(M) && e.removeRoute(M), e.hasRoute(N) && e.removeRoute(N), a ? (e.addRoute(a, u), e.addRoute(a, l)) : (e.addRoute(u), e.addRoute(l));
1466
+ e.hasRoute(M) && e.removeRoute(M), e.hasRoute(N) && e.removeRoute(N), a ? (e.addRoute(a, l), e.addRoute(a, u)) : (e.addRoute(l), e.addRoute(u));
1461
1467
  }
1462
1468
  /**
1463
1469
  * Vue 插件安装方法
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vtj/renderer",
3
3
  "private": false,
4
- "version": "0.12.63",
4
+ "version": "0.12.65",
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.63",
25
- "@vtj/utils": "~0.12.63"
24
+ "@vtj/core": "~0.12.65",
25
+ "@vtj/utils": "~0.12.65"
26
26
  },
27
27
  "devDependencies": {
28
28
  "vue": "~3.5.5",
29
29
  "vue-router": "~4.5.0",
30
30
  "@vtj/cli": "~0.12.8",
31
- "@vtj/icons": "~0.12.63",
32
- "@vtj/ui": "~0.12.63"
31
+ "@vtj/ui": "~0.12.65",
32
+ "@vtj/icons": "~0.12.65"
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.62
5
+ * @version 0.12.64
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
7
  */
8
- export declare const version = "0.12.62";
8
+ export declare const version = "0.12.64";