@vtj/renderer 0.13.25 → 0.13.27
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 +131 -128
- package/package.json +6 -6
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const M=require("@vtj/core"),f=require("@vtj/utils"),$=require("vue"),ve=require("vue-router");function Ze(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const G=Ze($);/**!
|
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.27
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const O="0.13.
|
7
|
+
*/const O="0.13.27";var S=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(S||{});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},F="VtjPage",L="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 x(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 je(r){return/\.json$/.test(r)}function rt(r){return r.map(e=>`<script src="${f.url.append(e,{v:O})}"><\/script>`).join("")}function nt(r=[]){return r.map(e=>`<link rel="stylesheet" href="${f.url.append(e,{v:O})}" />`).join("")}function $e(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function be(r,e,t=!1){const s=r.filter(d=>!!d.enabled),n=[],o=[],a=[],i=[],l={},c={},u=[],p={};return s.forEach(({urls:d,assetsUrl:g,library:h,assetsLibrary:m,localeLibrary:y})=>{d?.forEach(v=>{N(v)&&n.push($e(v,t)),B(v)&&o.push(v)}),h&&(i.push(h),l[h]=x(d||[],e),y&&(c[h]=y)),g&&a.push(g),m&&u.push(m),h&&m&&(p[m]=h)}),{scripts:x(n,e),css:x(o,e),materials:x(a,e),libraryExports:i,materialExports:f.dedupArray(u),materialMapLibrary:p,libraryMap:l,libraryLocaleMap:c}}function Re(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 u=[];let p=0;for(;p<c.length;){if(/\s/.test(c[p])){p++;continue}if(c.substring(p,p+2)==="/*"){const v=c.indexOf("*/",p+2);if(v!==-1){p=v+2;continue}}if(c[p]==="@"){const v=p;for(;p<c.length&&c[p]!=="{"&&c[p]!==";";)p++;const w=c.substring(v,p).trim(),_=w.includes("@keyframes");if(c[p]===";")u.push({type:"simple-at-rule",content:c.substring(v,p+1)}),p++;else if(c[p]==="{"){const E=p+1;let A=1;for(p++;p<c.length&&A>0;)c[p]==="{"?A++:c[p]==="}"&&A--,p++;const W=c.substring(v,p),I=c.substring(E,p-1);u.push({type:_?"keyframes":"at-rule",rule:w,content:W,inner:I})}continue}const d=p;for(;p<c.length&&c[p]!=="{";)p++;if(p>=c.length)break;const g=c.substring(d,p).trim();if(!g){p++;continue}const h=p+1;let m=1;for(p++;p<c.length&&m>0;)c[p]==="{"?m++:c[p]==="}"&&m--,p++;const y=c.substring(h,p-1);u.push({type:"rule",selector:g,content:y.trim()})}return u},s=c=>{const u=c.trim();return/^(from|to|\d+(\.\d+)?%)$/.test(u)},n=c=>c.replace(/::v-deep\(/g,":deep(").replace(/::v-deep\s+/g,":deep(").replace(/\/deep\//g," ").replace(/>>>/g," ").replace(/(.*?):deep\(([^)]+)\)/g,(u,p,d)=>{const g=p.trim(),h=d.trim();return g?`${g}[${e}] ${h}`:h}),o=c=>{const u=c.trim();if(!u||u.includes(`[${e}]`)||/^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(u)||s(u))return u;const p=u.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);if(p){const[,d,g=""]=p,h=d.trim();return h?`${h}[${e}]${g}`:u}return`${u}[${e}]`},a=c=>n(c).split(",").map(p=>o(p)).filter(p=>p.trim()).join(", "),i=c=>c.map(u=>{switch(u.type){case"simple-at-rule":return u.content;case"keyframes":return u.content;case"at-rule":try{const d=t(u.inner),g=i(d);return`${u.rule} { ${g} }`}catch{return u.content}case"rule":if(!u.selector||!u.content)return"";const p=a(u.selector);return p.trim()?`${p} { ${u.content} }`:"";default:return""}}).filter(u=>u.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
|
`),u=t(c),p=i(u);return l(p)}catch(c){return console.error("CSS scoping failed:",c),console.error("Input CSS:",r),r.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(@keyframes\s+[^{]+\s*{[^{}]*(?:{[^}]*}[^{}]*)*})/g,u=>u).replace(/([^{}@]+)(?=\s*{)/g,u=>{const p=u.trim();return!p||p.startsWith("@")||p.includes(`[${e}]`)||s(p)?u:`${p}[${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,u=Array.from(c).filter(p=>p.id!==e);l.adoptedStyleSheets=[...u,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
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=u=>{i(u)},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 D(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 H(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 P(r,e,t=!1,s=!1,n=!1){const o=H(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 R(r){return r&&r.type==="JSExpression"}function $(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function ke(r){return R(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=S.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!==S.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 Oe(){return j.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:u=>u.data?.code===0||!!u.data?.success,failMessage:!0,showError:u=>{e&&e(u||"未知错误")},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?H(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=D(e);t&&(ce(e),r.forEach(s=>Ue(t,s)))}function Le(r,e=window){const t=$(r.mockTemplate)&&r.mockTemplate.value?P(r.mockTemplate,{},!0):void 0,s=D(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 Ue(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=H(s,{},!0);r.mock(o,l=>{const c=f.url.parse(l.url)||{},u=l.body instanceof FormData?f.formDataToJson(l.body):l.body,p=f.isUrl(l.url)?new URL(l.url).pathname:l.url.split("?")[0],d=a(p)?.params;Object.assign(l,{data:u,params:d,query:c});try{return r.mock(i(l))}catch(m){return console.warn("[mockApi]",o,l,m),null}})}catch(n){console.warn("mockApi",n)}}function ce(r=window){const e=D(r);e&&(e._mocked={})}class Be{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};props={};$props={};$refs={};$el=null;$emit=null;$nextTick=null;$parent=null;$root=null;$attrs=null;$slots=null;$watch=null;$options=null;$forceUpdate=null;$components={};$libs={};$apis={};__transform={};constructor(e){const{mode:t,dsl:s,attrs:n}=e;this.__mode=t,s&&(this.__id=s.id||null,this.__transform=s.transform||{}),n&&Object.assign(this,n)}setup(e,t=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===S.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return P({type:s,value:n},this)}else return P(e,this)}__parseExpression(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return H({type:s,value:n},this)}else return H(e,this)}__ref(e=null,t){if(this.__mode!==S.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,S.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=S.Runtime,components:s={},libs:n={},apis:o={},loader:a}=r,i=e.computed(()=>r.dsl),l={$components:s,$libs:n,$apis:o},c=new Be({mode:t,dsl:i.value,attrs:l}),u=e.defineComponent({name:i.value.name,__scopeId:i.value.id?`data-v-${i.value.id}`:void 0,props:{...ft(i.value.props??[],c)},setup(p){c.$props=p,c.props=p,i.value.id&&z(r.window||window,i.value.id,i.value.css||"",!0),c.state=dt(e,i.value.state??{},c);const d=ht(e,i.value.computed??{},c),m=mt(i.value.methods??{},c),h=gt(e,i.value.inject,c);for(const[v,w]of Object.entries(h||{}))h[v]=e.inject(v,w);const g=Ne(i.value.dataSources||{},c),y={...h,...d,...m,...g};return c.setup(y,e),yt(e,i.value.watch??[],c),{vtj:c}},emits:pt(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const p=i.value.nodes||[];return p.length===1?k(p[0],c,e,a,p):p.map(d=>k(d,c,e,a,p))},...vt(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(u),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:R(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 R(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=R(a)?t.__parseExpression(a)||o:a??o,l=R(n.default)?t.__parseExpression(n.default):n.default??null;return s[o]=r.inject(i,l),s},{})}function Ne(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=Le(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 yt(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function vt(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=[],T={};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=T[o.id]||await qe.add(o.id,()=>e(o.id));return i&&(i.name=n,T[o.id]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:S.Runtime,loader:K(r)}).renderer:null});if(o.type==="UrlSchema"&&o.url)return a.defineAsyncComponent(async()=>{const i=T[o.url]||await t(o.url);return i&&(i.name=n,T[o.url]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:S.Runtime,loader:K(r)}).renderer:null});if(o.type==="Plugin"){let i=o.library?T[o.library]:null;return i||(o.library&&X.push(o.library),i=T[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(){T={},qe.clearAllCache()}function k(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:u,vElse:p,vFor:d,vShow:m,vModels:h,vBind:g,vHtml:y,others:v}=Ke(l);if(!o&&(u||p))return null;if(c&&!wt(c,e))return bt(r,e,t,s,n);const w=(_,b=0)=>{const M=_.$components,W=(()=>{if(r.name==="component")return Et(_,r.props?.is);if(r.name==="slot")return r.name;const C=s(r.name,r.from,t);if(f.isString(C))return Me(C)||Te(C)?C:M[C]??a?.app?.component(C)??C;if(f.isObject(C)&&r.id){const ge=`Loader${r.id}_${b}`,ye=M[ge];return ye||(M[ge]=C)}return C})(),A=jt(i,r.props??{},_),We=$t(t,r.events??{},_);if(r.name==="slot")return Rt(t,r,A,_,s);g&&Object.assign(A,_.__parseExpression(g.value)),m&&(A.style=Object.assign(A.style??{},Pt(m,_))),y&&Object.assign(A,At(y,_)),h.forEach(C=>{Object.assign(A,It(t,C,_))});const Ye=Mt(t,r.children??[],_,s,r),he=_?.__id?`data-v-${_.__id}`:void 0,Xe=he?{[he]:""}:{};let Y=t.createVNode(W,{key:`${i}_${b}`,...Xe,...A,...We},Ye);const me=a?St(a,v,_):[];return me.length&&(Y=t.withDirectives(Y,me)),Y};return d?Ot(d,w,e):w(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(u=>f.camelCase(u.name)==="vIf"),t=r.find(u=>f.camelCase(u.name)==="vElseIf"),s=r.find(u=>f.camelCase(u.name)==="vElse"),n=r.find(u=>f.camelCase(u.name)==="vFor"),o=r.find(u=>f.camelCase(u.name)==="vShow"),a=r.find(u=>f.camelCase(u.name)==="vBind"),i=r.find(u=>f.camelCase(u.name)==="vHtml"),l=r.filter(u=>f.camelCase(u.name)==="vModel"),c=r.filter(u=>!_e.includes(f.camelCase(u.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?R(e)?r.__parseExpression(e):e:"div"}function jt(r,e,t){const s=se(e,t);return s.ref=t.__ref(r,s.ref),s}function se(r,e){return R(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 $t(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(d=>s.includes(d)),u="on"+f.upperFirst(a)+(c&&n[c]||""),p=t.__parseFunction(i.handler);return p&&(o[u]=r.withModifiers(p,l)),o},{})}function bt(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 k(n[a],e,t,s,n,!0);continue}if(c)return k(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 Rt(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):R(o)?r.createTextVNode(ne(s.__parseExpression(o))):Array.isArray(o)?o.map(l=>k(l,s,r,n,o)):null:null}function Ct(r,e){const{props:t}=r,s=t?.name||"default";return{name:R(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 P(r,e,t=!1,s=!1,n=!1){const o=H(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 R(r){return r&&r.type==="JSExpression"}function b(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function ke(r){return R(r)||b(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=S.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!==S.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 Oe(){return $.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:u=>u.data?.code===0||!!u.data?.success,failMessage:!0,showError:u=>{e&&e(u||"未知错误")},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?H(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=D(e);t&&(ce(e),r.forEach(s=>Ue(t,s)))}function Le(r,e=window){const t=b(r.mockTemplate)&&r.mockTemplate.value?P(r.mockTemplate,{},!0):void 0,s=D(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 Ue(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=H(s,{},!0);r.mock(o,l=>{const c=f.url.parse(l.url)||{},u=l.body instanceof FormData?f.formDataToJson(l.body):l.body,p=f.isUrl(l.url)?new URL(l.url).pathname:l.url.split("?")[0],d=a(p)?.params;Object.assign(l,{data:u,params:d,query:c});try{return r.mock(i(l))}catch(g){return console.warn("[mockApi]",o,l,g),null}})}catch(n){console.warn("mockApi",n)}}function ce(r=window){const e=D(r);e&&(e._mocked={})}class Be{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};props={};$props={};$refs={};$el=null;$emit=null;$nextTick=null;$parent=null;$root=null;$attrs=null;$slots=null;$watch=null;$options=null;$forceUpdate=null;$components={};$libs={};$apis={};__transform={};constructor(e){const{mode:t,dsl:s,attrs:n}=e;this.__mode=t,s&&(this.__id=s.id||null,this.__transform=s.transform||{}),n&&Object.assign(this,n)}setup(e,t=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===S.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return P({type:s,value:n},this)}else return P(e,this)}__parseExpression(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return H({type:s,value:n},this)}else return H(e,this)}__ref(e=null,t){if(this.__mode!==S.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,S.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=S.Runtime,components:s={},libs:n={},apis:o={},loader:a}=r,i=e.computed(()=>r.dsl),l={$components:s,$libs:n,$apis:o},c=new Be({mode:t,dsl:i.value,attrs:l}),u=e.defineComponent({name:i.value.name,__scopeId:i.value.id?`data-v-${i.value.id}`:void 0,props:{...ft(i.value.props??[],c)},setup(p){c.$props=p,c.props=p,i.value.id&&z(r.window||window,i.value.id,i.value.css||"",!0),c.state=dt(e,i.value.state??{},c);const d=ht(e,i.value.computed??{},c),g=mt(i.value.methods??{},c),h=gt(e,i.value.inject,c);for(const[v,w]of Object.entries(h||{}))h[v]=e.inject(v,w);const m=Ne(i.value.dataSources||{},c),y={...h,...d,...g,...m};return c.setup(y,e),yt(e,i.value.watch??[],c),{vtj:c}},emits:pt(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const p=i.value.nodes||[];return p.length===1?k(p[0],c,e,a,p):p.map(d=>k(d,c,e,a,p))},...vt(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(u),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:R(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 R(o)?o=t.__parseExpression(o):b(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=R(a)?t.__parseExpression(a)||o:a??o,l=R(n.default)?t.__parseExpression(n.default):n.default??null;return s[o]=r.inject(i,l),s},{})}function Ne(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=Le(n);else if(n.ref){const o=e.$apis[n.ref],a=b(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 yt(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function vt(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=[],T={};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=T[o.id]||await qe.add(o.id,()=>e(o.id));return i&&(i.name=n,T[o.id]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:S.Runtime,loader:K(r)}).renderer:null});if(o.type==="UrlSchema"&&o.url)return a.defineAsyncComponent(async()=>{const i=T[o.url]||await t(o.url);return i&&(i.name=n,T[o.url]=i),i?J({...s,Vue:a,dsl:f.cloneDeep(i),mode:S.Runtime,loader:K(r)}).renderer:null});if(o.type==="Plugin"){let i=o.library?T[o.library]:null;return i||(o.library&&X.push(o.library),i=T[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(){T={},qe.clearAllCache()}function k(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:u,vElse:p,vFor:d,vShow:g,vModels:h,vBind:m,vHtml:y,others:v}=Ke(l);if(!o&&(u||p))return null;if(c&&!wt(c,e))return bt(r,e,t,s,n);const w=(_,E=0)=>{const A=_.$components,W=(()=>{if(r.name==="component")return Et(_,r.props?.is);if(r.name==="slot")return r.name;const C=s(r.name,r.from,t);if(f.isString(C))return Me(C)||Te(C)?C:A[C]??a?.app?.component(C)??C;if(f.isObject(C)&&r.id){const ge=`Loader${r.id}_${E}`,ye=A[ge];return ye||(A[ge]=C)}return C})(),I=jt(i,r.props??{},_),We=$t(t,r.events??{},_);if(r.name==="slot")return Rt(t,r,I,_,s);m&&Object.assign(I,_.__parseExpression(m.value)),g&&(I.style=Object.assign(I.style??{},Pt(g,_))),y&&Object.assign(I,At(y,_)),h.forEach(C=>{Object.assign(I,It(t,C,_))});const Ye=Mt(t,r.children??[],_,s,r),he=_?.__id?`data-v-${_.__id}`:void 0,Xe=he?{[he]:""}:{};let Y=t.createVNode(W,{key:`${i}_${E}`,...Xe,...I,...We},Ye);const me=a?St(a,v,_):[];return me.length&&(Y=t.withDirectives(Y,me)),Y};return d?Ot(d,w,e):w(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(u=>f.camelCase(u.name)==="vIf"),t=r.find(u=>f.camelCase(u.name)==="vElseIf"),s=r.find(u=>f.camelCase(u.name)==="vElse"),n=r.find(u=>f.camelCase(u.name)==="vFor"),o=r.find(u=>f.camelCase(u.name)==="vShow"),a=r.find(u=>f.camelCase(u.name)==="vBind"),i=r.find(u=>f.camelCase(u.name)==="vHtml"),l=r.filter(u=>f.camelCase(u.name)==="vModel"),c=r.filter(u=>!_e.includes(f.camelCase(u.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?R(e)?r.__parseExpression(e):e:"div"}function jt(r,e,t){const s=se(e,t);return s.ref=t.__ref(r,s.ref),s}function se(r,e){return R(r)?e.__parseExpression(r):b(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 $t(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(d=>s.includes(d)),u="on"+f.upperFirst(a)+(c&&n[c]||""),p=t.__parseFunction(i.handler);return p&&(o[u]=r.withModifiers(p,l)),o},{})}function bt(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 k(n[a],e,t,s,n,!0);continue}if(c)return k(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 Rt(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):R(o)?r.createTextVNode(ne(s.__parseExpression(o))):Array.isArray(o)?o.map(l=>k(l,s,r,n,o)):null:null}function Ct(r,e){const{props:t}=r,s=t?.name||"default";return{name:R(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(R(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=R(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(R(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:u,scope:p}])=>(i[l]=d=>{const m=u.length?f.pick(d??{},u):a(d,p);return c.map(h=>k(h,t.__clone(m),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=j.defineComponent({name:"VtjPageContainer",async setup(){const r=de(),e=ve.useRoute(),t=e.meta.__vtj__||e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,o=j.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?j.h(r,{...e,key:t}):j.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Ft=j.defineComponent({name:"VtjStartupContainer",render(){return j.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:u}=n;if(u){const p=U(r,e,l||[]);s.push(...p)}else{const p={id:o,title:a,icon:i,hidden:c,url:`${r}/${e}/${o}`,children:l&&l.length?U(r,e,l):void 0};s.push(p)}}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=ve.useRoute(),a=Oe(),i=j.ref(!1),l=j.ref(!1),c=n.project,u=(m,h)=>{i.value=!m?.mask,l.value=h?.pure??!!m?.pure};j.watchEffect(()=>{const{name:m,params:h,meta:g}=o;if(m===F){const y=n.getPage(h.id);u(y,g)}else if(m===L){const y=n.getHomepage();u(y,g)}else{const y=g.__vtj__;if(y){const v=n.getPage(y);u(v,g)}else i.value=!g.mask,l.value=!!g.pure}});const p=U(e,t,c?.pages),d=c?.config;return{disabled:i,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||c?.description||c?.name||"VTJ App",menus:s?p:pe(p,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:u,title:p,dir:d,layout:m,children:h,meta:g}=c;if(d){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]});l.push(...y)}else if(m){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]}),v={name:`layout_${u}`,path:t,component:()=>o(u),meta:{title:p,...a,...g,__vtj__:u},children:y};l.push(v),l.push(ee(c,r))}else if(l.push(ee(c,r)),i===u){const y=ee(c,r);y.path="",y.name=`home_${u}`,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:u}=i;a.config.globalProperties.$libs=i,z(o,"global-css",t||""),u&&s&&xt(s,a,u),Ut(a,l,r),!l.access&&r.access&&Lt(r.access,a,c,l),Bt(a,r),n&&Nt(n,a,i)}function xt(r,e,t){const s=t.createPinia();if(e.use(s),$(r)&&r.value){const n=P(r,{},!1,!1,!0),o=t.defineStore("$store",n(e)||{});e.config.globalProperties.$store=o()}}function Lt(r,e,t,s){if($(r)&&r.value){const n=P(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 Ut(r,e,t){if(!e.request)return;const{axios:s,request:n,response:o}=t;if(s&&$(s)&&s.value){const a=P(s,{},!1,!1,!0);e.request.setConfig(a(r))}if(n&&$(n)&&n.value){const a=P(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=P(o,{},!1,!1,!0),i=e.request;i.__unRes&&i.__unRes(),i.__unRes=e.request.useResponse(l=>a(l,r))}}function Bt(r,e){const{beforeEach:t,afterEach:s}=e,n=r.config.globalProperties.$router;if(t&&$(t)&&t.value){const o=P(t,{},!1,!1,!0);n&&n.beforeEach((a,i,l)=>o(a,i,l,r))}if(s&&$(s)&&s.value){const o=P(s,{},!1,!1,!0);n&&n.afterEach((a,i,l)=>o(a,i,l,r))}}function Nt(r,e,t={}){$(r)&&r.value&&P(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 u=Object.keys(c).filter(p=>p!=="key");for(const p of u)i[p]||(i[p]={}),i[p][c.key]=c[p]}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 I.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=S.Raw,dependencies:n,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:u=null,materialPath:p="./",nodeEnv:d="development"}=e;this.mode=s,this.modules=c,this.service=t,this.router=u,this.materialPath=p,this.nodeEnv=d,n&&(this.dependencies=n),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i);const{access:m,request:h}=this.adapter;m&&m.connect({mode:s,router:u,request:h}),a&&s!==S.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:f.request,jsonp:f.jsonp};apis={};dependencies={};materials={};library={};libraryLocales={};libraryLocaleMap={};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 D()?.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===S.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=D(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,libraryLocales:l}=this,{libraryExports:c,libraryMap:u,materials:p,materialExports:d,materialMapLibrary:m,libraryLocaleMap:h}=be(t,a,i==="development");Object.assign(this.libraryLocaleMap,h);for(const g of c){const y=s[g],v=e[g];if(v)n[g]=v;else if(y)e[g]=n[g]=await y();else{const _=u[g]||[];for(const b of _)B(b)&&await Ae(b,f.url.append(b,{v:O})),N(b)&&await f.loadScript(f.url.append(b,{v:O}));n[g]=e[g]}const w=h[g];w&&(l[w]=e[w])}if(i==="development"){for(const y of p)await f.loadScript(f.url.append(y,{v:O}));const g=this.materials||{};for(const y of d){const v=e[m[y]],w=I.BUILT_IN_COMPONENTS[y];if(w)v&&w.forEach(_=>{o[_]=v[_]});else{const _=g[y]?(await g[y]()).default:e[y];_&&v&&(_.components||[]).forEach(b=>{o[b.name]=Re(b,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?"":"/",u={path:`${c}${i}/:id`,name:F,component:Z},p={path:c,name:L,component:t?.homepage?Z:n.startupComponent||Ft,meta:l};if(e.hasRoute(F)&&e.removeRoute(F),e.hasRoute(L)&&e.removeRoute(L),s.enableStaticRoute){const d=t?.pages||[];re({name:i,prefix:c,pages:d,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,p):e.addRoute(p))}else a?(e.addRoute(a,u),e.addRoute(a,p)):(e.addRoute(u),e.addRoute(p))}install(e){const{libraryLocaleMap:t,libraryLocales:s}=this,n=e.config.globalProperties.installed||{};for(const[o,a]of Object.entries(this.library))if(!n[o]&&Ie(a)){const i=s[t[o]];e.use(a,{locale:i}),n[o]=!0}this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),this.project?.platform!=="uniapp"&&this.mode!==S.Design&&this.initGlobals(this.project?.globals||{},{app:e,window,adapter:this.adapter,library:this.library,mode:this.mode}),this.mode!==S.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===S.Design&&(e.config.errorHandler=(o,a,i)=>{const l=a?.$options.name,c=typeof o=="string"?o:o?.message||o?.msg||"未知错误",u=`[ ${l} ] ${c} ${i}`;console.error("[VTJ Error]:",{err:o,instance:a,info:i},o?.stack),this.adapter.notify&&this.adapter.notify(u,"组件渲染错误","error")}),e.config.globalProperties.installed=n}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===S.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 j.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return j.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=j.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=>je(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 E=new f.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Qt extends Q{init(e){const t=new I.ProjectModel(e),s=E.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return E.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new I.ProjectModel(e);return E.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return E.save(`materials_${e.id}`,f.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return E.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=E.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return E.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return E.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=E.get(`history_${e}`);if(t){const n=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,n),E.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=E.get(`history_${e}`),s=new I.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=E.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return E.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{E.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class Qe extends Q{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new I.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 I.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 I.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=Be;exports.ContextMode=S;exports.DATA_TYPES=Se;exports.HOMEPAGE_ROUTE_NAME=L;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=O;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=Ne;exports.createLoader=K;exports.createMemoryService=Wt;exports.createMenus=U;exports.createMetaApi=De;exports.createMock=Le;exports.createProvider=Jt;exports.createRenderer=J;exports.createSchemaApi=Fe;exports.createSchemaApis=He;exports.createServiceRequest=Vt;exports.defaultLoader=Je;exports.fillBasePath=x;exports.getMock=D;exports.getModifiers=ue;exports.getPlugin=le;exports.getRawComponent=Re;exports.isBuiltInTag=Me;exports.isCSSUrl=B;exports.isJSCode=ke;exports.isJSExpression=R;exports.isJSFunction=$;exports.isJSON=je;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=Ue;exports.mockApis=xe;exports.mockCleanup=ce;exports.nodeRender=k;exports.parseDeps=be;exports.parseExpression=H;exports.parseFunction=P;exports.parseUrls=Ce;exports.providerKey=fe;exports.removeProdFlag=$e;exports.setupPageSetting=it;exports.toString=ne;exports.useAccess=Oe;exports.useMask=Dt;exports.useProvider=de;
|
14
|
+
}`:"(v) => {}"},n=t.__parseFunction(s),o=ue(R(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=R(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(R(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:u,scope:p}])=>(i[l]=d=>{const g=u.length?f.pick(d??{},u):a(d,p);return c.map(h=>k(h,t.__clone(g),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=$.defineComponent({name:"VtjPageContainer",async setup(){const r=de(),e=ve.useRoute(),t=e.meta.__vtj__||e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,o=$.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?$.h(r,{...e,key:t}):$.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Ft=$.defineComponent({name:"VtjStartupContainer",render(){return $.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:u}=n;if(u){const p=U(r,e,l||[]);s.push(...p)}else{const p={id:o,title:a,icon:i,hidden:c,url:`${r}/${e}/${o}`,children:l&&l.length?U(r,e,l):void 0};s.push(p)}}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=ve.useRoute(),a=Oe(),i=$.ref(!1),l=$.ref(!1),c=n.project,u=(g,h)=>{i.value=!g?.mask,l.value=h?.pure??!!g?.pure};$.watchEffect(()=>{const{name:g,params:h,meta:m}=o;if(g===F){const y=n.getPage(h.id);u(y,m)}else if(g===L){const y=n.getHomepage();u(y,m)}else{const y=m.__vtj__;if(y){const v=n.getPage(y);u(v,m)}else i.value=!m.mask,l.value=!!m.pure}});const p=U(e,t,c?.pages),d=c?.config;return{disabled:i,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||c?.description||c?.name||"VTJ App",menus:s?p:pe(p,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:u,title:p,dir:d,layout:g,children:h,meta:m}=c;if(d){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]});l.push(...y)}else if(g){const y=re({name:e,prefix:t,component:n,routeMeta:a,homepage:i,loader:o,pages:h||[]}),v={name:`layout_${u}`,path:t,component:()=>o(u),meta:{title:p,...a,...m,__vtj__:u},children:y};l.push(v),l.push(ee(c,r))}else if(l.push(ee(c,r)),i===u){const y=ee(c,r);y.path="",y.name=`home_${u}`,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:u}=i;a.config.globalProperties.$libs=i,z(o,"global-css",t||""),u&&s&&xt(s,a,u),Ut(a,l,r),!l.access&&r.access&&Lt(r.access,a,c,l),Bt(a,r),n&&Nt(n,a,i)}function xt(r,e,t){const s=t.createPinia();if(e.use(s),b(r)&&r.value){const n=P(r,{},!1,!1,!0),o=t.defineStore("$store",n(e)||{});e.config.globalProperties.$store=o()}}function Lt(r,e,t,s){if(b(r)&&r.value){const n=P(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 Ut(r,e,t){if(!e.request)return;const{axios:s,request:n,response:o}=t;if(s&&b(s)&&s.value){const a=P(s,{},!1,!1,!0);e.request.setConfig(a(r))}if(n&&b(n)&&n.value){const a=P(n,{},!1,!1,!0),i=e.request;i.__unReq&&i.__unReq(),i.__unReq=e.request.useRequest(l=>a(l,r))}if(o&&b(o)&&o.value){const a=P(o,{},!1,!1,!0),i=e.request;i.__unRes&&i.__unRes(),i.__unRes=e.request.useResponse(l=>a(l,r))}}function Bt(r,e){const{beforeEach:t,afterEach:s}=e,n=r.config.globalProperties.$router;if(t&&b(t)&&t.value){const o=P(t,{},!1,!1,!0);n&&n.beforeEach((a,i,l)=>o(a,i,l,r))}if(s&&b(s)&&s.value){const o=P(s,{},!1,!1,!0);n&&n.afterEach((a,i,l)=>o(a,i,l,r))}}function Nt(r,e,t={}){b(r)&&r.value&&P(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 u=Object.keys(c).filter(p=>p!=="key");for(const p of u)i[p]||(i[p]={}),i[p][c.key]=c[p]}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 M.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=S.Raw,dependencies:n,materials:o,project:a={},adapter:i={},globals:l={},modules:c={},router:u=null,materialPath:p="./",nodeEnv:d="development"}=e;this.mode=s,this.modules=c,this.service=t,this.router=u,this.materialPath=p,this.nodeEnv=d,n&&(this.dependencies=n),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i);const{access:g,request:h}=this.adapter;g&&g.connect({mode:s,router:u,request:h}),a&&s!==S.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:f.request,jsonp:f.jsonp};apis={};dependencies={};materials={};library={};libraryLocales={};libraryLocaleMap={};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 D()?.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===S.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=D(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,libraryLocales:l}=this,{libraryExports:c,libraryMap:u,materials:p,materialExports:d,materialMapLibrary:g,libraryLocaleMap:h}=be(t,a,i==="development");Object.assign(this.libraryLocaleMap,h);for(const m of c){const y=s[m],v=e[m];if(v)n[m]=v;else if(y)e[m]=n[m]=await y();else{const _=u[m]||[];for(const E of _)B(E)&&await Ae(E,f.url.append(E,{v:O})),N(E)&&await f.loadScript(f.url.append(E,{v:O}));n[m]=e[m]?.default||e[m]}const w=h[m];if(w){const _=s[w];l[w]=_?await _():e[w]}}if(i==="development"){for(const y of p)await f.loadScript(f.url.append(y,{v:O}));const m=this.materials||{};for(const y of d){const v=e[g[y]],w=v?.default||v,_=M.BUILT_IN_COMPONENTS[y];if(_)w&&_.forEach(E=>{o[E]=w[E]});else{const E=m[y]?(await m[y]()).default:e[y];E&&w&&(E.components||[]).forEach(A=>{o[A.name]=Re(A,w)})}}}}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?"":"/",u={path:`${c}${i}/:id`,name:F,component:Z},p={path:c,name:L,component:t?.homepage?Z:n.startupComponent||Ft,meta:l};if(e.hasRoute(F)&&e.removeRoute(F),e.hasRoute(L)&&e.removeRoute(L),s.enableStaticRoute){const d=t?.pages||[];re({name:i,prefix:c,pages:d,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,p):e.addRoute(p))}else a?(e.addRoute(a,u),e.addRoute(a,p)):(e.addRoute(u),e.addRoute(p))}install(e){const{libraryLocaleMap:t,libraryLocales:s}=this,n=e.config.globalProperties.installed||{};for(const[o,a]of Object.entries(this.library))if(!n[o]&&Ie(a)){const i=s[t[o]];e.use(a,{locale:i}),n[o]=!0}this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),this.project?.platform!=="uniapp"&&this.mode!==S.Design&&this.initGlobals(this.project?.globals||{},{app:e,window,adapter:this.adapter,library:this.library,mode:this.mode}),this.mode!==S.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===S.Design&&(e.config.errorHandler=(o,a,i)=>{const l=a?.$options.name,c=typeof o=="string"?o:o?.message||o?.msg||"未知错误",u=`[ ${l} ] ${c} ${i}`;console.error("[VTJ Error]:",{err:o,instance:a,info:i},o?.stack),this.adapter.notify&&this.adapter.notify(u,"组件渲染错误","error")}),e.config.globalProperties.installed=n}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===S.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 $.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return $.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=$.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=>je(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 j=new f.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Qt extends Q{init(e){const t=new M.ProjectModel(e),s=j.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return j.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new M.ProjectModel(e);return j.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return j.save(`materials_${e.id}`,f.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return j.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=j.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return j.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return j.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=j.get(`history_${e}`);if(t){const n=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,n),j.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=j.get(`history_${e}`),s=new M.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=j.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return j.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{j.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class Qe extends Q{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new M.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 M.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 M.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=Be;exports.ContextMode=S;exports.DATA_TYPES=Se;exports.HOMEPAGE_ROUTE_NAME=L;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=O;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=Ne;exports.createLoader=K;exports.createMemoryService=Wt;exports.createMenus=U;exports.createMetaApi=De;exports.createMock=Le;exports.createProvider=Jt;exports.createRenderer=J;exports.createSchemaApi=Fe;exports.createSchemaApis=He;exports.createServiceRequest=Vt;exports.defaultLoader=Je;exports.fillBasePath=x;exports.getMock=D;exports.getModifiers=ue;exports.getPlugin=le;exports.getRawComponent=Re;exports.isBuiltInTag=Me;exports.isCSSUrl=B;exports.isJSCode=ke;exports.isJSExpression=R;exports.isJSFunction=b;exports.isJSON=je;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=Ue;exports.mockApis=xe;exports.mockCleanup=ce;exports.nodeRender=k;exports.parseDeps=be;exports.parseExpression=H;exports.parseFunction=P;exports.parseUrls=Ce;exports.providerKey=fe;exports.removeProdFlag=$e;exports.setupPageSetting=it;exports.toString=ne;exports.useAccess=Oe;exports.useMask=Dt;exports.useProvider=de;
|
package/dist/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Base as ze, BUILT_IN_COMPONENTS as Ge, ProjectModel as U, HistoryModel as be } from "@vtj/core";
|
2
|
-
import { isUrl as se, url as F, dedupArray as Ve, isString as
|
2
|
+
import { isUrl as se, url as F, dedupArray as Ve, isString as I, isFunction as q, logger as M, storage as X, cookie as Y, toArray as ve, unRSA as _e, delay as J, createRequest as Ee, jsonp as Re, merge as Qe, pathToRegexp as We, pathToRegexpMatch as Xe, formDataToJson as Ye, Queue as Ze, cloneDeep as we, camelCase as A, isObject as et, upperFirst as tt, pick as st, request as ne, loadScript as Se, Storage as nt, mapToObject as ue } from "@vtj/utils";
|
3
3
|
import * as z from "vue";
|
4
4
|
import { inject as Pe, defineComponent as Ce, h as re, ref as oe, watchEffect as rt, defineAsyncComponent as $e } from "vue";
|
5
5
|
import { useRoute as Ae } from "vue-router";
|
@@ -7,11 +7,11 @@ 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.27
|
11
11
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
12
12
|
*/
|
13
|
-
const D = "0.13.
|
14
|
-
var
|
13
|
+
const D = "0.13.27";
|
14
|
+
var w = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(w || {});
|
15
15
|
const je = [
|
16
16
|
"$el",
|
17
17
|
"$emit",
|
@@ -167,10 +167,10 @@ function ut(n, e = !1) {
|
|
167
167
|
function ft(n, e, t = !1) {
|
168
168
|
const s = n.filter((p) => !!p.enabled), r = [], o = [], a = [], i = [], l = {}, c = {}, u = [], f = {};
|
169
169
|
return s.forEach(
|
170
|
-
({ urls: p, assetsUrl:
|
170
|
+
({ urls: p, assetsUrl: m, library: d, assetsLibrary: h, localeLibrary: g }) => {
|
171
171
|
p?.forEach((y) => {
|
172
172
|
V(y) && r.push(ut(y, t)), G(y) && o.push(y);
|
173
|
-
}), d && (i.push(d), l[d] = B(p || [], e), g && (c[d] = g)),
|
173
|
+
}), d && (i.push(d), l[d] = B(p || [], e), g && (c[d] = g)), m && a.push(m), h && u.push(h), d && h && (f[h] = d);
|
174
174
|
}
|
175
175
|
), {
|
176
176
|
scripts: B(r, e),
|
@@ -214,23 +214,23 @@ function ht(n, e) {
|
|
214
214
|
const y = f;
|
215
215
|
for (; f < c.length && c[f] !== "{" && c[f] !== ";"; )
|
216
216
|
f++;
|
217
|
-
const
|
217
|
+
const _ = c.substring(y, f).trim(), v = _.includes("@keyframes");
|
218
218
|
if (c[f] === ";")
|
219
219
|
u.push({
|
220
220
|
type: "simple-at-rule",
|
221
221
|
content: c.substring(y, f + 1)
|
222
222
|
}), f++;
|
223
223
|
else if (c[f] === "{") {
|
224
|
-
const
|
225
|
-
let
|
226
|
-
for (f++; f < c.length &&
|
227
|
-
c[f] === "{" ?
|
228
|
-
const Q = c.substring(y, f),
|
224
|
+
const S = f + 1;
|
225
|
+
let P = 1;
|
226
|
+
for (f++; f < c.length && P > 0; )
|
227
|
+
c[f] === "{" ? P++ : c[f] === "}" && P--, f++;
|
228
|
+
const Q = c.substring(y, f), C = c.substring(S, f - 1);
|
229
229
|
u.push({
|
230
230
|
type: v ? "keyframes" : "at-rule",
|
231
|
-
rule:
|
231
|
+
rule: _,
|
232
232
|
content: Q,
|
233
|
-
inner:
|
233
|
+
inner: C
|
234
234
|
});
|
235
235
|
}
|
236
236
|
continue;
|
@@ -239,19 +239,19 @@ function ht(n, e) {
|
|
239
239
|
for (; f < c.length && c[f] !== "{"; )
|
240
240
|
f++;
|
241
241
|
if (f >= c.length) break;
|
242
|
-
const
|
243
|
-
if (!
|
242
|
+
const m = c.substring(p, f).trim();
|
243
|
+
if (!m) {
|
244
244
|
f++;
|
245
245
|
continue;
|
246
246
|
}
|
247
247
|
const d = f + 1;
|
248
|
-
let
|
249
|
-
for (f++; f < c.length &&
|
250
|
-
c[f] === "{" ?
|
248
|
+
let h = 1;
|
249
|
+
for (f++; f < c.length && h > 0; )
|
250
|
+
c[f] === "{" ? h++ : c[f] === "}" && h--, f++;
|
251
251
|
const g = c.substring(d, f - 1);
|
252
252
|
u.push({
|
253
253
|
type: "rule",
|
254
|
-
selector:
|
254
|
+
selector: m,
|
255
255
|
content: g.trim()
|
256
256
|
});
|
257
257
|
}
|
@@ -260,16 +260,16 @@ function ht(n, e) {
|
|
260
260
|
const u = c.trim();
|
261
261
|
return /^(from|to|\d+(\.\d+)?%)$/.test(u);
|
262
262
|
}, r = (c) => c.replace(/::v-deep\(/g, ":deep(").replace(/::v-deep\s+/g, ":deep(").replace(/\/deep\//g, " ").replace(/>>>/g, " ").replace(/(.*?):deep\(([^)]+)\)/g, (u, f, p) => {
|
263
|
-
const
|
264
|
-
return
|
263
|
+
const m = f.trim(), d = p.trim();
|
264
|
+
return m ? `${m}[${e}] ${d}` : d;
|
265
265
|
}), o = (c) => {
|
266
266
|
const u = c.trim();
|
267
267
|
if (!u || u.includes(`[${e}]`) || /^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(u) || s(u))
|
268
268
|
return u;
|
269
269
|
const f = u.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);
|
270
270
|
if (f) {
|
271
|
-
const [, p,
|
272
|
-
return d ? `${d}[${e}]${
|
271
|
+
const [, p, m = ""] = f, d = p.trim();
|
272
|
+
return d ? `${d}[${e}]${m}` : u;
|
273
273
|
}
|
274
274
|
return `${u}[${e}]`;
|
275
275
|
}, a = (c) => r(c).split(",").map((f) => o(f)).filter((f) => f.trim()).join(", "), i = (c) => c.map((u) => {
|
@@ -280,8 +280,8 @@ function ht(n, e) {
|
|
280
280
|
return u.content;
|
281
281
|
case "at-rule":
|
282
282
|
try {
|
283
|
-
const p = t(u.inner),
|
284
|
-
return `${u.rule} { ${
|
283
|
+
const p = t(u.inner), m = i(p);
|
284
|
+
return `${u.rule} { ${m} }`;
|
285
285
|
} catch {
|
286
286
|
return u.content;
|
287
287
|
}
|
@@ -309,7 +309,7 @@ function ht(n, e) {
|
|
309
309
|
}
|
310
310
|
}
|
311
311
|
function Ie(n) {
|
312
|
-
return
|
312
|
+
return I(n) ? n : JSON.stringify(n);
|
313
313
|
}
|
314
314
|
function fe(n, e, t, s = !1) {
|
315
315
|
const r = n.CSSStyleSheet, o = s ? `data-v-${e}` : e, a = s ? ht(t, o) : t;
|
@@ -445,7 +445,7 @@ const wt = {
|
|
445
445
|
class pe {
|
446
446
|
options;
|
447
447
|
data = null;
|
448
|
-
mode =
|
448
|
+
mode = w.Raw;
|
449
449
|
interceptResponse = !0;
|
450
450
|
constructor(e) {
|
451
451
|
this.options = Object.assign({}, wt, e), this.loadData();
|
@@ -458,7 +458,7 @@ class pe {
|
|
458
458
|
}
|
459
459
|
connect(e) {
|
460
460
|
const { mode: t, router: s, request: r } = e;
|
461
|
-
this.mode = t, s && this.mode !==
|
461
|
+
this.mode = t, s && this.mode !== w.Design && this.setGuard(s), r && this.setRequest(r);
|
462
462
|
}
|
463
463
|
login(e) {
|
464
464
|
const { storageKey: t, storagePrefix: s, session: r, authKey: o } = this.options;
|
@@ -560,7 +560,7 @@ class pe {
|
|
560
560
|
return t();
|
561
561
|
{
|
562
562
|
const { noPermissionMessage: s = "无权限访问", unauthorized: r = !1 } = this.options;
|
563
|
-
return await this.showTip(s), q(r) ? (r(), t(!1)) :
|
563
|
+
return await this.showTip(s), q(r) ? (r(), t(!1)) : I(r) ? t(r) : t(!1);
|
564
564
|
}
|
565
565
|
}
|
566
566
|
t(!1), await J(0), this.toLogin();
|
@@ -709,8 +709,8 @@ function Pt(n, e) {
|
|
709
709
|
Object.assign(l, { data: u, params: p, query: c });
|
710
710
|
try {
|
711
711
|
return n.mock(i(l));
|
712
|
-
} catch (
|
713
|
-
return console.warn("[mockApi]", o, l,
|
712
|
+
} catch (m) {
|
713
|
+
return console.warn("[mockApi]", o, l, m), null;
|
714
714
|
}
|
715
715
|
});
|
716
716
|
} catch (r) {
|
@@ -778,7 +778,7 @@ class Ct {
|
|
778
778
|
}
|
779
779
|
__parseFunction(e) {
|
780
780
|
if (e)
|
781
|
-
if (this.__mode ===
|
781
|
+
if (this.__mode === w.Runtime) {
|
782
782
|
const { id: t, type: s } = e, r = t ? this.__transform[t] ?? e.value : e.value;
|
783
783
|
return R({ type: s, value: r }, this);
|
784
784
|
} else
|
@@ -786,14 +786,14 @@ class Ct {
|
|
786
786
|
}
|
787
787
|
__parseExpression(e) {
|
788
788
|
if (e)
|
789
|
-
if (this.__mode ===
|
789
|
+
if (this.__mode === w.Runtime) {
|
790
790
|
const { id: t, type: s } = e, r = t ? this.__transform[t] ?? e.value : e.value;
|
791
791
|
return x({ type: s, value: r }, this);
|
792
792
|
} else
|
793
793
|
return x(e, this);
|
794
794
|
}
|
795
795
|
__ref(e = null, t) {
|
796
|
-
if (this.__mode !==
|
796
|
+
if (this.__mode !== w.VNode)
|
797
797
|
return e && e !== this.__id && (this.__contextRefs[e] = this), async (s) => {
|
798
798
|
await J(0);
|
799
799
|
let r = s?.$vtjEl || s?.$el || s?._?.vnode?.el || s;
|
@@ -801,7 +801,7 @@ class Ct {
|
|
801
801
|
typeof t == "string" && (delete this.$refs[t], e && delete this.__refs[e]);
|
802
802
|
return;
|
803
803
|
}
|
804
|
-
return r.nodeType === 3 && r.nextSibling && (r = r.nextSibling), r.__vtj__ = e,
|
804
|
+
return r.nodeType === 3 && r.nextSibling && (r = r.nextSibling), r.__vtj__ = e, w.Design === this.__mode && (r.__context__ = this, r.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;
|
805
805
|
};
|
806
806
|
}
|
807
807
|
__getRefEl(e, t, s) {
|
@@ -823,7 +823,7 @@ class Ct {
|
|
823
823
|
function ie(n) {
|
824
824
|
const {
|
825
825
|
Vue: e = z,
|
826
|
-
mode: t =
|
826
|
+
mode: t = w.Runtime,
|
827
827
|
components: s = {},
|
828
828
|
libs: r = {},
|
829
829
|
apis: o = {},
|
@@ -849,17 +849,17 @@ function ie(n) {
|
|
849
849
|
i.value.css || "",
|
850
850
|
!0
|
851
851
|
), c.state = kt(e, i.value.state ?? {}, c);
|
852
|
-
const p = Ft(e, i.value.computed ?? {}, c),
|
853
|
-
for (const [y,
|
854
|
-
d[y] = e.inject(y,
|
855
|
-
const
|
852
|
+
const p = Ft(e, i.value.computed ?? {}, c), m = Mt(i.value.methods ?? {}, c), d = Ot(e, i.value.inject, c);
|
853
|
+
for (const [y, _] of Object.entries(d || {}))
|
854
|
+
d[y] = e.inject(y, _);
|
855
|
+
const h = Dt(
|
856
856
|
i.value.dataSources || {},
|
857
857
|
c
|
858
858
|
), g = {
|
859
859
|
...d,
|
860
860
|
...p,
|
861
|
-
...
|
862
|
-
...
|
861
|
+
...m,
|
862
|
+
...h
|
863
863
|
};
|
864
864
|
return c.setup(g, e), Tt(e, i.value.watch ?? [], c), {
|
865
865
|
vtj: c
|
@@ -882,11 +882,11 @@ function ie(n) {
|
|
882
882
|
};
|
883
883
|
}
|
884
884
|
function At(n = []) {
|
885
|
-
return n.map((e) =>
|
885
|
+
return n.map((e) => I(e) ? e : e.name);
|
886
886
|
}
|
887
887
|
function It(n = [], e) {
|
888
888
|
const t = (s) => s ? (Array.isArray(s) ? s : [s]).map((o) => it[o]) : void 0;
|
889
|
-
return n.map((s) =>
|
889
|
+
return n.map((s) => I(s) ? {
|
890
890
|
name: s
|
891
891
|
} : {
|
892
892
|
name: s.name,
|
@@ -1004,7 +1004,7 @@ function ae(n) {
|
|
1004
1004
|
...s,
|
1005
1005
|
Vue: a,
|
1006
1006
|
dsl: we(i),
|
1007
|
-
mode:
|
1007
|
+
mode: w.Runtime,
|
1008
1008
|
loader: ae(n)
|
1009
1009
|
}).renderer : null;
|
1010
1010
|
});
|
@@ -1015,7 +1015,7 @@ function ae(n) {
|
|
1015
1015
|
...s,
|
1016
1016
|
Vue: a,
|
1017
1017
|
dsl: we(i),
|
1018
|
-
mode:
|
1018
|
+
mode: w.Runtime,
|
1019
1019
|
loader: ae(n)
|
1020
1020
|
}).renderer : null;
|
1021
1021
|
});
|
@@ -1036,32 +1036,32 @@ function Ps() {
|
|
1036
1036
|
}
|
1037
1037
|
function O(n, e, t = z, s = xt, r = [], o = !1) {
|
1038
1038
|
if (!n || !n.name || n.invisible) return null;
|
1039
|
-
const a = t.getCurrentInstance()?.appContext, { id: i = null, directives: l = [] } = n, { vIf: c, vElseIf: u, vElse: f, vFor: p, vShow:
|
1039
|
+
const a = t.getCurrentInstance()?.appContext, { id: i = null, directives: l = [] } = n, { vIf: c, vElseIf: u, vElse: f, vFor: p, vShow: m, vModels: d, vBind: h, vHtml: g, others: y } = He(l);
|
1040
1040
|
if (!o && (u || f))
|
1041
1041
|
return null;
|
1042
1042
|
if (c && !Lt(c, e))
|
1043
1043
|
return Jt(n, e, t, s, r);
|
1044
|
-
const
|
1045
|
-
const
|
1044
|
+
const _ = (v, S = 0) => {
|
1045
|
+
const P = v.$components, Q = (() => {
|
1046
1046
|
if (n.name === "component")
|
1047
1047
|
return Nt(v, n.props?.is);
|
1048
1048
|
if (n.name === "slot") return n.name;
|
1049
1049
|
const b = s(n.name, n.from, t);
|
1050
|
-
if (
|
1051
|
-
return yt(b) || vt(b) ? b :
|
1050
|
+
if (I(b))
|
1051
|
+
return yt(b) || vt(b) ? b : P[b] ?? a?.app?.component(b) ?? b;
|
1052
1052
|
if (et(b) && n.id) {
|
1053
|
-
const ge = `Loader${n.id}_${
|
1054
|
-
return ye || (
|
1053
|
+
const ge = `Loader${n.id}_${S}`, ye = P[ge];
|
1054
|
+
return ye || (P[ge] = b);
|
1055
1055
|
}
|
1056
1056
|
return b;
|
1057
|
-
})(),
|
1057
|
+
})(), C = Ut(i, n.props ?? {}, v), qe = qt(t, n.events ?? {}, v);
|
1058
1058
|
if (n.name === "slot")
|
1059
|
-
return Kt(t, n,
|
1060
|
-
|
1061
|
-
|
1062
|
-
Gt(
|
1063
|
-
)), g && Object.assign(
|
1064
|
-
Object.assign(
|
1059
|
+
return Kt(t, n, C, v, s);
|
1060
|
+
h && Object.assign(C, v.__parseExpression(h.value)), m && (C.style = Object.assign(
|
1061
|
+
C.style ?? {},
|
1062
|
+
Gt(m, v)
|
1063
|
+
)), g && Object.assign(C, Vt(g, v)), d.forEach((b) => {
|
1064
|
+
Object.assign(C, Qt(t, b, v));
|
1065
1065
|
});
|
1066
1066
|
const Je = Wt(
|
1067
1067
|
t,
|
@@ -1072,13 +1072,13 @@ function O(n, e, t = z, s = xt, r = [], o = !1) {
|
|
1072
1072
|
), he = v?.__id ? `data-v-${v.__id}` : void 0, Ke = he ? { [he]: "" } : {};
|
1073
1073
|
let W = t.createVNode(
|
1074
1074
|
Q,
|
1075
|
-
{ key: `${i}_${
|
1075
|
+
{ key: `${i}_${S}`, ...Ke, ...C, ...qe },
|
1076
1076
|
Je
|
1077
1077
|
);
|
1078
1078
|
const me = a ? Bt(a, y, v) : [];
|
1079
1079
|
return me.length && (W = t.withDirectives(W, me)), W;
|
1080
1080
|
};
|
1081
|
-
return p ? Zt(p,
|
1081
|
+
return p ? Zt(p, _, e) : _(e);
|
1082
1082
|
}
|
1083
1083
|
function Bt(n, e, t) {
|
1084
1084
|
const s = n.app;
|
@@ -1090,12 +1090,12 @@ function Bt(n, e, t) {
|
|
1090
1090
|
}).filter((r) => !!r);
|
1091
1091
|
}
|
1092
1092
|
function He(n = []) {
|
1093
|
-
const e = n.find((u) =>
|
1094
|
-
(u) =>
|
1095
|
-
), s = n.find((u) =>
|
1096
|
-
(u) =>
|
1093
|
+
const e = n.find((u) => A(u.name) === "vIf"), t = n.find(
|
1094
|
+
(u) => A(u.name) === "vElseIf"
|
1095
|
+
), s = n.find((u) => A(u.name) === "vElse"), r = n.find((u) => A(u.name) === "vFor"), o = n.find((u) => A(u.name) === "vShow"), a = n.find((u) => A(u.name) === "vBind"), i = n.find((u) => A(u.name) === "vHtml"), l = n.filter(
|
1096
|
+
(u) => A(u.name) === "vModel"
|
1097
1097
|
), c = n.filter(
|
1098
|
-
(u) => !ot.includes(
|
1098
|
+
(u) => !ot.includes(A(u.name))
|
1099
1099
|
);
|
1100
1100
|
return {
|
1101
1101
|
vIf: e,
|
@@ -1162,7 +1162,7 @@ function xe(n = {}, e = !1) {
|
|
1162
1162
|
}
|
1163
1163
|
function Kt(n, e, t, s, r) {
|
1164
1164
|
const { children: o } = e, a = zt(e, s), i = s.$slots?.[a.name];
|
1165
|
-
return i ? i(t) : o ?
|
1165
|
+
return i ? i(t) : o ? I(o) ? n.createTextVNode(o) : E(o) ? n.createTextVNode(
|
1166
1166
|
Ie(s.__parseExpression(o))
|
1167
1167
|
) : Array.isArray(o) ? o.map(
|
1168
1168
|
(l) => O(l, s, n, r, o)
|
@@ -1201,7 +1201,7 @@ function Qt(n, e, t) {
|
|
1201
1201
|
}
|
1202
1202
|
function Wt(n, e, t, s, r) {
|
1203
1203
|
if (!e) return null;
|
1204
|
-
if (
|
1204
|
+
if (I(e))
|
1205
1205
|
return { default: () => e };
|
1206
1206
|
if (E(e))
|
1207
1207
|
return {
|
@@ -1215,9 +1215,9 @@ function Wt(n, e, t, s, r) {
|
|
1215
1215
|
} : l ? { [l]: /* @__PURE__ */ Object.create(null) } : {};
|
1216
1216
|
return Object.entries(o).reduce(
|
1217
1217
|
(i, [l, { nodes: c, params: u, scope: f }]) => (i[l] = (p) => {
|
1218
|
-
const
|
1218
|
+
const m = u.length ? st(p ?? {}, u) : a(p, f);
|
1219
1219
|
return c.map(
|
1220
|
-
(d) => O(d, t.__clone(
|
1220
|
+
(d) => O(d, t.__clone(m), n, s, c)
|
1221
1221
|
);
|
1222
1222
|
}, i),
|
1223
1223
|
{}
|
@@ -1238,7 +1238,7 @@ function Xt(n) {
|
|
1238
1238
|
return e;
|
1239
1239
|
}
|
1240
1240
|
function Yt(n = "default") {
|
1241
|
-
return
|
1241
|
+
return I(n) ? { name: n, params: [], scope: "" } : { params: [], scope: "", ...n };
|
1242
1242
|
}
|
1243
1243
|
function Zt(n, e, t) {
|
1244
1244
|
const { value: s, iterator: r } = n, { item: o = "item", index: a = "index" } = r || {};
|
@@ -1314,24 +1314,24 @@ function Cs(n) {
|
|
1314
1314
|
menuPathPrefix: e = "",
|
1315
1315
|
pageRouteName: t = "page",
|
1316
1316
|
disableMenusFilter: s = !1
|
1317
|
-
} = n || {}, r = Ne(), o = Ae(), a = St(), i = oe(!1), l = oe(!1), c = r.project, u = (
|
1318
|
-
i.value = !
|
1317
|
+
} = n || {}, r = Ne(), o = Ae(), a = St(), i = oe(!1), l = oe(!1), c = r.project, u = (m, d) => {
|
1318
|
+
i.value = !m?.mask, l.value = d?.pure ?? !!m?.pure;
|
1319
1319
|
};
|
1320
1320
|
rt(() => {
|
1321
|
-
const { name:
|
1322
|
-
if (
|
1321
|
+
const { name: m, params: d, meta: h } = o;
|
1322
|
+
if (m === T) {
|
1323
1323
|
const g = r.getPage(d.id);
|
1324
|
-
u(g,
|
1325
|
-
} else if (
|
1324
|
+
u(g, h);
|
1325
|
+
} else if (m === N) {
|
1326
1326
|
const g = r.getHomepage();
|
1327
|
-
u(g,
|
1327
|
+
u(g, h);
|
1328
1328
|
} else {
|
1329
|
-
const g =
|
1329
|
+
const g = h.__vtj__;
|
1330
1330
|
if (g) {
|
1331
1331
|
const y = r.getPage(g);
|
1332
|
-
u(y,
|
1332
|
+
u(y, h);
|
1333
1333
|
} else
|
1334
|
-
i.value = !
|
1334
|
+
i.value = !h.mask, l.value = !!h.pure;
|
1335
1335
|
}
|
1336
1336
|
});
|
1337
1337
|
const f = K(
|
@@ -1373,7 +1373,7 @@ function le(n) {
|
|
1373
1373
|
homepage: i
|
1374
1374
|
} = n, l = [];
|
1375
1375
|
for (const c of s) {
|
1376
|
-
const { id: u, title: f, dir: p, layout:
|
1376
|
+
const { id: u, title: f, dir: p, layout: m, children: d, meta: h } = c;
|
1377
1377
|
if (p) {
|
1378
1378
|
const g = le({
|
1379
1379
|
name: e,
|
@@ -1385,7 +1385,7 @@ function le(n) {
|
|
1385
1385
|
pages: d || []
|
1386
1386
|
});
|
1387
1387
|
l.push(...g);
|
1388
|
-
} else if (
|
1388
|
+
} else if (m) {
|
1389
1389
|
const g = le({
|
1390
1390
|
name: e,
|
1391
1391
|
prefix: t,
|
@@ -1401,7 +1401,7 @@ function le(n) {
|
|
1401
1401
|
meta: {
|
1402
1402
|
title: f,
|
1403
1403
|
...a,
|
1404
|
-
...
|
1404
|
+
...h,
|
1405
1405
|
__vtj__: u
|
1406
1406
|
},
|
1407
1407
|
children: g
|
@@ -1496,7 +1496,7 @@ class ls extends ze {
|
|
1496
1496
|
super(), this.options = e;
|
1497
1497
|
const {
|
1498
1498
|
service: t,
|
1499
|
-
mode: s =
|
1499
|
+
mode: s = w.Raw,
|
1500
1500
|
dependencies: r,
|
1501
1501
|
materials: o,
|
1502
1502
|
project: a = {},
|
@@ -1509,8 +1509,8 @@ class ls extends ze {
|
|
1509
1509
|
/* Development */
|
1510
1510
|
} = e;
|
1511
1511
|
this.mode = s, this.modules = c, this.service = t, this.router = u, this.materialPath = f, this.nodeEnv = p, r && (this.dependencies = r), o && (this.materials = o), Object.assign(this.globals, l), Object.assign(this.adapter, i);
|
1512
|
-
const { access:
|
1513
|
-
|
1512
|
+
const { access: m, request: d } = this.adapter;
|
1513
|
+
m && m.connect({ mode: s, router: u, request: d }), a && s !== w.Design ? this.load(a) : this.project = a;
|
1514
1514
|
}
|
1515
1515
|
mode;
|
1516
1516
|
// 当前运行模式(设计/源码/预览等)
|
@@ -1571,7 +1571,7 @@ class ls extends ze {
|
|
1571
1571
|
if (this.project = s ? await s() : await this.service.init(e), !this.project)
|
1572
1572
|
throw new Error("project is null");
|
1573
1573
|
const { apis: r = [], meta: o = [] } = this.project, a = window;
|
1574
|
-
a && (a.CKEDITOR_VERSION = void 0), this.mode ===
|
1574
|
+
a && (a.CKEDITOR_VERSION = void 0), this.mode === w.Raw ? await this.loadDependencies(a) : await this.loadAssets(a), this.initMock(a), this.apis = bt(r, o, this.adapter), Oe(a), Et(r, a), e.platform !== "uniapp" && this.initRouter(), this.triggerReady();
|
1575
1575
|
}
|
1576
1576
|
initMock(e) {
|
1577
1577
|
const t = H(e);
|
@@ -1597,7 +1597,7 @@ class ls extends ze {
|
|
1597
1597
|
libraryMap: u,
|
1598
1598
|
materials: f,
|
1599
1599
|
materialExports: p,
|
1600
|
-
materialMapLibrary:
|
1600
|
+
materialMapLibrary: m,
|
1601
1601
|
libraryLocaleMap: d
|
1602
1602
|
} = ft(
|
1603
1603
|
t,
|
@@ -1606,35 +1606,38 @@ class ls extends ze {
|
|
1606
1606
|
/* Development */
|
1607
1607
|
);
|
1608
1608
|
Object.assign(this.libraryLocaleMap, d);
|
1609
|
-
for (const
|
1610
|
-
const g = s[
|
1609
|
+
for (const h of c) {
|
1610
|
+
const g = s[h], y = e[h];
|
1611
1611
|
if (y)
|
1612
|
-
r[
|
1612
|
+
r[h] = y;
|
1613
1613
|
else if (g)
|
1614
|
-
e[
|
1614
|
+
e[h] = r[h] = await g();
|
1615
1615
|
else {
|
1616
|
-
const v = u[
|
1617
|
-
for (const
|
1618
|
-
G(
|
1619
|
-
r[
|
1616
|
+
const v = u[h] || [];
|
1617
|
+
for (const S of v)
|
1618
|
+
G(S) && await mt(S, F.append(S, { v: D })), V(S) && await Se(F.append(S, { v: D }));
|
1619
|
+
r[h] = e[h]?.default || e[h];
|
1620
|
+
}
|
1621
|
+
const _ = d[h];
|
1622
|
+
if (_) {
|
1623
|
+
const v = s[_];
|
1624
|
+
l[_] = v ? await v() : e[_];
|
1620
1625
|
}
|
1621
|
-
const w = d[m];
|
1622
|
-
w && (l[w] = e[w]);
|
1623
1626
|
}
|
1624
1627
|
if (i === "development") {
|
1625
1628
|
for (const g of f)
|
1626
1629
|
await Se(F.append(g, { v: D }));
|
1627
|
-
const
|
1630
|
+
const h = this.materials || {};
|
1628
1631
|
for (const g of p) {
|
1629
|
-
const y = e[
|
1630
|
-
if (
|
1631
|
-
|
1632
|
-
o[
|
1632
|
+
const y = e[m[g]], _ = y?.default || y, v = Ge[g];
|
1633
|
+
if (v)
|
1634
|
+
_ && v.forEach((S) => {
|
1635
|
+
o[S] = _[S];
|
1633
1636
|
});
|
1634
1637
|
else {
|
1635
|
-
const
|
1636
|
-
|
1637
|
-
o[
|
1638
|
+
const S = h[g] ? (await h[g]()).default : e[g];
|
1639
|
+
S && _ && (S.components || []).forEach((P) => {
|
1640
|
+
o[P.name] = pt(P, _);
|
1638
1641
|
});
|
1639
1642
|
}
|
1640
1643
|
}
|
@@ -1689,13 +1692,13 @@ class ls extends ze {
|
|
1689
1692
|
const i = s[t[o]];
|
1690
1693
|
e.use(a, { locale: i }), r[o] = !0;
|
1691
1694
|
}
|
1692
|
-
this.options.install && e.use(this.options.install), this.adapter.access && e.use(this.adapter.access), this.project?.platform !== "uniapp" && this.mode !==
|
1695
|
+
this.options.install && e.use(this.options.install), this.adapter.access && e.use(this.adapter.access), this.project?.platform !== "uniapp" && this.mode !== w.Design && this.initGlobals(this.project?.globals || {}, {
|
1693
1696
|
app: e,
|
1694
1697
|
window,
|
1695
1698
|
adapter: this.adapter,
|
1696
1699
|
library: this.library,
|
1697
1700
|
mode: this.mode
|
1698
|
-
}), this.mode !==
|
1701
|
+
}), this.mode !== w.Design && this.project?.i18n && this.initI18n(e, this.library, this.project.i18n), e.provide(Le, this), e.config.globalProperties.$provider = this, this.options.enhance && e.use(this.options.enhance, this), this.mode === w.Design && (e.config.errorHandler = (o, a, i) => {
|
1699
1702
|
const l = a?.$options.name, c = typeof o == "string" ? o : o?.message || o?.msg || "未知错误", u = `[ ${l} ] ${c} ${i}`;
|
1700
1703
|
console.error(
|
1701
1704
|
"[VTJ Error]:",
|
@@ -1791,7 +1794,7 @@ class ls extends ze {
|
|
1791
1794
|
const s = this.getFile(e);
|
1792
1795
|
if (!s)
|
1793
1796
|
return M.warn(`Can not find file: ${e}`), null;
|
1794
|
-
if (t && t(s), this.mode ===
|
1797
|
+
if (t && t(s), this.mode === w.Raw) {
|
1795
1798
|
const { vtjRawDir: o = ".vtj/vue" } = this.options, a = `${o}/${e}.vue`, i = this.modules[a] || this.modules[`/src/pages/${e}.vue`];
|
1796
1799
|
return i ? (await i())?.default : this.nodeEnv === "development" && this.adapter.startupComponent || null;
|
1797
1800
|
}
|
@@ -2018,58 +2021,58 @@ class de {
|
|
2018
2021
|
return console.log("BaseService.genSource", e), "";
|
2019
2022
|
}
|
2020
2023
|
}
|
2021
|
-
const
|
2024
|
+
const $ = new nt({
|
2022
2025
|
type: "local",
|
2023
2026
|
expired: 0,
|
2024
2027
|
prefix: "__VTJ_"
|
2025
2028
|
});
|
2026
2029
|
class Fs extends de {
|
2027
2030
|
init(e) {
|
2028
|
-
const t = new U(e), s =
|
2029
|
-
return
|
2031
|
+
const t = new U(e), s = $.get(`project_${t.id}`), r = Object.assign(t.toDsl(), s || {});
|
2032
|
+
return $.save(`project_${t.id}`, r), Promise.resolve(r);
|
2030
2033
|
}
|
2031
2034
|
saveProject(e) {
|
2032
2035
|
const t = new U(e);
|
2033
|
-
return
|
2036
|
+
return $.save(`project_${t.id}`, t.toDsl()), Promise.resolve(!0);
|
2034
2037
|
}
|
2035
2038
|
saveMaterials(e, t) {
|
2036
|
-
return
|
2039
|
+
return $.save(`materials_${e.id}`, ue(t)), Promise.resolve(!0);
|
2037
2040
|
}
|
2038
2041
|
saveFile(e) {
|
2039
|
-
return
|
2042
|
+
return $.save(`file_${e.id}`, e), Promise.resolve(!0);
|
2040
2043
|
}
|
2041
2044
|
getFile(e) {
|
2042
|
-
const t =
|
2045
|
+
const t = $.get(`file_${e}`);
|
2043
2046
|
return t ? Promise.resolve(t) : Promise.reject(null);
|
2044
2047
|
}
|
2045
2048
|
removeFile(e) {
|
2046
|
-
return
|
2049
|
+
return $.remove(`file_${e}`), Promise.resolve(!0);
|
2047
2050
|
}
|
2048
2051
|
saveHistory(e) {
|
2049
|
-
return
|
2052
|
+
return $.save(`history_${e.id}`, e), Promise.resolve(!0);
|
2050
2053
|
}
|
2051
2054
|
removeHistory(e) {
|
2052
|
-
const t =
|
2055
|
+
const t = $.get(`history_${e}`);
|
2053
2056
|
if (t) {
|
2054
2057
|
const r = (t.items || []).map((o) => o.id);
|
2055
|
-
this.removeHistoryItem(e, r),
|
2058
|
+
this.removeHistoryItem(e, r), $.remove(`history_${e}`);
|
2056
2059
|
}
|
2057
2060
|
return Promise.resolve(!0);
|
2058
2061
|
}
|
2059
2062
|
getHistory(e) {
|
2060
|
-
const t =
|
2063
|
+
const t = $.get(`history_${e}`), s = new be(t || { id: e });
|
2061
2064
|
return Promise.resolve(s.toDsl());
|
2062
2065
|
}
|
2063
2066
|
getHistoryItem(e, t) {
|
2064
|
-
const s =
|
2067
|
+
const s = $.get(`history_${e}_${t}`);
|
2065
2068
|
return Promise.resolve(s);
|
2066
2069
|
}
|
2067
2070
|
saveHistoryItem(e, t) {
|
2068
|
-
return
|
2071
|
+
return $.save(`history_${e}_${t.id}`, t), Promise.resolve(!0);
|
2069
2072
|
}
|
2070
2073
|
removeHistoryItem(e, t) {
|
2071
2074
|
return t.forEach((s) => {
|
2072
|
-
|
2075
|
+
$.remove(`history_${e}_${s}`);
|
2073
2076
|
}), Promise.resolve(!0);
|
2074
2077
|
}
|
2075
2078
|
}
|
@@ -2200,7 +2203,7 @@ export {
|
|
2200
2203
|
de as BaseService,
|
2201
2204
|
je as CONTEXT_HOST,
|
2202
2205
|
Ct as Context,
|
2203
|
-
|
2206
|
+
w as ContextMode,
|
2204
2207
|
it as DATA_TYPES,
|
2205
2208
|
N as HOMEPAGE_ROUTE_NAME,
|
2206
2209
|
at as HTML_TAGS,
|
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.27",
|
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/
|
25
|
-
"@vtj/
|
24
|
+
"@vtj/core": "~0.13.27",
|
25
|
+
"@vtj/utils": "~0.13.27"
|
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/
|
32
|
-
"@vtj/
|
30
|
+
"@vtj/cli": "~0.12.13",
|
31
|
+
"@vtj/icons": "~0.13.27",
|
32
|
+
"@vtj/ui": "~0.13.27"
|
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.26
|
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.26";
|