@vtj/renderer 0.10.1-alpha.2 → 0.10.1-alpha.3
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 +8 -6
- package/dist/index.mjs +77 -71
- package/package.json +5 -5
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("@vtj/core"),l=require("@vtj/utils"),
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("@vtj/core"),l=require("@vtj/utils"),p=require("vue"),se=require("vue-router");function Ne(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 N=Ne(p);/**!
|
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.10.1-alpha.
|
5
|
+
* @version 0.10.1-alpha.3
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const
|
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 I(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 S(s){return s&&s.type==="JSExpression"}function M(s){return typeof s=="object"&&s&&s.type==="JSFunction"}function ye(s){return S(s)||M(s)}function qe(s){return ye(s)?s.value:JSON.stringify(s)}const Je={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=_.Raw;constructor(e){this.options=Object.assign({},Je,e),this.loadData()}connect(e){const{mode:t,router:n,request:r}=e;this.mode=t,n&&this.mode===_.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?this.data:(this.loadData(),this.data)}getToken(){return this.data||this.loadData(),this.data?.token}can(e){const{appName: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{appName: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)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||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!l.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===P){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,n,r)=>this.guard(t,r))}async 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 await 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 _e(){return d.inject(W,null)}function ze(s={}){const{notify:e,loading:t,settings:n={}}=s;let r=null;return{request:l.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:a=>a.data?.code===0||!!a.data?.success,failMessage:!0,showError:a=>{e&&e(a||"未知错误")},showLoading:()=>{r&&r.close(),t&&(r=t())},hideLoading:()=>{r&&(r.close(),r=null)},...n}}),jsonp:l.jsonp,notify:e,loading:t}}function we(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 Se(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 be(s=[],e=[],t){const n={};for(const r of s)n[r.id]=we(r,t);for(const r of e)n[r.id]=Se(r,t);return n}async function je(s=[]){const e=R();e&&(Y(),s.forEach(t=>ke(e,t)))}function Ee(s){const e=M(s.mockTemplate)&&s.mockTemplate.value?I(s.mockTemplate,{},!0):void 0,t=R();return async(...n)=>{let r={};if(e)try{r=await e.apply(e,n)}catch(o){l.logger.warn("模拟数据模版异常",o)}return t?.mock(r)}}function ke(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 c=l.url.parse(i.url)||{},u=i.body instanceof FormData?l.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:u,params:c,query:m}),s.mock(a(i))})}}function Y(){const s=R();s&&(s._mocked={})}class $e{__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=N){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.__reset()})}__proxy(){this.__instance&&V.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){V.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return I({type:n,value:r},this)}else return I(e,this)}__parseExpression(e){if(e)if(this.__mode===_.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!==_.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}return r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,_.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=this.__getRefEl(this.__refs,e,n)),typeof t=="function"?t(n):t&&(this.$refs[t]=this.__getRefEl(this.$refs,t,n)),n}}__getRefEl(e,t,n){const r=e[t];if(r&&n!==r){const o=new Set([].concat(r,n));return Array.from(o)}else return n}__clone(e={}){const t={...this.context,...e},n={...t,context:t};return n.context.__proto__=this.context,n.__proto__=this,n}}function D(s){const{Vue:e=N,mode:t=_.Runtime,components:n={},libs:r={},apis:o={},loader:a}=s,i=e.computed(()=>s.dsl),c={$components:n,$libs:r,$apis:o},u=new $e({mode:t,dsl:i.value,attrs:c}),m=e.defineComponent({name:i.value.name,props:{...Ge(i.value.props??[],u)},setup(p){u.$props=p,u.props=p,i.value.id&&G(s.window||window,i.value.id,i.value.css||""),u.state=We(e,i.value.state??{},u);const f=Ye(e,i.value.computed??{},u),g=Qe(i.value.methods??{},u),v=Xe(e,i.value.inject,u),h=Ce(i.value.dataSources||{},u),b={...v,...f,...g,...h};return u.setup(b,e),Ze(e,i.value.watch??[],u),{vtj:u}},emits:Ke(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const p=i.value.nodes||[];return p.length===1?F(p[0],u,e,a):p.map(f=>F(f,u,e,a))},...et(i.value.lifeCycles??{},u)});return{renderer:e.markRaw(m),context:u}}function Ke(s=[]){return s.map(e=>l.isString(e)?e:e.name)}function Ge(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:S(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 S(o)?o=t.__parseExpression(o):M(o)&&(o=t.__parseFunction(o)),n[r]=o,n},{}))}function Ye(s,e,t){return Object.entries(e??{}).reduce((n,[r,o])=>(n[r]=s.computed(t.__parseFunction(o)),n),{})}function Qe(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}function Xe(s,e=[],t){return e.reduce((n,r)=>{const{name:o,from:a}=r||{};r.default;const i=S(a)?t.__parseExpression(a)||o:a??o,c=S(r.default)?t.__parseExpression(r.default):r.default??null;return n[o]=s.inject(i,c),n},{})}function Ce(s,e){return Object.keys(s).reduce((t,n)=>{const r=s[n];if(r.type==="mock")t[n]=Ee(r);else if(r.ref){const o=e.$apis[r.ref],a=M(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;t[n]=async(...i)=>{const c=await o.apply(e,i);return a?a(c):c}}return t},{})}function Ze(s,e=[],t){e.forEach(n=>{s.watch(t.__parseExpression(n.source),t.__parseFunction(n.handler),{deep:n.deep,immediate:n.immediate})})}function et(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}let J=[],$={};const Pe=s=>s;async function Q(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=>B(i));return o.length&&fe(o,e),await he(r,n,e).catch(i=>(console.warn("loadScriptUrl error",r,n,i),null))}function H(s){const{getDsl:e,getDslByUrl:t,options:n}=s;return n.window&&(J.forEach(r=>{delete n.window[r]}),J=[]),(r,o,a=N)=>{if(!o||typeof o=="string")return r;if(o.type==="Schema"&&o.id){let i=$[o.id];return i||(i=$[o.id]=a.defineAsyncComponent(async()=>{const c=await e(o.id);return c&&(c.name=r),c?D({...n,Vue:a,dsl:c,mode:_.Runtime,loader:H(s)}).renderer:null}),i)}if(o.type==="UrlSchema"&&o.url){let i=$[o.url];return i||(i=$[o.url]=a.defineAsyncComponent(async()=>{const c=await t(o.url);return c&&(c.name=r),c?D({...n,Vue:a,dsl:c,mode:_.Runtime,loader:H(s)}).renderer:null}),i)}if(o.type==="Plugin"){let i=o.library?$[o.library]:null;return i||(o.library&&J.push(o.library),i=$[o.library||Symbol()]=a.defineAsyncComponent(async()=>{const c=await Q(o,n.window);return c||(console.warn("getPlugin result is null",o),null)}),i)}return r}}function tt(){$={}}function F(s,e,t=N,n=Pe){if(!s||!s.name||s.invisible)return null;const r=t.getCurrentInstance()?.appContext,{id:o=null,directives:a=[]}=s,{vIf:i,vFor:c,vShow:u,vModels:m,vBind:p,vHtml:f,others:g}=st(a);if(i&&!rt(i,e))return null;const v=h=>{const b=h.$components,y=(()=>{if(s.name==="component")return ot(h,s.props?.is);if(s.name==="slot")return s.name;const E=n(s.name,s.from,t);return l.isString(E)?ge(E)||ve(E)?E:b[E]??r?.app?.component(E)??E:E})(),j=it(o,s.props??{},h),De=at(t,s.events??{},h);if(s.name==="slot")return ct(t,s,j,h,n);p&&Object.assign(j,h.__parseExpression(p.value)),u&&(j.style=Object.assign(j.style??{},ut(u,h))),f&&Object.assign(j,dt(f,h)),m.forEach(E=>{Object.assign(j,pt(t,E,h))});const He=ft(t,s.children??[],h,n,s);let q=t.createVNode(y,{...j,...De},He);const te=r?nt(r,g,h):[];return te.length&&(q=t.withDirectives(q,te)),q};return c?gt(c,v,e):v(e)}function nt(s,e,t){const n=s.app;return e.map(r=>{const o=typeof r.name=="string"?n.directive(r.name):t.__parseExpression(r.name);if(!o)return null;const a=[o];return r.value&&a.push(t.__parseExpression(r.value)),r.arg&&a.push(r.arg),r.modifiers&&a.push(r.modifiers),a}).filter(r=>!!r)}function st(s=[]){const e=s.find(c=>l.camelCase(c.name)==="vIf"),t=s.find(c=>l.camelCase(c.name)==="vFor"),n=s.find(c=>l.camelCase(c.name)==="vShow"),r=s.find(c=>l.camelCase(c.name)==="vBind"),o=s.find(c=>l.camelCase(c.name)==="vHtml"),a=s.filter(c=>l.camelCase(c.name)==="vModel"),i=s.filter(c=>!re.includes(l.camelCase(c.name)));return{vIf:e,vFor:t,vShow:n,vModels:a,vBind:r,others:i,vHtml:o}}function rt(s,e){return!!e.__parseExpression(s.value)}function ot(s,e){return e?S(e)?s.__parseExpression(e):e:"div"}function it(s,e,t){const n=z(e,t);return n.ref=t.__ref(s,n.ref),n}function z(s,e){return S(s)?e.__parseExpression(s):M(s)?e.__parseFunction(s):Array.isArray(s)?s.map(t=>z(t,e)):typeof s=="object"?Object.keys(s||{}).reduce((t,n)=>{let r=s[n];return t[n]=z(r,e),t},{}):s}function at(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],c=X(i.modifiers),u=c.find(f=>n.includes(f)),m="on"+l.upperFirst(a)+(u&&r[u]||""),p=t.__parseFunction(i.handler);return p&&(o[m]=s.withModifiers(p,c)),o},{})}function X(s={},e=!1){const t=Object.keys(s);return e?t.map(n=>"."+n):t}function ct(s,e,t,n,r){const{children:o}=e,a=lt(e,n),i=n.$slots?.[a.name];return i?i(t):o?l.isString(o)?s.createTextVNode(o):S(o)?s.createTextVNode(K(n.__parseExpression(o))):Array.isArray(o)?o.map(c=>F(c,n,s,r)):null:null}function lt(s,e){const{props:t}=s,n=t?.name||"default";return{name:S(n)?e.__parseExpression(n):n,params:[]}}function ut(s,e){return e.__parseExpression(s.value)?{}:{display:"none"}}function dt(s,e){return{innerHTML:e.__parseExpression(s.value)||""}}function pt(s,e,t){const n={type:"JSFunction",value:e.value?.value?`(v) => {
|
7
|
+
*/const $="0.10.1-alpha.3";var _=(s=>(s.Runtime="Runtime",s.Design="Design",s.Raw="Raw",s.VNode="VNode",s))(_||{});const V=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Be=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],re=["vIf","vShow","vModel","vFor","vBind","vHtml"],oe={String,Number,Boolean,Array,Object,Function,Date},C="VtjPage",T="VtjHomepage",ie="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot".split(","),ae="component,slot".split(",");function A(s,e){return s.map(t=>l.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function B(s){return/\.css$/.test(s)}function U(s){return/\.js$/.test(s)}function ce(s){return/\.json$/.test(s)}function Ue(s){return s.map(e=>`<script src="${l.url.append(e,{v:$})}"><\/script>`).join("")}function Le(s=[]){return s.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:$})}" />`).join("")}function le(s,e=!1){return e&&s.endsWith(".prod.js")?s.replace(".prod.js",".js"):s}function ue(s,e,t=!1){const n=s.filter(f=>!!f.enabled),r=[],o=[],a=[],i=[],c={},u={},m=[],d={};return n.forEach(({urls:f,assetsUrl:g,library:v,assetsLibrary:h,localeLibrary:b})=>{f?.forEach(y=>{U(y)&&r.push(le(y,t)),B(y)&&o.push(y)}),v&&(i.push(v),c[v]=A(f||[],e),b&&(u[v]=b)),g&&a.push(g),h&&m.push(h),v&&h&&(d[h]=v)}),{scripts:A(r,e),css:A(o,e),materials:A(a,e),libraryExports:i,materialExports:l.dedupArray(m),materialMapLibrary:d,libraryMap:c,libraryLocaleMap:u}}function de(s,e){const{name:t,parent:n,alias:r}=s;return n?e[n]?.[r||t]:e[r||t]}function K(s){return l.isString(s)?s:JSON.stringify(s)}function G(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(c=>c.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 pe(s,e){const t=await window.fetch(e).then(n=>n.text()).catch(()=>"");t&&G(window,s,t)}function fe(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 he(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 c of s){const u=n.createElement("script");u.src=c,u.onload=()=>{o=t[e],o?a(o.default||o):i(null)},u.onerror=m=>{i(m)},r.appendChild(u)}})}function me(s){return l.isFunction(s)||l.isFunction(s?.install)}function ge(s){return ae.includes(s)}function ve(s){return ie.includes(s)}function R(s=window){const e=window.Mock;if(e)return e;const t=s.Mock;if(t)return window.Mock=t,t}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,c)=>`__self${c}`),o=r.join(`
|
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 I(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 S(s){return s&&s.type==="JSExpression"}function M(s){return typeof s=="object"&&s&&s.type==="JSFunction"}function ye(s){return S(s)||M(s)}function qe(s){return ye(s)?s.value:JSON.stringify(s)}const Je={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=_.Raw;constructor(e){this.options=Object.assign({},Je,e),this.loadData()}connect(e){const{mode:t,router:n,request:r}=e;this.mode=t,n&&this.mode===_.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?this.data:(this.loadData(),this.data)}getToken(){return this.data||this.loadData(),this.data?.token}can(e){const{appName: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{appName: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)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||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!l.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===C){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,n,r)=>this.guard(t,r))}async 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 await 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 _e(){return p.inject(W,null)}function ze(s={}){const{notify:e,loading:t,settings:n={}}=s;let r=null;return{request:l.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:a=>a.data?.code===0||!!a.data?.success,failMessage:!0,showError:a=>{e&&e(a||"未知错误")},showLoading:()=>{r&&r.close(),t&&(r=t())},hideLoading:()=>{r&&(r.close(),r=null)},...n}}),jsonp:l.jsonp,notify:e,loading:t}}function we(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 Se(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 be(s=[],e=[],t){const n={};for(const r of s)n[r.id]=we(r,t);for(const r of e)n[r.id]=Se(r,t);return n}async function je(s=[]){const e=R();e&&(Y(),s.forEach(t=>ke(e,t)))}function Ee(s){const e=M(s.mockTemplate)&&s.mockTemplate.value?I(s.mockTemplate,{},!0):void 0,t=R();return async(...n)=>{let r={};if(e)try{r=await e.apply(e,n)}catch(o){l.logger.warn("模拟数据模版异常",o)}return t?.mock(r)}}function ke(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 c=l.url.parse(i.url)||{},u=i.body instanceof FormData?l.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:u,params:c,query:m}),s.mock(a(i))})}}function Y(){const s=R();s&&(s._mocked={})}class Pe{__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=N){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.__reset()})}__proxy(){this.__instance&&V.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){V.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:n}=e,r=t?this.__transform[t]??e.value:e.value;return I({type:n,value:r},this)}else return I(e,this)}__parseExpression(e){if(e)if(this.__mode===_.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!==_.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}return r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,_.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=this.__getRefEl(this.__refs,e,n)),typeof t=="function"?t(n):t&&(this.$refs[t]=this.__getRefEl(this.$refs,t,n)),n}}__getRefEl(e,t,n){const r=e[t];if(r&&n!==r){const o=new Set([].concat(r,n));return Array.from(o)}else return n}__clone(e={}){const t={...this.context,...e},n={...t,context:t};return n.context.__proto__=this.context,n.__proto__=this,n}}function D(s){const{Vue:e=N,mode:t=_.Runtime,components:n={},libs:r={},apis:o={},loader:a}=s,i=e.computed(()=>s.dsl),c={$components:n,$libs:r,$apis:o},u=new Pe({mode:t,dsl:i.value,attrs:c}),m=e.defineComponent({name:i.value.name,props:{...Ge(i.value.props??[],u)},setup(d){u.$props=d,u.props=d,i.value.id&&G(s.window||window,i.value.id,i.value.css||""),u.state=We(e,i.value.state??{},u);const f=Ye(e,i.value.computed??{},u),g=Qe(i.value.methods??{},u),v=Xe(e,i.value.inject,u),h=$e(i.value.dataSources||{},u),b={...v,...f,...g,...h};return u.setup(b,e),Ze(e,i.value.watch??[],u),{vtj:u}},emits:Ke(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?F(d[0],u,e,a):d.map(f=>F(f,u,e,a))},...et(i.value.lifeCycles??{},u)});return{renderer:e.markRaw(m),context:u}}function Ke(s=[]){return s.map(e=>l.isString(e)?e:e.name)}function Ge(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:S(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 S(o)?o=t.__parseExpression(o):M(o)&&(o=t.__parseFunction(o)),n[r]=o,n},{}))}function Ye(s,e,t){return Object.entries(e??{}).reduce((n,[r,o])=>(n[r]=s.computed(t.__parseFunction(o)),n),{})}function Qe(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}function Xe(s,e=[],t){return e.reduce((n,r)=>{const{name:o,from:a}=r||{};r.default;const i=S(a)?t.__parseExpression(a)||o:a??o,c=S(r.default)?t.__parseExpression(r.default):r.default??null;return n[o]=s.inject(i,c),n},{})}function $e(s,e){return Object.keys(s).reduce((t,n)=>{const r=s[n];if(r.type==="mock")t[n]=Ee(r);else if(r.ref){const o=e.$apis[r.ref],a=M(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;t[n]=async(...i)=>{const c=await o.apply(e,i);return a?a(c):c}}return t},{})}function Ze(s,e=[],t){e.forEach(n=>{s.watch(t.__parseExpression(n.source),t.__parseFunction(n.handler),{deep:n.deep,immediate:n.immediate})})}function et(s,e){return Object.entries(s??{}).reduce((t,[n,r])=>(t[n]=e.__parseFunction(r),t),{})}let J=[],P={};const Ce=s=>s;async function Q(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=>B(i));return o.length&&fe(o,e),await he(r,n,e).catch(i=>(console.warn("loadScriptUrl error",r,n,i),null))}function H(s){const{getDsl:e,getDslByUrl:t,options:n}=s;return n.window&&(J.forEach(r=>{delete n.window[r]}),J=[]),(r,o,a=N)=>{if(!o||typeof o=="string")return r;if(o.type==="Schema"&&o.id){let i=P[o.id];return i||(i=P[o.id]=a.defineAsyncComponent(async()=>{const c=await e(o.id);return c&&(c.name=r),c?D({...n,Vue:a,dsl:c,mode:_.Runtime,loader:H(s)}).renderer:null}),i)}if(o.type==="UrlSchema"&&o.url){let i=P[o.url];return i||(i=P[o.url]=a.defineAsyncComponent(async()=>{const c=await t(o.url);return c&&(c.name=r),c?D({...n,Vue:a,dsl:c,mode:_.Runtime,loader:H(s)}).renderer:null}),i)}if(o.type==="Plugin"){let i=o.library?P[o.library]:null;return i||(o.library&&J.push(o.library),i=P[o.library||Symbol()]=a.defineAsyncComponent(async()=>{const c=await Q(o,n.window);return c||(console.warn("getPlugin result is null",o),null)}),i)}return r}}function tt(){P={}}function F(s,e,t=N,n=Ce){if(!s||!s.name||s.invisible)return null;const r=t.getCurrentInstance()?.appContext,{id:o=null,directives:a=[]}=s,{vIf:i,vFor:c,vShow:u,vModels:m,vBind:d,vHtml:f,others:g}=st(a);if(i&&!rt(i,e))return null;const v=h=>{const b=h.$components,y=(()=>{if(s.name==="component")return ot(h,s.props?.is);if(s.name==="slot")return s.name;const E=n(s.name,s.from,t);return l.isString(E)?ge(E)||ve(E)?E:b[E]??r?.app?.component(E)??E:E})(),j=it(o,s.props??{},h),De=at(t,s.events??{},h);if(s.name==="slot")return ct(t,s,j,h,n);d&&Object.assign(j,h.__parseExpression(d.value)),u&&(j.style=Object.assign(j.style??{},ut(u,h))),f&&Object.assign(j,dt(f,h)),m.forEach(E=>{Object.assign(j,pt(t,E,h))});const He=ft(t,s.children??[],h,n,s);let q=t.createVNode(y,{...j,...De},He);const te=r?nt(r,g,h):[];return te.length&&(q=t.withDirectives(q,te)),q};return c?gt(c,v,e):v(e)}function nt(s,e,t){const n=s.app;return e.map(r=>{const o=typeof r.name=="string"?n.directive(r.name):t.__parseExpression(r.name);if(!o)return null;const a=[o];return r.value&&a.push(t.__parseExpression(r.value)),r.arg&&a.push(r.arg),r.modifiers&&a.push(r.modifiers),a}).filter(r=>!!r)}function st(s=[]){const e=s.find(c=>l.camelCase(c.name)==="vIf"),t=s.find(c=>l.camelCase(c.name)==="vFor"),n=s.find(c=>l.camelCase(c.name)==="vShow"),r=s.find(c=>l.camelCase(c.name)==="vBind"),o=s.find(c=>l.camelCase(c.name)==="vHtml"),a=s.filter(c=>l.camelCase(c.name)==="vModel"),i=s.filter(c=>!re.includes(l.camelCase(c.name)));return{vIf:e,vFor:t,vShow:n,vModels:a,vBind:r,others:i,vHtml:o}}function rt(s,e){return!!e.__parseExpression(s.value)}function ot(s,e){return e?S(e)?s.__parseExpression(e):e:"div"}function it(s,e,t){const n=z(e,t);return n.ref=t.__ref(s,n.ref),n}function z(s,e){return S(s)?e.__parseExpression(s):M(s)?e.__parseFunction(s):Array.isArray(s)?s.map(t=>z(t,e)):typeof s=="object"?Object.keys(s||{}).reduce((t,n)=>{let r=s[n];return t[n]=z(r,e),t},{}):s}function at(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],c=X(i.modifiers),u=c.find(f=>n.includes(f)),m="on"+l.upperFirst(a)+(u&&r[u]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=s.withModifiers(d,c)),o},{})}function X(s={},e=!1){const t=Object.keys(s);return e?t.map(n=>"."+n):t}function ct(s,e,t,n,r){const{children:o}=e,a=lt(e,n),i=n.$slots?.[a.name];return i?i(t):o?l.isString(o)?s.createTextVNode(o):S(o)?s.createTextVNode(K(n.__parseExpression(o))):Array.isArray(o)?o.map(c=>F(c,n,s,r)):null:null}function lt(s,e){const{props:t}=s,n=t?.name||"default";return{name:S(n)?e.__parseExpression(n):n,params:[]}}function ut(s,e){return e.__parseExpression(s.value)?{}:{display:"none"}}function dt(s,e){return{innerHTML:e.__parseExpression(s.value)||""}}function pt(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=X(S(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=S(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 ft(s,e,t,n,r){if(!e)return null;if(l.isString(e))return{default:()=>e};if(S(e))return{default:()=>K(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=ht(e),a=i=>!i||!r?{}:r?.id&&Object.keys(i).length?{[`scope_${r.id}`]:i}:{};return Object.entries(o).reduce((i,[c,{nodes:u,params:m}])=>(i[c]=
|
10
|
+
}`:"(v) => {}"},r=t.__parseFunction(n),o=X(S(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=S(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 ft(s,e,t,n,r){if(!e)return null;if(l.isString(e))return{default:()=>e};if(S(e))return{default:()=>K(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=ht(e),a=i=>!i||!r?{}:r?.id&&Object.keys(i).length?{[`scope_${r.id}`]:i}:{};return Object.entries(o).reduce((i,[c,{nodes:u,params:m}])=>(i[c]=d=>{const f=m.length?l.pick(d??{},m):a(d);return u.map(g=>F(g,t.__clone(f),s,n))},i),{})}return null}function ht(s){const e={default:{params:[],nodes:[]}};for(const t of s){const n=mt(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 mt(s="default"){return l.isString(s)?{name:s,params:[]}:{params:[],...s}}function gt(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((c,u)=>u+1)),Array.isArray(i)?i.map((c,u)=>e(t.__clone({[o]:c,[a]:u}))):(console.warn("[vForRender]:",`${n?.value} is not a Arrary`),[])}function vt(s){return p.getCurrentScope()?(p.onScopeDispose(s),!0):!1}const Re=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const yt=s=>s!=null,_t=()=>{};function wt(s){return p.getCurrentInstance()}function St(s){return Array.isArray(s)?s:[s]}function bt(...s){if(s.length!==1)return p.toRef(...s);const e=s[0];return typeof e=="function"?p.readonly(p.customRef(()=>({get:e,set:_t}))):p.ref(e)}function jt(s,e){wt()&&p.onBeforeUnmount(s,e)}const Et=Re?window:void 0,kt=Re?window.document:void 0;function Pt(s){var e;const t=p.toValue(s);return(e=t?.$el)!=null?e:t}function $t(){const s=p.ref(!1),e=p.getCurrentInstance();return e&&p.onMounted(()=>{s.value=!0},e),s}function Ct(s){const e=$t();return p.computed(()=>(e.value,!!s()))}function Rt(s,e,t={}){const{window:n=Et,...r}=t;let o;const a=Ct(()=>n&&"MutationObserver"in n),i=()=>{o&&(o.disconnect(),o=void 0)},c=p.computed(()=>{const f=p.toValue(s),g=St(f).map(Pt).filter(yt);return new Set(g)}),u=p.watch(()=>c.value,f=>{i(),a.value&&f.size&&(o=new MutationObserver(e),f.forEach(g=>o.observe(g,r)))},{immediate:!0,flush:"post"}),m=()=>o?.takeRecords(),d=()=>{u(),i()};return vt(d),{isSupported:a,stop:d,takeRecords:m}}function xt(s=null,e={}){var t,n,r;const{document:o=kt,restoreOnUnmount:a=d=>d}=e,i=(t=o?.title)!=null?t:"",c=bt((n=s??o?.title)!=null?n:null),u=!!(s&&typeof s=="function");function m(d){if(!("titleTemplate"in e))return d;const f=e.titleTemplate||"%s";return typeof f=="function"?f(d):p.toValue(f).replace(/%s/g,d)}return p.watch(c,(d,f)=>{d!==f&&o&&(o.title=m(d??""))},{immediate:!0}),e.observe&&!e.titleTemplate&&o&&!u&&Rt((r=o.head)==null?void 0:r.querySelector("title"),()=>{o&&o.title!==c.value&&(c.value=m(o.title))},{childList:!0}),jt(()=>{if(a){const d=a(i,c.value||"");d!=null&&o&&(o.title=d)}}),c}const ne=p.defineComponent({name:"VtjPageContainer",async setup(){const s=ee(),e=se.useRoute(),t=e.params.id,n=t?s.getPage(t):s.getHomepage(),r=n?await s.getRenderComponent(n.id):null,o=p.ref(Symbol());return n&&(Object.assign(e.meta,n.meta||{},{cache:n.cache}),xt(n.title||"VTJ")),{provider:s,component:r,file:n,query:e.query,meta:e.meta,sid:o,route:e}},render(){const{component:s,query:e,sid:t}=this;return s?p.h(s,{...e,key:t}):p.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Mt={"data-l-h6o7ki7":"",class:"vtj-startup__wrapper"},At={"data-l-h6o7ki7":"",class:"vtj-startup"},Tt={"data-l-h6o7ki7":"",class:"vtj-startup__name"},Ft={"data-l-h6o7ki7":""},Ot={"data-l-h6o7ki7":"",class:"vtj-startup__tagline"},It={"data-l-h6o7ki7":"",class:"vtj-startup__actions"},xe=p.defineComponent({__name:"Startup",props:{name:{default:"VTJ.PRO"},tagline:{default:"基于 Vue3 + TypeScript 快速打造高生产力的低代码研发平台"},actionText:{default:"开始设计"},link:{}},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;
|
@@ -16,6 +16,7 @@
|
|
16
16
|
grid-row: 1;
|
17
17
|
width: 100%;
|
18
18
|
max-width: 800px;
|
19
|
+
margin: 0 10px;
|
19
20
|
}
|
20
21
|
.vtj-startup__wrapper[data-l-h6o7ki7]{
|
21
22
|
height: 100%;
|
@@ -77,6 +78,7 @@
|
|
77
78
|
cursor: pointer;
|
78
79
|
display: inline-block;
|
79
80
|
line-height: 40px;
|
81
|
+
text-align: center;
|
80
82
|
}@media (max-width: 768px){
|
81
83
|
|
82
84
|
.vtj-startup__actions .button[data-l-h6o7ki7]{
|
@@ -86,4 +88,4 @@
|
|
86
88
|
}
|
87
89
|
.vtj-startup__actions .button[data-l-h6o7ki7]:hover{
|
88
90
|
opacity: 0.7;
|
89
|
-
}`);const t=s,n=()=>{if(typeof window<"u"){if(t.link){typeof t.link=="function"?t.link():window.location.href=t.link;return}let o=(window.__VTJ_LINK__||{}).href||window.location.pathname+"__vtj__/#/";window.location.href=o}};return(r,o)=>(d.openBlock(),d.createElementBlock("div",Mt,[d.createElementVNode("div",At,[d.createElementVNode("h1",Tt,[d.createElementVNode("span",Ft,d.toDisplayString(t.name),1)]),d.createElementVNode("div",Ot,d.toDisplayString(t.tagline),1),d.createElementVNode("div",It,[o[0]||(o[0]=d.createElementVNode("span",{"data-l-h6o7ki7":"",class:"span"},"设置项目主页后,将替换此页面显示",-1)),d.createElementVNode("span",{"data-l-h6o7ki7":"",class:"button",onClick:n},d.toDisplayString(t.actionText),1)])])]))}}),Dt=d.defineComponent({name:"VtjStartupContainer",render(){return d.h(xe)}}),Z=Symbol("Provider");var Me=(s=>(s.Production="production",s.Development="development",s))(Me||{});class Ae extends k.Base{constructor(e){super(),this.options=e;const{service:t,mode:n=_.Raw,dependencies:r,materials:o,project:a={},adapter:i={},globals:c={},modules:u={},router:m=null,materialPath:p="./",nodeEnv:f="development"}=e;this.mode=n,this.modules=u,this.service=t,this.router=m,this.materialPath=p,this.nodeEnv=f,r&&(this.dependencies=r),o&&(this.materials=o),Object.assign(this.globals,c),Object.assign(this.adapter,i);const{access:g,request:v}=this.adapter;g&&g.connect({mode:n,router:m,request:v}),a&&n!==_.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:l.request,jsonp:l.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};createMock(e){return async(...t)=>{let n={};if(e)try{n=await e.apply(e,t)}catch(o){l.logger.warn("模拟数据模版异常",o)}return R()?.mock(n)}}async load(e){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.mode===_.Raw?await this.loadDependencies(o):await this.loadAssets(o),this.initMock(o),this.apis=be(n,r,this.adapter),Y(),je(n),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=R(e);t&&t.setup({timeout:"50-500"})}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[n,r]of t)e[n]||(e[n]=this.library[n]=await r())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:n,library:r,components:o,materialPath:a,nodeEnv:i}=this,{libraryExports:c,libraryMap:u,materials:m,materialExports:p,materialMapLibrary:f}=ue(t,a,i==="development");for(const g of c){const v=n[g],h=e[g];if(h)r[g]=h;else if(v)e[g]=r[g]=await v();else{const b=u[g]||[];for(const y of b)B(y)&&await pe(g,l.url.append(y,{v:C})),U(y)&&await l.loadScript(l.url.append(y,{v:C}));r[g]=e[g]}}if(i==="development"){for(const v of m)await l.loadScript(l.url.append(v,{v:C}));const g=this.materials||{};for(const v of p){const h=e[f[v]],b=k.BUILT_IN_COMPONENTS[v];if(b)h&&b.forEach(y=>{o[y]=h[y]});else{const y=g[v]?(await g[v]()).default:e[v];y&&h&&(y.components||[]).forEach(j=>{o[j.name]=de(j,h)})}}}}initRouter(){const{router:e,project:t,options:n,adapter:r}=this;if(!e)return;const{routeAppendTo:o,pageRouteName:a="page",routeMeta:i}=n,c=o?"":"/",u={path:`${c}${a}/:id`,name:P,component:ne},m={path:c,name:T,component:t?.homepage?ne:r.startupComponent||Dt,meta:i};e.hasRoute(P)&&e.removeRoute(P),e.hasRoute(T)&&e.removeRoute(T),o?(e.addRoute(o,u),e.addRoute(o,m)):(e.addRoute(u),e.addRoute(m))}install(e){const t=e.config.globalProperties.installed||{};for(const[n,r]of Object.entries(this.library))!t[n]&&me(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(Z,this),e.config.globalProperties.installed=t,this.mode===_.Design&&(e.config.errorHandler=(n,r,o)=>{const a=r?.$options.name,i=typeof n=="string"?n:n?.message||n?.msg||"未知错误",c=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:n,instance:r,info:o},n?.stack),this.adapter.notify&&this.adapter.notify(c,"组件渲染错误","error")})}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,this.project||void 0).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},c=H({getDsl:async u=>await this.getDsl(u)||null,getDslByUrl:async u=>await this.getDslByUrl(u)||null,options:i});return D({...i,dsl:e,loader:c})}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 d.defineAsyncComponent(async()=>{const n=await this.getDslByUrl(e);return n?(n.name=t||n.name,this.createDslRenderer(n).renderer):null})}definePluginComponent(e){return d.defineAsyncComponent(async()=>await Q(e,window))}}function Ht(s){const e=new Ae(s);return{provider:e,onReady:n=>e.ready(n)}}function ee(s={}){const e=d.inject(Z);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&&e.adapter.notify&&e.adapter.notify(`[ ${r?.name} ] 组件源码版本与运行时版本不一致,请重新发布组件`,"版本不一致","warning")})()}return e}const Te={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:s=>s.data?.code===0},Nt=(s,e="/__vtj__/api/:type.json")=>(t,n,r)=>s.send({url:e,method:"post",params:{type:t},query:r,data:{type:t,data:n},settings:Te}),Bt=(s,e="/__vtj__/api/uploader.json")=>async(t,n)=>await s.send({url:e,method:"post",data:{files:t,projectId:n},settings:{...Te,type:"data"}}).then(r=>r&&r[0]?r[0]:null).catch(()=>null);function Ut(s){return l.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{s&&s(e||"未知错误")}}})}class L{api;pluginCaches={};uploader;constructor(e=l.request){this.api=Nt(e),this.uploader=Bt(e)}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 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=>ce(o))[0];if(!n)return null;const r=this.pluginCaches[n];return r||(this.pluginCaches[n]=l.request.send({url:n,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const w=new l.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Lt extends L{init(e){const t=new k.ProjectModel(e),n=w.get(`project_${t.id}`),r=Object.assign(t.toDsl(),n||{});return w.save(`project_${t.id}`,r),Promise.resolve(r)}saveProject(e){const t=new k.ProjectModel(e);return w.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return w.save(`materials_${e.id}`,l.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return w.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=w.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return w.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return w.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=w.get(`history_${e}`);if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),w.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=w.get(`history_${e}`),n=new k.HistoryModel(t||{id:e});return Promise.resolve(n.toDsl())}getHistoryItem(e,t){const n=w.get(`history_${e}_${t}`);return Promise.resolve(n)}saveHistoryItem(e,t){return w.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{w.remove(`history_${e}_${n}`)}),Promise.resolve(!0)}}class Fe extends L{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new k.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 k.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 k.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 O=null;function qt(){return O||(O=new Fe,O)}class Jt extends L{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: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 Oe(s,e,t=[]){return t.map(n=>{const{id:r,title:o,icon:a,children:i,hidden:c}=n;return{id:r,title:o,icon:a,hidden:c,url:`${s}/${e}/${r}`,children:i&&i.length?Oe(s,e,i):void 0}})}function Ie(s,e){if(!e)return s;let t=[];for(const n of s)if(n.children&&n.children.length){const r=Ie(n.children,e);r.length&&(n.children=r,t.push(n))}else e.can(n.id.toString())&&t.push(n);return t}function Vt(s){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:n=!1}=s||{},r=ee(),o=se.useRoute(),a=_e(),i=d.ref(!1),c=d.ref(!1),u=r.project;d.watchEffect(()=>{const{name:f,params:g,meta:v}=o;if(f===P){const h=r.getPage(g.id);i.value=!h?.mask,c.value=!!h?.pure}else if(f===T){const h=r.getHomepage();i.value=!h?.mask,c.value=!!h?.pure}else i.value=!v.mask,c.value=!!v.pure});const m=Oe(e,t,u?.pages),p=u?.config;return{disabled:i,logo:p?.logo,themeSwitchable:p?.themeSwitchable,title:p?.title||u?.description||u?.name||"VTJ App",menus:n?m:Ie(m,a),pure:c}}exports.ACCESS_KEY=W;exports.Access=Ve;exports.BUILD_IN_TAGS=ae;exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=L;exports.CONTEXT_HOST=V;exports.Context=$e;exports.ContextMode=_;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=T;exports.HTML_TAGS=ie;exports.JSCodeToString=qe;exports.LIFE_CYCLES_LIST=Be;exports.LocalService=Jt;exports.MemoryService=Fe;exports.NodeEnv=Me;exports.PAGE_ROUTE_NAME=P;exports.Provider=Ae;exports.Startup=xe;exports.StorageService=Lt;exports.VTJ_RENDERER_VERSION=C;exports.adoptedStyleSheets=G;exports.clearLoaderCache=tt;exports.createAdapter=ze;exports.createAssetScripts=Ue;exports.createAssetsCss=Le;exports.createDataSources=Ce;exports.createLoader=H;exports.createMemoryService=qt;exports.createMetaApi=Se;exports.createMock=Ee;exports.createProvider=Ht;exports.createRenderer=D;exports.createSchemaApi=we;exports.createSchemaApis=be;exports.createServiceRequest=Ut;exports.defaultLoader=Pe;exports.fillBasePath=A;exports.getMock=R;exports.getModifiers=X;exports.getPlugin=Q;exports.getRawComponent=de;exports.isBuiltInTag=ge;exports.isCSSUrl=B;exports.isJSCode=ye;exports.isJSExpression=S;exports.isJSFunction=M;exports.isJSON=ce;exports.isJSUrl=U;exports.isNativeTag=ve;exports.isVuePlugin=me;exports.loadCss=pe;exports.loadCssUrl=fe;exports.loadScriptUrl=he;exports.mockApi=ke;exports.mockApis=je;exports.mockCleanup=Y;exports.nodeRender=F;exports.parseDeps=ue;exports.parseExpression=x;exports.parseFunction=I;exports.providerKey=Z;exports.removeProdFlag=le;exports.toString=K;exports.useAccess=_e;exports.useMask=Vt;exports.useProvider=ee;
|
91
|
+
}`);const t=s,n=()=>{if(typeof window<"u"){if(t.link){typeof t.link=="function"?t.link():window.location.href=t.link;return}let o=(window.__VTJ_LINK__||{}).href||window.location.pathname+"__vtj__/#/";window.location.href=o}};return(r,o)=>(p.openBlock(),p.createElementBlock("div",Mt,[p.createElementVNode("div",At,[p.createElementVNode("h1",Tt,[p.createElementVNode("span",Ft,p.toDisplayString(t.name),1)]),p.createElementVNode("div",Ot,p.toDisplayString(t.tagline),1),p.createElementVNode("div",It,[o[0]||(o[0]=p.createElementVNode("span",{"data-l-h6o7ki7":"",class:"span"},"设置项目主页后,将替换此页面显示",-1)),p.createElementVNode("span",{"data-l-h6o7ki7":"",class:"button",onClick:n},p.toDisplayString(t.actionText),1)])])]))}}),Dt=p.defineComponent({name:"VtjStartupContainer",render(){return p.h(xe)}}),Z=Symbol("Provider");var Me=(s=>(s.Production="production",s.Development="development",s))(Me||{});class Ae extends k.Base{constructor(e){super(),this.options=e;const{service:t,mode:n=_.Raw,dependencies:r,materials:o,project:a={},adapter:i={},globals:c={},modules:u={},router:m=null,materialPath:d="./",nodeEnv:f="development"}=e;this.mode=n,this.modules=u,this.service=t,this.router=m,this.materialPath=d,this.nodeEnv=f,r&&(this.dependencies=r),o&&(this.materials=o),Object.assign(this.globals,c),Object.assign(this.adapter,i);const{access:g,request:v}=this.adapter;g&&g.connect({mode:n,router:m,request:v}),a&&n!==_.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:l.request,jsonp:l.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};createMock(e){return async(...t)=>{let n={};if(e)try{n=await e.apply(e,t)}catch(o){l.logger.warn("模拟数据模版异常",o)}return R()?.mock(n)}}async load(e){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.mode===_.Raw?await this.loadDependencies(o):await this.loadAssets(o),this.initMock(o),this.apis=be(n,r,this.adapter),Y(),je(n),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=R(e);t&&t.setup({timeout:"50-500"})}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[n,r]of t)e[n]||(e[n]=this.library[n]=await r())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:n,library:r,components:o,materialPath:a,nodeEnv:i}=this,{libraryExports:c,libraryMap:u,materials:m,materialExports:d,materialMapLibrary:f}=ue(t,a,i==="development");for(const g of c){const v=n[g],h=e[g];if(h)r[g]=h;else if(v)e[g]=r[g]=await v();else{const b=u[g]||[];for(const y of b)B(y)&&await pe(g,l.url.append(y,{v:$})),U(y)&&await l.loadScript(l.url.append(y,{v:$}));r[g]=e[g]}}if(i==="development"){for(const v of m)await l.loadScript(l.url.append(v,{v:$}));const g=this.materials||{};for(const v of d){const h=e[f[v]],b=k.BUILT_IN_COMPONENTS[v];if(b)h&&b.forEach(y=>{o[y]=h[y]});else{const y=g[v]?(await g[v]()).default:e[v];y&&h&&(y.components||[]).forEach(j=>{o[j.name]=de(j,h)})}}}}initRouter(){const{router:e,project:t,options:n,adapter:r}=this;if(!e)return;const o=t?.platform==="uniapp"?"pages":"page",{routeAppendTo:a,pageRouteName:i=o,routeMeta:c}=n,u=a?"":"/",m={path:`${u}${i}/:id`,name:C,component:ne},d={path:u,name:T,component:t?.homepage?ne:r.startupComponent||Dt,meta:c};e.hasRoute(C)&&e.removeRoute(C),e.hasRoute(T)&&e.removeRoute(T),a?(e.addRoute(a,m),e.addRoute(a,d)):(e.addRoute(m),e.addRoute(d))}install(e){const t=e.config.globalProperties.installed||{};for(const[n,r]of Object.entries(this.library))!t[n]&&me(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(Z,this),e.config.globalProperties.installed=t,this.mode===_.Design&&(e.config.errorHandler=(n,r,o)=>{const a=r?.$options.name,i=typeof n=="string"?n:n?.message||n?.msg||"未知错误",c=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:n,instance:r,info:o},n?.stack),this.adapter.notify&&this.adapter.notify(c,"组件渲染错误","error")})}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,this.project||void 0).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},c=H({getDsl:async u=>await this.getDsl(u)||null,getDslByUrl:async u=>await this.getDslByUrl(u)||null,options:i});return D({...i,dsl:e,loader:c})}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 Q(e,window))}}function Ht(s){const e=new Ae(s);return{provider:e,onReady:n=>e.ready(n)}}function ee(s={}){const e=p.inject(Z);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&&e.adapter.notify&&e.adapter.notify(`[ ${r?.name} ] 组件源码版本与运行时版本不一致,请重新发布组件`,"版本不一致","warning")})()}return e}const Te={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:s=>s.data?.code===0},Nt=(s,e="/__vtj__/api/:type.json")=>(t,n,r)=>s.send({url:e,method:"post",params:{type:t},query:r,data:{type:t,data:n},settings:Te}),Bt=(s,e="/__vtj__/api/uploader.json")=>async(t,n)=>await s.send({url:e,method:"post",data:{files:t,projectId:n},settings:{...Te,type:"data"}}).then(r=>r&&r[0]?r[0]:null).catch(()=>null);function Ut(s){return l.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{s&&s(e||"未知错误")}}})}class L{api;pluginCaches={};uploader;constructor(e=l.request){this.api=Nt(e),this.uploader=Bt(e)}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 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=>ce(o))[0];if(!n)return null;const r=this.pluginCaches[n];return r||(this.pluginCaches[n]=l.request.send({url:n,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(o=>o.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const w=new l.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Lt extends L{init(e){const t=new k.ProjectModel(e),n=w.get(`project_${t.id}`),r=Object.assign(t.toDsl(),n||{});return w.save(`project_${t.id}`,r),Promise.resolve(r)}saveProject(e){const t=new k.ProjectModel(e);return w.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return w.save(`materials_${e.id}`,l.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return w.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=w.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return w.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return w.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=w.get(`history_${e}`);if(t){const r=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,r),w.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=w.get(`history_${e}`),n=new k.HistoryModel(t||{id:e});return Promise.resolve(n.toDsl())}getHistoryItem(e,t){const n=w.get(`history_${e}_${t}`);return Promise.resolve(n)}saveHistoryItem(e,t){return w.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(n=>{w.remove(`history_${e}_${n}`)}),Promise.resolve(!0)}}class Fe extends L{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new k.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 k.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 k.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 O=null;function qt(){return O||(O=new Fe,O)}class Jt extends L{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: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 Oe(s,e,t=[]){return t.map(n=>{const{id:r,title:o,icon:a,children:i,hidden:c}=n;return{id:r,title:o,icon:a,hidden:c,url:`${s}/${e}/${r}`,children:i&&i.length?Oe(s,e,i):void 0}})}function Ie(s,e){if(!e)return s;let t=[];for(const n of s)if(n.children&&n.children.length){const r=Ie(n.children,e);r.length&&(n.children=r,t.push(n))}else e.can(n.id.toString())&&t.push(n);return t}function Vt(s){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:n=!1}=s||{},r=ee(),o=se.useRoute(),a=_e(),i=p.ref(!1),c=p.ref(!1),u=r.project;p.watchEffect(()=>{const{name:f,params:g,meta:v}=o;if(f===C){const h=r.getPage(g.id);i.value=!h?.mask,c.value=!!h?.pure}else if(f===T){const h=r.getHomepage();i.value=!h?.mask,c.value=!!h?.pure}else i.value=!v.mask,c.value=!!v.pure});const m=Oe(e,t,u?.pages),d=u?.config;return{disabled:i,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||u?.description||u?.name||"VTJ App",menus:n?m:Ie(m,a),pure:c}}exports.ACCESS_KEY=W;exports.Access=Ve;exports.BUILD_IN_TAGS=ae;exports.BUILT_IN_DIRECTIVES=re;exports.BaseService=L;exports.CONTEXT_HOST=V;exports.Context=Pe;exports.ContextMode=_;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=T;exports.HTML_TAGS=ie;exports.JSCodeToString=qe;exports.LIFE_CYCLES_LIST=Be;exports.LocalService=Jt;exports.MemoryService=Fe;exports.NodeEnv=Me;exports.PAGE_ROUTE_NAME=C;exports.Provider=Ae;exports.Startup=xe;exports.StorageService=Lt;exports.VTJ_RENDERER_VERSION=$;exports.adoptedStyleSheets=G;exports.clearLoaderCache=tt;exports.createAdapter=ze;exports.createAssetScripts=Ue;exports.createAssetsCss=Le;exports.createDataSources=$e;exports.createLoader=H;exports.createMemoryService=qt;exports.createMetaApi=Se;exports.createMock=Ee;exports.createProvider=Ht;exports.createRenderer=D;exports.createSchemaApi=we;exports.createSchemaApis=be;exports.createServiceRequest=Ut;exports.defaultLoader=Ce;exports.fillBasePath=A;exports.getMock=R;exports.getModifiers=X;exports.getPlugin=Q;exports.getRawComponent=de;exports.isBuiltInTag=ge;exports.isCSSUrl=B;exports.isJSCode=ye;exports.isJSExpression=S;exports.isJSFunction=M;exports.isJSON=ce;exports.isJSUrl=U;exports.isNativeTag=ve;exports.isVuePlugin=me;exports.loadCss=pe;exports.loadCssUrl=fe;exports.loadScriptUrl=he;exports.mockApi=ke;exports.mockApis=je;exports.mockCleanup=Y;exports.nodeRender=F;exports.parseDeps=ue;exports.parseExpression=x;exports.parseFunction=I;exports.providerKey=Z;exports.removeProdFlag=le;exports.toString=K;exports.useAccess=_e;exports.useMask=Vt;exports.useProvider=ee;
|
package/dist/index.mjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Base as Ie, BUILT_IN_COMPONENTS as De, ProjectModel as O, HistoryModel as
|
1
|
+
import { Base as Ie, BUILT_IN_COMPONENTS as De, ProjectModel as O, HistoryModel as de } from "@vtj/core";
|
2
2
|
import { isUrl as He, url as R, dedupArray as Oe, isString as j, isFunction as V, logger as P, storage as L, cookie as q, toArray as ie, unRSA as ae, delay as fe, createRequest as he, jsonp as me, merge as Be, pathToRegexp as Ne, pathToRegexpMatch as Ue, formDataToJson as Le, camelCase as $, upperFirst as qe, pick as Je, request as K, loadScript as ce, Storage as ze, mapToObject as Z } from "@vtj/utils";
|
3
3
|
import * as N from "vue";
|
4
4
|
import { inject as ge, toRef as Ve, readonly as Ke, ref as M, customRef as We, onBeforeUnmount as Ge, getCurrentScope as Ye, onScopeDispose as Qe, getCurrentInstance as ve, watch as ye, toValue as ee, computed as _e, onMounted as Xe, defineComponent as te, h as W, createElementBlock as Ze, openBlock as et, createElementVNode as k, toDisplayString as J, defineAsyncComponent as le, watchEffect as tt } from "vue";
|
@@ -7,10 +7,10 @@ import { useRoute as we } 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.10.1-alpha.
|
10
|
+
* @version 0.10.1-alpha.3
|
11
11
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
12
12
|
*/
|
13
|
-
const x = "0.10.1-alpha.
|
13
|
+
const x = "0.10.1-alpha.3";
|
14
14
|
var y = /* @__PURE__ */ ((s) => (s.Runtime = "Runtime", s.Design = "Design", s.Raw = "Raw", s.VNode = "VNode", s))(y || {});
|
15
15
|
const ue = [
|
16
16
|
"$el",
|
@@ -82,12 +82,12 @@ function at(s, e = !1) {
|
|
82
82
|
return e && s.endsWith(".prod.js") ? s.replace(".prod.js", ".js") : s;
|
83
83
|
}
|
84
84
|
function ct(s, e, t = !1) {
|
85
|
-
const n = s.filter((
|
85
|
+
const n = s.filter((p) => !!p.enabled), r = [], o = [], a = [], i = [], c = {}, l = {}, f = [], u = {};
|
86
86
|
return n.forEach(
|
87
|
-
({ urls:
|
88
|
-
|
87
|
+
({ urls: p, assetsUrl: h, library: m, assetsLibrary: d, localeLibrary: w }) => {
|
88
|
+
p?.forEach((g) => {
|
89
89
|
se(g) && r.push(at(g, t)), ne(g) && o.push(g);
|
90
|
-
}), m && (i.push(m), c[m] = I(
|
90
|
+
}), m && (i.push(m), c[m] = I(p || [], e), w && (l[m] = w)), h && a.push(h), d && f.push(d), m && d && (u[d] = m);
|
91
91
|
}
|
92
92
|
), {
|
93
93
|
scripts: I(r, e),
|
@@ -126,7 +126,7 @@ async function ut(s, e) {
|
|
126
126
|
const t = await window.fetch(e).then((n) => n.text()).catch(() => "");
|
127
127
|
t && be(window, s, t);
|
128
128
|
}
|
129
|
-
function
|
129
|
+
function pt(s, e = window) {
|
130
130
|
const t = e.document, n = e.document.head;
|
131
131
|
for (const r of s)
|
132
132
|
if (!t.getElementById(r)) {
|
@@ -134,7 +134,7 @@ function dt(s, e = window) {
|
|
134
134
|
a.rel = "stylesheet", a.id = r, a.href = r, n.appendChild(a);
|
135
135
|
}
|
136
136
|
}
|
137
|
-
async function
|
137
|
+
async function dt(s, e, t = window) {
|
138
138
|
const n = t.document, r = t.document.head;
|
139
139
|
let o = t[e];
|
140
140
|
return o ? o.default || o : new Promise((a, i) => {
|
@@ -584,14 +584,14 @@ function Y(s) {
|
|
584
584
|
i.value.id,
|
585
585
|
i.value.css || ""
|
586
586
|
), l.state = Pt(e, i.value.state ?? {}, l);
|
587
|
-
const
|
587
|
+
const p = xt(e, i.value.computed ?? {}, l), h = Ct(i.value.methods ?? {}, l), m = Mt(e, i.value.inject, l), d = At(
|
588
588
|
i.value.dataSources || {},
|
589
589
|
l
|
590
590
|
), w = {
|
591
591
|
...m,
|
592
|
-
...
|
592
|
+
...p,
|
593
593
|
...h,
|
594
|
-
...
|
594
|
+
...d
|
595
595
|
};
|
596
596
|
return l.setup(w, e), Ft(e, i.value.watch ?? [], l), {
|
597
597
|
vtj: l
|
@@ -602,7 +602,7 @@ function Y(s) {
|
|
602
602
|
render() {
|
603
603
|
if (!i.value.nodes) return null;
|
604
604
|
const u = i.value.nodes || [];
|
605
|
-
return u.length === 1 ? B(u[0], l, e, a) : u.map((
|
605
|
+
return u.length === 1 ? B(u[0], l, e, a) : u.map((p) => B(p, l, e, a));
|
606
606
|
},
|
607
607
|
...Tt(i.value.lifeCycles ?? {}, l)
|
608
608
|
});
|
@@ -708,7 +708,7 @@ async function ke(s, e = window) {
|
|
708
708
|
const { urls: t = [], library: n } = s, r = t.filter((i) => se(i));
|
709
709
|
if (r.length === 0 || !n) return null;
|
710
710
|
const o = t.filter((i) => ne(i));
|
711
|
-
return o.length &&
|
711
|
+
return o.length && pt(o, e), await dt(r, n, e).catch(
|
712
712
|
(i) => (console.warn("loadScriptUrl error", r, n, i), null)
|
713
713
|
);
|
714
714
|
}
|
@@ -761,34 +761,34 @@ function In() {
|
|
761
761
|
}
|
762
762
|
function B(s, e, t = N, n = It) {
|
763
763
|
if (!s || !s.name || s.invisible) return null;
|
764
|
-
const r = t.getCurrentInstance()?.appContext, { id: o = null, directives: a = [] } = s, { vIf: i, vFor: c, vShow: l, vModels: f, vBind: u, vHtml:
|
764
|
+
const r = t.getCurrentInstance()?.appContext, { id: o = null, directives: a = [] } = s, { vIf: i, vFor: c, vShow: l, vModels: f, vBind: u, vHtml: p, others: h } = Ht(a);
|
765
765
|
if (i && !Ot(i, e))
|
766
766
|
return null;
|
767
|
-
const m = (
|
768
|
-
const w =
|
767
|
+
const m = (d) => {
|
768
|
+
const w = d.$components, g = (() => {
|
769
769
|
if (s.name === "component")
|
770
|
-
return Bt(
|
770
|
+
return Bt(d, s.props?.is);
|
771
771
|
if (s.name === "slot") return s.name;
|
772
772
|
const b = n(s.name, s.from, t);
|
773
773
|
return j(b) ? ht(b) || mt(b) ? b : w[b] ?? r?.app?.component(b) ?? b : b;
|
774
|
-
})(), S = Nt(o, s.props ?? {},
|
774
|
+
})(), S = Nt(o, s.props ?? {}, d), Fe = Ut(t, s.events ?? {}, d);
|
775
775
|
if (s.name === "slot")
|
776
|
-
return Lt(t, s, S,
|
777
|
-
u && Object.assign(S,
|
776
|
+
return Lt(t, s, S, d, n);
|
777
|
+
u && Object.assign(S, d.__parseExpression(u.value)), l && (S.style = Object.assign(
|
778
778
|
S.style ?? {},
|
779
|
-
Jt(l,
|
780
|
-
)),
|
781
|
-
Object.assign(S, Vt(t, b,
|
779
|
+
Jt(l, d)
|
780
|
+
)), p && Object.assign(S, zt(p, d)), f.forEach((b) => {
|
781
|
+
Object.assign(S, Vt(t, b, d));
|
782
782
|
});
|
783
783
|
const Te = Kt(
|
784
784
|
t,
|
785
785
|
s.children ?? [],
|
786
|
-
|
786
|
+
d,
|
787
787
|
n,
|
788
788
|
s
|
789
789
|
);
|
790
790
|
let U = t.createVNode(g, { ...S, ...Fe }, Te);
|
791
|
-
const oe = r ? Dt(r, h,
|
791
|
+
const oe = r ? Dt(r, h, d) : [];
|
792
792
|
return oe.length && (U = t.withDirectives(U, oe)), U;
|
793
793
|
};
|
794
794
|
return c ? Yt(c, m, e) : m(e);
|
@@ -845,7 +845,7 @@ function Ut(s, e, t) {
|
|
845
845
|
};
|
846
846
|
return Object.keys(e || {}).reduce(
|
847
847
|
(o, a) => {
|
848
|
-
const i = e[a], c = Ee(i.modifiers), l = c.find((
|
848
|
+
const i = e[a], c = Ee(i.modifiers), l = c.find((p) => n.includes(p)), f = "on" + qe(a) + (l && r[l] || ""), u = t.__parseFunction(i.handler);
|
849
849
|
return u && (o[f] = s.withModifiers(u, c)), o;
|
850
850
|
},
|
851
851
|
{}
|
@@ -907,9 +907,9 @@ function Kt(s, e, t, n, r) {
|
|
907
907
|
[`scope_${r.id}`]: i
|
908
908
|
} : {};
|
909
909
|
return Object.entries(o).reduce((i, [c, { nodes: l, params: f }]) => (i[c] = (u) => {
|
910
|
-
const
|
910
|
+
const p = f.length ? Je(u ?? {}, f) : a(u);
|
911
911
|
return l.map(
|
912
|
-
(h) => B(h, t.__clone(
|
912
|
+
(h) => B(h, t.__clone(p), s, n)
|
913
913
|
);
|
914
914
|
}, i), {});
|
915
915
|
}
|
@@ -983,12 +983,12 @@ function un(s, e, t = {}) {
|
|
983
983
|
const a = ln(() => n && "MutationObserver" in n), i = () => {
|
984
984
|
o && (o.disconnect(), o = void 0);
|
985
985
|
}, c = _e(() => {
|
986
|
-
const
|
986
|
+
const p = ee(s), h = tn(p).map(an).filter(Xt);
|
987
987
|
return new Set(h);
|
988
988
|
}), l = ye(
|
989
989
|
() => c.value,
|
990
|
-
(
|
991
|
-
i(), a.value &&
|
990
|
+
(p) => {
|
991
|
+
i(), a.value && p.size && (o = new MutationObserver(e), p.forEach((h) => o.observe(h, r)));
|
992
992
|
},
|
993
993
|
{ immediate: !0, flush: "post" }
|
994
994
|
), f = () => o?.takeRecords(), u = () => {
|
@@ -1000,7 +1000,7 @@ function un(s, e, t = {}) {
|
|
1000
1000
|
takeRecords: f
|
1001
1001
|
};
|
1002
1002
|
}
|
1003
|
-
function
|
1003
|
+
function pn(s = null, e = {}) {
|
1004
1004
|
var t, n, r;
|
1005
1005
|
const {
|
1006
1006
|
document: o = on,
|
@@ -1009,13 +1009,13 @@ function dn(s = null, e = {}) {
|
|
1009
1009
|
function f(u) {
|
1010
1010
|
if (!("titleTemplate" in e))
|
1011
1011
|
return u;
|
1012
|
-
const
|
1013
|
-
return typeof
|
1012
|
+
const p = e.titleTemplate || "%s";
|
1013
|
+
return typeof p == "function" ? p(u) : ee(p).replace(/%s/g, u);
|
1014
1014
|
}
|
1015
1015
|
return ye(
|
1016
1016
|
c,
|
1017
|
-
(u,
|
1018
|
-
u !==
|
1017
|
+
(u, p) => {
|
1018
|
+
u !== p && o && (o.title = f(u ?? ""));
|
1019
1019
|
},
|
1020
1020
|
{ immediate: !0 }
|
1021
1021
|
), e.observe && !e.titleTemplate && o && !l && un(
|
@@ -1031,11 +1031,11 @@ function dn(s = null, e = {}) {
|
|
1031
1031
|
}
|
1032
1032
|
}), c;
|
1033
1033
|
}
|
1034
|
-
const
|
1034
|
+
const pe = te({
|
1035
1035
|
name: "VtjPageContainer",
|
1036
1036
|
async setup() {
|
1037
1037
|
const s = xe(), e = we(), t = e.params.id, n = t ? s.getPage(t) : s.getHomepage(), r = n ? await s.getRenderComponent(n.id) : null, o = M(Symbol());
|
1038
|
-
return n && (Object.assign(e.meta, n.meta || {}, { cache: n.cache }),
|
1038
|
+
return n && (Object.assign(e.meta, n.meta || {}, { cache: n.cache }), pn(n.title || "VTJ")), {
|
1039
1039
|
provider: s,
|
1040
1040
|
component: r,
|
1041
1041
|
file: n,
|
@@ -1052,7 +1052,7 @@ const de = te({
|
|
1052
1052
|
activated() {
|
1053
1053
|
this.meta.cache === !1 && (this.sid = Symbol());
|
1054
1054
|
}
|
1055
|
-
}),
|
1055
|
+
}), dn = {
|
1056
1056
|
"data-l-h6o7ki7": "",
|
1057
1057
|
class: "vtj-startup__wrapper"
|
1058
1058
|
}, fn = {
|
@@ -1088,6 +1088,7 @@ const de = te({
|
|
1088
1088
|
grid-row: 1;
|
1089
1089
|
width: 100%;
|
1090
1090
|
max-width: 800px;
|
1091
|
+
margin: 0 10px;
|
1091
1092
|
}
|
1092
1093
|
.vtj-startup__wrapper[data-l-h6o7ki7]{
|
1093
1094
|
height: 100%;
|
@@ -1149,6 +1150,7 @@ const de = te({
|
|
1149
1150
|
cursor: pointer;
|
1150
1151
|
display: inline-block;
|
1151
1152
|
line-height: 40px;
|
1153
|
+
text-align: center;
|
1152
1154
|
}@media (max-width: 768px){
|
1153
1155
|
|
1154
1156
|
.vtj-startup__actions .button[data-l-h6o7ki7]{
|
@@ -1169,7 +1171,7 @@ const de = te({
|
|
1169
1171
|
window.location.href = o;
|
1170
1172
|
}
|
1171
1173
|
};
|
1172
|
-
return (r, o) => (et(), Ze("div",
|
1174
|
+
return (r, o) => (et(), Ze("div", dn, [
|
1173
1175
|
k("div", fn, [
|
1174
1176
|
k("h1", hn, [
|
1175
1177
|
k("span", mn, J(t.name), 1)
|
@@ -1210,10 +1212,10 @@ class Sn extends Ie {
|
|
1210
1212
|
modules: l = {},
|
1211
1213
|
router: f = null,
|
1212
1214
|
materialPath: u = "./",
|
1213
|
-
nodeEnv:
|
1215
|
+
nodeEnv: p = "development"
|
1214
1216
|
/* Development */
|
1215
1217
|
} = e;
|
1216
|
-
this.mode = n, this.modules = l, this.service = t, this.router = f, this.materialPath = u, this.nodeEnv =
|
1218
|
+
this.mode = n, this.modules = l, this.service = t, this.router = f, this.materialPath = u, this.nodeEnv = p, r && (this.dependencies = r), o && (this.materials = o), Object.assign(this.globals, c), Object.assign(this.adapter, i);
|
1217
1219
|
const { access: h, request: m } = this.adapter;
|
1218
1220
|
h && h.connect({ mode: n, router: f, request: m }), a && n !== y.Design ? this.load(a) : this.project = a;
|
1219
1221
|
}
|
@@ -1268,7 +1270,7 @@ class Sn extends Ie {
|
|
1268
1270
|
libraryMap: l,
|
1269
1271
|
materials: f,
|
1270
1272
|
materialExports: u,
|
1271
|
-
materialMapLibrary:
|
1273
|
+
materialMapLibrary: p
|
1272
1274
|
} = ct(
|
1273
1275
|
t,
|
1274
1276
|
a,
|
@@ -1276,9 +1278,9 @@ class Sn extends Ie {
|
|
1276
1278
|
/* Development */
|
1277
1279
|
);
|
1278
1280
|
for (const h of c) {
|
1279
|
-
const m = n[h],
|
1280
|
-
if (
|
1281
|
-
r[h] =
|
1281
|
+
const m = n[h], d = e[h];
|
1282
|
+
if (d)
|
1283
|
+
r[h] = d;
|
1282
1284
|
else if (m)
|
1283
1285
|
e[h] = r[h] = await m();
|
1284
1286
|
else {
|
@@ -1293,15 +1295,15 @@ class Sn extends Ie {
|
|
1293
1295
|
await ce(R.append(m, { v: x }));
|
1294
1296
|
const h = this.materials || {};
|
1295
1297
|
for (const m of u) {
|
1296
|
-
const
|
1298
|
+
const d = e[p[m]], w = De[m];
|
1297
1299
|
if (w)
|
1298
|
-
|
1299
|
-
o[g] =
|
1300
|
+
d && w.forEach((g) => {
|
1301
|
+
o[g] = d[g];
|
1300
1302
|
});
|
1301
1303
|
else {
|
1302
1304
|
const g = h[m] ? (await h[m]()).default : e[m];
|
1303
|
-
g &&
|
1304
|
-
o[S.name] = lt(S,
|
1305
|
+
g && d && (g.components || []).forEach((S) => {
|
1306
|
+
o[S.name] = lt(S, d);
|
1305
1307
|
});
|
1306
1308
|
}
|
1307
1309
|
}
|
@@ -1310,17 +1312,21 @@ class Sn extends Ie {
|
|
1310
1312
|
initRouter() {
|
1311
1313
|
const { router: e, project: t, options: n, adapter: r } = this;
|
1312
1314
|
if (!e) return;
|
1313
|
-
const
|
1314
|
-
|
1315
|
+
const o = t?.platform === "uniapp" ? "pages" : "page", {
|
1316
|
+
routeAppendTo: a,
|
1317
|
+
pageRouteName: i = o,
|
1318
|
+
routeMeta: c
|
1319
|
+
} = n, l = a ? "" : "/", f = {
|
1320
|
+
path: `${l}${i}/:id`,
|
1315
1321
|
name: C,
|
1316
|
-
component:
|
1317
|
-
},
|
1318
|
-
path:
|
1322
|
+
component: pe
|
1323
|
+
}, u = {
|
1324
|
+
path: l,
|
1319
1325
|
name: H,
|
1320
|
-
component: t?.homepage ?
|
1321
|
-
meta:
|
1326
|
+
component: t?.homepage ? pe : r.startupComponent || _n,
|
1327
|
+
meta: c
|
1322
1328
|
};
|
1323
|
-
e.hasRoute(C) && e.removeRoute(C), e.hasRoute(H) && e.removeRoute(H),
|
1329
|
+
e.hasRoute(C) && e.removeRoute(C), e.hasRoute(H) && e.removeRoute(H), a ? (e.addRoute(a, f), e.addRoute(a, u)) : (e.addRoute(f), e.addRoute(u));
|
1324
1330
|
}
|
1325
1331
|
install(e) {
|
1326
1332
|
const t = e.config.globalProperties.installed || {};
|
@@ -1618,7 +1624,7 @@ class On extends re {
|
|
1618
1624
|
return Promise.resolve(!0);
|
1619
1625
|
}
|
1620
1626
|
getHistory(e) {
|
1621
|
-
const t = v.get(`history_${e}`), n = new
|
1627
|
+
const t = v.get(`history_${e}`), n = new de(t || { id: e });
|
1622
1628
|
return Promise.resolve(n.toDsl());
|
1623
1629
|
}
|
1624
1630
|
getHistoryItem(e, t) {
|
@@ -1673,7 +1679,7 @@ class $n extends re {
|
|
1673
1679
|
return Promise.resolve(!0);
|
1674
1680
|
}
|
1675
1681
|
getHistory(e) {
|
1676
|
-
const t = this.histories[e], n = new
|
1682
|
+
const t = this.histories[e], n = new de(t || { id: e });
|
1677
1683
|
return Promise.resolve(n);
|
1678
1684
|
}
|
1679
1685
|
getHistoryItem(e, t) {
|
@@ -1783,13 +1789,13 @@ function Un(s) {
|
|
1783
1789
|
disableMenusFilter: n = !1
|
1784
1790
|
} = s || {}, r = xe(), o = we(), a = yt(), i = M(!1), c = M(!1), l = r.project;
|
1785
1791
|
tt(() => {
|
1786
|
-
const { name:
|
1787
|
-
if (
|
1788
|
-
const
|
1789
|
-
i.value = !
|
1790
|
-
} else if (
|
1791
|
-
const
|
1792
|
-
i.value = !
|
1792
|
+
const { name: p, params: h, meta: m } = o;
|
1793
|
+
if (p === C) {
|
1794
|
+
const d = r.getPage(h.id);
|
1795
|
+
i.value = !d?.mask, c.value = !!d?.pure;
|
1796
|
+
} else if (p === H) {
|
1797
|
+
const d = r.getHomepage();
|
1798
|
+
i.value = !d?.mask, c.value = !!d?.pure;
|
1793
1799
|
} else
|
1794
1800
|
i.value = !m.mask, c.value = !!m.pure;
|
1795
1801
|
});
|
@@ -1860,8 +1866,8 @@ export {
|
|
1860
1866
|
mt as isNativeTag,
|
1861
1867
|
ft as isVuePlugin,
|
1862
1868
|
ut as loadCss,
|
1863
|
-
|
1864
|
-
|
1869
|
+
pt as loadCssUrl,
|
1870
|
+
dt as loadScriptUrl,
|
1865
1871
|
$t as mockApi,
|
1866
1872
|
bt as mockApis,
|
1867
1873
|
$e as mockCleanup,
|
package/package.json
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vtj/renderer",
|
3
3
|
"private": false,
|
4
|
-
"version": "0.10.1-alpha.
|
4
|
+
"version": "0.10.1-alpha.3",
|
5
5
|
"type": "module",
|
6
6
|
"dependencies": {
|
7
|
-
"@vtj/core": "~0.10.1-alpha.
|
8
|
-
"@vtj/utils": "~0.10.1-alpha.
|
7
|
+
"@vtj/core": "~0.10.1-alpha.3",
|
8
|
+
"@vtj/utils": "~0.10.1-alpha.3"
|
9
9
|
},
|
10
10
|
"devDependencies": {
|
11
11
|
"vue": "~3.5.5",
|
12
12
|
"vue-router": "~4.5.0",
|
13
|
+
"@vtj/ui": "~0.10.1-alpha.3",
|
13
14
|
"@vtj/cli": "~0.10.0",
|
14
|
-
"@vtj/icons": "~0.10.1-alpha.
|
15
|
-
"@vtj/ui": "~0.10.1-alpha.2"
|
15
|
+
"@vtj/icons": "~0.10.1-alpha.3"
|
16
16
|
},
|
17
17
|
"exports": {
|
18
18
|
".": {
|
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.10.1-alpha.
|
5
|
+
* @version 0.10.1-alpha.2
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
7
|
*/
|
8
|
-
export declare const version = "0.10.1-alpha.
|
8
|
+
export declare const version = "0.10.1-alpha.2";
|