@vtj/renderer 0.13.20 → 0.13.21
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 +5 -5
- package/dist/index.mjs +50 -50
- package/package.json +6 -6
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
@@ -2,13 +2,13 @@
|
|
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.13.
|
5
|
+
* @version 0.13.21
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const k="0.13.
|
7
|
+
*/const k="0.13.21";var _=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(_||{});const te=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],et=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],_e=["vIf","vElseIf","vElse","vShow","vModel","vFor","vBind","vHtml"],Se={String,Number,Boolean,Array,Object,Function,Date},O="VtjPage",x="VtjHomepage",we="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(","),Ee="component,slot".split(","),tt=["h","t","t","p","s",":","/","/","l","c","d","p",".","v","t","j",".","p","r","o"].join(""),st={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 H(r,e){return r.map(t=>f.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function B(r){return/\.css$/.test(r)}function N(r){return/\.js$/.test(r)}function $e(r){return/\.json$/.test(r)}function rt(r){return r.map(e=>`<script src="${f.url.append(e,{v:k})}"><\/script>`).join("")}function nt(r=[]){return r.map(e=>`<link rel="stylesheet" href="${f.url.append(e,{v:k})}" />`).join("")}function je(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function Re(r,e,t=!1){const s=r.filter(m=>!!m.enabled),n=[],o=[],a=[],i=[],l={},c={},p=[],u={};return s.forEach(({urls:m,assetsUrl:d,library:h,assetsLibrary:v,localeLibrary:y})=>{m?.forEach(g=>{N(g)&&n.push(je(g,t)),B(g)&&o.push(g)}),h&&(i.push(h),l[h]=H(m||[],e),y&&(c[h]=y)),d&&a.push(d),v&&p.push(v),h&&v&&(u[v]=h)}),{scripts:H(n,e),css:H(o,e),materials:H(a,e),libraryExports:i,materialExports:f.dedupArray(p),materialMapLibrary:u,libraryMap:l,libraryLocaleMap:c}}function be(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=>B(s)),t=r.filter(s=>N(s));return{css:e,js:t}}function Pe(r,e){const t=c=>{const p=[];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(),S=C.includes("@keyframes");if(c[u]===";")p.push({type:"simple-at-rule",content:c.substring(g,u+1)}),u++;else if(c[u]==="{"){const L=u+1;let I=1;for(u++;u<c.length&&I>0;)c[u]==="{"?I++:c[u]==="}"&&I--,u++;const W=c.substring(g,u),P=c.substring(L,u-1);p.push({type:S?"keyframes":"at-rule",rule:C,content:W,inner:P})}continue}const m=u;for(;u<c.length&&c[u]!=="{";)u++;if(u>=c.length)break;const d=c.substring(m,u).trim();if(!d){u++;continue}const h=u+1;let v=1;for(u++;u<c.length&&v>0;)c[u]==="{"?v++:c[u]==="}"&&v--,u++;const y=c.substring(h,u-1);p.push({type:"rule",selector:d,content:y.trim()})}return p},s=c=>{const p=c.trim();return/^(from|to|\d+(\.\d+)?%)$/.test(p)},n=c=>c.replace(/::v-deep\(/g,":deep(").replace(/::v-deep\s+/g,":deep(").replace(/\/deep\//g," ").replace(/>>>/g," ").replace(/(.*?):deep\(([^)]+)\)/g,(p,u,m)=>{const d=u.trim(),h=m.trim();return d?`${d}[${e}] ${h}`:h}),o=c=>{const p=c.trim();if(!p||p.includes(`[${e}]`)||/^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(p)||s(p))return p;const u=p.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);if(u){const[,m,d=""]=u,h=m.trim();return h?`${h}[${e}]${d}`:p}return`${p}[${e}]`},a=c=>n(c).split(",").map(u=>o(u)).filter(u=>u.trim()).join(", "),i=c=>c.map(p=>{switch(p.type){case"simple-at-rule":return p.content;case"keyframes":return p.content;case"at-rule":try{const m=t(p.inner),d=i(m);return`${p.rule} { ${d} }`}catch{return p.content}case"rule":if(!p.selector||!p.content)return"";const u=a(p.selector);return u.trim()?`${u} { ${p.content} }`:"";default:return""}}).filter(p=>p.trim()).join(" "),l=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
8
|
`),p=t(c),u=i(p);return l(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,p=>p).replace(/([^{}@]+)(?=\s*{)/g,p=>{const u=p.trim();return!u||u.startsWith("@")||u.includes(`[${e}]`)||s(u)?p:`${u}[${e}]`})}}function ne(r){return f.isString(r)?r:JSON.stringify(r)}function z(r,e,t,s=!1){const n=r.CSSStyleSheet,o=s?`data-v-${e}`:e,a=s?Pe(t,o):t;if(n.prototype.replaceSync){const i=new n;i.id=e,i.replaceSync(a);const l=r.document,c=l.adoptedStyleSheets,p=Array.from(c).filter(u=>u.id!==e);l.adoptedStyleSheets=[...p,i]}else{const i=r.document;let l=i.getElementById(e);l?l.innerHTML=a:(l=i.createElement("style"),l.id=e,l.innerHTML=a,i.head.appendChild(l))}}function ot(r){const e=r.adoptedStyleSheets||[];let t="";if(e.forEach(s=>{try{for(const n of s.cssRules)t+=n.cssText+`
|
9
|
-
`}catch(n){console.error("Failed to read cssRules from adopted stylesheet:",n)}}),t){const s=r.createElement("style");s.textContent=t,r.head.appendChild(s)}}async function Ae(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&z(window,r,t)}function oe(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 ie(r,e,t=window){const s=t.document,n=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const l of r){const c=s.createElement("script");c.src=l,c.onload=()=>{o=t[e],o?a(o.default||o):i(null)},c.onerror=p=>{i(p)},n.appendChild(c)}})}function Ie(r){return f.isFunction(r)||f.isFunction(r?.install)}function Me(r){return Ee.includes(r)}function Te(r){return we.includes(r)}function
|
9
|
+
`}catch(n){console.error("Failed to read cssRules from adopted stylesheet:",n)}}),t){const s=r.createElement("style");s.textContent=t,r.head.appendChild(s)}}async function Ae(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&z(window,r,t)}function oe(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 ie(r,e,t=window){const s=t.document,n=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const l of r){const c=s.createElement("script");c.src=l,c.onload=()=>{o=t[e],o?a(o.default||o):i(null)},c.onerror=p=>{i(p)},n.appendChild(c)}})}function Ie(r){return f.isFunction(r)&&Object.getOwnPropertyNames(r.prototype||{}).length===0||f.isFunction(r?.install)}function Me(r){return Ee.includes(r)}function Te(r){return we.includes(r)}function F(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function it(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 D(r,e,t=!1,s=!1,n=!1){try{const o=['"use strict";',"var __self = arguments[0];"];o.push("return ");let a=(r.value||"").trim();n||(a=a.replace(/this(\W|$)/g,(l,c)=>`__self${c}`)),a=o.join(`
|
10
10
|
`)+a;const i=n?`
|
11
11
|
${a}
|
12
|
-
`:`with(${t?"{}":"$scope || {}"}) { ${a} }`;return new Function("$scope",i)(e)}catch(o){if(f.logger.error("parseExpression.error",o,r,e?.__self??e),s)throw o}}function b(r,e,t=!1,s=!1,n=!1){const o=D(r,e,t,s,n);if(typeof o!="function"&&(f.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return o}function j(r){return r&&r.type==="JSExpression"}function $(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function ke(r){return j(r)||$(r)}function at(r){return ke(r)?r.value:JSON.stringify(r)}const ct={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},ae=Symbol("access");class V{options;data=null;mode=_.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},ct,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!==_.Design&&this.setGuard(s),n&&this.setRequest(n)}login(e){const{storageKey:t,storagePrefix:s,session:n,authKey:o}=this.options;this.setData(e),this.data&&(f.storage.save(t,e,{type:"local",prefix:s}),n&&f.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,f.storage.remove(e,{type:"local",prefix:t}),s&&f.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):f.toArray(e).every(o=>s[o]||s[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return f.toArray(e).some(o=>s[o]||s[t+"."+o])}install(e){e.config.globalProperties.$access=this,e.provide(ae,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=>f.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?f.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=f.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!f.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===F){const t=e.params.id;return t&&this.can(t)}return e.meta.__vtj__?this.can(e.meta.__vtj__):!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),f.isFunction(n)?(n(),t(!1)):f.isString(n)?t(n):t(!1)}}t(!1),await f.delay(0),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 f.delay(150),await t(e,{title:"提示",type:"warning"})?.catch(()=>!1)):(window.alert(e),!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 Fe(){return E.inject(ae,null)}function lt(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:o,useTitle:a,alert:i}=r;let l=null;return{request:f.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:p=>p.data?.code===0||!!p.data?.success,failMessage:!0,showError:p=>{e&&e(p||"未知错误")},showLoading:()=>{l&&l.close(),t&&(l=t())},hideLoading:()=>{l&&(l.close(),l=null)},...s}}),jsonp:f.jsonp,notify:e,loading:t,useTitle:a,alert:i,startupComponent:n,access:o?new V({alert:i,...o}):void 0}}function ut(r={}){return new V(r)}function Oe(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?D(r.headers,{},!0):void 0,o={url:r.url,method:r.method,settings:{...r.settings,headers:n}};return(a,i)=>(delete o.data,s.send(f.merge(o,i||{},{data:a})))}}function De(r,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:n}=r;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,n,o,a)}}function He(r=[],e=[],t){const s={};for(const n of r)s[n.id]=Oe(n,t);for(const n of e)s[n.id]=De(n,t);return s}async function xe(r=[],e=window){const t=O(e);t&&(ce(e),r.forEach(s=>Be(t,s)))}function Ue(r,e=window){const t=$(r.mockTemplate)&&r.mockTemplate.value?b(r.mockTemplate,{},!0):void 0,s=O(e);return async(...n)=>{let o={};if(t)try{o=await t.apply(t,n)}catch(a){f.logger.warn("模拟数据模版异常",a)}return s?.mock(o)}}function Be(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s)try{const n=f.isUrl(t)?new URL(t).pathname:t,o=f.pathToRegexp(`(.*)${n}(.*)`),a=f.pathToRegexpMatch(n,{decode:decodeURIComponent}),i=D(s,{},!0);r.mock(o,l=>{const c=f.url.parse(l.url)||{},p=l.body instanceof FormData?f.formDataToJson(l.body):l.body,u=f.isUrl(l.url)?new URL(l.url).pathname:l.url.split("?")[0],m=a(u)?.params;Object.assign(l,{data:p,params:m,query:c});try{return r.mock(i(l))}catch(d){return console.warn("[mockApi]",o,l,d),null}})}catch(n){console.warn("mockApi",n)}}function ce(r=window){const e=O(r);e&&(e._mocked={})}class Ne{__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=G){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&&te.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){te.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 b({type:s,value:n},this)}else return b(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 D({type:s,value:n},this)}else return D(e,this)}__ref(e=null,t){if(this.__mode!==_.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await f.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 o=new Set([].concat(n,s));return Array.from(o)}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=G,mode:t=_.Runtime,components:s={},libs:n={},apis:o={},loader:a}=r,i=e.computed(()=>r.dsl),l={$components:s,$libs:n,$apis:o},c=new Ne({mode:t,dsl:i.value,attrs:l}),p=e.defineComponent({name:i.value.name,__scopeId:i.value.id?`data-v-${i.value.id}`:void 0,props:{...ft(i.value.props??[],c)},setup(u){c.$props=u,c.props=u,i.value.id&&z(r.window||window,i.value.id,i.value.css||"",!0),c.state=dt(e,i.value.state??{},c);const m=ht(e,i.value.computed??{},c),d=mt(i.value.methods??{},c),h=gt(e,i.value.inject,c);for(const[g,C]of Object.entries(h||{}))h[g]=e.inject(g,C);const v=Le(i.value.dataSources||{},c),y={...h,...m,...d,...v};return c.setup(y,e),vt(e,i.value.watch??[],c),{vtj:c}},emits:pt(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const u=i.value.nodes||[];return u.length===1?T(u[0],c,e,a,u):u.map(m=>T(m,c,e,a,u))},...yt(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(p),context:c}}function pt(r=[]){return r.map(e=>f.isString(e)?e:e.name)}function ft(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(o=>Se[o]):void 0;return r.map(s=>f.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 dt(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let o=e[n];return j(o)?o=t.__parseExpression(o):$(o)&&(o=t.__parseFunction(o)),s[n]=o,s},{}))}function ht(r,e,t){return Object.entries(e??{}).reduce((s,[n,o])=>(s[n]=r.computed(t.__parseFunction(o)),s),{})}function mt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function gt(r,e=[],t){return e.reduce((s,n)=>{const{name:o,from:a}=n||{};n.default;const i=j(a)?t.__parseExpression(a)||o:a??o,l=j(n.default)?t.__parseExpression(n.default):n.default??null;return s[o]=r.inject(i,l),s},{})}function Le(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=Ue(n);else if(n.ref){const o=e.$apis[n.ref],a=$(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...i)=>{const l=await o.apply(e,i);return a?a(l):l}}return t},{})}function vt(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function yt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>{const o=e.__parseFunction(n);return t[s]=async()=>{await f.delay(0),f.isFunction(o)&&o()},t},{})}const qe=new f.Queue;let X=[],M={};const Je=r=>r;async function le(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(i=>N(i));if(n.length===0||!s)return null;const o=t.filter(i=>B(i));return o.length&&oe(o,e),await ie(n,s,e).catch(i=>(console.warn("loadScriptUrl error",n,s,i),null))}function K(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(X.forEach(n=>{delete s.window[n]}),X=[]),(n,o,a=G)=>{if(!o||typeof o=="string")return n;if(o.type==="Schema"&&o.id)return a.defineAsyncComponent(async()=>{const i=M[o.id]||await qe.add(o.id,()=>e(o.id));return i&&(i.name=n,M[o.id]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:_.Runtime,loader:K(r)}).renderer:null});if(o.type==="UrlSchema"&&o.url)return a.defineAsyncComponent(async()=>{const i=M[o.url]||await t(o.url);return i&&(i.name=n,M[o.url]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:_.Runtime,loader:K(r)}).renderer:null});if(o.type==="Plugin"){let i=o.library?M[o.library]:null;return i||(o.library&&X.push(o.library),i=M[o.library||Symbol()]=a.defineAsyncComponent(async()=>{const l=await le(o,s.window);return l||(console.warn("getPlugin result is null",o),null)}),i)}return n}}function _t(){M={},qe.clearAllCache()}function T(r,e,t=G,s=Je,n=[],o=!1){if(!r||!r.name||r.invisible)return null;const a=t.getCurrentInstance()?.appContext,{id:i=null,directives:l=[]}=r,{vIf:c,vElseIf:p,vElse:u,vFor:m,vShow:d,vModels:h,vBind:v,vHtml:y,others:g}=Ke(l);if(!o&&(p||u))return null;if(c&&!wt(c,e))return Rt(r,e,t,s,n);const C=(S,L=0)=>{const I=S.$components,W=(()=>{if(r.name==="component")return Et(S,r.props?.is);if(r.name==="slot")return r.name;const R=s(r.name,r.from,t);if(f.isString(R))return Me(R)||Te(R)?R:I[R]??a?.app?.component(R)??R;if(f.isObject(R)&&r.id){const ge=`Loader${r.id}_${L}`,ve=I[ge];return ve||(I[ge]=R)}return R})(),P=$t(i,r.props??{},S),We=jt(t,r.events??{},S);if(r.name==="slot")return bt(t,r,P,S,s);v&&Object.assign(P,S.__parseExpression(v.value)),d&&(P.style=Object.assign(P.style??{},Pt(d,S))),y&&Object.assign(P,At(y,S)),h.forEach(R=>{Object.assign(P,It(t,R,S))});const Ye=Mt(t,r.children??[],S,s,r),he=S?.__id?`data-v-${S.__id}`:void 0,Xe=he?{[he]:""}:{};let Y=t.createVNode(W,{key:`${i}_${L}`,...Xe,...P,...We},Ye);const me=a?St(a,g,S):[];return me.length&&(Y=t.withDirectives(Y,me)),Y};return m?Ft(m,C,e):C(e)}function St(r,e,t){const s=r.app;return e.map(n=>{const o=typeof n.name=="string"?s.directive(n.name):t.__parseExpression(n.name);if(!o)return null;const a=[o];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 Ke(r=[]){const e=r.find(p=>f.camelCase(p.name)==="vIf"),t=r.find(p=>f.camelCase(p.name)==="vElseIf"),s=r.find(p=>f.camelCase(p.name)==="vElse"),n=r.find(p=>f.camelCase(p.name)==="vFor"),o=r.find(p=>f.camelCase(p.name)==="vShow"),a=r.find(p=>f.camelCase(p.name)==="vBind"),i=r.find(p=>f.camelCase(p.name)==="vHtml"),l=r.filter(p=>f.camelCase(p.name)==="vModel"),c=r.filter(p=>!_e.includes(f.camelCase(p.name)));return{vIf:e,vElseIf:t,vElse:s,vFor:n,vShow:o,vModels:l,vBind:a,others:c,vHtml:i}}function wt(r,e){return!!e.__parseExpression(r.value)}function Et(r,e){return e?j(e)?r.__parseExpression(e):e:"div"}function $t(r,e,t){const s=se(e,t);return s.ref=t.__ref(r,s.ref),s}function se(r,e){return j(r)?e.__parseExpression(r):$(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>se(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=se(n,e),t},{}):r}function jt(r,e,t){const s=["passive","capture","once"],n={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],l=ue(i.modifiers),c=l.find(m=>s.includes(m)),p="on"+f.upperFirst(a)+(c&&n[c]||""),u=t.__parseFunction(i.handler);return u&&(o[p]=r.withModifiers(u,l)),o},{})}function Rt(r,e,t,s,n=[]){let o=n.findIndex(a=>a.id===r.id);for(let a=++o;a<n.length;a++){const{directives:i=[]}=n[a],{vElseIf:l,vElse:c}=Ke(i);if(l){if(e.__parseExpression(l.value))return T(n[a],e,t,s,n,!0);continue}if(c)return T(n[a],e,t,s,n,!0)}return null}function ue(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function bt(r,e,t,s,n){const{children:o}=e,a=Ct(e,s),i=s.$slots?.[a.name];return i?i(t):o?f.isString(o)?r.createTextVNode(o):j(o)?r.createTextVNode(ne(s.__parseExpression(o))):Array.isArray(o)?o.map(l=>T(l,s,r,n,o)):null:null}function Ct(r,e){const{props:t}=r,s=t?.name||"default";return{name:j(s)?e.__parseExpression(s):s,params:[]}}function Pt(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function At(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function It(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
|
12
|
+
`:`with(${t?"{}":"$scope || {}"}) { ${a} }`;return new Function("$scope",i)(e)}catch(o){if(f.logger.error("parseExpression.error",o,r,e?.__self??e),s)throw o}}function b(r,e,t=!1,s=!1,n=!1){const o=D(r,e,t,s,n);if(typeof o!="function"&&(f.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return o}function j(r){return r&&r.type==="JSExpression"}function $(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function ke(r){return j(r)||$(r)}function at(r){return ke(r)?r.value:JSON.stringify(r)}const ct={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},ae=Symbol("access");class V{options;data=null;mode=_.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},ct,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!==_.Design&&this.setGuard(s),n&&this.setRequest(n)}login(e){const{storageKey:t,storagePrefix:s,session:n,authKey:o}=this.options;this.setData(e),this.data&&(f.storage.save(t,e,{type:"local",prefix:s}),n&&f.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,f.storage.remove(e,{type:"local",prefix:t}),s&&f.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):f.toArray(e).every(o=>s[o]||s[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return f.toArray(e).some(o=>s[o]||s[t+"."+o])}install(e){e.config.globalProperties.$access=this,e.provide(ae,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=>f.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?f.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=f.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!f.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===O){const t=e.params.id;return t&&this.can(t)}return e.meta.__vtj__?this.can(e.meta.__vtj__):!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),f.isFunction(n)?(n(),t(!1)):f.isString(n)?t(n):t(!1)}}t(!1),await f.delay(0),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 f.delay(150),await t(e,{title:"提示",type:"warning"})?.catch(()=>!1)):(window.alert(e),!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 Oe(){return E.inject(ae,null)}function lt(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:o,useTitle:a,alert:i}=r;let l=null;return{request:f.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:p=>p.data?.code===0||!!p.data?.success,failMessage:!0,showError:p=>{e&&e(p||"未知错误")},showLoading:()=>{l&&l.close(),t&&(l=t())},hideLoading:()=>{l&&(l.close(),l=null)},...s}}),jsonp:f.jsonp,notify:e,loading:t,useTitle:a,alert:i,startupComponent:n,access:o?new V({alert:i,...o}):void 0}}function ut(r={}){return new V(r)}function Fe(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?D(r.headers,{},!0):void 0,o={url:r.url,method:r.method,settings:{...r.settings,headers:n}};return(a,i)=>(delete o.data,s.send(f.merge(o,i||{},{data:a})))}}function De(r,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:n}=r;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,n,o,a)}}function He(r=[],e=[],t){const s={};for(const n of r)s[n.id]=Fe(n,t);for(const n of e)s[n.id]=De(n,t);return s}async function xe(r=[],e=window){const t=F(e);t&&(ce(e),r.forEach(s=>Be(t,s)))}function Ue(r,e=window){const t=$(r.mockTemplate)&&r.mockTemplate.value?b(r.mockTemplate,{},!0):void 0,s=F(e);return async(...n)=>{let o={};if(t)try{o=await t.apply(t,n)}catch(a){f.logger.warn("模拟数据模版异常",a)}return s?.mock(o)}}function Be(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s)try{const n=f.isUrl(t)?new URL(t).pathname:t,o=f.pathToRegexp(`(.*)${n}(.*)`),a=f.pathToRegexpMatch(n,{decode:decodeURIComponent}),i=D(s,{},!0);r.mock(o,l=>{const c=f.url.parse(l.url)||{},p=l.body instanceof FormData?f.formDataToJson(l.body):l.body,u=f.isUrl(l.url)?new URL(l.url).pathname:l.url.split("?")[0],m=a(u)?.params;Object.assign(l,{data:p,params:m,query:c});try{return r.mock(i(l))}catch(d){return console.warn("[mockApi]",o,l,d),null}})}catch(n){console.warn("mockApi",n)}}function ce(r=window){const e=F(r);e&&(e._mocked={})}class Ne{__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=G){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&&te.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){te.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 b({type:s,value:n},this)}else return b(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 D({type:s,value:n},this)}else return D(e,this)}__ref(e=null,t){if(this.__mode!==_.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await f.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 o=new Set([].concat(n,s));return Array.from(o)}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=G,mode:t=_.Runtime,components:s={},libs:n={},apis:o={},loader:a}=r,i=e.computed(()=>r.dsl),l={$components:s,$libs:n,$apis:o},c=new Ne({mode:t,dsl:i.value,attrs:l}),p=e.defineComponent({name:i.value.name,__scopeId:i.value.id?`data-v-${i.value.id}`:void 0,props:{...ft(i.value.props??[],c)},setup(u){c.$props=u,c.props=u,i.value.id&&z(r.window||window,i.value.id,i.value.css||"",!0),c.state=dt(e,i.value.state??{},c);const m=ht(e,i.value.computed??{},c),d=mt(i.value.methods??{},c),h=gt(e,i.value.inject,c);for(const[g,C]of Object.entries(h||{}))h[g]=e.inject(g,C);const v=Le(i.value.dataSources||{},c),y={...h,...m,...d,...v};return c.setup(y,e),vt(e,i.value.watch??[],c),{vtj:c}},emits:pt(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const u=i.value.nodes||[];return u.length===1?T(u[0],c,e,a,u):u.map(m=>T(m,c,e,a,u))},...yt(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(p),context:c}}function pt(r=[]){return r.map(e=>f.isString(e)?e:e.name)}function ft(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(o=>Se[o]):void 0;return r.map(s=>f.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 dt(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let o=e[n];return j(o)?o=t.__parseExpression(o):$(o)&&(o=t.__parseFunction(o)),s[n]=o,s},{}))}function ht(r,e,t){return Object.entries(e??{}).reduce((s,[n,o])=>(s[n]=r.computed(t.__parseFunction(o)),s),{})}function mt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function gt(r,e=[],t){return e.reduce((s,n)=>{const{name:o,from:a}=n||{};n.default;const i=j(a)?t.__parseExpression(a)||o:a??o,l=j(n.default)?t.__parseExpression(n.default):n.default??null;return s[o]=r.inject(i,l),s},{})}function Le(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=Ue(n);else if(n.ref){const o=e.$apis[n.ref],a=$(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...i)=>{const l=await o.apply(e,i);return a?a(l):l}}return t},{})}function vt(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function yt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>{const o=e.__parseFunction(n);return t[s]=async()=>{await f.delay(0),f.isFunction(o)&&o()},t},{})}const qe=new f.Queue;let X=[],M={};const Je=r=>r;async function le(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(i=>N(i));if(n.length===0||!s)return null;const o=t.filter(i=>B(i));return o.length&&oe(o,e),await ie(n,s,e).catch(i=>(console.warn("loadScriptUrl error",n,s,i),null))}function K(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(X.forEach(n=>{delete s.window[n]}),X=[]),(n,o,a=G)=>{if(!o||typeof o=="string")return n;if(o.type==="Schema"&&o.id)return a.defineAsyncComponent(async()=>{const i=M[o.id]||await qe.add(o.id,()=>e(o.id));return i&&(i.name=n,M[o.id]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:_.Runtime,loader:K(r)}).renderer:null});if(o.type==="UrlSchema"&&o.url)return a.defineAsyncComponent(async()=>{const i=M[o.url]||await t(o.url);return i&&(i.name=n,M[o.url]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:_.Runtime,loader:K(r)}).renderer:null});if(o.type==="Plugin"){let i=o.library?M[o.library]:null;return i||(o.library&&X.push(o.library),i=M[o.library||Symbol()]=a.defineAsyncComponent(async()=>{const l=await le(o,s.window);return l||(console.warn("getPlugin result is null",o),null)}),i)}return n}}function _t(){M={},qe.clearAllCache()}function T(r,e,t=G,s=Je,n=[],o=!1){if(!r||!r.name||r.invisible)return null;const a=t.getCurrentInstance()?.appContext,{id:i=null,directives:l=[]}=r,{vIf:c,vElseIf:p,vElse:u,vFor:m,vShow:d,vModels:h,vBind:v,vHtml:y,others:g}=Ke(l);if(!o&&(p||u))return null;if(c&&!wt(c,e))return Rt(r,e,t,s,n);const C=(S,L=0)=>{const I=S.$components,W=(()=>{if(r.name==="component")return Et(S,r.props?.is);if(r.name==="slot")return r.name;const R=s(r.name,r.from,t);if(f.isString(R))return Me(R)||Te(R)?R:I[R]??a?.app?.component(R)??R;if(f.isObject(R)&&r.id){const ge=`Loader${r.id}_${L}`,ve=I[ge];return ve||(I[ge]=R)}return R})(),P=$t(i,r.props??{},S),We=jt(t,r.events??{},S);if(r.name==="slot")return bt(t,r,P,S,s);v&&Object.assign(P,S.__parseExpression(v.value)),d&&(P.style=Object.assign(P.style??{},Pt(d,S))),y&&Object.assign(P,At(y,S)),h.forEach(R=>{Object.assign(P,It(t,R,S))});const Ye=Mt(t,r.children??[],S,s,r),he=S?.__id?`data-v-${S.__id}`:void 0,Xe=he?{[he]:""}:{};let Y=t.createVNode(W,{key:`${i}_${L}`,...Xe,...P,...We},Ye);const me=a?St(a,g,S):[];return me.length&&(Y=t.withDirectives(Y,me)),Y};return m?Ot(m,C,e):C(e)}function St(r,e,t){const s=r.app;return e.map(n=>{const o=typeof n.name=="string"?s.directive(n.name):t.__parseExpression(n.name);if(!o)return null;const a=[o];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 Ke(r=[]){const e=r.find(p=>f.camelCase(p.name)==="vIf"),t=r.find(p=>f.camelCase(p.name)==="vElseIf"),s=r.find(p=>f.camelCase(p.name)==="vElse"),n=r.find(p=>f.camelCase(p.name)==="vFor"),o=r.find(p=>f.camelCase(p.name)==="vShow"),a=r.find(p=>f.camelCase(p.name)==="vBind"),i=r.find(p=>f.camelCase(p.name)==="vHtml"),l=r.filter(p=>f.camelCase(p.name)==="vModel"),c=r.filter(p=>!_e.includes(f.camelCase(p.name)));return{vIf:e,vElseIf:t,vElse:s,vFor:n,vShow:o,vModels:l,vBind:a,others:c,vHtml:i}}function wt(r,e){return!!e.__parseExpression(r.value)}function Et(r,e){return e?j(e)?r.__parseExpression(e):e:"div"}function $t(r,e,t){const s=se(e,t);return s.ref=t.__ref(r,s.ref),s}function se(r,e){return j(r)?e.__parseExpression(r):$(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>se(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=se(n,e),t},{}):r}function jt(r,e,t){const s=["passive","capture","once"],n={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],l=ue(i.modifiers),c=l.find(m=>s.includes(m)),p="on"+f.upperFirst(a)+(c&&n[c]||""),u=t.__parseFunction(i.handler);return u&&(o[p]=r.withModifiers(u,l)),o},{})}function Rt(r,e,t,s,n=[]){let o=n.findIndex(a=>a.id===r.id);for(let a=++o;a<n.length;a++){const{directives:i=[]}=n[a],{vElseIf:l,vElse:c}=Ke(i);if(l){if(e.__parseExpression(l.value))return T(n[a],e,t,s,n,!0);continue}if(c)return T(n[a],e,t,s,n,!0)}return null}function ue(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function bt(r,e,t,s,n){const{children:o}=e,a=Ct(e,s),i=s.$slots?.[a.name];return i?i(t):o?f.isString(o)?r.createTextVNode(o):j(o)?r.createTextVNode(ne(s.__parseExpression(o))):Array.isArray(o)?o.map(l=>T(l,s,r,n,o)):null:null}function Ct(r,e){const{props:t}=r,s=t?.name||"default";return{name:j(s)?e.__parseExpression(s):s,params:[]}}function Pt(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function At(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function It(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
|
13
13
|
${e.value.value} = v;
|
14
|
-
}`:"(v) => {}"},n=t.__parseFunction(s),o=ue(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}`]:o.length&&n?r.withModifiers(n,o):n}}function Mt(r,e,t,s,n){if(!e)return null;if(f.isString(e))return{default:()=>e};if(j(e))return{default:()=>ne(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=Tt(e),a=(i,l)=>!i||!n?{}:n?.id&&Object.keys(i).length?l?{[l]:i}:{[`scope_${n.id}`]:i}:l?{[l]:Object.create(null)}:{};return Object.entries(o).reduce((i,[l,{nodes:c,params:p,scope:u}])=>(i[l]=m=>{const d=p.length?f.pick(m??{},p):a(m,u);return c.map(h=>T(h,t.__clone(d),r,s,c))},i),{})}return null}function Tt(r){const e={};for(const t of r){const s=kt(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 kt(r="default"){return f.isString(r)?{name:r,params:[],scope:""}:{params:[],scope:"",...r}}function Ft(r,e,t){const{value:s,iterator:n}=r,{item:o="item",index:a="index"}=n||{};let i=t.__parseExpression(s)||[];return Number.isInteger(i)&&(i=new Array(i).fill(!0).map((l,c)=>c+1)),Array.isArray(i)?i.map((l,c)=>e(t.__clone({[o]:l,[a]:c}),c)):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const Z=E.defineComponent({name:"VtjPageContainer",async setup(){const r=de(),e=ye.useRoute(),t=e.meta.__vtj__||e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,o=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:o,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())}}),Ot=E.defineComponent({name:"VtjStartupContainer",render(){return E.h("div","page not found!")}});function U(r,e,t=[]){const s=[];for(const n of t){const{id:o,title:a,icon:i,children:l,hidden:c,layout:p}=n;if(p){const u=U(r,e,l||[]);s.push(...u)}else{const u={id:o,title:a,icon:i,hidden:c,url:`${r}/${e}/${o}`,children:l&&l.length?U(r,e,l):void 0};s.push(u)}}return s}function pe(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=pe(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function Dt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=de(),o=ye.useRoute(),a=Fe(),i=E.ref(!1),l=E.ref(!1),c=n.project,p=(d,h)=>{i.value=!d?.mask,l.value=h?.pure??!!d?.pure};E.watchEffect(()=>{const{name:d,params:h,meta:v}=o;if(d===F){const y=n.getPage(h.id);p(y,v)}else if(d===x){const y=n.getHomepage();p(y,v)}else{const y=v.__vtj__;if(y){const g=n.getPage(y);p(g,v)}else i.value=!v.mask,l.value=!!v.pure}});const u=U(e,t,c?.pages),m=c?.config;return{disabled:i,logo:m?.logo,themeSwitchable:m?.themeSwitchable,title:m?.title||c?.description||c?.name||"VTJ App",menus:s?u:pe(u,a),pure:l}}function ee(r,e){const{id:t,title:s,meta:n}=r,{name:o="page",prefix:a="",component:i,routeMeta:l}=e;return{name:t,path:`${a}${o}/${t}`,component:i,meta:{title:s,...l,...n,__vtj__:t}}}function re(r){const{name:e="page",prefix:t="",pages:s=[],component:n,loader:o,routeMeta:a,homepage:i}=r,l=[];for(const c of s){const{id:p,title:u,dir:m,layout:d,children:h,meta:v}=c;if(m){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]});l.push(...y)}else if(d){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]}),g={name:`layout_${p}`,path:t,component:()=>o(p),meta:{title:u,...a,...v,__vtj__:p},children:y};l.push(g),l.push(ee(c,r))}else if(l.push(ee(c,r)),i===p){const y=ee(c,r);y.path="",y.name=`home_${p}`,l.push(y)}}return l}function Ht(r={},e){const{css:t,store:s,enhance:n}=r,{window:o,app:a,library:i={},adapter:l,mode:c}=e,{Pinia:p}=i;a.config.globalProperties.$libs=i,z(o,"global-css",t||""),p&&s&&xt(s,a,p),Bt(a,l,r),!l.access&&r.access&&Ut(r.access,a,c,l),Nt(a,r),n&&Lt(n,a,i)}function xt(r,e,t){const s=t.createPinia();if(e.use(s),$(r)&&r.value){const n=b(r,{},!1,!1,!0),o=t.defineStore("$store",n(e)||{});e.config.globalProperties.$store=o()}}function Ut(r,e,t,s){if($(r)&&r.value){const n=b(r,{},!1,!1,!0),{alert:o,request:a}=s,i=new V({alert:o,storagePrefix:"__VTJ_APP_",...n(e)}),l=e.config.globalProperties.$router;i.connect({mode:t,router:l,request:a}),e.use(i)}}function Bt(r,e,t){if(!e.request)return;const{axios:s,request:n,response:o}=t;if(s&&$(s)&&s.value){const a=b(s,{},!1,!1,!0);e.request.setConfig(a(r))}if(n&&$(n)&&n.value){const a=b(n,{},!1,!1,!0),i=e.request;i.__unReq&&i.__unReq(),i.__unReq=e.request.useRequest(l=>a(l,r))}if(o&&$(o)&&o.value){const a=b(o,{},!1,!1,!0),i=e.request;i.__unRes&&i.__unRes(),i.__unRes=e.request.useResponse(l=>a(l,r))}}function Nt(r,e){const{beforeEach:t,afterEach:s}=e,n=r.config.globalProperties.$router;if(t&&$(t)&&t.value){const o=b(t,{},!1,!1,!0);n&&n.beforeEach((a,i,l)=>o(a,i,l,r))}if(s&&$(s)&&s.value){const o=b(s,{},!1,!1,!0);n&&n.afterEach((a,i,l)=>o(a,i,l,r))}}function Lt(r,e,t={}){$(r)&&r.value&&b(r,{},!1,!1,!0)(e,t)}function qt(r,e,t){if(!r||!e||!t)return;const{VueI18n:s}=e;if(s){const{locale:n,fallbackLocale:o,messages:a=[]}=t,i={};for(let c of a){const p=Object.keys(c).filter(u=>u!=="key");for(const u of p)i[u]||(i[u]={}),i[u][c.key]=c[u]}const l=s.createI18n({legacy:!1,locale:n,fallbackLocale:o,messages:i});r.use(l)}}const fe=Symbol("Provider");var Ge=(r=>(r.Production="production",r.Development="development",r))(Ge||{});class ze extends A.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=_.Raw,dependencies:n,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:p=null,materialPath:u="./",nodeEnv:m="development"}=e;this.mode=s,this.modules=c,this.service=t,this.router=p,this.materialPath=u,this.nodeEnv=m,n&&(this.dependencies=n),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i);const{access:d,request:h}=this.adapter;d&&d.connect({mode:s,router:p,request:h}),a&&s!==_.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:f.request,jsonp:f.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(o){f.logger.warn("模拟数据模版异常",o)}return O()?.mock(s)}}async load(e){const{vtjDir:t=".vtj"}=this.options,s=this.modules[`${t}/projects/${e.id}.json`]||this.modules[`/src/${t}/projects/${e.id}.json`];if(this.project=s?await s():await this.service.init(e),!this.project)throw new Error("project is null");const{apis:n=[],meta:o=[]}=this.project,a=window;a&&(a.CKEDITOR_VERSION=void 0),this.mode===_.Raw?await this.loadDependencies(a):await this.loadAssets(a),this.initMock(a),this.apis=He(n,o,this.adapter),ce(a),xe(n,a),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=O(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:o,materialPath:a,nodeEnv:i}=this,{libraryExports:l,libraryMap:c,materials:p,materialExports:u,materialMapLibrary:m}=Re(t,a,i==="development");for(const d of l){const h=s[d],v=e[d];if(v)n[d]=v;else if(h)e[d]=n[d]=await h();else{const y=c[d]||[];for(const g of y)B(g)&&await Ae(g,f.url.append(g,{v:k})),N(g)&&await f.loadScript(f.url.append(g,{v:k}));n[d]=e[d]}}if(i==="development"){for(const h of p)await f.loadScript(f.url.append(h,{v:k}));const d=this.materials||{};for(const h of u){const v=e[m[h]],y=A.BUILT_IN_COMPONENTS[h];if(y)v&&y.forEach(g=>{o[g]=v[g]});else{const g=d[h]?(await d[h]()).default:e[h];g&&v&&(g.components||[]).forEach(C=>{o[C.name]=be(C,v)})}}}}initRouter(){const{router:e,project:t,options:s,adapter:n}=this;if(!e)return;const o=t?.platform==="uniapp"?"pages":"page",{routeAppendTo:a,pageRouteName:i=o,routeMeta:l}=s,c=a?"":"/",p={path:`${c}${i}/:id`,name:F,component:Z},u={path:c,name:x,component:t?.homepage?Z:n.startupComponent||Ot,meta:l};if(e.hasRoute(F)&&e.removeRoute(F),e.hasRoute(x)&&e.removeRoute(x),s.enableStaticRoute){const m=t?.pages||[];re({name:i,prefix:c,pages:m,component:Z,loader:this.getRenderComponent.bind(this),homepage:t?.homepage}).forEach(h=>{a?e.addRoute(a,h):e.addRoute(h)}),t?.homepage||(a?e.addRoute(a,u):e.addRoute(u))}else a?(e.addRoute(a,p),e.addRoute(a,u)):(e.addRoute(p),e.addRoute(u))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&Ie(n)&&(e.use(n),t[s]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),this.project?.platform!=="uniapp"&&this.mode!==_.Design&&this.initGlobals(this.project?.globals||{},{app:e,window,adapter:this.adapter,library:this.library,mode:this.mode}),this.mode!==_.Design&&this.project?.i18n&&this.initI18n(e,this.library,this.project.i18n),e.provide(fe,this),e.config.globalProperties.$provider=this,this.options.enhance&&e.use(this.options.enhance,this),this.mode===_.Design&&(e.config.errorHandler=(s,n,o)=>{const a=n?.$options.name,i=typeof s=="string"?s:s?.message||s?.msg||"未知错误",l=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:s,instance:n,info:o},s?.stack),this.adapter.notify&&this.adapter.notify(l,"组件渲染错误","error")}),e.config.globalProperties.installed=t}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,o=[])=>{for(const a of o){if(a.id===n)return a;if(a.children&&a.children.length){const i=s(n,a.children);if(i)return i}}};return s(e,t)||null}getMenus(e="page",t=""){return U(t,e,this.project?.pages||[])}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const{vtjDir:t=".vtj"}=this.options,s=this.modules[`${t}/files/${e}.json`]||this.modules[`/src/${t}/files/${e}.json`];return s?await s():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:o,apis:a}=this,i={mode:o,Vue:s.Vue,components:n,libs:s,apis:a,window,...t},l=K({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return J({...i,dsl:e,loader:l})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return f.logger.warn(`Can not find file: ${e}`),null;if(t&&t(s),this.mode===_.Raw){const{vtjRawDir:o=".vtj/vue"}=this.options,a=`${o}/${e}.vue`,i=this.modules[a]||this.modules[`/src/pages/${e}.vue`];return i?(await i())?.default:this.nodeEnv==="development"&&this.adapter.startupComponent||null}const n=await this.getDsl(s.id);return n?this.createDslRenderer(n).renderer:(f.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 le(e,window))}initGlobals(e,t){const s=Object.assign({adapter:this.adapter,window},t);Ht(e,s)}initI18n(e,t,s){qt(e,t,s)}}function Jt(r){const e=new ze(r);return{provider:e,onReady:s=>e.ready(s)}}function de(r={}){const e=E.inject(fe,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 Kt(r,e=""){const{name:t,urls:s=[]}=r||{},n=s.map(i=>e+i),{css:o,js:a}=Ce(n);if(o.length&&oe(o),a.length)return await ie(a,t).catch(()=>{})}const Ve={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},Gt=(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:Ve}),zt=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...Ve,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function Vt(r){return f.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class Q{constructor(e=f.request){this.req=e,this.api=Gt(e),this.uploader=zt(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(o=>$e(o))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=f.request.send({url:s,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const w=new f.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Qt extends Q{init(e){const t=new A.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 A.ProjectModel(e);return w.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return w.save(`materials_${e.id}`,f.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(o=>o.id);this.removeHistoryItem(e,n),w.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=w.get(`history_${e}`),s=new A.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 Qe extends Q{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new A.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 A.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=f.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(o=>o.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new A.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 q=null;function Wt(){return q||(q=new Qe,q)}class Yt extends Q{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:f.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=st;exports.ACCESS_KEY=ae;exports.Access=V;exports.BUILD_IN_TAGS=Ee;exports.BUILT_IN_DIRECTIVES=_e;exports.BaseService=Q;exports.CONTEXT_HOST=te;exports.Context=Ne;exports.ContextMode=_;exports.DATA_TYPES=Se;exports.HOMEPAGE_ROUTE_NAME=x;exports.HTML_TAGS=we;exports.JSCodeToString=at;exports.LIFE_CYCLES_LIST=et;exports.LocalService=Yt;exports.MemoryService=Qe;exports.NodeEnv=Ge;exports.PAGE_ROUTE_NAME=F;exports.Provider=ze;exports.REMOTE=tt;exports.StorageService=Qt;exports.VTJ_RENDERER_VERSION=k;exports.adoptStylesToInline=ot;exports.adoptedStyleSheets=z;exports.clearLoaderCache=_t;exports.compileScopedCSS=Pe;exports.createAccess=ut;exports.createAdapter=lt;exports.createAssetScripts=rt;exports.createAssetsCss=nt;exports.createDataSources=Le;exports.createLoader=K;exports.createMemoryService=Wt;exports.createMenus=U;exports.createMetaApi=De;exports.createMock=Ue;exports.createProvider=Jt;exports.createRenderer=J;exports.createSchemaApi=Oe;exports.createSchemaApis=He;exports.createServiceRequest=Vt;exports.defaultLoader=Je;exports.fillBasePath=H;exports.getMock=O;exports.getModifiers=ue;exports.getPlugin=le;exports.getRawComponent=be;exports.isBuiltInTag=Me;exports.isCSSUrl=B;exports.isJSCode=ke;exports.isJSExpression=j;exports.isJSFunction=$;exports.isJSON=$e;exports.isJSUrl=N;exports.isNativeTag=Te;exports.isVuePlugin=Ie;exports.loadCss=Ae;exports.loadCssUrl=oe;exports.loadEnhance=Kt;exports.loadScriptUrl=ie;exports.menusFilter=pe;exports.mockApi=Be;exports.mockApis=xe;exports.mockCleanup=ce;exports.nodeRender=T;exports.parseDeps=Re;exports.parseExpression=D;exports.parseFunction=b;exports.parseUrls=Ce;exports.providerKey=fe;exports.removeProdFlag=je;exports.setupPageSetting=it;exports.toString=ne;exports.useAccess=Fe;exports.useMask=Dt;exports.useProvider=de;
|
14
|
+
}`:"(v) => {}"},n=t.__parseFunction(s),o=ue(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}`]:o.length&&n?r.withModifiers(n,o):n}}function Mt(r,e,t,s,n){if(!e)return null;if(f.isString(e))return{default:()=>e};if(j(e))return{default:()=>ne(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=Tt(e),a=(i,l)=>!i||!n?{}:n?.id&&Object.keys(i).length?l?{[l]:i}:{[`scope_${n.id}`]:i}:l?{[l]:Object.create(null)}:{};return Object.entries(o).reduce((i,[l,{nodes:c,params:p,scope:u}])=>(i[l]=m=>{const d=p.length?f.pick(m??{},p):a(m,u);return c.map(h=>T(h,t.__clone(d),r,s,c))},i),{})}return null}function Tt(r){const e={};for(const t of r){const s=kt(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 kt(r="default"){return f.isString(r)?{name:r,params:[],scope:""}:{params:[],scope:"",...r}}function Ot(r,e,t){const{value:s,iterator:n}=r,{item:o="item",index:a="index"}=n||{};let i=t.__parseExpression(s)||[];return Number.isInteger(i)&&(i=new Array(i).fill(!0).map((l,c)=>c+1)),Array.isArray(i)?i.map((l,c)=>e(t.__clone({[o]:l,[a]:c}),c)):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const Z=E.defineComponent({name:"VtjPageContainer",async setup(){const r=de(),e=ye.useRoute(),t=e.meta.__vtj__||e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,o=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:o,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())}}),Ft=E.defineComponent({name:"VtjStartupContainer",render(){return E.h("div","page not found!")}});function U(r,e,t=[]){const s=[];for(const n of t){const{id:o,title:a,icon:i,children:l,hidden:c,layout:p}=n;if(p){const u=U(r,e,l||[]);s.push(...u)}else{const u={id:o,title:a,icon:i,hidden:c,url:`${r}/${e}/${o}`,children:l&&l.length?U(r,e,l):void 0};s.push(u)}}return s}function pe(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=pe(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function Dt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=de(),o=ye.useRoute(),a=Oe(),i=E.ref(!1),l=E.ref(!1),c=n.project,p=(d,h)=>{i.value=!d?.mask,l.value=h?.pure??!!d?.pure};E.watchEffect(()=>{const{name:d,params:h,meta:v}=o;if(d===O){const y=n.getPage(h.id);p(y,v)}else if(d===x){const y=n.getHomepage();p(y,v)}else{const y=v.__vtj__;if(y){const g=n.getPage(y);p(g,v)}else i.value=!v.mask,l.value=!!v.pure}});const u=U(e,t,c?.pages),m=c?.config;return{disabled:i,logo:m?.logo,themeSwitchable:m?.themeSwitchable,title:m?.title||c?.description||c?.name||"VTJ App",menus:s?u:pe(u,a),pure:l}}function ee(r,e){const{id:t,title:s,meta:n}=r,{name:o="page",prefix:a="",component:i,routeMeta:l}=e;return{name:t,path:`${a}${o}/${t}`,component:i,meta:{title:s,...l,...n,__vtj__:t}}}function re(r){const{name:e="page",prefix:t="",pages:s=[],component:n,loader:o,routeMeta:a,homepage:i}=r,l=[];for(const c of s){const{id:p,title:u,dir:m,layout:d,children:h,meta:v}=c;if(m){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]});l.push(...y)}else if(d){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]}),g={name:`layout_${p}`,path:t,component:()=>o(p),meta:{title:u,...a,...v,__vtj__:p},children:y};l.push(g),l.push(ee(c,r))}else if(l.push(ee(c,r)),i===p){const y=ee(c,r);y.path="",y.name=`home_${p}`,l.push(y)}}return l}function Ht(r={},e){const{css:t,store:s,enhance:n}=r,{window:o,app:a,library:i={},adapter:l,mode:c}=e,{Pinia:p}=i;a.config.globalProperties.$libs=i,z(o,"global-css",t||""),p&&s&&xt(s,a,p),Bt(a,l,r),!l.access&&r.access&&Ut(r.access,a,c,l),Nt(a,r),n&&Lt(n,a,i)}function xt(r,e,t){const s=t.createPinia();if(e.use(s),$(r)&&r.value){const n=b(r,{},!1,!1,!0),o=t.defineStore("$store",n(e)||{});e.config.globalProperties.$store=o()}}function Ut(r,e,t,s){if($(r)&&r.value){const n=b(r,{},!1,!1,!0),{alert:o,request:a}=s,i=new V({alert:o,storagePrefix:"__VTJ_APP_",...n(e)}),l=e.config.globalProperties.$router;i.connect({mode:t,router:l,request:a}),e.use(i)}}function Bt(r,e,t){if(!e.request)return;const{axios:s,request:n,response:o}=t;if(s&&$(s)&&s.value){const a=b(s,{},!1,!1,!0);e.request.setConfig(a(r))}if(n&&$(n)&&n.value){const a=b(n,{},!1,!1,!0),i=e.request;i.__unReq&&i.__unReq(),i.__unReq=e.request.useRequest(l=>a(l,r))}if(o&&$(o)&&o.value){const a=b(o,{},!1,!1,!0),i=e.request;i.__unRes&&i.__unRes(),i.__unRes=e.request.useResponse(l=>a(l,r))}}function Nt(r,e){const{beforeEach:t,afterEach:s}=e,n=r.config.globalProperties.$router;if(t&&$(t)&&t.value){const o=b(t,{},!1,!1,!0);n&&n.beforeEach((a,i,l)=>o(a,i,l,r))}if(s&&$(s)&&s.value){const o=b(s,{},!1,!1,!0);n&&n.afterEach((a,i,l)=>o(a,i,l,r))}}function Lt(r,e,t={}){$(r)&&r.value&&b(r,{},!1,!1,!0)(e,t)}function qt(r,e,t){if(!r||!e||!t)return;const{VueI18n:s}=e;if(s){const{locale:n,fallbackLocale:o,messages:a=[]}=t,i={};for(let c of a){const p=Object.keys(c).filter(u=>u!=="key");for(const u of p)i[u]||(i[u]={}),i[u][c.key]=c[u]}const l=s.createI18n({legacy:!1,locale:n,fallbackLocale:o,messages:i});r.use(l)}}const fe=Symbol("Provider");var Ge=(r=>(r.Production="production",r.Development="development",r))(Ge||{});class ze extends A.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=_.Raw,dependencies:n,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:p=null,materialPath:u="./",nodeEnv:m="development"}=e;this.mode=s,this.modules=c,this.service=t,this.router=p,this.materialPath=u,this.nodeEnv=m,n&&(this.dependencies=n),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i);const{access:d,request:h}=this.adapter;d&&d.connect({mode:s,router:p,request:h}),a&&s!==_.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:f.request,jsonp:f.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(o){f.logger.warn("模拟数据模版异常",o)}return F()?.mock(s)}}async load(e){const{vtjDir:t=".vtj"}=this.options,s=this.modules[`${t}/projects/${e.id}.json`]||this.modules[`/src/${t}/projects/${e.id}.json`];if(this.project=s?await s():await this.service.init(e),!this.project)throw new Error("project is null");const{apis:n=[],meta:o=[]}=this.project,a=window;a&&(a.CKEDITOR_VERSION=void 0),this.mode===_.Raw?await this.loadDependencies(a):await this.loadAssets(a),this.initMock(a),this.apis=He(n,o,this.adapter),ce(a),xe(n,a),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=F(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:o,materialPath:a,nodeEnv:i}=this,{libraryExports:l,libraryMap:c,materials:p,materialExports:u,materialMapLibrary:m}=Re(t,a,i==="development");for(const d of l){const h=s[d],v=e[d];if(v)n[d]=v;else if(h)e[d]=n[d]=await h();else{const y=c[d]||[];for(const g of y)B(g)&&await Ae(g,f.url.append(g,{v:k})),N(g)&&await f.loadScript(f.url.append(g,{v:k}));n[d]=e[d]}}if(i==="development"){for(const h of p)await f.loadScript(f.url.append(h,{v:k}));const d=this.materials||{};for(const h of u){const v=e[m[h]],y=A.BUILT_IN_COMPONENTS[h];if(y)v&&y.forEach(g=>{o[g]=v[g]});else{const g=d[h]?(await d[h]()).default:e[h];g&&v&&(g.components||[]).forEach(C=>{o[C.name]=be(C,v)})}}}}initRouter(){const{router:e,project:t,options:s,adapter:n}=this;if(!e)return;const o=t?.platform==="uniapp"?"pages":"page",{routeAppendTo:a,pageRouteName:i=o,routeMeta:l}=s,c=a?"":"/",p={path:`${c}${i}/:id`,name:O,component:Z},u={path:c,name:x,component:t?.homepage?Z:n.startupComponent||Ft,meta:l};if(e.hasRoute(O)&&e.removeRoute(O),e.hasRoute(x)&&e.removeRoute(x),s.enableStaticRoute){const m=t?.pages||[];re({name:i,prefix:c,pages:m,component:Z,loader:this.getRenderComponent.bind(this),homepage:t?.homepage}).forEach(h=>{a?e.addRoute(a,h):e.addRoute(h)}),t?.homepage||(a?e.addRoute(a,u):e.addRoute(u))}else a?(e.addRoute(a,p),e.addRoute(a,u)):(e.addRoute(p),e.addRoute(u))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&Ie(n)&&(e.use(n),t[s]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),this.project?.platform!=="uniapp"&&this.mode!==_.Design&&this.initGlobals(this.project?.globals||{},{app:e,window,adapter:this.adapter,library:this.library,mode:this.mode}),this.mode!==_.Design&&this.project?.i18n&&this.initI18n(e,this.library,this.project.i18n),e.provide(fe,this),e.config.globalProperties.$provider=this,this.options.enhance&&e.use(this.options.enhance,this),this.mode===_.Design&&(e.config.errorHandler=(s,n,o)=>{const a=n?.$options.name,i=typeof s=="string"?s:s?.message||s?.msg||"未知错误",l=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:s,instance:n,info:o},s?.stack),this.adapter.notify&&this.adapter.notify(l,"组件渲染错误","error")}),e.config.globalProperties.installed=t}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,o=[])=>{for(const a of o){if(a.id===n)return a;if(a.children&&a.children.length){const i=s(n,a.children);if(i)return i}}};return s(e,t)||null}getMenus(e="page",t=""){return U(t,e,this.project?.pages||[])}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const{vtjDir:t=".vtj"}=this.options,s=this.modules[`${t}/files/${e}.json`]||this.modules[`/src/${t}/files/${e}.json`];return s?await s():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:o,apis:a}=this,i={mode:o,Vue:s.Vue,components:n,libs:s,apis:a,window,...t},l=K({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return J({...i,dsl:e,loader:l})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return f.logger.warn(`Can not find file: ${e}`),null;if(t&&t(s),this.mode===_.Raw){const{vtjRawDir:o=".vtj/vue"}=this.options,a=`${o}/${e}.vue`,i=this.modules[a]||this.modules[`/src/pages/${e}.vue`];return i?(await i())?.default:this.nodeEnv==="development"&&this.adapter.startupComponent||null}const n=await this.getDsl(s.id);return n?this.createDslRenderer(n).renderer:(f.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 le(e,window))}initGlobals(e,t){const s=Object.assign({adapter:this.adapter,window},t);Ht(e,s)}initI18n(e,t,s){qt(e,t,s)}}function Jt(r){const e=new ze(r);return{provider:e,onReady:s=>e.ready(s)}}function de(r={}){const e=E.inject(fe,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 Kt(r,e=""){const{name:t,urls:s=[]}=r||{},n=s.map(i=>e+i),{css:o,js:a}=Ce(n);if(o.length&&oe(o),a.length)return await ie(a,t).catch(()=>{})}const Ve={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},Gt=(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:Ve}),zt=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...Ve,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function Vt(r){return f.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class Q{constructor(e=f.request){this.req=e,this.api=Gt(e),this.uploader=zt(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(o=>$e(o))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=f.request.send({url:s,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const w=new f.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Qt extends Q{init(e){const t=new A.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 A.ProjectModel(e);return w.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return w.save(`materials_${e.id}`,f.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(o=>o.id);this.removeHistoryItem(e,n),w.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=w.get(`history_${e}`),s=new A.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 Qe extends Q{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new A.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 A.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=f.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(o=>o.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new A.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 q=null;function Wt(){return q||(q=new Qe,q)}class Yt extends Q{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:f.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=st;exports.ACCESS_KEY=ae;exports.Access=V;exports.BUILD_IN_TAGS=Ee;exports.BUILT_IN_DIRECTIVES=_e;exports.BaseService=Q;exports.CONTEXT_HOST=te;exports.Context=Ne;exports.ContextMode=_;exports.DATA_TYPES=Se;exports.HOMEPAGE_ROUTE_NAME=x;exports.HTML_TAGS=we;exports.JSCodeToString=at;exports.LIFE_CYCLES_LIST=et;exports.LocalService=Yt;exports.MemoryService=Qe;exports.NodeEnv=Ge;exports.PAGE_ROUTE_NAME=O;exports.Provider=ze;exports.REMOTE=tt;exports.StorageService=Qt;exports.VTJ_RENDERER_VERSION=k;exports.adoptStylesToInline=ot;exports.adoptedStyleSheets=z;exports.clearLoaderCache=_t;exports.compileScopedCSS=Pe;exports.createAccess=ut;exports.createAdapter=lt;exports.createAssetScripts=rt;exports.createAssetsCss=nt;exports.createDataSources=Le;exports.createLoader=K;exports.createMemoryService=Wt;exports.createMenus=U;exports.createMetaApi=De;exports.createMock=Ue;exports.createProvider=Jt;exports.createRenderer=J;exports.createSchemaApi=Fe;exports.createSchemaApis=He;exports.createServiceRequest=Vt;exports.defaultLoader=Je;exports.fillBasePath=H;exports.getMock=F;exports.getModifiers=ue;exports.getPlugin=le;exports.getRawComponent=be;exports.isBuiltInTag=Me;exports.isCSSUrl=B;exports.isJSCode=ke;exports.isJSExpression=j;exports.isJSFunction=$;exports.isJSON=$e;exports.isJSUrl=N;exports.isNativeTag=Te;exports.isVuePlugin=Ie;exports.loadCss=Ae;exports.loadCssUrl=oe;exports.loadEnhance=Kt;exports.loadScriptUrl=ie;exports.menusFilter=pe;exports.mockApi=Be;exports.mockApis=xe;exports.mockCleanup=ce;exports.nodeRender=T;exports.parseDeps=Re;exports.parseExpression=D;exports.parseFunction=b;exports.parseUrls=Ce;exports.providerKey=fe;exports.removeProdFlag=je;exports.setupPageSetting=it;exports.toString=ne;exports.useAccess=Oe;exports.useMask=Dt;exports.useProvider=de;
|
package/dist/index.mjs
CHANGED
@@ -7,10 +7,10 @@ import { useRoute as Ae } 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.13.
|
10
|
+
* @version 0.13.21
|
11
11
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
12
12
|
*/
|
13
|
-
const
|
13
|
+
const M = "0.13.21";
|
14
14
|
var y = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(y || {});
|
15
15
|
const je = [
|
16
16
|
"$el",
|
@@ -55,7 +55,7 @@ const je = [
|
|
55
55
|
Object,
|
56
56
|
Function,
|
57
57
|
Date
|
58
|
-
}, D = "VtjPage",
|
58
|
+
}, D = "VtjPage", U = "VtjHomepage", at = "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(
|
59
59
|
","
|
60
60
|
), ct = "component,slot".split(","), ys = [
|
61
61
|
"h",
|
@@ -153,12 +153,12 @@ function lt(n) {
|
|
153
153
|
}
|
154
154
|
function ws(n) {
|
155
155
|
return n.map(
|
156
|
-
(e) => `<script src="${k.append(e, { v:
|
156
|
+
(e) => `<script src="${k.append(e, { v: M })}"><\/script>`
|
157
157
|
).join("");
|
158
158
|
}
|
159
159
|
function Ss(n = []) {
|
160
160
|
return n.map(
|
161
|
-
(e) => `<link rel="stylesheet" href="${k.append(e, { v:
|
161
|
+
(e) => `<link rel="stylesheet" href="${k.append(e, { v: M })}" />`
|
162
162
|
).join("");
|
163
163
|
}
|
164
164
|
function ut(n, e = !1) {
|
@@ -369,7 +369,7 @@ async function Fe(n, e, t = window) {
|
|
369
369
|
});
|
370
370
|
}
|
371
371
|
function gt(n) {
|
372
|
-
return L(n) || L(n?.install);
|
372
|
+
return L(n) && Object.getOwnPropertyNames(n.prototype || {}).length === 0 || L(n?.install);
|
373
373
|
}
|
374
374
|
function vt(n) {
|
375
375
|
return ct.includes(n);
|
@@ -441,7 +441,7 @@ const wt = {
|
|
441
441
|
noPermissionMessage: "无权限访问该页面",
|
442
442
|
appName: "",
|
443
443
|
statusKey: "code"
|
444
|
-
},
|
444
|
+
}, Oe = Symbol("access");
|
445
445
|
class pe {
|
446
446
|
options;
|
447
447
|
data = null;
|
@@ -492,7 +492,7 @@ class pe {
|
|
492
492
|
return ye(e).some((o) => s[o] || s[t + "." + o]);
|
493
493
|
}
|
494
494
|
install(e) {
|
495
|
-
e.config.globalProperties.$access = this, e.provide(
|
495
|
+
e.config.globalProperties.$access = this, e.provide(Oe, this);
|
496
496
|
}
|
497
497
|
isAuthPath(e) {
|
498
498
|
const { auth: t, isAuth: s } = this.options;
|
@@ -596,7 +596,7 @@ class pe {
|
|
596
596
|
}
|
597
597
|
}
|
598
598
|
function St() {
|
599
|
-
return Pe(
|
599
|
+
return Pe(Oe, null);
|
600
600
|
}
|
601
601
|
function Rs(n = {}) {
|
602
602
|
const {
|
@@ -683,7 +683,7 @@ function Et(n = [], e = [], t) {
|
|
683
683
|
}
|
684
684
|
async function Rt(n = [], e = window) {
|
685
685
|
const t = T(e);
|
686
|
-
t && (
|
686
|
+
t && (Me(e), n.forEach((s) => Pt(t, s)));
|
687
687
|
}
|
688
688
|
function bt(n, e = window) {
|
689
689
|
const t = S(n.mockTemplate) && n.mockTemplate.value ? E(n.mockTemplate, {}, !0) : void 0, s = T(e);
|
@@ -717,7 +717,7 @@ function Pt(n, e) {
|
|
717
717
|
console.warn("mockApi", r);
|
718
718
|
}
|
719
719
|
}
|
720
|
-
function
|
720
|
+
function Me(n = window) {
|
721
721
|
const e = T(n);
|
722
722
|
e && (e._mocked = {});
|
723
723
|
}
|
@@ -849,7 +849,7 @@ function ie(n) {
|
|
849
849
|
i.value.css || "",
|
850
850
|
!0
|
851
851
|
), c.state = kt(e, i.value.state ?? {}, c);
|
852
|
-
const h = Ft(e, i.value.computed ?? {}, c), p =
|
852
|
+
const h = Ft(e, i.value.computed ?? {}, c), p = Ot(i.value.methods ?? {}, c), d = Mt(e, i.value.inject, c);
|
853
853
|
for (const [m, R] of Object.entries(d || {}))
|
854
854
|
d[m] = e.inject(m, R);
|
855
855
|
const g = Dt(
|
@@ -870,8 +870,8 @@ function ie(n) {
|
|
870
870
|
render() {
|
871
871
|
if (!i.value.nodes) return null;
|
872
872
|
const u = i.value.nodes || [];
|
873
|
-
return u.length === 1 ?
|
874
|
-
(h) =>
|
873
|
+
return u.length === 1 ? O(u[0], c, e, a, u) : u.map(
|
874
|
+
(h) => O(h, c, e, a, u)
|
875
875
|
);
|
876
876
|
},
|
877
877
|
...Ht(i.value.lifeCycles ?? {}, c)
|
@@ -919,13 +919,13 @@ function Ft(n, e, t) {
|
|
919
919
|
{}
|
920
920
|
);
|
921
921
|
}
|
922
|
-
function
|
922
|
+
function Ot(n, e) {
|
923
923
|
return Object.entries(n ?? {}).reduce(
|
924
924
|
(t, [s, r]) => (t[s] = e.__parseFunction(r), t),
|
925
925
|
{}
|
926
926
|
);
|
927
927
|
}
|
928
|
-
function
|
928
|
+
function Mt(n, e = [], t) {
|
929
929
|
return e.reduce(
|
930
930
|
(s, r) => {
|
931
931
|
const { name: o, from: a } = r || {};
|
@@ -1034,17 +1034,17 @@ function ae(n) {
|
|
1034
1034
|
function Ps() {
|
1035
1035
|
I = {}, De.clearAllCache();
|
1036
1036
|
}
|
1037
|
-
function
|
1037
|
+
function O(n, e, t = z, s = xt, r = [], o = !1) {
|
1038
1038
|
if (!n || !n.name || n.invisible) return null;
|
1039
1039
|
const a = t.getCurrentInstance()?.appContext, { id: i = null, directives: l = [] } = n, { vIf: c, vElseIf: f, vElse: u, vFor: h, vShow: p, vModels: d, vBind: g, vHtml: v, others: m } = He(l);
|
1040
1040
|
if (!o && (f || u))
|
1041
1041
|
return null;
|
1042
|
-
if (c && !
|
1042
|
+
if (c && !Nt(c, e))
|
1043
1043
|
return Jt(n, e, t, s, r);
|
1044
1044
|
const R = (_, x = 0) => {
|
1045
1045
|
const A = _.$components, Q = (() => {
|
1046
1046
|
if (n.name === "component")
|
1047
|
-
return
|
1047
|
+
return Ut(_, n.props?.is);
|
1048
1048
|
if (n.name === "slot") return n.name;
|
1049
1049
|
const $ = s(n.name, n.from, t);
|
1050
1050
|
if (C($))
|
@@ -1109,10 +1109,10 @@ function He(n = []) {
|
|
1109
1109
|
vHtml: i
|
1110
1110
|
};
|
1111
1111
|
}
|
1112
|
-
function
|
1112
|
+
function Nt(n, e) {
|
1113
1113
|
return !!e.__parseExpression(n.value);
|
1114
1114
|
}
|
1115
|
-
function
|
1115
|
+
function Ut(n, e) {
|
1116
1116
|
return e ? j(e) ? n.__parseExpression(e) : e : "div";
|
1117
1117
|
}
|
1118
1118
|
function qt(n, e, t) {
|
@@ -1148,11 +1148,11 @@ function Jt(n, e, t, s, r = []) {
|
|
1148
1148
|
const { directives: i = [] } = r[a], { vElseIf: l, vElse: c } = He(i);
|
1149
1149
|
if (l) {
|
1150
1150
|
if (e.__parseExpression(l.value))
|
1151
|
-
return
|
1151
|
+
return O(r[a], e, t, s, r, !0);
|
1152
1152
|
continue;
|
1153
1153
|
}
|
1154
1154
|
if (c)
|
1155
|
-
return
|
1155
|
+
return O(r[a], e, t, s, r, !0);
|
1156
1156
|
}
|
1157
1157
|
return null;
|
1158
1158
|
}
|
@@ -1165,7 +1165,7 @@ function Kt(n, e, t, s, r) {
|
|
1165
1165
|
return i ? i(t) : o ? C(o) ? n.createTextVNode(o) : j(o) ? n.createTextVNode(
|
1166
1166
|
Ie(s.__parseExpression(o))
|
1167
1167
|
) : Array.isArray(o) ? o.map(
|
1168
|
-
(l) =>
|
1168
|
+
(l) => O(l, s, n, r, o)
|
1169
1169
|
) : null : null;
|
1170
1170
|
}
|
1171
1171
|
function zt(n, e) {
|
@@ -1217,7 +1217,7 @@ function Wt(n, e, t, s, r) {
|
|
1217
1217
|
(i, [l, { nodes: c, params: f, scope: u }]) => (i[l] = (h) => {
|
1218
1218
|
const p = f.length ? st(h ?? {}, f) : a(h, u);
|
1219
1219
|
return c.map(
|
1220
|
-
(d) =>
|
1220
|
+
(d) => O(d, t.__clone(p), n, s, c)
|
1221
1221
|
);
|
1222
1222
|
}, i),
|
1223
1223
|
{}
|
@@ -1248,7 +1248,7 @@ function Zt(n, e, t) {
|
|
1248
1248
|
const ee = Ce({
|
1249
1249
|
name: "VtjPageContainer",
|
1250
1250
|
async setup() {
|
1251
|
-
const n =
|
1251
|
+
const n = Ue(), e = Ae(), t = e.meta.__vtj__ || e.params.id, s = t ? n.getPage(t) : n.getHomepage(), r = s ? await n.getRenderComponent(s.id) : null, o = oe(Symbol());
|
1252
1252
|
if (s) {
|
1253
1253
|
Object.assign(e.meta, s.meta || {}, { cache: s.cache });
|
1254
1254
|
const { useTitle: a } = n?.adapter;
|
@@ -1314,7 +1314,7 @@ function Cs(n) {
|
|
1314
1314
|
menuPathPrefix: e = "",
|
1315
1315
|
pageRouteName: t = "page",
|
1316
1316
|
disableMenusFilter: s = !1
|
1317
|
-
} = n || {}, r =
|
1317
|
+
} = n || {}, r = Ue(), o = Ae(), a = St(), i = oe(!1), l = oe(!1), c = r.project, f = (p, d) => {
|
1318
1318
|
i.value = !p?.mask, l.value = d?.pure ?? !!p?.pure;
|
1319
1319
|
};
|
1320
1320
|
rt(() => {
|
@@ -1322,7 +1322,7 @@ function Cs(n) {
|
|
1322
1322
|
if (p === D) {
|
1323
1323
|
const v = r.getPage(d.id);
|
1324
1324
|
f(v, g);
|
1325
|
-
} else if (p ===
|
1325
|
+
} else if (p === U) {
|
1326
1326
|
const v = r.getHomepage();
|
1327
1327
|
f(v, g);
|
1328
1328
|
} else {
|
@@ -1484,7 +1484,7 @@ function as(n, e, t) {
|
|
1484
1484
|
n.use(l);
|
1485
1485
|
}
|
1486
1486
|
}
|
1487
|
-
const
|
1487
|
+
const Ne = Symbol("Provider");
|
1488
1488
|
var cs = /* @__PURE__ */ ((n) => (n.Production = "production", n.Development = "development", n))(cs || {});
|
1489
1489
|
class ls extends ze {
|
1490
1490
|
// DSL缓存
|
@@ -1567,7 +1567,7 @@ class ls extends ze {
|
|
1567
1567
|
if (this.project = s ? await s() : await this.service.init(e), !this.project)
|
1568
1568
|
throw new Error("project is null");
|
1569
1569
|
const { apis: r = [], meta: o = [] } = this.project, a = window;
|
1570
|
-
a && (a.CKEDITOR_VERSION = void 0), this.mode === y.Raw ? await this.loadDependencies(a) : await this.loadAssets(a), this.initMock(a), this.apis = Et(r, o, this.adapter),
|
1570
|
+
a && (a.CKEDITOR_VERSION = void 0), this.mode === y.Raw ? await this.loadDependencies(a) : await this.loadAssets(a), this.initMock(a), this.apis = Et(r, o, this.adapter), Me(a), Rt(r, a), e.platform !== "uniapp" && this.initRouter(), this.triggerReady();
|
1571
1571
|
}
|
1572
1572
|
initMock(e) {
|
1573
1573
|
const t = T(e);
|
@@ -1602,13 +1602,13 @@ class ls extends ze {
|
|
1602
1602
|
else {
|
1603
1603
|
const v = c[p] || [];
|
1604
1604
|
for (const m of v)
|
1605
|
-
G(m) && await mt(m, k.append(m, { v:
|
1605
|
+
G(m) && await mt(m, k.append(m, { v: M })), V(m) && await Se(k.append(m, { v: M }));
|
1606
1606
|
r[p] = e[p];
|
1607
1607
|
}
|
1608
1608
|
}
|
1609
1609
|
if (i === "development") {
|
1610
1610
|
for (const d of f)
|
1611
|
-
await Se(k.append(d, { v:
|
1611
|
+
await Se(k.append(d, { v: M }));
|
1612
1612
|
const p = this.materials || {};
|
1613
1613
|
for (const d of u) {
|
1614
1614
|
const g = e[h[d]], v = Ge[d];
|
@@ -1638,11 +1638,11 @@ class ls extends ze {
|
|
1638
1638
|
component: ee
|
1639
1639
|
}, u = {
|
1640
1640
|
path: c,
|
1641
|
-
name:
|
1641
|
+
name: U,
|
1642
1642
|
component: t?.homepage ? ee : r.startupComponent || es,
|
1643
1643
|
meta: l
|
1644
1644
|
};
|
1645
|
-
if (e.hasRoute(D) && e.removeRoute(D), e.hasRoute(
|
1645
|
+
if (e.hasRoute(D) && e.removeRoute(D), e.hasRoute(U) && e.removeRoute(U), s.enableStaticRoute) {
|
1646
1646
|
const h = t?.pages || [];
|
1647
1647
|
le({
|
1648
1648
|
name: i,
|
@@ -1677,7 +1677,7 @@ class ls extends ze {
|
|
1677
1677
|
adapter: this.adapter,
|
1678
1678
|
library: this.library,
|
1679
1679
|
mode: this.mode
|
1680
|
-
}), this.mode !== y.Design && this.project?.i18n && this.initI18n(e, this.library, this.project.i18n), e.provide(
|
1680
|
+
}), this.mode !== y.Design && this.project?.i18n && this.initI18n(e, this.library, this.project.i18n), e.provide(Ne, this), e.config.globalProperties.$provider = this, this.options.enhance && e.use(this.options.enhance, this), this.mode === y.Design && (e.config.errorHandler = (s, r, o) => {
|
1681
1681
|
const a = r?.$options.name, i = typeof s == "string" ? s : s?.message || s?.msg || "未知错误", l = `[ ${a} ] ${i} ${o}`;
|
1682
1682
|
console.error(
|
1683
1683
|
"[VTJ Error]:",
|
@@ -1831,8 +1831,8 @@ function As(n) {
|
|
1831
1831
|
onReady: (s) => e.ready(s)
|
1832
1832
|
};
|
1833
1833
|
}
|
1834
|
-
function
|
1835
|
-
const e = Pe(
|
1834
|
+
function Ue(n = {}) {
|
1835
|
+
const e = Pe(Ne, null);
|
1836
1836
|
if (!e)
|
1837
1837
|
throw new Error("Can not find provider");
|
1838
1838
|
if (e.nodeEnv === "development") {
|
@@ -2112,11 +2112,11 @@ class ps extends de {
|
|
2112
2112
|
}), Promise.resolve(!0);
|
2113
2113
|
}
|
2114
2114
|
}
|
2115
|
-
let
|
2116
|
-
function
|
2117
|
-
return
|
2115
|
+
let N = null;
|
2116
|
+
function Os() {
|
2117
|
+
return N || (N = new ps(), N);
|
2118
2118
|
}
|
2119
|
-
class
|
2119
|
+
class Ms extends de {
|
2120
2120
|
getFileCaches = {};
|
2121
2121
|
async getExtension() {
|
2122
2122
|
return await this.api("getExtension", {}).catch(() => {
|
@@ -2175,7 +2175,7 @@ class Os extends de {
|
|
2175
2175
|
}
|
2176
2176
|
export {
|
2177
2177
|
_s as ACCESS,
|
2178
|
-
|
2178
|
+
Oe as ACCESS_KEY,
|
2179
2179
|
pe as Access,
|
2180
2180
|
ct as BUILD_IN_TAGS,
|
2181
2181
|
ot as BUILT_IN_DIRECTIVES,
|
@@ -2184,18 +2184,18 @@ export {
|
|
2184
2184
|
Ct as Context,
|
2185
2185
|
y as ContextMode,
|
2186
2186
|
it as DATA_TYPES,
|
2187
|
-
|
2187
|
+
U as HOMEPAGE_ROUTE_NAME,
|
2188
2188
|
at as HTML_TAGS,
|
2189
2189
|
Es as JSCodeToString,
|
2190
2190
|
vs as LIFE_CYCLES_LIST,
|
2191
|
-
|
2191
|
+
Ms as LocalService,
|
2192
2192
|
ps as MemoryService,
|
2193
2193
|
cs as NodeEnv,
|
2194
2194
|
D as PAGE_ROUTE_NAME,
|
2195
2195
|
ls as Provider,
|
2196
2196
|
ys as REMOTE,
|
2197
2197
|
Fs as StorageService,
|
2198
|
-
|
2198
|
+
M as VTJ_RENDERER_VERSION,
|
2199
2199
|
$s as adoptStylesToInline,
|
2200
2200
|
fe as adoptedStyleSheets,
|
2201
2201
|
Ps as clearLoaderCache,
|
@@ -2206,7 +2206,7 @@ export {
|
|
2206
2206
|
Ss as createAssetsCss,
|
2207
2207
|
Dt as createDataSources,
|
2208
2208
|
ae as createLoader,
|
2209
|
-
|
2209
|
+
Os as createMemoryService,
|
2210
2210
|
K as createMenus,
|
2211
2211
|
jt as createMetaApi,
|
2212
2212
|
bt as createMock,
|
@@ -2237,17 +2237,17 @@ export {
|
|
2237
2237
|
Be as menusFilter,
|
2238
2238
|
Pt as mockApi,
|
2239
2239
|
Rt as mockApis,
|
2240
|
-
|
2241
|
-
|
2240
|
+
Me as mockCleanup,
|
2241
|
+
O as nodeRender,
|
2242
2242
|
ft as parseDeps,
|
2243
2243
|
H as parseExpression,
|
2244
2244
|
E as parseFunction,
|
2245
2245
|
dt as parseUrls,
|
2246
|
-
|
2246
|
+
Ne as providerKey,
|
2247
2247
|
ut as removeProdFlag,
|
2248
2248
|
js as setupPageSetting,
|
2249
2249
|
Ie as toString,
|
2250
2250
|
St as useAccess,
|
2251
2251
|
Cs as useMask,
|
2252
|
-
|
2252
|
+
Ue as useProvider
|
2253
2253
|
};
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vtj/renderer",
|
3
3
|
"private": false,
|
4
|
-
"version": "0.13.
|
4
|
+
"version": "0.13.21",
|
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.13.
|
25
|
-
"@vtj/utils": "~0.13.
|
24
|
+
"@vtj/core": "~0.13.21",
|
25
|
+
"@vtj/utils": "~0.13.21"
|
26
26
|
},
|
27
27
|
"devDependencies": {
|
28
28
|
"vue": "~3.5.5",
|
29
29
|
"vue-router": "~4.5.0",
|
30
|
-
"@vtj/cli": "~0.12.
|
31
|
-
"@vtj/icons": "~0.13.
|
32
|
-
"@vtj/ui": "~0.13.
|
30
|
+
"@vtj/cli": "~0.12.12",
|
31
|
+
"@vtj/icons": "~0.13.21",
|
32
|
+
"@vtj/ui": "~0.13.21"
|
33
33
|
},
|
34
34
|
"exports": {
|
35
35
|
".": {
|
package/types/version.d.ts
CHANGED
@@ -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.13.
|
5
|
+
* @version 0.13.20
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
7
|
*/
|
8
|
-
export declare const version = "0.13.
|
8
|
+
export declare const version = "0.13.20";
|