@vtj/renderer 0.9.23 → 0.9.24
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 +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +5 -5
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
@@ -2,9 +2,9 @@
|
|
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.9.
|
5
|
+
* @version 0.9.24
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const R="0.9.
|
7
|
+
*/const R="0.9.24";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},k="VtjPage",M="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 T(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:R})}"><\/script>`).join("")}function Le(s=[]){return s.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:R})}" />`).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]=T(f||[],e),b&&(u[v]=b)),g&&a.push(g),h&&m.push(h),v&&h&&(p[h]=v)}),{scripts:T(r,e),css:T(o,e),materials:T(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 z(s){return l.isString(s)?s:JSON.stringify(s)}function K(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&&K(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 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
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 A(s){return typeof s=="object"&&s&&s.type==="JSFunction"}function ye(s){return S(s)||A(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:""},G=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(G,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===k){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(G,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=[]){C&&(W(),s.forEach(e=>$e(C,e)))}function Ee(s){const e=A(s.mockTemplate)&&s.mockTemplate.value?I(s.mockTemplate,{},!0):void 0;return async(...t)=>{let n={};if(e)try{n=await e.apply(e,t)}catch(r){l.logger.warn("模拟数据模版异常",r)}return C.mock(n)}}function $e(s,e){if(!e.mock)return;const{url:t,mockTemplate:n}=e;if(t&&n){const r=l.pathToRegexp(`${t}(.*)`),o=l.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=x(n,{},!0);s.mock(r,i=>{const 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 W(){C&&(C._mocked={})}class Ce{__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 Ce({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&&K(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=Pe(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):A(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 Pe(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=A(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 Re=s=>s;async function Y(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 Y(o,n.window);return c||(console.warn("getPlugin result is null",o),null)}),i)}return r}}function F(s,e,t=N,n=Re){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}=nt(a);if(i&&!st(i,e))return null;const v=h=>{const b=h.$components,y=(()=>{if(s.name==="component")return rt(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=ot(o,s.props??{},h),De=it(t,s.events??{},h);if(s.name==="slot")return at(t,s,j,h,n);p&&Object.assign(j,h.__parseExpression(p.value)),u&&(j.style=Object.assign(j.style??{},lt(u,h))),f&&Object.assign(j,ut(f,h)),m.forEach(E=>{Object.assign(j,dt(t,E,h))});const He=pt(t,s.children??[],h,n,s);let q=t.createVNode(y,{...j,...De},He);const te=r?tt(r,g,h):[];return te.length&&(q=t.withDirectives(q,te)),q};return c?mt(c,v,e):v(e)}function tt(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 nt(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 st(s,e){return!!e.__parseExpression(s.value)}function rt(s,e){return e?S(e)?s.__parseExpression(e):e:"div"}function ot(s,e,t){const n=Object.keys(e||{}).reduce((r,o)=>{let a=e[o];return S(a)?a=t.__parseExpression(a):A(a)&&(a=t.__parseFunction(a)),r[o]=a,r},{});return n.ref=t.__ref(s,n.ref),n}function it(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=Q(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 Q(s={},e=!1){const t=Object.keys(s);return e?t.map(n=>"."+n):t}function at(s,e,t,n,r){const{children:o}=e,a=ct(e,n),i=n.$slots?.[a.name];return i?i(t):o?l.isString(o)?s.createTextVNode(o):S(o)?s.createTextVNode(z(n.__parseExpression(o))):Array.isArray(o)?o.map(c=>F(c,n,s,r)):null:null}function ct(s,e){const{props:t}=s,n=t?.name||"default";return{name:S(n)?e.__parseExpression(n):n,params:[]}}function lt(s,e){return e.__parseExpression(s.value)?{}:{display:"none"}}function ut(s,e){return{innerHTML:e.__parseExpression(s.value)||""}}function dt(s,e,t){const n={type:"JSFunction",value:e.value?.value?`(v) => {
|
9
9
|
${e.value.value} = v;
|
10
10
|
}`:"(v) => {}"},r=t.__parseFunction(n),o=Q(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 pt(s,e,t,n,r){if(!e)return null;if(l.isString(e))return{default:()=>e};if(S(e))return{default:()=>z(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=ft(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 ft(s){const e={default:{params:[],nodes:[]}};for(const t of s){const n=ht(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 ht(s="default"){return l.isString(s)?{name:s,params:[]}:{params:[],...s}}function mt(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 gt(s){return d.getCurrentScope()?(d.onScopeDispose(s),!0):!1}function X(s){return typeof s=="function"?s():d.unref(s)}const ke=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const vt=s=>s!=null,yt=()=>{};function _t(s){return d.getCurrentInstance()}function wt(...s){if(s.length!==1)return d.toRef(...s);const e=s[0];return typeof e=="function"?d.readonly(d.customRef(()=>({get:e,set:yt}))):d.ref(e)}function St(s,e){_t()&&d.onBeforeUnmount(s,e)}const bt=ke?window:void 0,jt=ke?window.document:void 0;function Et(s){var e;const t=X(s);return(e=t?.$el)!=null?e:t}function $t(){const s=d.ref(!1),e=d.getCurrentInstance();return e&&d.onMounted(()=>{s.value=!0},e),s}function Ct(s){const e=$t();return d.computed(()=>(e.value,!!s()))}function Pt(s,e,t={}){const{window:n=bt,...r}=t;let o;const a=Ct(()=>n&&"MutationObserver"in n),i=()=>{o&&(o.disconnect(),o=void 0)},c=d.computed(()=>{const f=X(s),g=(Array.isArray(f)?f:[f]).map(Et).filter(vt);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 gt(p),{isSupported:a,stop:p,takeRecords:m}}function Rt(s=null,e={}){var t,n,r;const{document:o=jt,restoreOnUnmount:a=p=>p}=e,i=(t=o?.title)!=null?t:"",c=wt((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):X(f).replace(/%s/g,p)}return d.watch(c,(p,f)=>{p!==f&&o&&(o.title=m(typeof p=="string"?p:""))},{immediate:!0}),e.observe&&!e.titleTemplate&&o&&!u&&Pt((r=o.head)==null?void 0:r.querySelector("title"),()=>{o&&o.title!==c.value&&(c.value=m(o.title))},{childList:!0}),St(()=>{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}),Rt(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())}}),kt={"data-l-h6o7ki7":"",class:"vtj-startup__wrapper"},xt={"data-l-h6o7ki7":"",class:"vtj-startup"},At={"data-l-h6o7ki7":"",class:"vtj-startup__name"},Tt={"data-l-h6o7ki7":""},Mt={"data-l-h6o7ki7":"",class:"vtj-startup__tagline"},Ft={"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",`
|
package/dist/index.mjs
CHANGED
@@ -8,10 +8,10 @@ import { useRoute as _e } from "vue-router";
|
|
8
8
|
* Copyright (c) 2025, VTJ.PRO All rights reserved.
|
9
9
|
* @name @vtj/renderer
|
10
10
|
* @author CHC chenhuachun1549@dingtalk.com
|
11
|
-
* @version 0.9.
|
11
|
+
* @version 0.9.24
|
12
12
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
13
13
|
*/
|
14
|
-
const C = "0.9.
|
14
|
+
const C = "0.9.24";
|
15
15
|
var y = /* @__PURE__ */ ((s) => (s.Runtime = "Runtime", s.Design = "Design", s.Raw = "Raw", s.VNode = "VNode", s))(y || {});
|
16
16
|
const le = [
|
17
17
|
"$el",
|
package/package.json
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vtj/renderer",
|
3
3
|
"private": false,
|
4
|
-
"version": "0.9.
|
4
|
+
"version": "0.9.24",
|
5
5
|
"type": "module",
|
6
6
|
"dependencies": {
|
7
7
|
"mockjs": "~1.1.0",
|
8
|
-
"@vtj/core": "~0.9.
|
9
|
-
"@vtj/utils": "~0.9.
|
8
|
+
"@vtj/core": "~0.9.24",
|
9
|
+
"@vtj/utils": "~0.9.24"
|
10
10
|
},
|
11
11
|
"devDependencies": {
|
12
12
|
"vue": "~3.5.5",
|
13
13
|
"vue-router": "~4.5.0",
|
14
14
|
"@vtj/cli": "~0.9.8",
|
15
|
-
"@vtj/icons": "~0.9.
|
16
|
-
"@vtj/ui": "~0.9.
|
15
|
+
"@vtj/icons": "~0.9.24",
|
16
|
+
"@vtj/ui": "~0.9.24"
|
17
17
|
},
|
18
18
|
"exports": {
|
19
19
|
".": {
|
package/types/version.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* Copyright (c) 2025, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.9.
|
5
|
+
* @version 0.9.23
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
7
|
*/
|
8
|
-
export declare const version = "0.9.
|
8
|
+
export declare const version = "0.9.23";
|