@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 CHANGED
@@ -1,13 +1,13 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("@vtj/core"),l=require("@vtj/utils"),d=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(d);/**!
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.2
5
+ * @version 0.10.1-alpha.3
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
- */const C="0.10.1-alpha.2";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},P="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:C})}"><\/script>`).join("")}function Le(s=[]){return s.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:C})}" />`).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=[],p={};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&&(p[h]=v)}),{scripts:A(r,e),css:A(o,e),materials:A(a,e),libraryExports:i,materialExports:l.dedupArray(m),materialMapLibrary:p,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===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]=p=>{const f=m.length?l.pick(p??{},m):a(p);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 d.getCurrentScope()?(d.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 d.getCurrentInstance()}function St(s){return Array.isArray(s)?s:[s]}function bt(...s){if(s.length!==1)return d.toRef(...s);const e=s[0];return typeof e=="function"?d.readonly(d.customRef(()=>({get:e,set:_t}))):d.ref(e)}function jt(s,e){wt()&&d.onBeforeUnmount(s,e)}const Et=Re?window:void 0,kt=Re?window.document:void 0;function $t(s){var e;const t=d.toValue(s);return(e=t?.$el)!=null?e:t}function Ct(){const s=d.ref(!1),e=d.getCurrentInstance();return e&&d.onMounted(()=>{s.value=!0},e),s}function Pt(s){const e=Ct();return d.computed(()=>(e.value,!!s()))}function Rt(s,e,t={}){const{window:n=Et,...r}=t;let o;const a=Pt(()=>n&&"MutationObserver"in n),i=()=>{o&&(o.disconnect(),o=void 0)},c=d.computed(()=>{const f=d.toValue(s),g=St(f).map($t).filter(yt);return new Set(g)}),u=d.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(),p=()=>{u(),i()};return vt(p),{isSupported:a,stop:p,takeRecords:m}}function xt(s=null,e={}){var t,n,r;const{document:o=kt,restoreOnUnmount:a=p=>p}=e,i=(t=o?.title)!=null?t:"",c=bt((n=s??o?.title)!=null?n:null),u=!!(s&&typeof s=="function");function m(p){if(!("titleTemplate"in e))return p;const f=e.titleTemplate||"%s";return typeof f=="function"?f(p):d.toValue(f).replace(/%s/g,p)}return d.watch(c,(p,f)=>{p!==f&&o&&(o.title=m(p??""))},{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 p=a(i,c.value||"");p!=null&&o&&(o.title=p)}}),c}const ne=d.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=d.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?d.h(s,{...e,key:t}):d.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=d.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",`
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 pe } from "@vtj/core";
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.2
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.2";
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((d) => !!d.enabled), r = [], o = [], a = [], i = [], c = {}, l = {}, f = [], u = {};
85
+ const n = s.filter((p) => !!p.enabled), r = [], o = [], a = [], i = [], c = {}, l = {}, f = [], u = {};
86
86
  return n.forEach(
87
- ({ urls: d, assetsUrl: h, library: m, assetsLibrary: p, localeLibrary: w }) => {
88
- d?.forEach((g) => {
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(d || [], e), w && (l[m] = w)), h && a.push(h), p && f.push(p), m && p && (u[p] = m);
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 dt(s, e = window) {
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 pt(s, e, t = window) {
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 d = xt(e, i.value.computed ?? {}, l), h = Ct(i.value.methods ?? {}, l), m = Mt(e, i.value.inject, l), p = At(
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
- ...d,
592
+ ...p,
593
593
  ...h,
594
- ...p
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((d) => B(d, l, e, a));
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 && dt(o, e), await pt(r, n, e).catch(
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: d, others: h } = Ht(a);
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 = (p) => {
768
- const w = p.$components, g = (() => {
767
+ const m = (d) => {
768
+ const w = d.$components, g = (() => {
769
769
  if (s.name === "component")
770
- return Bt(p, s.props?.is);
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 ?? {}, p), Fe = Ut(t, s.events ?? {}, p);
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, p, n);
777
- u && Object.assign(S, p.__parseExpression(u.value)), l && (S.style = Object.assign(
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, p)
780
- )), d && Object.assign(S, zt(d, p)), f.forEach((b) => {
781
- Object.assign(S, Vt(t, b, p));
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
- p,
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, p) : [];
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((d) => n.includes(d)), f = "on" + qe(a) + (l && r[l] || ""), u = t.__parseFunction(i.handler);
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 d = f.length ? Je(u ?? {}, f) : a(u);
910
+ const p = f.length ? Je(u ?? {}, f) : a(u);
911
911
  return l.map(
912
- (h) => B(h, t.__clone(d), s, n)
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 d = ee(s), h = tn(d).map(an).filter(Xt);
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
- (d) => {
991
- i(), a.value && d.size && (o = new MutationObserver(e), d.forEach((h) => o.observe(h, r)));
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 dn(s = null, e = {}) {
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 d = e.titleTemplate || "%s";
1013
- return typeof d == "function" ? d(u) : ee(d).replace(/%s/g, u);
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, d) => {
1018
- u !== d && o && (o.title = f(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 de = te({
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 }), dn(n.title || "VTJ")), {
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
- }), pn = {
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", pn, [
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: d = "development"
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 = d, r && (this.dependencies = r), o && (this.materials = o), Object.assign(this.globals, c), Object.assign(this.adapter, i);
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: d
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], p = e[h];
1280
- if (p)
1281
- r[h] = p;
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 p = e[d[m]], w = De[m];
1298
+ const d = e[p[m]], w = De[m];
1297
1299
  if (w)
1298
- p && w.forEach((g) => {
1299
- o[g] = p[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 && p && (g.components || []).forEach((S) => {
1304
- o[S.name] = lt(S, p);
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 { routeAppendTo: o, pageRouteName: a = "page", routeMeta: i } = n, c = o ? "" : "/", l = {
1314
- path: `${c}${a}/:id`,
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: de
1317
- }, f = {
1318
- path: c,
1322
+ component: pe
1323
+ }, u = {
1324
+ path: l,
1319
1325
  name: H,
1320
- component: t?.homepage ? de : r.startupComponent || _n,
1321
- meta: i
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), o ? (e.addRoute(o, l), e.addRoute(o, f)) : (e.addRoute(l), e.addRoute(f));
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 pe(t || { id: e });
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 pe(t || { id: e });
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: d, params: h, meta: m } = o;
1787
- if (d === C) {
1788
- const p = r.getPage(h.id);
1789
- i.value = !p?.mask, c.value = !!p?.pure;
1790
- } else if (d === H) {
1791
- const p = r.getHomepage();
1792
- i.value = !p?.mask, c.value = !!p?.pure;
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
- dt as loadCssUrl,
1864
- pt as loadScriptUrl,
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.2",
4
+ "version": "0.10.1-alpha.3",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@vtj/core": "~0.10.1-alpha.2",
8
- "@vtj/utils": "~0.10.1-alpha.2"
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.2",
15
- "@vtj/ui": "~0.10.1-alpha.2"
15
+ "@vtj/icons": "~0.10.1-alpha.3"
16
16
  },
17
17
  "exports": {
18
18
  ".": {
@@ -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.1
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.1";
8
+ export declare const version = "0.10.1-alpha.2";