@vtj/renderer 0.9.0-alpha.17 → 0.9.0-alpha.19
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 +6 -6
- package/dist/index.mjs +143 -135
- package/package.json +5 -5
- package/types/hooks/mask.d.ts +3 -1
- package/types/plugins/access.d.ts +2 -2
- package/types/provider/provider.d.ts +1 -1
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
"use strict";var Ae=Object.create;var te=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var
|
1
|
+
"use strict";var Ae=Object.create;var te=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var Ie=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Me(e))!Te.call(s,r)&&r!==t&&te(s,r,{get:()=>e[r],enumerable:!(n=Fe(e,r))||n.enumerable});return s};var De=(s,e,t)=>(t=s!=null?Ae(Oe(s)):{},Ie(e||!s||!s.__esModule?te(t,"default",{value:s,enumerable:!0}):t,s));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@vtj/core"),u=require("@vtj/utils"),f=require("vue"),F=require("element-plus"),se=require("vue-router");function He(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const H=He(f);/**!
|
2
2
|
* Copyright (c) 2024, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.9.0-alpha.
|
5
|
+
* @version 0.9.0-alpha.19
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const C="0.9.0-alpha.
|
8
|
-
`)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(r){if(l.logger.error("parseExpression.error",r,s,e?.__self??e),n)throw r}}function q(s,e,t=!1,n=!1){const r=x(s,e,t,n);if(typeof r!="function"&&(l.logger.error("parseFunction.error","not a function",s,e?.__self??e),n))throw new Error(`"${s.value}" not a function`);return r}function j(s){return s&&s.type==="JSExpression"}function M(s){return typeof s=="object"&&s&&s.type==="JSFunction"}function he(s){return j(s)||M(s)}function Le(s){return he(s)?s.value:JSON.stringify(s)}let P=null;const Je=l.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:s=>s.data?.code===0||!!s.data?.success,failMessage:!0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})},showLoading:()=>{P&&P.close(),P=F.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{P&&(P.close(),P=null)}}});let $;function me(s,e){const{jsonp:t,request:n}=e;if(s.method==="jsonp")return(r={})=>t(s.url,{...s.jsonpOptions,query:r});{const r=s.headers?x(s.headers,{},!0):void 0,o={url:s.url,method:s.method,settings:{...s.settings,headers:r}};return(a,i)=>(delete o.data,n.send(l.merge(o,i||{},{data:a})))}}function ge(s,e){const{metaQuery:t}=e;if(!t)return;const{code:n,queryCode:r}=s;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(n,r,o,a)}}function ve(s=[],e=[],t){const n={};for(const r of s)n[r.id]=me(r,t);for(const r of e)n[r.id]=ge(r,t);return n}async function ye(s=[]){$=await import("mockjs").then(e=>e.default||e),$&&($.setup({timeout:"50-500"}),K(),s.forEach(e=>_e($,e)))}function _e(s,e){if(!e.mock)return;const{url:t,mockTemplate:n}=e;if(t&&n){const r=l.pathToRegexp(`${t}(.*)`),o=l.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=x(n,{},!0);s.mock(r,i=>{const u=l.url.parse(i.url)||{},c=i.body instanceof FormData?l.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:c,params:u,query:m}),s.mock(a(i))})}}function K(){$&&($._mocked={})}const qe={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",keyPrefix:""},W=Symbol("access");class Ve{options;data=null;mode=y.Raw;constructor(e){this.options=Object.assign({},qe,e),this.loadData()}connect(e){const{mode:t,router:n,request:r}=e;this.mode=t,n&&t===y.Raw&&this.setGuard(n),r&&this.setRequest(r)}login(e){const{storageKey:t,storagePrefix:n,session:r,authKey:o}=this.options;this.setData(e),this.data&&(l.storage.save(t,e,{type:"local",prefix:n}),r&&l.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:n,authKey:r}=this.options;this.data=null,l.storage.remove(e,{type:"local",prefix:t}),n&&l.cookie.remove(r)}logout(){this.clear(),this.toLogin()}getData(){return this.data}getToken(){return this.data?.token}can(e){const{keyPrefix:t}=this.options,{permissions:n={}}=this.data||{};return typeof e=="function"?e(n):l.toArray(e).every(o=>n[o]||n[t+o])}some(e){const{keyPrefix:t}=this.options,{permissions:n={}}=this.data||{};return l.toArray(e).some(o=>n[o]||n[t+o])}install(e){e.config.globalProperties.$access||(e.config.globalProperties.$access=this),e.provide(W,this)}isAuthPath(e){const{auth:t,isAuth:n}=this.options;if(n)return n(e);if(e.path&&typeof t=="string"){const r=t.split("#")[1]||t;return e.path===r}return!1}toLogin(){const{auth:e,redirectParam:t}=this.options;if(!e||this.mode!==y.Raw)return;const n=t?`?${t}=${encodeURIComponent(location.href)}`:"";typeof e=="function"?e(n):location.href=t?`${e}${n}`:e}setData(e){const{privateKey:t}=this.options;if(Array.isArray(e)&&t){const n=e.map(r=>l.unRSA(r,t));this.data=JSON.parse(n.join(""));return}if(typeof e=="string")try{const n=t?l.unRSA(e,t):e;n?this.data=JSON.parse(n):console.warn("RSA解密失败或登录信息缺失")}catch(n){console.warn(n)}else this.data=e}loadData(){const{storageKey:e,storagePrefix:t}=this.options,n=l.storage.get(e,{type:"local",prefix:t});this.setData(n)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!l.cookie.get(t):!!this.data}hasRoutePermission(e){if(e.name===R){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,n,r)=>this.guard(t,r))}guard(e,t){if(this.isWhiteList(e)||this.isAuthPath(e))return t();if(this.isLogined()){if(this.hasRoutePermission(e))return t();{const{noPermissionMessage:n="无权限访问",unauthorized:r=!1}=this.options;return this.showTip(n),l.isFunction(r)?(r(),t(!1)):l.isString(r)?t(r):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(n=>e.fullPath.startsWith(n)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401}=this.options;return e.status===t||e.data.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await l.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(await this.showUnauthorizedAlert(t),t),async t=>{const n=t.response||t||{};return await this.showUnauthorizedAlert(n),Promise.reject(t)})}}function we(){return p.inject(W,null)}class Se{__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:n,attrs:r}=e;this.__mode=t,n&&(this.__id=n.id||null,this.__transform=n.transform||{}),r&&Object.assign(this,r)}setup(e,t=H){const n=t.getCurrentInstance();if(!n)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=n.proxy;const r=n.appContext.config.globalProperties;Object.assign(this,r),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__refs={},this.$refs={},this.__contextRefs={},this.context={}})}__proxy(){this.__instance&&J.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){J.forEach(e=>{this[e]=null})}__parseFunction(e){if(e)if(this.__mode===y.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return q({type:n,value:r},this)}else return q(e,this)}__parseExpression(e){if(e)if(this.__mode===y.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return x({type:n,value:r},this)}else return x(e,this)}__ref(e=null,t){if(this.__mode!==y.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async n=>{await l.delay(0);let r=n?.$vtjEl||n?.$el||n?._?.vnode?.el||n;if(!r){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,y.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=n),typeof t=="function")t(n);else if(t){const o=this.$refs[t];if(o&&n!==o){const a=new Set([].concat(o,n));this.$refs[t]=Array.from(a)}else this.$refs[t]=n}return n}}__clone(e={}){const t={...this.context,...e},n={...t,context:t};return n.context.__proto__=this.context,n.__proto__=this,n}}function I(s){const{Vue:e=H,mode:t=y.Runtime,components:n={},libs:r={},apis:o={},loader:a}=s,i=e.computed(()=>s.dsl),u={$components:n,$libs:r,$apis:o},c=new Se({mode:t,dsl:i.value,attrs:u}),m=e.defineComponent({name:i.value.name,props:{...Ke(i.value.props??[],c)},setup(f){c.$props=f,c.props=f,i.value.id&&z(s.window||window,i.value.id,i.value.css||""),c.state=We(e,i.value.state??{},c);const d=Ge(e,i.value.computed??{},c),g=Ye(i.value.methods??{},c),h=Qe(e,i.value.inject,c),v=Ee(i.value.dataSources||{},c),E={...h,...d,...g,...v};return c.setup(E,e),Xe(e,i.value.watch??[],c),{vtj:c}},emits:ze(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const f=i.value.nodes||[];return f.length===1?O(f[0],c,e,a):f.map(d=>O(d,c,e,a))},...Ze(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(m),context:c}}function ze(s=[]){return s.map(e=>l.isString(e)?e:e.name)}function Ke(s=[],e){const t=n=>n?(Array.isArray(n)?n:[n]).map(o=>oe[o]):void 0;return s.map(n=>l.isString(n)?{name:n}:{name:n.name,type:n.type,required:n.required,default:j(n.default)?e.__parseExpression(n.default):n.default}).reduce((n,r)=>(n[r.name]={type:t(r.type),required:r.required,default:r.default},n),{})}function We(s,e,t){return s.reactive(Object.keys(e||{}).reduce((n,r)=>{let o=e[r];return j(o)?o=t.__parseExpression(o):M(o)&&(o=t.__parseFunction(o)),n[r]=o,n},{}))}function Ge(s,e,t){return Object.entries(e??{}).reduce((n,[r,o])=>(n[r]=s.computed(t.__parseFunction(o)),n),{})}function Ye(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}function Qe(s,e=[],t){return e.reduce((n,r)=>{const{name:o,from:a}=r||{};r.default;const i=j(a)?t.__parseExpression(a)||o:a??o,u=j(r.default)?t.__parseExpression(r.default):r.default??null;return n[o]=s.inject(i,u),n},{})}function Ee(s,e){return Object.keys(s).reduce((t,n)=>{const r=s[n],o=e.$apis[r.ref],a=M(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;return t[n]=async(...i)=>{const u=await o.apply(e,i);return a?a(u):u},t},{})}function Xe(s,e=[],t){e.forEach(n=>{s.watch(t.__parseExpression(n.source),t.__parseFunction(n.handler),{deep:n.deep,immediate:n.immediate})})}function Ze(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}let L=[];const je=s=>s;async function G(s,e=window){const{urls:t=[],library:n}=s,r=t.filter(i=>U(i));if(r.length===0||!n)return null;const o=t.filter(i=>N(i));return o.length&&de(o,e),await pe(r,n,e).catch(i=>(console.warn("loadScriptUrl error",r,n,i),null))}function D(s){const{getDsl:e,getDslByUrl:t,options:n}=s;return n.window&&(L.forEach(r=>{delete n.window[r]}),L=[]),(r,o,a=H)=>!o||typeof o=="string"?r:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:y.Runtime,loader:D(s)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:y.Runtime,loader:D(s)}).renderer:null}):o.type==="Plugin"?(o.library&&L.push(o.library),a.defineAsyncComponent(async()=>{const i=await G(o,n.window);return i||(console.warn("getPlugin result is null",o),null)})):r}function O(s,e,t=H,n=je){if(!s||!s.name||s.invisible)return null;const{id:r=null,directives:o=[]}=s,{vIf:a,vFor:i,vShow:u,vModels:c,vBind:m}=et(o);if(a&&!tt(a,e))return null;const f=d=>{const g=d.$components,h=(()=>{if(s.name==="component")return nt(d,s.props?.is);if(s.name==="slot")return s.name;const w=n(s.name,s.from,t);return l.isString(w)?g[w]??w:w})(),v=st(r,s.props??{},d),E=rt(t,s.events??{},d);if(s.name==="slot")return ot(t,s,v,d,n);m&&Object.assign(v,d.__parseExpression(m.value)),u&&(v.style=Object.assign(v.style??{},at(u,d))),c.forEach(w=>{Object.assign(v,ct(t,w,d))});const _=lt(t,s.children??[],d,n,s);return t.createVNode(h,{...v,...E},_)};return i?pt(i,f,e):f(e)}function et(s=[]){const e=s.find(i=>l.camelCase(i.name)==="vIf"),t=s.find(i=>l.camelCase(i.name)==="vFor"),n=s.find(i=>l.camelCase(i.name)==="vShow"),r=s.find(i=>l.camelCase(i.name)==="vBind"),o=s.filter(i=>l.camelCase(i.name)==="vModel"),a=s.filter(i=>!re.includes(l.camelCase(i.name)));return{vIf:e,vFor:t,vShow:n,vModels:o,vBind:r,others:a}}function tt(s,e){return!!e.__parseExpression(s.value)}function nt(s,e){return e?j(e)?s.__parseExpression(e):e:"div"}function st(s,e,t){const n=Object.keys(e||{}).reduce((r,o)=>{let a=e[o];return j(a)?a=t.__parseExpression(a):M(a)&&(a=t.__parseFunction(a)),r[o]=a,r},{});return n.ref=t.__ref(s,n.ref),n}function rt(s,e,t){const n=["passive","capture","once"],r={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],u=Y(i.modifiers),c=u.find(d=>n.includes(d)),m="on"+l.upperFirst(a)+(c&&r[c]||""),f=t.__parseFunction(i.handler);return f&&(o[m]=s.withModifiers(f,u)),o},{})}function Y(s={},e=!1){const t=Object.keys(s);return e?t.map(n=>"."+n):t}function ot(s,e,t,n,r){const{children:o}=e,a=it(e,n),i=n.$slots?.[a.name];return i?i(t):o?l.isString(o)?s.createTextVNode(o):j(o)?s.createTextVNode(V(n.__parseExpression(o))):Array.isArray(o)?o.map(u=>O(u,n,s,r)):null:null}function it(s,e){const{props:t}=s,n=t?.name||"default";return{name:j(n)?e.__parseExpression(n):n,params:[]}}function at(s,e){return e.__parseExpression(s.value)?{}:{display:"none"}}function ct(s,e,t){const n={type:"JSFunction",value:e.value?.value?`(v) => {
|
7
|
+
*/const C="0.9.0-alpha.19";var y=(s=>(s.Runtime="Runtime",s.Design="Design",s.Raw="Raw",s.VNode="VNode",s))(y||{});const J=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ne=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],re=["vIf","vShow","vModel","vFor","vBind"],oe={String,Number,Boolean,Array,Object,Function,Date},R="VtjPage",A="VtjHomepage";function k(s,e){return s.map(t=>u.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function N(s){return/\.css$/.test(s)}function U(s){return/\.js$/.test(s)}function ie(s){return/\.json$/.test(s)}function Ue(s){return s.map(e=>`<script src="${u.url.append(e,{v:C})}"><\/script>`).join("")}function Be(s=[]){return s.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:C})}" />`).join("")}function ae(s,e=!1){return e&&s.endsWith(".prod.js")?s.replace(".prod.js",".js"):s}function ce(s,e,t=!1){const n=s.filter(p=>!!p.enabled),r=[],o=[],a=[],i=[],l={},c={},m=[],d={};return n.forEach(({urls:p,assetsUrl:v,library:h,assetsLibrary:g,localeLibrary:E})=>{p?.forEach(_=>{U(_)&&r.push(ae(_,t)),N(_)&&o.push(_)}),h&&(i.push(h),l[h]=k(p||[],e),E&&(c[h]=E)),v&&a.push(v),g&&m.push(g),h&&g&&(d[g]=h)}),{scripts:k(r,e),css:k(o,e),materials:k(a,e),libraryExports:i,materialExports:u.dedupArray(m),materialMapLibrary:d,libraryMap:l,libraryLocaleMap:c}}function le(s,e){const{name:t,parent:n,alias:r}=s;return n?e[n]?.[r||t]:e[r||t]}function V(s){return u.isString(s)?s:JSON.stringify(s)}function z(s,e,t){const n=s.CSSStyleSheet;if(n.prototype.replaceSync){const r=new n;r.id=e,r.replaceSync(t);const o=s.document,a=o.adoptedStyleSheets,i=Array.from(a).filter(l=>l.id!==e);o.adoptedStyleSheets=[...i,r]}else{const r=s.document;let o=r.getElementById(e);o?o.innerHTML=t:(o=r.createElement("style"),o.id=e,o.innerHTML=t,r.head.appendChild(o))}}async function ue(s,e){const t=await window.fetch(e).then(n=>n.text()).catch(()=>"");t&&z(window,s,t)}function de(s,e=window){const t=e.document,n=e.document.head;for(const r of s)if(!t.getElementById(r)){const a=t.createElement("link");a.rel="stylesheet",a.id=r,a.href=r,n.appendChild(a)}}async function pe(s,e,t=window){const n=t.document,r=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const l of s){const c=n.createElement("script");c.src=l,c.onload=()=>{o=t[e],o?a(o.default||o):i(null)},c.onerror=m=>{i(m)},r.appendChild(c)}})}function fe(s){return u.isFunction(s)||u.isFunction(s?.install)}function x(s,e,t=!1,n=!1){try{const r=['"use strict";',"var __self = arguments[0];"];r.push("return ");let o=(s.value||"").trim();o=o.replace(/this(\W|$)/g,(i,l)=>`__self${l}`),o=r.join(`
|
8
|
+
`)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(r){if(u.logger.error("parseExpression.error",r,s,e?.__self??e),n)throw r}}function q(s,e,t=!1,n=!1){const r=x(s,e,t,n);if(typeof r!="function"&&(u.logger.error("parseFunction.error","not a function",s,e?.__self??e),n))throw new Error(`"${s.value}" not a function`);return r}function j(s){return s&&s.type==="JSExpression"}function O(s){return typeof s=="object"&&s&&s.type==="JSFunction"}function he(s){return j(s)||O(s)}function Le(s){return he(s)?s.value:JSON.stringify(s)}let $=null;const Je=u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:s=>s.data?.code===0||!!s.data?.success,failMessage:!0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})},showLoading:()=>{$&&$.close(),$=F.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{$&&($.close(),$=null)}}});let P;function me(s,e){const{jsonp:t,request:n}=e;if(s.method==="jsonp")return(r={})=>t(s.url,{...s.jsonpOptions,query:r});{const r=s.headers?x(s.headers,{},!0):void 0,o={url:s.url,method:s.method,settings:{...s.settings,headers:r}};return(a,i)=>(delete o.data,n.send(u.merge(o,i||{},{data:a})))}}function ge(s,e){const{metaQuery:t}=e;if(!t)return;const{code:n,queryCode:r}=s;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(n,r,o,a)}}function ve(s=[],e=[],t){const n={};for(const r of s)n[r.id]=me(r,t);for(const r of e)n[r.id]=ge(r,t);return n}async function ye(s=[]){P=await import("mockjs").then(e=>e.default||e),P&&(P.setup({timeout:"50-500"}),K(),s.forEach(e=>_e(P,e)))}function _e(s,e){if(!e.mock)return;const{url:t,mockTemplate:n}=e;if(t&&n){const r=u.pathToRegexp(`${t}(.*)`),o=u.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=x(n,{},!0);s.mock(r,i=>{const l=u.url.parse(i.url)||{},c=i.body instanceof FormData?u.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:c,params:l,query:m}),s.mock(a(i))})}}function K(){P&&(P._mocked={})}const qe={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:""},W=Symbol("access");class Ve{options;data=null;mode=y.Raw;constructor(e){this.options=Object.assign({},qe,e),this.loadData()}connect(e){const{mode:t,router:n,request:r}=e;this.mode=t,n&&t===y.Raw&&this.setGuard(n),r&&this.setRequest(r)}login(e){const{storageKey:t,storagePrefix:n,session:r,authKey:o}=this.options;this.setData(e),this.data&&(u.storage.save(t,e,{type:"local",prefix:n}),r&&u.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:n,authKey:r}=this.options;this.data=null,u.storage.remove(e,{type:"local",prefix:t}),n&&u.cookie.remove(r)}logout(){this.clear(),this.toLogin()}getData(){return this.data}getToken(){return this.data?.token}can(e){const{appName:t}=this.options,{permissions:n={}}=this.data||{};return typeof e=="function"?e(n):u.toArray(e).every(o=>n[o]||n[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:n={}}=this.data||{};return u.toArray(e).some(o=>n[o]||n[t+"."+o])}install(e){e.config.globalProperties.$access||(e.config.globalProperties.$access=this),e.provide(W,this)}isAuthPath(e){const{auth:t,isAuth:n}=this.options;if(n)return n(e);if(e.path&&typeof t=="string"){const r=t.split("#")[1]||t;return e.path===r}return!1}toLogin(){const{auth:e,redirectParam:t}=this.options;if(!e||this.mode!==y.Raw)return;const n=t?`?${t}=${encodeURIComponent(location.href)}`:"";typeof e=="function"?e(n):location.href=t?`${e}${n}`:e}setData(e){const{privateKey:t}=this.options;if(Array.isArray(e)&&t){const n=e.map(r=>u.unRSA(r,t));this.data=JSON.parse(n.join(""));return}if(typeof e=="string")try{const n=t?u.unRSA(e,t):e;n?this.data=JSON.parse(n):console.warn("RSA解密失败或登录信息缺失")}catch(n){console.warn(n)}else this.data=e}loadData(){const{storageKey:e,storagePrefix:t}=this.options,n=u.storage.get(e,{type:"local",prefix:t});this.setData(n)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!u.cookie.get(t):!!this.data}hasRoutePermission(e){if(e.name===R){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,n,r)=>this.guard(t,r))}guard(e,t){if(this.isWhiteList(e)||this.isAuthPath(e))return t();if(this.isLogined()){if(this.hasRoutePermission(e))return t();{const{noPermissionMessage:n="无权限访问",unauthorized:r=!1}=this.options;return this.showTip(n),u.isFunction(r)?(r(),t(!1)):u.isString(r)?t(r):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(n=>e.fullPath.startsWith(n)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401}=this.options;return e.status===t||e.data.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await u.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(await this.showUnauthorizedAlert(t),t),async t=>{const n=t.response||t||{};return await this.showUnauthorizedAlert(n),Promise.reject(t)})}}function we(){return f.inject(W,null)}class Se{__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:n,attrs:r}=e;this.__mode=t,n&&(this.__id=n.id||null,this.__transform=n.transform||{}),r&&Object.assign(this,r)}setup(e,t=H){const n=t.getCurrentInstance();if(!n)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=n.proxy;const r=n.appContext.config.globalProperties;Object.assign(this,r),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__refs={},this.$refs={},this.__contextRefs={},this.context={}})}__proxy(){this.__instance&&J.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){J.forEach(e=>{this[e]=null})}__parseFunction(e){if(e)if(this.__mode===y.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return q({type:n,value:r},this)}else return q(e,this)}__parseExpression(e){if(e)if(this.__mode===y.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return x({type:n,value:r},this)}else return x(e,this)}__ref(e=null,t){if(this.__mode!==y.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async n=>{await u.delay(0);let r=n?.$vtjEl||n?.$el||n?._?.vnode?.el||n;if(!r){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,y.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=n),typeof t=="function")t(n);else if(t){const o=this.$refs[t];if(o&&n!==o){const a=new Set([].concat(o,n));this.$refs[t]=Array.from(a)}else this.$refs[t]=n}return n}}__clone(e={}){const t={...this.context,...e},n={...t,context:t};return n.context.__proto__=this.context,n.__proto__=this,n}}function I(s){const{Vue:e=H,mode:t=y.Runtime,components:n={},libs:r={},apis:o={},loader:a}=s,i=e.computed(()=>s.dsl),l={$components:n,$libs:r,$apis:o},c=new Se({mode:t,dsl:i.value,attrs:l}),m=e.defineComponent({name:i.value.name,props:{...Ke(i.value.props??[],c)},setup(d){c.$props=d,c.props=d,i.value.id&&z(s.window||window,i.value.id,i.value.css||""),c.state=We(e,i.value.state??{},c);const p=Ge(e,i.value.computed??{},c),v=Ye(i.value.methods??{},c),h=Qe(e,i.value.inject,c),g=Ee(i.value.dataSources||{},c),E={...h,...p,...v,...g};return c.setup(E,e),Xe(e,i.value.watch??[],c),{vtj:c}},emits:ze(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?M(d[0],c,e,a):d.map(p=>M(p,c,e,a))},...Ze(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(m),context:c}}function ze(s=[]){return s.map(e=>u.isString(e)?e:e.name)}function Ke(s=[],e){const t=n=>n?(Array.isArray(n)?n:[n]).map(o=>oe[o]):void 0;return s.map(n=>u.isString(n)?{name:n}:{name:n.name,type:n.type,required:n.required,default:j(n.default)?e.__parseExpression(n.default):n.default}).reduce((n,r)=>(n[r.name]={type:t(r.type),required:r.required,default:r.default},n),{})}function We(s,e,t){return s.reactive(Object.keys(e||{}).reduce((n,r)=>{let o=e[r];return j(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),n[r]=o,n},{}))}function Ge(s,e,t){return Object.entries(e??{}).reduce((n,[r,o])=>(n[r]=s.computed(t.__parseFunction(o)),n),{})}function Ye(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}function Qe(s,e=[],t){return e.reduce((n,r)=>{const{name:o,from:a}=r||{};r.default;const i=j(a)?t.__parseExpression(a)||o:a??o,l=j(r.default)?t.__parseExpression(r.default):r.default??null;return n[o]=s.inject(i,l),n},{})}function Ee(s,e){return Object.keys(s).reduce((t,n)=>{const r=s[n],o=e.$apis[r.ref],a=O(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;return t[n]=async(...i)=>{const l=await o.apply(e,i);return a?a(l):l},t},{})}function Xe(s,e=[],t){e.forEach(n=>{s.watch(t.__parseExpression(n.source),t.__parseFunction(n.handler),{deep:n.deep,immediate:n.immediate})})}function Ze(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}let L=[];const je=s=>s;async function G(s,e=window){const{urls:t=[],library:n}=s,r=t.filter(i=>U(i));if(r.length===0||!n)return null;const o=t.filter(i=>N(i));return o.length&&de(o,e),await pe(r,n,e).catch(i=>(console.warn("loadScriptUrl error",r,n,i),null))}function D(s){const{getDsl:e,getDslByUrl:t,options:n}=s;return n.window&&(L.forEach(r=>{delete n.window[r]}),L=[]),(r,o,a=H)=>!o||typeof o=="string"?r:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:y.Runtime,loader:D(s)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=r),i?I({...n,Vue:a,dsl:i,mode:y.Runtime,loader:D(s)}).renderer:null}):o.type==="Plugin"?(o.library&&L.push(o.library),a.defineAsyncComponent(async()=>{const i=await G(o,n.window);return i||(console.warn("getPlugin result is null",o),null)})):r}function M(s,e,t=H,n=je){if(!s||!s.name||s.invisible)return null;const{id:r=null,directives:o=[]}=s,{vIf:a,vFor:i,vShow:l,vModels:c,vBind:m}=et(o);if(a&&!tt(a,e))return null;const d=p=>{const v=p.$components,h=(()=>{if(s.name==="component")return nt(p,s.props?.is);if(s.name==="slot")return s.name;const w=n(s.name,s.from,t);return u.isString(w)?v[w]??w:w})(),g=st(r,s.props??{},p),E=rt(t,s.events??{},p);if(s.name==="slot")return ot(t,s,g,p,n);m&&Object.assign(g,p.__parseExpression(m.value)),l&&(g.style=Object.assign(g.style??{},at(l,p))),c.forEach(w=>{Object.assign(g,ct(t,w,p))});const _=lt(t,s.children??[],p,n,s);return t.createVNode(h,{...g,...E},_)};return i?pt(i,d,e):d(e)}function et(s=[]){const e=s.find(i=>u.camelCase(i.name)==="vIf"),t=s.find(i=>u.camelCase(i.name)==="vFor"),n=s.find(i=>u.camelCase(i.name)==="vShow"),r=s.find(i=>u.camelCase(i.name)==="vBind"),o=s.filter(i=>u.camelCase(i.name)==="vModel"),a=s.filter(i=>!re.includes(u.camelCase(i.name)));return{vIf:e,vFor:t,vShow:n,vModels:o,vBind:r,others:a}}function tt(s,e){return!!e.__parseExpression(s.value)}function nt(s,e){return e?j(e)?s.__parseExpression(e):e:"div"}function st(s,e,t){const n=Object.keys(e||{}).reduce((r,o)=>{let a=e[o];return j(a)?a=t.__parseExpression(a):O(a)&&(a=t.__parseFunction(a)),r[o]=a,r},{});return n.ref=t.__ref(s,n.ref),n}function rt(s,e,t){const n=["passive","capture","once"],r={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],l=Y(i.modifiers),c=l.find(p=>n.includes(p)),m="on"+u.upperFirst(a)+(c&&r[c]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=s.withModifiers(d,l)),o},{})}function Y(s={},e=!1){const t=Object.keys(s);return e?t.map(n=>"."+n):t}function ot(s,e,t,n,r){const{children:o}=e,a=it(e,n),i=n.$slots?.[a.name];return i?i(t):o?u.isString(o)?s.createTextVNode(o):j(o)?s.createTextVNode(V(n.__parseExpression(o))):Array.isArray(o)?o.map(l=>M(l,n,s,r)):null:null}function it(s,e){const{props:t}=s,n=t?.name||"default";return{name:j(n)?e.__parseExpression(n):n,params:[]}}function at(s,e){return e.__parseExpression(s.value)?{}:{display:"none"}}function ct(s,e,t){const n={type:"JSFunction",value:e.value?.value?`(v) => {
|
9
9
|
${e.value.value} = v;
|
10
|
-
}`:"(v) => {}"},r=t.__parseFunction(n),o=Y(e.modifiers),a=j(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:o.length&&r?s.withModifiers(r,o):r}}function lt(s,e,t,n,r){if(!e)return null;if(
|
10
|
+
}`:"(v) => {}"},r=t.__parseFunction(n),o=Y(e.modifiers),a=j(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:o.length&&r?s.withModifiers(r,o):r}}function lt(s,e,t,n,r){if(!e)return null;if(u.isString(e))return{default:()=>e};if(j(e))return{default:()=>V(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=ut(e),a=i=>!i||!r?{}:r?.id&&Object.keys(i).length?{[`scope_${r.id}`]:i}:{};return Object.entries(o).reduce((i,[l,{nodes:c,params:m}])=>(i[l]=d=>{const p=m.length?u.pick(d??{},m):a(d);return c.map(v=>M(v,t.__clone(p),s,n))},i),{})}return null}function ut(s){const e={default:{params:[],nodes:[]}};for(const t of s){const n=dt(t.slot),r=n.name;e[r]?(e[r].nodes.push(t),e[r].params=e[r].params.concat(n.params)):e[r]={nodes:[t],params:n.params}}return e}function dt(s="default"){return u.isString(s)?{name:s,params:[]}:{params:[],...s}}function pt(s,e,t){const{value:n,iterator:r}=s,{item:o="item",index:a="index"}=r||{};let i=t.__parseExpression(n)||[];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}))):(console.warn("[vForRender]:",`${n?.value} is not a Arrary`),[])}function ft(s){return f.getCurrentScope()?(f.onScopeDispose(s),!0):!1}function Q(s){return typeof s=="function"?s():f.unref(s)}const be=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ht=s=>s!=null,mt=()=>{};function gt(s){return f.getCurrentInstance()}function vt(...s){if(s.length!==1)return f.toRef(...s);const e=s[0];return typeof e=="function"?f.readonly(f.customRef(()=>({get:e,set:mt}))):f.ref(e)}function yt(s,e){gt()&&f.onBeforeUnmount(s,e)}const _t=be?window:void 0,wt=be?window.document:void 0;function St(s){var e;const t=Q(s);return(e=t?.$el)!=null?e:t}function Et(){const s=f.ref(!1),e=f.getCurrentInstance();return e&&f.onMounted(()=>{s.value=!0},e),s}function jt(s){const e=Et();return f.computed(()=>(e.value,!!s()))}function bt(s,e,t={}){const{window:n=_t,...r}=t;let o;const a=jt(()=>n&&"MutationObserver"in n),i=()=>{o&&(o.disconnect(),o=void 0)},l=f.computed(()=>{const p=Q(s),v=(Array.isArray(p)?p:[p]).map(St).filter(ht);return new Set(v)}),c=f.watch(()=>l.value,p=>{i(),a.value&&p.size&&(o=new MutationObserver(e),p.forEach(v=>o.observe(v,r)))},{immediate:!0,flush:"post"}),m=()=>o?.takeRecords(),d=()=>{c(),i()};return ft(d),{isSupported:a,stop:d,takeRecords:m}}function $t(s=null,e={}){var t,n,r;const{document:o=wt,restoreOnUnmount:a=d=>d}=e,i=(t=o?.title)!=null?t:"",l=vt((n=s??o?.title)!=null?n:null),c=s&&typeof s=="function";function m(d){if(!("titleTemplate"in e))return d;const p=e.titleTemplate||"%s";return typeof p=="function"?p(d):Q(p).replace(/%s/g,d)}return f.watch(l,(d,p)=>{d!==p&&o&&(o.title=m(typeof d=="string"?d:""))},{immediate:!0}),e.observe&&!e.titleTemplate&&o&&!c&&bt((r=o.head)==null?void 0:r.querySelector("title"),()=>{o&&o.title!==l.value&&(l.value=m(o.title))},{childList:!0}),yt(()=>{if(a){const d=a(i,l.value||"");d!=null&&o&&(o.title=d)}}),l}const ne=f.defineComponent({name:"VtjPageContainer",async setup(){const s=Z(),e=se.useRoute(),t=e.params.id,n=t?s.getPage(t):s.getHomepage(),r=n?await s.getRenderComponent(n.id):null;return n&&(Object.assign(e.meta,n.meta||{}),$t(n.title||"VTJ")),{provider:s,component:r,file:n,query:e.query,meta:n?.meta}},render(){const{component:s,query:e}=this;return s?f.h(s,e):f.h("div","页面不存在")}}),Pt={"data-l-h6o7ki7":"",class:"vtj-startup__wrapper"},Ct={"data-l-h6o7ki7":"",class:"vtj-startup"},Rt={"data-l-h6o7ki7":"",class:"vtj-startup__name"},xt={"data-l-h6o7ki7":""},kt={"data-l-h6o7ki7":"",class:"vtj-startup__tagline"},At={"data-l-h6o7ki7":"",class:"vtj-startup__actions"},$e=f.defineComponent({__name:"Startup",props:{name:{default:"VTJ.PRO"},tagline:{default:"基于 Vue3 + TypeScript 快速打造高生产力的低代码研发平台"},actionText:{default:"开始设计"}},setup(s){((r,o)=>{let a=document.getElementById("h6o7ki7");a||(a=document.createElement("style"),a.id="h6o7ki7",document.head.appendChild(a),a.innerHTML=o)})("h6o7ki7",`
|
11
11
|
.vtj-startup[data-l-h6o7ki7]{
|
12
12
|
padding: 20px;
|
13
13
|
border-radius: 4px;
|
@@ -72,4 +72,4 @@
|
|
72
72
|
}
|
73
73
|
.vtj-startup__actions button[data-l-h6o7ki7]:hover{
|
74
74
|
opacity: 0.7;
|
75
|
-
}`);const t=s,n=()=>{if(typeof window<"u"){let o=(window.__VTJ_LINK__||{}).href||window.location.pathname+"__vtj__/#/";window.location.href=o}};return(r,o)=>(p.openBlock(),p.createElementBlock("div",$t,[p.createElementVNode("div",Ct,[p.createElementVNode("h1",Rt,[p.createElementVNode("span",xt,p.toDisplayString(t.name),1)]),p.createElementVNode("div",kt,p.toDisplayString(t.tagline),1),p.createElementVNode("div",At,[p.createElementVNode("button",{"data-l-h6o7ki7":"",onClick:n},p.toDisplayString(t.actionText),1)])])]))}}),Ft=p.defineComponent({name:"VtjStartupContainer",render(){return p.h(Pe)}}),X=Symbol("Provider");var $e=(s=>(s.Production="production",s.Development="development",s))($e||{});class Ce extends b.Base{constructor(e){super(),this.options=e;const{service:t,mode:n=y.Raw,dependencies:r,materials:o,project:a,adapter:i={},globals:u={},modules:c={},router:m=null,materialPath:f="./",nodeEnv:d="development"}=e;this.mode=n,this.modules=c,this.service=t,this.router=m,this.materialPath=f,this.nodeEnv=d,r&&(this.dependencies=r),o&&(this.materials=o),Object.assign(this.globals,u),Object.assign(this.adapter,i);const{access:g,request:h}=this.adapter;g&&g.connect({mode:n,router:m,request:h}),a&&a.id&&n!==y.Design&&this.load(a)}mode;globals={};modules={};adapter={request:Je,jsonp:l.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};async load(e){if(!e.id)return;const t=this.modules[`.vtj/projects/${e.id}.json`];if(this.project=t?await t():await this.service.init(e),!this.project)throw new Error("project is null");const{apis:n=[],meta:r=[]}=this.project,o=window;o.CKEDITOR_VERSION=void 0,this.nodeEnv!=="production"?await this.loadAssets(o):await this.loadDependencies(o),this.apis=ve(n,r,this.adapter),K(),this.project.config?.mock&&ye(n),this.initRouter(),this.triggerReady()}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[n,r]of t)e[n]||(e[n]=await r())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:n,library:r,components:o,materialPath:a,nodeEnv:i}=this,{libraryExports:u,libraryMap:c,materials:m,materialExports:f,materialMapLibrary:d}=ce(t,a,i==="development");for(const h of u){const v=n[h],E=e[h];if(E)r[h]=E;else if(v)e[h]=r[h]=await v();else{const _=c[h]||[];for(const w of _)N(w)&&await ue(h,l.url.append(w,{v:C})),U(w)&&await l.loadScript(l.url.append(w,{v:C}));r[h]=e[h]}}for(const h of m)await l.loadScript(l.url.append(h,{v:C}));const g=this.materials||{};for(const h of f){const v=e[d[h]],E=b.BUILT_IN_COMPONENTS[h];if(E)v&&E.forEach(_=>{o[_]=v[_]});else{const _=g[h]?(await g[h]()).default:e[h];_&&v&&(_.components||[]).forEach(w=>{o[w.name]=le(w,v)})}}}initRouter(){const{router:e,project:t,options:n}=this;if(!e)return;const{routeParentName:r,pageRouteName:o="page",routeMeta:a}=n,i=r?"":"/",u={path:`${i}${o}/:id`,name:R,component:ne},c={path:i,name:A,component:t?.homepage?ne:Ft,meta:a};e.hasRoute(R)&&e.removeRoute(R),e.hasRoute(A)&&e.removeRoute(A),r?(e.addRoute(r,u),e.addRoute(r,c)):(e.addRoute(u),e.addRoute(c))}install(e){const t=e.config.globalProperties.installed||{};for(const[n,r]of Object.entries(this.library))!t[n]&&fe(r)&&(e.use(r),t[n]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),e.provide(X,this),e.config.globalProperties.installed=t,this.mode===y.Design&&(e.config.errorHandler=(n,r,o)=>{const a=r?.$options.name,i=typeof n=="string"?n:n?.message||n?.msg||"未知错误",u=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:n,instance:r,info:o},n?.stack),F.ElNotification.error({title:"未处理的异常:请在控制台查看详情",message:u})})}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(n=>n.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},n=(r,o=[])=>{for(const a of o){if(a.id===r)return a;if(a.children&&a.children.length){const i=n(r,a.children);if(i)return i}}};return n(e,t)||null}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const t=this.modules[`.vtj/files/${e}.json`];return t?await t():this.service.getFile(e).catch(()=>null)}async getDslByUrl(e){const t=this.urlDslCaches[e];return t||(this.urlDslCaches[e]=this.adapter.request.send({url:e,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(n=>n.data).catch(()=>null))}createDslRenderer(e,t={}){const{library:n,components:r,mode:o,apis:a}=this,i={mode:o,Vue:n.Vue,components:r,libs:n,apis:a,window,...t},u=D({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return I({...i,dsl:e,loader:u})}async getRenderComponent(e,t){const n=this.getFile(e);if(!n)return l.logger.warn(`Can not find file: ${e}`),null;t&&t(n);const r=`.vtj/vue/${e}.vue`,o=this.modules[r];if(o)return(await o())?.default;const a=await this.getDsl(n.id);return a?this.createDslRenderer(a).renderer:(l.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return p.defineAsyncComponent(async()=>{const n=await this.getDslByUrl(e);return n?(n.name=t||n.name,this.createDslRenderer(n).renderer):null})}definePluginComponent(e){return p.defineAsyncComponent(async()=>await G(e,window))}}function Ot(s){const e=new Ce(s);return{provider:e,onReady:n=>e.ready(n)}}function Z(s={}){const e=p.inject(X);if(!e)throw new Error("Can not find provider");if(e.nodeEnv==="development"){const{id:t,version:n}=s;t&&n&&(async()=>{const r=await e.getDsl(t);r?.__VERSION__!==n&&F.ElNotification.warning({title:r?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const ee=new l.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:s=>s.data?.code===0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})}}}),Mt=(s="/__vtj__/api/:type.json")=>(e,t)=>ee.send({url:s,method:"post",params:{type:e},data:{type:e,data:t}}),Tt=(s="/__vtj__/api/uploader.json")=>async(e,t)=>await ee.send({url:s,method:"post",data:{files:e,projectId:t},settings:{type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);class B{api;pluginCaches={};uploader;constructor(){this.api=Mt(),this.uploader=Tt()}async getExtension(){console.log("BaseService.getExtension")}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e){return!!await this.api("saveProject",e).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 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,n=t.filter(o=>ie(o))[0];if(!n)return null;const r=this.pluginCaches[n];return r||(this.pluginCaches[n]=ee.send({url:n,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}}const S=new l.Storage({type:"local",expired:0,prefix:"__VTJ_"});class It extends B{init(e){const t=new b.ProjectModel(e),n=S.get(`project_${t.id}`),r=Object.assign(t.toDsl(),n||{});return S.save(`project_${t.id}`,r),Promise.resolve(r)}saveProject(e){const t=new b.ProjectModel(e);return S.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return S.save(`materials_${e.id}`,l.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return S.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=S.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return S.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return S.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=S.get(`history_${e}`);if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),S.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=S.get(`history_${e}`),n=new b.HistoryModel(t||{id:e});return Promise.resolve(n.toDsl())}getHistoryItem(e,t){const n=S.get(`history_${e}_${t}`);return Promise.resolve(n)}saveHistoryItem(e,t){return S.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{S.remove(`history_${e}_${n}`)}),Promise.resolve(!0)}}class Re extends B{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new b.ProjectModel(e),n=this.projects[t.id]||{},r=Object.assign(t.toDsl(),n);return this.projects[r.id]=r,Promise.resolve(r)}saveProject(e){const t=new b.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=l.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return this.files[e.id]=e,Promise.resolve(!0)}getFile(e){const t=this.files[e];return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return delete this.files[e],Promise.resolve(!0)}saveHistory(e){return this.histories[e.id]=e,Promise.resolve(!0)}removeHistory(e){const t=this.histories[e];if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],n=new b.HistoryModel(t||{id:e});return Promise.resolve(n)}getHistoryItem(e,t){const n=`${e}_${t}`,r=this.historyItems[n]||{};return Promise.resolve(r)}saveHistoryItem(e,t){const n=`${e}_${t.id}`;return this.historyItems[n]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{const r=`${e}_${n}`;delete this.historyItems[r]}),Promise.resolve(!0)}}let T=null;function Dt(){return T||(T=new Re,T)}class Ht extends B{getFileCaches={};async getExtension(){return await this.api("getExtension",{}).catch(()=>{})}async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:l.mapToObject(t)}).catch(()=>!1)}async saveFile(e){return!!await this.api("saveFile",e).catch(()=>!1)}async getFile(e){const t=this.getFileCaches[e];return t||(this.getFileCaches[e]=this.api("getFile",e).catch(()=>null)).finally(()=>{delete this.getFileCaches[e]})}async removeFile(e){return!!await this.api("removeFile",e).catch(()=>!1)}async saveHistory(e){return!!await this.api("saveHistory",e).catch(()=>!1)}async removeHistory(e){return!!await this.api("removeHistory",e).catch(()=>!1)}async getHistory(e){return await this.api("getHistory",e).catch(()=>null)||{}}async getHistoryItem(e,t){return await this.api("getHistoryItem",{fId:e,id:t}).catch(()=>null)||{}}async saveHistoryItem(e,t){return!!await this.api("saveHistoryItem",{fId:e,item:t}).catch(()=>!1)}async removeHistoryItem(e,t){return!!await this.api("removeHistoryItem",{fId:e,ids:t}).catch(()=>!1)}}function xe(s,e=[]){return e.map(t=>{const{id:n,title:r,icon:o,children:a,hidden:i}=t;return{id:n,title:r,icon:o,hidden:i,url:`${s}/${n}`,children:a&&a.length?xe(s,a):void 0}})}function ke(s,e){if(!e)return s;let t=[];for(const n of s)if(n.children&&n.children.length){const r=ke(n.children,e);r.length&&(n.children=r,t.push(n))}else e.can(n.id.toString())&&t.push(n);return t}function Nt(s){const{menuBasePath:e="/page"}=s||{},t=Z(),n=se.useRoute(),r=we(),o=p.ref(!1),a=p.ref(!1),i=t.project;p.watchEffect(()=>{const{name:m,params:f,meta:d}=n;if(m===R){const g=t.getPage(f.id);o.value=!g?.mask,a.value=!!g?.pure}else if(m===A){const g=t.getHomepage();o.value=!g?.mask,a.value=!!g?.pure}else o.value=!d.mask,a.value=!!d.pure});const u=xe(e,i?.pages),c=i?.config;return{disabled:o,logo:c?.logo,themeSwitchable:c?.themeSwitchable,title:c?.title||i?.description||i?.name||"VTJ App",menus:ke(u,r),pure:a}}exports.ACCESS_KEY=W;exports.Access=Ve;exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=B;exports.CONTEXT_HOST=J;exports.Context=Se;exports.ContextMode=y;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=A;exports.JSCodeToString=Le;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Ht;exports.MemoryService=Re;exports.NodeEnv=$e;exports.PAGE_ROUTE_NAME=R;exports.Provider=Ce;exports.Startup=Pe;exports.StorageService=It;exports.VTJ_RENDERER_VERSION=C;exports.adoptedStyleSheets=z;exports.createAssetScripts=Ue;exports.createAssetsCss=Be;exports.createDataSources=Ee;exports.createLoader=D;exports.createMemoryService=Dt;exports.createMetaApi=ge;exports.createProvider=Ot;exports.createRenderer=I;exports.createSchemaApi=me;exports.createSchemaApis=ve;exports.defaultLoader=je;exports.fillBasePath=k;exports.getModifiers=Y;exports.getPlugin=G;exports.getRawComponent=le;exports.isCSSUrl=N;exports.isJSCode=he;exports.isJSExpression=j;exports.isJSFunction=M;exports.isJSON=ie;exports.isJSUrl=U;exports.isVuePlugin=fe;exports.loadCss=ue;exports.loadCssUrl=de;exports.loadScriptUrl=pe;exports.mockApi=_e;exports.mockApis=ye;exports.mockCleanup=K;exports.nodeRender=O;exports.parseDeps=ce;exports.parseExpression=x;exports.parseFunction=q;exports.providerKey=X;exports.removeProdFlag=ae;exports.toString=V;exports.useAccess=we;exports.useMask=Nt;exports.useProvider=Z;
|
75
|
+
}`);const t=s,n=()=>{if(typeof window<"u"){let o=(window.__VTJ_LINK__||{}).href||window.location.pathname+"__vtj__/#/";window.location.href=o}};return(r,o)=>(f.openBlock(),f.createElementBlock("div",Pt,[f.createElementVNode("div",Ct,[f.createElementVNode("h1",Rt,[f.createElementVNode("span",xt,f.toDisplayString(t.name),1)]),f.createElementVNode("div",kt,f.toDisplayString(t.tagline),1),f.createElementVNode("div",At,[f.createElementVNode("button",{"data-l-h6o7ki7":"",onClick:n},f.toDisplayString(t.actionText),1)])])]))}}),Ft=f.defineComponent({name:"VtjStartupContainer",render(){return f.h($e)}}),X=Symbol("Provider");var Pe=(s=>(s.Production="production",s.Development="development",s))(Pe||{});class Ce extends b.Base{constructor(e){super(),this.options=e;const{service:t,mode:n=y.Raw,dependencies:r,materials:o,project:a,adapter:i={},globals:l={},modules:c={},router:m=null,materialPath:d="./",nodeEnv:p="development"}=e;this.mode=n,this.modules=c,this.service=t,this.router=m,this.materialPath=d,this.nodeEnv=p,r&&(this.dependencies=r),o&&(this.materials=o),Object.assign(this.globals,l),Object.assign(this.adapter,i);const{access:v,request:h}=this.adapter;v&&v.connect({mode:n,router:m,request:h}),a&&a.id&&n!==y.Design&&this.load(a)}mode;globals={};modules={};adapter={request:Je,jsonp:u.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};async load(e){if(!e.id)return;const t=this.modules[`.vtj/projects/${e.id}.json`];if(this.project=t?await t():await this.service.init(e),!this.project)throw new Error("project is null");const{apis:n=[],meta:r=[]}=this.project,o=window;o.CKEDITOR_VERSION=void 0,this.nodeEnv!=="production"?await this.loadAssets(o):await this.loadDependencies(o),this.apis=ve(n,r,this.adapter),K(),this.project.config?.mock&&ye(n),this.initRouter(),this.triggerReady()}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[n,r]of t)e[n]||(e[n]=await r())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:n,library:r,components:o,materialPath:a,nodeEnv:i}=this,{libraryExports:l,libraryMap:c,materials:m,materialExports:d,materialMapLibrary:p}=ce(t,a,i==="development");for(const h of l){const g=n[h],E=e[h];if(E)r[h]=E;else if(g)e[h]=r[h]=await g();else{const _=c[h]||[];for(const w of _)N(w)&&await ue(h,u.url.append(w,{v:C})),U(w)&&await u.loadScript(u.url.append(w,{v:C}));r[h]=e[h]}}for(const h of m)await u.loadScript(u.url.append(h,{v:C}));const v=this.materials||{};for(const h of d){const g=e[p[h]],E=b.BUILT_IN_COMPONENTS[h];if(E)g&&E.forEach(_=>{o[_]=g[_]});else{const _=v[h]?(await v[h]()).default:e[h];_&&g&&(_.components||[]).forEach(w=>{o[w.name]=le(w,g)})}}}initRouter(){const{router:e,project:t,options:n}=this;if(!e)return;const{routeAppendTo:r,pageRouteName:o="page",routeMeta:a}=n,i=r?"":"/",l={path:`${i}${o}/:id`,name:R,component:ne},c={path:i,name:A,component:t?.homepage?ne:Ft,meta:a};e.hasRoute(R)&&e.removeRoute(R),e.hasRoute(A)&&e.removeRoute(A),r?(e.addRoute(r,l),e.addRoute(r,c)):(e.addRoute(l),e.addRoute(c))}install(e){const t=e.config.globalProperties.installed||{};for(const[n,r]of Object.entries(this.library))!t[n]&&fe(r)&&(e.use(r),t[n]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),e.provide(X,this),e.config.globalProperties.installed=t,this.mode===y.Design&&(e.config.errorHandler=(n,r,o)=>{const a=r?.$options.name,i=typeof n=="string"?n:n?.message||n?.msg||"未知错误",l=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:n,instance:r,info:o},n?.stack),F.ElNotification.error({title:"未处理的异常:请在控制台查看详情",message:l})})}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(n=>n.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},n=(r,o=[])=>{for(const a of o){if(a.id===r)return a;if(a.children&&a.children.length){const i=n(r,a.children);if(i)return i}}};return n(e,t)||null}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const t=this.modules[`.vtj/files/${e}.json`];return t?await t():this.service.getFile(e).catch(()=>null)}async getDslByUrl(e){const t=this.urlDslCaches[e];return t||(this.urlDslCaches[e]=this.adapter.request.send({url:e,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(n=>n.data).catch(()=>null))}createDslRenderer(e,t={}){const{library:n,components:r,mode:o,apis:a}=this,i={mode:o,Vue:n.Vue,components:r,libs:n,apis:a,window,...t},l=D({getDsl:async c=>await this.getDsl(c)||null,getDslByUrl:async c=>await this.getDslByUrl(c)||null,options:i});return I({...i,dsl:e,loader:l})}async getRenderComponent(e,t){const n=this.getFile(e);if(!n)return u.logger.warn(`Can not find file: ${e}`),null;t&&t(n);const r=`.vtj/vue/${e}.vue`,o=this.modules[r];if(o)return(await o())?.default;const a=await this.getDsl(n.id);return a?this.createDslRenderer(a).renderer:(u.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return f.defineAsyncComponent(async()=>{const n=await this.getDslByUrl(e);return n?(n.name=t||n.name,this.createDslRenderer(n).renderer):null})}definePluginComponent(e){return f.defineAsyncComponent(async()=>await G(e,window))}}function Mt(s){const e=new Ce(s);return{provider:e,onReady:n=>e.ready(n)}}function Z(s={}){const e=f.inject(X);if(!e)throw new Error("Can not find provider");if(e.nodeEnv==="development"){const{id:t,version:n}=s;t&&n&&(async()=>{const r=await e.getDsl(t);r?.__VERSION__!==n&&F.ElNotification.warning({title:r?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const ee=new u.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:s=>s.data?.code===0,showError:s=>{F.ElNotification.error({message:s||"未知错误"})}}}),Ot=(s="/__vtj__/api/:type.json")=>(e,t)=>ee.send({url:s,method:"post",params:{type:e},data:{type:e,data:t}}),Tt=(s="/__vtj__/api/uploader.json")=>async(e,t)=>await ee.send({url:s,method:"post",data:{files:e,projectId:t},settings:{type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);class B{api;pluginCaches={};uploader;constructor(){this.api=Ot(),this.uploader=Tt()}async getExtension(){console.log("BaseService.getExtension")}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e){return!!await this.api("saveProject",e).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 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,n=t.filter(o=>ie(o))[0];if(!n)return null;const r=this.pluginCaches[n];return r||(this.pluginCaches[n]=ee.send({url:n,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}}const S=new u.Storage({type:"local",expired:0,prefix:"__VTJ_"});class It extends B{init(e){const t=new b.ProjectModel(e),n=S.get(`project_${t.id}`),r=Object.assign(t.toDsl(),n||{});return S.save(`project_${t.id}`,r),Promise.resolve(r)}saveProject(e){const t=new b.ProjectModel(e);return S.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return S.save(`materials_${e.id}`,u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return S.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=S.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return S.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return S.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=S.get(`history_${e}`);if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),S.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=S.get(`history_${e}`),n=new b.HistoryModel(t||{id:e});return Promise.resolve(n.toDsl())}getHistoryItem(e,t){const n=S.get(`history_${e}_${t}`);return Promise.resolve(n)}saveHistoryItem(e,t){return S.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{S.remove(`history_${e}_${n}`)}),Promise.resolve(!0)}}class Re extends B{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new b.ProjectModel(e),n=this.projects[t.id]||{},r=Object.assign(t.toDsl(),n);return this.projects[r.id]=r,Promise.resolve(r)}saveProject(e){const t=new b.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=u.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return this.files[e.id]=e,Promise.resolve(!0)}getFile(e){const t=this.files[e];return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return delete this.files[e],Promise.resolve(!0)}saveHistory(e){return this.histories[e.id]=e,Promise.resolve(!0)}removeHistory(e){const t=this.histories[e];if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],n=new b.HistoryModel(t||{id:e});return Promise.resolve(n)}getHistoryItem(e,t){const n=`${e}_${t}`,r=this.historyItems[n]||{};return Promise.resolve(r)}saveHistoryItem(e,t){const n=`${e}_${t.id}`;return this.historyItems[n]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{const r=`${e}_${n}`;delete this.historyItems[r]}),Promise.resolve(!0)}}let T=null;function Dt(){return T||(T=new Re,T)}class Ht extends B{getFileCaches={};async getExtension(){return await this.api("getExtension",{}).catch(()=>{})}async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:u.mapToObject(t)}).catch(()=>!1)}async saveFile(e){return!!await this.api("saveFile",e).catch(()=>!1)}async getFile(e){const t=this.getFileCaches[e];return t||(this.getFileCaches[e]=this.api("getFile",e).catch(()=>null)).finally(()=>{delete this.getFileCaches[e]})}async removeFile(e){return!!await this.api("removeFile",e).catch(()=>!1)}async saveHistory(e){return!!await this.api("saveHistory",e).catch(()=>!1)}async removeHistory(e){return!!await this.api("removeHistory",e).catch(()=>!1)}async getHistory(e){return await this.api("getHistory",e).catch(()=>null)||{}}async getHistoryItem(e,t){return await this.api("getHistoryItem",{fId:e,id:t}).catch(()=>null)||{}}async saveHistoryItem(e,t){return!!await this.api("saveHistoryItem",{fId:e,item:t}).catch(()=>!1)}async removeHistoryItem(e,t){return!!await this.api("removeHistoryItem",{fId:e,ids:t}).catch(()=>!1)}}function xe(s,e,t=[]){return t.map(n=>{const{id:r,title:o,icon:a,children:i,hidden:l}=n;return{id:r,title:o,icon:a,hidden:l,url:`${s}/${e}/${r}`,children:i&&i.length?xe(s,e,i):void 0}})}function ke(s,e){if(!e)return s;let t=[];for(const n of s)if(n.children&&n.children.length){const r=ke(n.children,e);r.length&&(n.children=r,t.push(n))}else e.can(n.id.toString())&&t.push(n);return t}function Nt(s){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:n=!1}=s||{},r=Z(),o=se.useRoute(),a=we(),i=f.ref(!1),l=f.ref(!1),c=r.project;f.watchEffect(()=>{const{name:p,params:v,meta:h}=o;if(p===R){const g=r.getPage(v.id);i.value=!g?.mask,l.value=!!g?.pure}else if(p===A){const g=r.getHomepage();i.value=!g?.mask,l.value=!!g?.pure}else i.value=!h.mask,l.value=!!h.pure});const m=xe(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:n?m:ke(m,a),pure:l}}exports.ACCESS_KEY=W;exports.Access=Ve;exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=B;exports.CONTEXT_HOST=J;exports.Context=Se;exports.ContextMode=y;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=A;exports.JSCodeToString=Le;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Ht;exports.MemoryService=Re;exports.NodeEnv=Pe;exports.PAGE_ROUTE_NAME=R;exports.Provider=Ce;exports.Startup=$e;exports.StorageService=It;exports.VTJ_RENDERER_VERSION=C;exports.adoptedStyleSheets=z;exports.createAssetScripts=Ue;exports.createAssetsCss=Be;exports.createDataSources=Ee;exports.createLoader=D;exports.createMemoryService=Dt;exports.createMetaApi=ge;exports.createProvider=Mt;exports.createRenderer=I;exports.createSchemaApi=me;exports.createSchemaApis=ve;exports.defaultLoader=je;exports.fillBasePath=k;exports.getModifiers=Y;exports.getPlugin=G;exports.getRawComponent=le;exports.isCSSUrl=N;exports.isJSCode=he;exports.isJSExpression=j;exports.isJSFunction=O;exports.isJSON=ie;exports.isJSUrl=U;exports.isVuePlugin=fe;exports.loadCss=ue;exports.loadCssUrl=de;exports.loadScriptUrl=pe;exports.mockApi=_e;exports.mockApis=ye;exports.mockCleanup=K;exports.nodeRender=M;exports.parseDeps=ce;exports.parseExpression=x;exports.parseFunction=q;exports.providerKey=X;exports.removeProdFlag=ae;exports.toString=V;exports.useAccess=we;exports.useMask=Nt;exports.useProvider=Z;
|
package/dist/index.mjs
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
import { Base as
|
2
|
-
import { isUrl as ke, url as
|
1
|
+
import { Base as Pe, BUILT_IN_COMPONENTS as xe, ProjectModel as O, HistoryModel as le } from "@vtj/core";
|
2
|
+
import { isUrl as ke, url as P, dedupArray as Ce, isString as $, isFunction as V, logger as M, createRequest as Fe, merge as Ae, pathToRegexp as Ie, pathToRegexpMatch as Oe, formDataToJson as Me, storage as U, cookie as L, toArray as se, unRSA as ne, delay as ue, camelCase as j, upperFirst as Te, pick as De, jsonp as He, loadScript as re, Request as Be, Storage as Ne, mapToObject as G } from "@vtj/utils";
|
3
3
|
import * as H from "vue";
|
4
|
-
import { inject as de, toRef as
|
4
|
+
import { inject as de, toRef as Ue, readonly as Le, customRef as qe, ref as T, onBeforeUnmount as Je, getCurrentScope as Ve, onScopeDispose as ze, unref as Ke, getCurrentInstance as pe, watch as fe, computed as he, onMounted as We, defineComponent as Y, h as z, openBlock as Ge, createElementBlock as Ye, createElementVNode as b, toDisplayString as q, defineAsyncComponent as oe, watchEffect as Qe } from "vue";
|
5
5
|
import { ElNotification as B, ElLoading as Xe } from "element-plus";
|
6
6
|
import { useRoute as me } from "vue-router";
|
7
7
|
/**!
|
8
8
|
* Copyright (c) 2024, VTJ.PRO All rights reserved.
|
9
9
|
* @name @vtj/renderer
|
10
10
|
* @author CHC chenhuachun1549@dingtalk.com
|
11
|
-
* @version 0.9.0-alpha.
|
11
|
+
* @version 0.9.0-alpha.19
|
12
12
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
13
13
|
*/
|
14
|
-
const x = "0.9.0-alpha.
|
14
|
+
const x = "0.9.0-alpha.19";
|
15
15
|
var _ = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(_ || {});
|
16
16
|
const ie = [
|
17
17
|
"$el",
|
@@ -62,24 +62,24 @@ function tt(n) {
|
|
62
62
|
}
|
63
63
|
function ws(n) {
|
64
64
|
return n.map(
|
65
|
-
(e) => `<script src="${
|
65
|
+
(e) => `<script src="${P.append(e, { v: x })}"><\/script>`
|
66
66
|
).join("");
|
67
67
|
}
|
68
68
|
function Ss(n = []) {
|
69
69
|
return n.map(
|
70
|
-
(e) => `<link rel="stylesheet" href="${
|
70
|
+
(e) => `<link rel="stylesheet" href="${P.append(e, { v: x })}" />`
|
71
71
|
).join("");
|
72
72
|
}
|
73
73
|
function st(n, e = !1) {
|
74
74
|
return e && n.endsWith(".prod.js") ? n.replace(".prod.js", ".js") : n;
|
75
75
|
}
|
76
76
|
function nt(n, e, t = !1) {
|
77
|
-
const s = n.filter((
|
77
|
+
const s = n.filter((d) => !!d.enabled), r = [], o = [], a = [], i = [], l = {}, c = {}, f = [], u = {};
|
78
78
|
return s.forEach(
|
79
|
-
({ urls:
|
80
|
-
|
79
|
+
({ urls: d, assetsUrl: m, library: p, assetsLibrary: h, localeLibrary: w }) => {
|
80
|
+
d?.forEach((g) => {
|
81
81
|
X(g) && r.push(st(g, t)), Q(g) && o.push(g);
|
82
|
-
}), p && (i.push(p), l[p] = F(
|
82
|
+
}), p && (i.push(p), l[p] = F(d || [], e), w && (c[p] = w)), m && a.push(m), h && f.push(h), p && h && (u[h] = p);
|
83
83
|
}
|
84
84
|
), {
|
85
85
|
scripts: F(r, e),
|
@@ -87,7 +87,7 @@ function nt(n, e, t = !1) {
|
|
87
87
|
materials: F(a, e),
|
88
88
|
libraryExports: i,
|
89
89
|
materialExports: Ce(f),
|
90
|
-
materialMapLibrary:
|
90
|
+
materialMapLibrary: u,
|
91
91
|
libraryMap: l,
|
92
92
|
libraryLocaleMap: c
|
93
93
|
};
|
@@ -171,11 +171,11 @@ function ae(n, e, t = !1, s = !1) {
|
|
171
171
|
function S(n) {
|
172
172
|
return n && n.type === "JSExpression";
|
173
173
|
}
|
174
|
-
function
|
174
|
+
function N(n) {
|
175
175
|
return typeof n == "object" && n && n.type === "JSFunction";
|
176
176
|
}
|
177
177
|
function lt(n) {
|
178
|
-
return S(n) ||
|
178
|
+
return S(n) || N(n);
|
179
179
|
}
|
180
180
|
function $s(n) {
|
181
181
|
return lt(n) ? n.value : JSON.stringify(n);
|
@@ -206,7 +206,7 @@ const ut = Fe({
|
|
206
206
|
}
|
207
207
|
}
|
208
208
|
});
|
209
|
-
let
|
209
|
+
let R;
|
210
210
|
function dt(n, e) {
|
211
211
|
const { jsonp: t, request: s } = e;
|
212
212
|
if (n.method === "jsonp")
|
@@ -247,9 +247,9 @@ function ft(n = [], e = [], t) {
|
|
247
247
|
return s;
|
248
248
|
}
|
249
249
|
async function ht(n = []) {
|
250
|
-
|
250
|
+
R = await import("mockjs").then((e) => e.default || e), R && (R.setup({
|
251
251
|
timeout: "50-500"
|
252
|
-
}), ye(), n.forEach((e) => mt(
|
252
|
+
}), ye(), n.forEach((e) => mt(R, e)));
|
253
253
|
}
|
254
254
|
function mt(n, e) {
|
255
255
|
if (!e.mock) return;
|
@@ -257,13 +257,13 @@ function mt(n, e) {
|
|
257
257
|
if (t && s) {
|
258
258
|
const r = Ie(`${t}(.*)`), o = Oe(t, { decode: decodeURIComponent }), a = C(s, {}, !0);
|
259
259
|
n.mock(r, (i) => {
|
260
|
-
const l =
|
260
|
+
const l = P.parse(i.url) || {}, c = i.body instanceof FormData ? Me(i.body) : i.body, f = o(i.url)?.params;
|
261
261
|
return Object.assign(i, { data: c, params: l, query: f }), n.mock(a(i));
|
262
262
|
});
|
263
263
|
}
|
264
264
|
}
|
265
265
|
function ye() {
|
266
|
-
|
266
|
+
R && (R._mocked = {});
|
267
267
|
}
|
268
268
|
const gt = {
|
269
269
|
session: !1,
|
@@ -276,7 +276,7 @@ const gt = {
|
|
276
276
|
unauthorizedCode: 401,
|
277
277
|
unauthorizedMessage: "登录已经失效,请重新登录!",
|
278
278
|
noPermissionMessage: "无权限访问该页面",
|
279
|
-
|
279
|
+
appName: ""
|
280
280
|
}, _e = Symbol("access");
|
281
281
|
class js {
|
282
282
|
options;
|
@@ -291,14 +291,14 @@ class js {
|
|
291
291
|
}
|
292
292
|
login(e) {
|
293
293
|
const { storageKey: t, storagePrefix: s, session: r, authKey: o } = this.options;
|
294
|
-
this.setData(e), this.data && (
|
294
|
+
this.setData(e), this.data && (U.save(t, e, {
|
295
295
|
type: "local",
|
296
296
|
prefix: s
|
297
297
|
}), r && L.set(o, this.data.token));
|
298
298
|
}
|
299
299
|
clear() {
|
300
300
|
const { storageKey: e, storagePrefix: t, session: s, authKey: r } = this.options;
|
301
|
-
this.data = null,
|
301
|
+
this.data = null, U.remove(e, {
|
302
302
|
type: "local",
|
303
303
|
prefix: t
|
304
304
|
}), s && L.remove(r);
|
@@ -313,12 +313,12 @@ class js {
|
|
313
313
|
return this.data?.token;
|
314
314
|
}
|
315
315
|
can(e) {
|
316
|
-
const {
|
317
|
-
return typeof e == "function" ? e(s) : se(e).every((o) => s[o] || s[t + o]);
|
316
|
+
const { appName: t } = this.options, { permissions: s = {} } = this.data || {};
|
317
|
+
return typeof e == "function" ? e(s) : se(e).every((o) => s[o] || s[t + "." + o]);
|
318
318
|
}
|
319
319
|
some(e) {
|
320
|
-
const {
|
321
|
-
return se(e).some((o) => s[o] || s[t + o]);
|
320
|
+
const { appName: t } = this.options, { permissions: s = {} } = this.data || {};
|
321
|
+
return se(e).some((o) => s[o] || s[t + "." + o]);
|
322
322
|
}
|
323
323
|
install(e) {
|
324
324
|
e.config.globalProperties.$access || (e.config.globalProperties.$access = this), e.provide(_e, this);
|
@@ -357,7 +357,7 @@ class js {
|
|
357
357
|
this.data = e;
|
358
358
|
}
|
359
359
|
loadData() {
|
360
|
-
const { storageKey: e, storagePrefix: t } = this.options, s =
|
360
|
+
const { storageKey: e, storagePrefix: t } = this.options, s = U.get(e, {
|
361
361
|
type: "local",
|
362
362
|
prefix: t
|
363
363
|
});
|
@@ -541,22 +541,22 @@ function K(n) {
|
|
541
541
|
props: {
|
542
542
|
...wt(i.value.props ?? [], c)
|
543
543
|
},
|
544
|
-
setup(
|
545
|
-
c.$props =
|
544
|
+
setup(u) {
|
545
|
+
c.$props = u, c.props = u, i.value.id && ve(
|
546
546
|
n.window || window,
|
547
547
|
i.value.id,
|
548
548
|
i.value.css || ""
|
549
549
|
), c.state = St(e, i.value.state ?? {}, c);
|
550
|
-
const
|
550
|
+
const d = $t(e, i.value.computed ?? {}, c), m = jt(i.value.methods ?? {}, c), p = bt(e, i.value.inject, c), h = Et(
|
551
551
|
i.value.dataSources || {},
|
552
552
|
c
|
553
553
|
), w = {
|
554
554
|
...p,
|
555
|
-
...
|
556
|
-
...
|
557
|
-
...
|
555
|
+
...d,
|
556
|
+
...m,
|
557
|
+
...h
|
558
558
|
};
|
559
|
-
return c.setup(w, e),
|
559
|
+
return c.setup(w, e), Rt(e, i.value.watch ?? [], c), {
|
560
560
|
vtj: c
|
561
561
|
};
|
562
562
|
},
|
@@ -564,10 +564,10 @@ function K(n) {
|
|
564
564
|
expose: ["vtj"],
|
565
565
|
render() {
|
566
566
|
if (!i.value.nodes) return null;
|
567
|
-
const
|
568
|
-
return
|
567
|
+
const u = i.value.nodes || [];
|
568
|
+
return u.length === 1 ? D(u[0], c, e, a) : u.map((d) => D(d, c, e, a));
|
569
569
|
},
|
570
|
-
...
|
570
|
+
...Pt(i.value.lifeCycles ?? {}, c)
|
571
571
|
});
|
572
572
|
return {
|
573
573
|
renderer: e.markRaw(f),
|
@@ -600,7 +600,7 @@ function St(n, e, t) {
|
|
600
600
|
Object.keys(e || {}).reduce(
|
601
601
|
(s, r) => {
|
602
602
|
let o = e[r];
|
603
|
-
return S(o) ? o = t.__parseExpression(o) :
|
603
|
+
return S(o) ? o = t.__parseExpression(o) : N(o) && (o = t.__parseFunction(o)), s[r] = o, s;
|
604
604
|
},
|
605
605
|
{}
|
606
606
|
)
|
@@ -632,7 +632,7 @@ function bt(n, e = [], t) {
|
|
632
632
|
function Et(n, e) {
|
633
633
|
return Object.keys(n).reduce(
|
634
634
|
(t, s) => {
|
635
|
-
const r = n[s], o = e.$apis[r.ref], a =
|
635
|
+
const r = n[s], o = e.$apis[r.ref], a = N(r.transform) ? r.transform.value ? e.__parseFunction(r.transform) : void 0 : r.transform;
|
636
636
|
return t[s] = async (...i) => {
|
637
637
|
const l = await o.apply(e, i);
|
638
638
|
return a ? a(l) : l;
|
@@ -641,7 +641,7 @@ function Et(n, e) {
|
|
641
641
|
{}
|
642
642
|
);
|
643
643
|
}
|
644
|
-
function
|
644
|
+
function Rt(n, e = [], t) {
|
645
645
|
e.forEach((s) => {
|
646
646
|
n.watch(
|
647
647
|
t.__parseExpression(s.source),
|
@@ -653,7 +653,7 @@ function Pt(n, e = [], t) {
|
|
653
653
|
);
|
654
654
|
});
|
655
655
|
}
|
656
|
-
function
|
656
|
+
function Pt(n, e) {
|
657
657
|
return Object.entries(n ?? {}).reduce(
|
658
658
|
(t, [s, r]) => (t[s] = e.__parseFunction(r), t),
|
659
659
|
{}
|
@@ -701,32 +701,32 @@ function D(n, e, t = H, s = xt) {
|
|
701
701
|
const { id: r = null, directives: o = [] } = n, { vIf: a, vFor: i, vShow: l, vModels: c, vBind: f } = kt(o);
|
702
702
|
if (a && !Ct(a, e))
|
703
703
|
return null;
|
704
|
-
const
|
705
|
-
const
|
704
|
+
const u = (d) => {
|
705
|
+
const m = d.$components, p = (() => {
|
706
706
|
if (n.name === "component")
|
707
|
-
return Ft(
|
707
|
+
return Ft(d, n.props?.is);
|
708
708
|
if (n.name === "slot") return n.name;
|
709
709
|
const v = s(n.name, n.from, t);
|
710
|
-
return $(v) ?
|
711
|
-
})(),
|
710
|
+
return $(v) ? m[v] ?? v : v;
|
711
|
+
})(), h = At(r, n.props ?? {}, d), w = It(t, n.events ?? {}, d);
|
712
712
|
if (n.name === "slot")
|
713
|
-
return Ot(t, n,
|
714
|
-
f && Object.assign(
|
715
|
-
|
716
|
-
Tt(l,
|
713
|
+
return Ot(t, n, h, d, s);
|
714
|
+
f && Object.assign(h, d.__parseExpression(f.value)), l && (h.style = Object.assign(
|
715
|
+
h.style ?? {},
|
716
|
+
Tt(l, d)
|
717
717
|
)), c.forEach((v) => {
|
718
|
-
Object.assign(
|
718
|
+
Object.assign(h, Dt(t, v, d));
|
719
719
|
});
|
720
720
|
const g = Ht(
|
721
721
|
t,
|
722
722
|
n.children ?? [],
|
723
|
-
|
723
|
+
d,
|
724
724
|
s,
|
725
725
|
n
|
726
726
|
);
|
727
|
-
return t.createVNode(p, { ...
|
727
|
+
return t.createVNode(p, { ...h, ...w }, g);
|
728
728
|
};
|
729
|
-
return i ?
|
729
|
+
return i ? Ut(i, u, e) : u(e);
|
730
730
|
}
|
731
731
|
function kt(n = []) {
|
732
732
|
const e = n.find((i) => j(i.name) === "vIf"), t = n.find((i) => j(i.name) === "vFor"), s = n.find((i) => j(i.name) === "vShow"), r = n.find((i) => j(i.name) === "vBind"), o = n.filter((i) => j(i.name) === "vModel"), a = n.filter(
|
@@ -751,7 +751,7 @@ function At(n, e, t) {
|
|
751
751
|
const s = Object.keys(e || {}).reduce(
|
752
752
|
(r, o) => {
|
753
753
|
let a = e[o];
|
754
|
-
return S(a) ? a = t.__parseExpression(a) :
|
754
|
+
return S(a) ? a = t.__parseExpression(a) : N(a) && (a = t.__parseFunction(a)), r[o] = a, r;
|
755
755
|
},
|
756
756
|
{}
|
757
757
|
);
|
@@ -765,8 +765,8 @@ function It(n, e, t) {
|
|
765
765
|
};
|
766
766
|
return Object.keys(e || {}).reduce(
|
767
767
|
(o, a) => {
|
768
|
-
const i = e[a], l = Se(i.modifiers), c = l.find((
|
769
|
-
return
|
768
|
+
const i = e[a], l = Se(i.modifiers), c = l.find((d) => s.includes(d)), f = "on" + Te(a) + (c && r[c] || ""), u = t.__parseFunction(i.handler);
|
769
|
+
return u && (o[f] = n.withModifiers(u, l)), o;
|
770
770
|
},
|
771
771
|
{}
|
772
772
|
);
|
@@ -819,10 +819,10 @@ function Ht(n, e, t, s, r) {
|
|
819
819
|
const o = Bt(e), a = (i) => !i || !r ? {} : r?.id && Object.keys(i).length ? {
|
820
820
|
[`scope_${r.id}`]: i
|
821
821
|
} : {};
|
822
|
-
return Object.entries(o).reduce((i, [l, { nodes: c, params: f }]) => (i[l] = (
|
823
|
-
const
|
822
|
+
return Object.entries(o).reduce((i, [l, { nodes: c, params: f }]) => (i[l] = (u) => {
|
823
|
+
const d = f.length ? De(u ?? {}, f) : a(u);
|
824
824
|
return c.map(
|
825
|
-
(
|
825
|
+
(m) => D(m, t.__clone(d), n, s)
|
826
826
|
);
|
827
827
|
}, i), {});
|
828
828
|
}
|
@@ -836,7 +836,7 @@ function Bt(n) {
|
|
836
836
|
}
|
837
837
|
};
|
838
838
|
for (const t of n) {
|
839
|
-
const s =
|
839
|
+
const s = Nt(t.slot), r = s.name;
|
840
840
|
e[r] ? (e[r].nodes.push(t), e[r].params = e[r].params.concat(s.params)) : e[r] = {
|
841
841
|
nodes: [t],
|
842
842
|
params: s.params
|
@@ -844,10 +844,10 @@ function Bt(n) {
|
|
844
844
|
}
|
845
845
|
return e;
|
846
846
|
}
|
847
|
-
function
|
847
|
+
function Nt(n = "default") {
|
848
848
|
return $(n) ? { name: n, params: [] } : { params: [], ...n };
|
849
849
|
}
|
850
|
-
function
|
850
|
+
function Ut(n, e, t) {
|
851
851
|
const { value: s, iterator: r } = n, { item: o = "item", index: a = "index" } = r || {};
|
852
852
|
let i = t.__parseExpression(s) || [];
|
853
853
|
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 }))) : (console.warn("[vForRender]:", `${s?.value} is not a Arrary`), []);
|
@@ -867,7 +867,7 @@ function Vt(n) {
|
|
867
867
|
}
|
868
868
|
function zt(...n) {
|
869
869
|
if (n.length !== 1)
|
870
|
-
return
|
870
|
+
return Ue(...n);
|
871
871
|
const e = n[0];
|
872
872
|
return typeof e == "function" ? Le(qe(() => ({ get: e, set: Jt }))) : T(e);
|
873
873
|
}
|
@@ -896,20 +896,20 @@ function Zt(n, e, t = {}) {
|
|
896
896
|
const a = Xt(() => s && "MutationObserver" in s), i = () => {
|
897
897
|
o && (o.disconnect(), o = void 0);
|
898
898
|
}, l = he(() => {
|
899
|
-
const
|
900
|
-
return new Set(
|
899
|
+
const d = Z(n), m = (Array.isArray(d) ? d : [d]).map(Yt).filter(qt);
|
900
|
+
return new Set(m);
|
901
901
|
}), c = fe(
|
902
902
|
() => l.value,
|
903
|
-
(
|
904
|
-
i(), a.value &&
|
903
|
+
(d) => {
|
904
|
+
i(), a.value && d.size && (o = new MutationObserver(e), d.forEach((m) => o.observe(m, r)));
|
905
905
|
},
|
906
906
|
{ immediate: !0, flush: "post" }
|
907
|
-
), f = () => o?.takeRecords(),
|
907
|
+
), f = () => o?.takeRecords(), u = () => {
|
908
908
|
c(), i();
|
909
909
|
};
|
910
|
-
return Lt(
|
910
|
+
return Lt(u), {
|
911
911
|
isSupported: a,
|
912
|
-
stop:
|
912
|
+
stop: u,
|
913
913
|
takeRecords: f
|
914
914
|
};
|
915
915
|
}
|
@@ -917,18 +917,18 @@ function es(n = null, e = {}) {
|
|
917
917
|
var t, s, r;
|
918
918
|
const {
|
919
919
|
document: o = Gt,
|
920
|
-
restoreOnUnmount: a = (
|
920
|
+
restoreOnUnmount: a = (u) => u
|
921
921
|
} = e, i = (t = o?.title) != null ? t : "", l = zt((s = n ?? o?.title) != null ? s : null), c = n && typeof n == "function";
|
922
|
-
function f(
|
922
|
+
function f(u) {
|
923
923
|
if (!("titleTemplate" in e))
|
924
|
-
return
|
925
|
-
const
|
926
|
-
return typeof
|
924
|
+
return u;
|
925
|
+
const d = e.titleTemplate || "%s";
|
926
|
+
return typeof d == "function" ? d(u) : Z(d).replace(/%s/g, u);
|
927
927
|
}
|
928
928
|
return fe(
|
929
929
|
l,
|
930
|
-
(
|
931
|
-
|
930
|
+
(u, d) => {
|
931
|
+
u !== d && o && (o.title = f(typeof u == "string" ? u : ""));
|
932
932
|
},
|
933
933
|
{ immediate: !0 }
|
934
934
|
), e.observe && !e.titleTemplate && o && !c && Zt(
|
@@ -939,8 +939,8 @@ function es(n = null, e = {}) {
|
|
939
939
|
{ childList: !0 }
|
940
940
|
), Kt(() => {
|
941
941
|
if (a) {
|
942
|
-
const
|
943
|
-
|
942
|
+
const u = a(i, l.value || "");
|
943
|
+
u != null && o && (o.title = u);
|
944
944
|
}
|
945
945
|
}), l;
|
946
946
|
}
|
@@ -1080,7 +1080,7 @@ const ce = Y({
|
|
1080
1080
|
}
|
1081
1081
|
}), je = Symbol("Provider");
|
1082
1082
|
var ls = /* @__PURE__ */ ((n) => (n.Production = "production", n.Development = "development", n))(ls || {});
|
1083
|
-
class us extends
|
1083
|
+
class us extends Pe {
|
1084
1084
|
constructor(e) {
|
1085
1085
|
super(), this.options = e;
|
1086
1086
|
const {
|
@@ -1093,13 +1093,13 @@ class us extends Re {
|
|
1093
1093
|
globals: l = {},
|
1094
1094
|
modules: c = {},
|
1095
1095
|
router: f = null,
|
1096
|
-
materialPath:
|
1097
|
-
nodeEnv:
|
1096
|
+
materialPath: u = "./",
|
1097
|
+
nodeEnv: d = "development"
|
1098
1098
|
/* Development */
|
1099
1099
|
} = e;
|
1100
|
-
this.mode = s, this.modules = c, this.service = t, this.router = f, this.materialPath =
|
1101
|
-
const { access:
|
1102
|
-
|
1100
|
+
this.mode = s, this.modules = c, this.service = t, this.router = f, this.materialPath = u, this.nodeEnv = d, r && (this.dependencies = r), o && (this.materials = o), Object.assign(this.globals, l), Object.assign(this.adapter, i);
|
1101
|
+
const { access: m, request: p } = this.adapter;
|
1102
|
+
m && m.connect({ mode: s, router: f, request: p }), a && a.id && s !== _.Design && this.load(a);
|
1103
1103
|
}
|
1104
1104
|
mode;
|
1105
1105
|
globals = {};
|
@@ -1134,8 +1134,8 @@ class us extends Re {
|
|
1134
1134
|
libraryExports: l,
|
1135
1135
|
libraryMap: c,
|
1136
1136
|
materials: f,
|
1137
|
-
materialExports:
|
1138
|
-
materialMapLibrary:
|
1137
|
+
materialExports: u,
|
1138
|
+
materialMapLibrary: d
|
1139
1139
|
} = nt(
|
1140
1140
|
t,
|
1141
1141
|
a,
|
@@ -1143,31 +1143,31 @@ class us extends Re {
|
|
1143
1143
|
/* Development */
|
1144
1144
|
);
|
1145
1145
|
for (const p of l) {
|
1146
|
-
const
|
1146
|
+
const h = s[p], w = e[p];
|
1147
1147
|
if (w)
|
1148
1148
|
r[p] = w;
|
1149
|
-
else if (
|
1150
|
-
e[p] = r[p] = await
|
1149
|
+
else if (h)
|
1150
|
+
e[p] = r[p] = await h();
|
1151
1151
|
else {
|
1152
1152
|
const g = c[p] || [];
|
1153
1153
|
for (const v of g)
|
1154
|
-
Q(v) && await ot(p,
|
1154
|
+
Q(v) && await ot(p, P.append(v, { v: x })), X(v) && await re(P.append(v, { v: x }));
|
1155
1155
|
r[p] = e[p];
|
1156
1156
|
}
|
1157
1157
|
}
|
1158
1158
|
for (const p of f)
|
1159
|
-
await re(
|
1160
|
-
const
|
1161
|
-
for (const p of
|
1162
|
-
const
|
1159
|
+
await re(P.append(p, { v: x }));
|
1160
|
+
const m = this.materials || {};
|
1161
|
+
for (const p of u) {
|
1162
|
+
const h = e[d[p]], w = xe[p];
|
1163
1163
|
if (w)
|
1164
|
-
|
1165
|
-
o[g] =
|
1164
|
+
h && w.forEach((g) => {
|
1165
|
+
o[g] = h[g];
|
1166
1166
|
});
|
1167
1167
|
else {
|
1168
|
-
const g =
|
1169
|
-
g &&
|
1170
|
-
o[v.name] = rt(v,
|
1168
|
+
const g = m[p] ? (await m[p]()).default : e[p];
|
1169
|
+
g && h && (g.components || []).forEach((v) => {
|
1170
|
+
o[v.name] = rt(v, h);
|
1171
1171
|
});
|
1172
1172
|
}
|
1173
1173
|
}
|
@@ -1175,7 +1175,7 @@ class us extends Re {
|
|
1175
1175
|
initRouter() {
|
1176
1176
|
const { router: e, project: t, options: s } = this;
|
1177
1177
|
if (!e) return;
|
1178
|
-
const {
|
1178
|
+
const { routeAppendTo: r, pageRouteName: o = "page", routeMeta: a } = s, i = r ? "" : "/", l = {
|
1179
1179
|
path: `${i}${o}/:id`,
|
1180
1180
|
name: k,
|
1181
1181
|
component: ce
|
@@ -1431,7 +1431,7 @@ class te {
|
|
1431
1431
|
}).then((o) => o.data).catch(() => null));
|
1432
1432
|
}
|
1433
1433
|
}
|
1434
|
-
const y = new
|
1434
|
+
const y = new Ne({
|
1435
1435
|
type: "local",
|
1436
1436
|
expired: 0,
|
1437
1437
|
prefix: "__VTJ_"
|
@@ -1544,10 +1544,10 @@ class fs extends te {
|
|
1544
1544
|
}
|
1545
1545
|
}
|
1546
1546
|
let A = null;
|
1547
|
-
function
|
1547
|
+
function Rs() {
|
1548
1548
|
return A || (A = new fs(), A);
|
1549
1549
|
}
|
1550
|
-
class
|
1550
|
+
class Ps extends te {
|
1551
1551
|
getFileCaches = {};
|
1552
1552
|
async getExtension() {
|
1553
1553
|
return await this.api("getExtension", {}).catch(() => {
|
@@ -1602,51 +1602,59 @@ class Rs extends te {
|
|
1602
1602
|
);
|
1603
1603
|
}
|
1604
1604
|
}
|
1605
|
-
function Ee(n, e = []) {
|
1606
|
-
return
|
1607
|
-
const { id:
|
1605
|
+
function Ee(n, e, t = []) {
|
1606
|
+
return t.map((s) => {
|
1607
|
+
const { id: r, title: o, icon: a, children: i, hidden: l } = s;
|
1608
1608
|
return {
|
1609
|
-
id:
|
1610
|
-
title:
|
1611
|
-
icon:
|
1612
|
-
hidden:
|
1613
|
-
url: `${n}/${
|
1614
|
-
children:
|
1609
|
+
id: r,
|
1610
|
+
title: o,
|
1611
|
+
icon: a,
|
1612
|
+
hidden: l,
|
1613
|
+
url: `${n}/${e}/${r}`,
|
1614
|
+
children: i && i.length ? Ee(n, e, i) : void 0
|
1615
1615
|
};
|
1616
1616
|
});
|
1617
1617
|
}
|
1618
|
-
function
|
1618
|
+
function Re(n, e) {
|
1619
1619
|
if (!e) return n;
|
1620
1620
|
let t = [];
|
1621
1621
|
for (const s of n)
|
1622
1622
|
if (s.children && s.children.length) {
|
1623
|
-
const r =
|
1623
|
+
const r = Re(s.children, e);
|
1624
1624
|
r.length && (s.children = r, t.push(s));
|
1625
1625
|
} else
|
1626
1626
|
e.can(s.id.toString()) && t.push(s);
|
1627
1627
|
return t;
|
1628
1628
|
}
|
1629
1629
|
function xs(n) {
|
1630
|
-
const {
|
1630
|
+
const {
|
1631
|
+
menuPathPrefix: e = "",
|
1632
|
+
pageRouteName: t = "page",
|
1633
|
+
disableMenusFilter: s = !1
|
1634
|
+
} = n || {}, r = be(), o = me(), a = vt(), i = T(!1), l = T(!1), c = r.project;
|
1631
1635
|
Qe(() => {
|
1632
|
-
const { name:
|
1633
|
-
if (
|
1634
|
-
const h =
|
1635
|
-
|
1636
|
-
} else if (
|
1637
|
-
const h =
|
1638
|
-
|
1636
|
+
const { name: d, params: m, meta: p } = o;
|
1637
|
+
if (d === k) {
|
1638
|
+
const h = r.getPage(m.id);
|
1639
|
+
i.value = !h?.mask, l.value = !!h?.pure;
|
1640
|
+
} else if (d === I) {
|
1641
|
+
const h = r.getHomepage();
|
1642
|
+
i.value = !h?.mask, l.value = !!h?.pure;
|
1639
1643
|
} else
|
1640
|
-
|
1644
|
+
i.value = !p.mask, l.value = !!p.pure;
|
1641
1645
|
});
|
1642
|
-
const
|
1646
|
+
const f = Ee(
|
1647
|
+
e,
|
1648
|
+
t,
|
1649
|
+
c?.pages
|
1650
|
+
), u = c?.config;
|
1643
1651
|
return {
|
1644
|
-
disabled:
|
1645
|
-
logo:
|
1646
|
-
themeSwitchable:
|
1647
|
-
title:
|
1648
|
-
menus:
|
1649
|
-
pure:
|
1652
|
+
disabled: i,
|
1653
|
+
logo: u?.logo,
|
1654
|
+
themeSwitchable: u?.themeSwitchable,
|
1655
|
+
title: u?.title || c?.description || c?.name || "VTJ App",
|
1656
|
+
menus: s ? f : Re(f, a),
|
1657
|
+
pure: l
|
1650
1658
|
};
|
1651
1659
|
}
|
1652
1660
|
export {
|
@@ -1661,7 +1669,7 @@ export {
|
|
1661
1669
|
I as HOMEPAGE_ROUTE_NAME,
|
1662
1670
|
$s as JSCodeToString,
|
1663
1671
|
_s as LIFE_CYCLES_LIST,
|
1664
|
-
|
1672
|
+
Ps as LocalService,
|
1665
1673
|
fs as MemoryService,
|
1666
1674
|
ls as NodeEnv,
|
1667
1675
|
k as PAGE_ROUTE_NAME,
|
@@ -1674,7 +1682,7 @@ export {
|
|
1674
1682
|
Ss as createAssetsCss,
|
1675
1683
|
Et as createDataSources,
|
1676
1684
|
W as createLoader,
|
1677
|
-
|
1685
|
+
Rs as createMemoryService,
|
1678
1686
|
pt as createMetaApi,
|
1679
1687
|
bs as createProvider,
|
1680
1688
|
K as createRenderer,
|
@@ -1688,7 +1696,7 @@ export {
|
|
1688
1696
|
Q as isCSSUrl,
|
1689
1697
|
lt as isJSCode,
|
1690
1698
|
S as isJSExpression,
|
1691
|
-
|
1699
|
+
N as isJSFunction,
|
1692
1700
|
tt as isJSON,
|
1693
1701
|
X as isJSUrl,
|
1694
1702
|
ct as isVuePlugin,
|
package/package.json
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vtj/renderer",
|
3
3
|
"private": false,
|
4
|
-
"version": "0.9.0-alpha.
|
4
|
+
"version": "0.9.0-alpha.19",
|
5
5
|
"type": "module",
|
6
6
|
"dependencies": {
|
7
7
|
"mockjs": "~1.1.0",
|
8
|
-
"@vtj/
|
9
|
-
"@vtj/
|
8
|
+
"@vtj/core": "~0.9.0-alpha.19",
|
9
|
+
"@vtj/utils": "~0.9.0-alpha.19"
|
10
10
|
},
|
11
11
|
"devDependencies": {
|
12
12
|
"vue": "~3.5.5",
|
13
13
|
"vue-router": "~4.4.0",
|
14
14
|
"@vtj/cli": "~0.9.0-alpha.2",
|
15
|
-
"@vtj/ui": "~0.9.0-alpha.
|
16
|
-
"@vtj/icons": "~0.9.0-alpha.
|
15
|
+
"@vtj/ui": "~0.9.0-alpha.19",
|
16
|
+
"@vtj/icons": "~0.9.0-alpha.19"
|
17
17
|
},
|
18
18
|
"exports": {
|
19
19
|
".": {
|
package/types/hooks/mask.d.ts
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
import { MenuDataItem } from '@vtj/ui';
|
2
2
|
import { Ref } from 'vue';
|
3
3
|
export interface UseMaskOptions {
|
4
|
-
|
4
|
+
pageRouteName?: string;
|
5
|
+
menuPathPrefix?: string;
|
6
|
+
disableMenusFilter?: boolean;
|
5
7
|
}
|
6
8
|
export declare function useMask(options?: UseMaskOptions): {
|
7
9
|
disabled: Ref<boolean, boolean>;
|
package/types/version.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* Copyright (c) 2024, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.9.0-alpha.
|
5
|
+
* @version 0.9.0-alpha.18
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
7
|
*/
|
8
|
-
export declare const version = "0.9.0-alpha.
|
8
|
+
export declare const version = "0.9.0-alpha.18";
|