@vtj/renderer 0.12.68 → 0.12.70
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.12.
|
5
|
+
* @version 0.12.70
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const I="0.12.
|
7
|
+
*/const I="0.12.70";var S=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(S||{});const Z=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],et=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],_e=["vIf","vElseIf","vElse","vShow","vModel","vFor","vBind","vHtml"],Se={String,Number,Boolean,Array,Object,Function,Date},T="VtjPage",H="VtjHomepage",we="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot,svg".split(","),Ee="component,slot".split(","),tt=["h","t","t","p","s",":","/","/","l","c","d","p",".","v","t","j",".","p","r","o"].join(""),st={auth:["h","t","t","p","s",":","/","/","l","c","d","p",".","v","t","j",".","p","r","o","/","a","u","t","h",".","h","t","m","l"].join(""),storageKey:["R","R","O","_","I","D","E","_","A","C","C","E","S","S","_","S","T","O","R","A","G","E","_","_"].join(""),privateKey:"MIIBOgIBAAJBAKoIzmn1FYQ1YOhOBw9EhABxZ+PySAIaydI+zdhoKflrdgJ4A5E4/5gbQmRpk09hPWG8nvX7h+l/QLU8kXxAIBECAwEAAQJAAlgpxQY6sByLsXqzJcthC8LSGsLf2JEJkHwlnpwFqlEV8UCkoINpuZ2Wzl+aftURu5rIfAzRCQBvHmeOTW9/zQIhAO5ufWDmnSLyfAAsNo5JRNpVuLFCFodR8Xm+ulDlosR/AiEAtpAltyP9wmCABKG/v/hrtTr3mcvFNGCjoGa9bUAok28CIHbrVs9w1ijrBlvTsXYwJw46uP539uKRRT4ymZzlm9QjAiB+1KH/G9f9pEEL9rtaSOG7JF5D0JcOjlze4MGVFs+ZrQIhALKOUFBNr2zEsyJIjw2PlvEucdlG77UniszjXTROHSPd"};function D(r,e){return r.map(t=>d.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function B(r){return/\.css$/.test(r)}function N(r){return/\.js$/.test(r)}function $e(r){return/\.json$/.test(r)}function rt(r){return r.map(e=>`<script src="${d.url.append(e,{v:I})}"><\/script>`).join("")}function nt(r=[]){return r.map(e=>`<link rel="stylesheet" href="${d.url.append(e,{v:I})}" />`).join("")}function je(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function Ce(r,e,t=!1){const s=r.filter(m=>!!m.enabled),n=[],o=[],a=[],i=[],p={},c={},l=[],u={};return s.forEach(({urls:m,assetsUrl:f,library:h,assetsLibrary:y,localeLibrary:v})=>{m?.forEach(g=>{N(g)&&n.push(je(g,t)),B(g)&&o.push(g)}),h&&(i.push(h),p[h]=D(m||[],e),v&&(c[h]=v)),f&&a.push(f),y&&l.push(y),h&&y&&(u[y]=h)}),{scripts:D(n,e),css:D(o,e),materials:D(a,e),libraryExports:i,materialExports:d.dedupArray(l),materialMapLibrary:u,libraryMap:p,libraryLocaleMap:c}}function Re(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function be(r=[]){const e=r.filter(s=>B(s)),t=r.filter(s=>N(s));return{css:e,js:t}}function Pe(r,e){const t=c=>{const l=[];let u=0;for(;u<c.length;){if(/\s/.test(c[u])){u++;continue}if(c.substring(u,u+2)==="/*"){const g=c.indexOf("*/",u+2);if(g!==-1){u=g+2;continue}}if(c[u]==="@"){const g=u;for(;u<c.length&&c[u]!=="{"&&c[u]!==";";)u++;const C=c.substring(g,u).trim(),_=C.includes("@keyframes");if(c[u]===";")l.push({type:"simple-at-rule",content:c.substring(g,u+1)}),u++;else if(c[u]==="{"){const U=u+1;let P=1;for(u++;u<c.length&&P>0;)c[u]==="{"?P++:c[u]==="}"&&P--,u++;const V=c.substring(g,u),R=c.substring(U,u-1);l.push({type:_?"keyframes":"at-rule",rule:C,content:V,inner:R})}continue}const m=u;for(;u<c.length&&c[u]!=="{";)u++;if(u>=c.length)break;const f=c.substring(m,u).trim();if(!f){u++;continue}const h=u+1;let y=1;for(u++;u<c.length&&y>0;)c[u]==="{"?y++:c[u]==="}"&&y--,u++;const v=c.substring(h,u-1);l.push({type:"rule",selector:f,content:v.trim()})}return l},s=c=>{const l=c.trim();return/^(from|to|\d+(\.\d+)?%)$/.test(l)},n=c=>c.replace(/::v-deep\(/g,":deep(").replace(/::v-deep\s+/g,":deep(").replace(/\/deep\//g," ").replace(/>>>/g," ").replace(/(.*?):deep\(([^)]+)\)/g,(l,u,m)=>{const f=u.trim(),h=m.trim();return f?`${f}[${e}] ${h}`:h}),o=c=>{const l=c.trim();if(!l||l.includes(`[${e}]`)||/^(:root|:host|html|body)(\s|$|:|\.|\#|\[)/.test(l)||s(l))return l;const u=l.match(/^(.+?)((?:::?[\w-]+(?:\([^)]*\))?)*)\s*$/);if(u){const[,m,f=""]=u,h=m.trim();return h?`${h}[${e}]${f}`:l}return`${l}[${e}]`},a=c=>n(c).split(",").map(u=>o(u)).filter(u=>u.trim()).join(", "),i=c=>c.map(l=>{switch(l.type){case"simple-at-rule":return l.content;case"keyframes":return l.content;case"at-rule":try{const m=t(l.inner),f=i(m);return`${l.rule} { ${f} }`}catch{return l.content}case"rule":if(!l.selector||!l.content)return"";const u=a(l.selector);return u.trim()?`${u} { ${l.content} }`:"";default:return""}}).filter(l=>l.trim()).join(" "),p=c=>c.replace(/\s*{\s*/g," { ").replace(/\s*}\s*/g," } ").replace(/\s*;\s*/g,"; ").replace(/\s*,\s*/g,", ").replace(/\s+/g," ").replace(/^\s+|\s+$/g,"").replace(/\s*}\s*}/g," } }").trim();try{const c=r.replace(/\/\*(?!\s*!)[\s\S]*?\*\//g,"").replace(/^\s+|\s+$/gm,"").replace(/\n\s*\n/g,`
|
8
8
|
`),l=t(c),u=i(l);return p(u)}catch(c){return console.error("CSS scoping failed:",c),console.error("Input CSS:",r),r.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(@keyframes\s+[^{]+\s*{[^{}]*(?:{[^}]*}[^{}]*)*})/g,l=>l).replace(/([^{}@]+)(?=\s*{)/g,l=>{const u=l.trim();return!u||u.startsWith("@")||u.includes(`[${e}]`)||s(u)?l:`${u}[${e}]`})}}function se(r){return d.isString(r)?r:JSON.stringify(r)}function re(r,e,t,s=!1){const n=r.CSSStyleSheet,o=s?`data-v-${e}`:e,a=s?Pe(t,o):t;if(n.prototype.replaceSync){const i=new n;i.id=e,i.replaceSync(a);const p=r.document,c=p.adoptedStyleSheets,l=Array.from(c).filter(u=>u.id!==e);p.adoptedStyleSheets=[...l,i]}else{const i=r.document;let p=i.getElementById(e);p?p.innerHTML=a:(p=i.createElement("style"),p.id=e,p.innerHTML=a,i.head.appendChild(p))}}async function Ae(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&re(window,r,t)}function ne(r,e=window){const t=e.document,s=e.document.head;for(const n of r)if(!t.getElementById(n)){const a=t.createElement("link");a.rel="stylesheet",a.id=n,a.href=n,s.appendChild(a)}}async function oe(r,e,t=window){const s=t.document,n=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const p of r){const c=s.createElement("script");c.src=p,c.onload=()=>{o=t[e],o?a(o.default||o):i(null)},c.onerror=l=>{i(l)},n.appendChild(c)}})}function Me(r){return d.isFunction(r)||d.isFunction(r?.install)}function Ie(r){return Ee.includes(r)}function Te(r){return we.includes(r)}function F(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function ot(r,e,t){Object.assign(e.meta,t.meta);const s=r?._container;t?.type==="page"&&s.classList.add("is-page"),t?.pure&&s.classList.add("is-pure")}function k(r,e,t=!1,s=!1){try{const n=['"use strict";',"var __self = arguments[0];"];n.push("return ");let o=(r.value||"").trim();o=o.replace(/this(\W|$)/g,(i,p)=>`__self${p}`),o=n.join(`
|
9
9
|
`)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(n){if(d.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function J(r,e,t=!1,s=!1){const n=k(r,e,t,s);if(typeof n!="function"&&(d.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function $(r){return r&&r.type==="JSExpression"}function O(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function Fe(r){return $(r)||O(r)}function it(r){return Fe(r)?r.value:JSON.stringify(r)}const at={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},ie=Symbol("access");class ae{options;data=null;mode=S.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},at,e),this.loadData()}enableIntercept(){this.interceptResponse=!0}disableIntercept(){this.interceptResponse=!1}connect(e){const{mode:t,router:s,request:n}=e;this.mode=t,s&&this.mode===S.Raw&&this.setGuard(s),n&&this.setRequest(n)}login(e){const{storageKey:t,storagePrefix:s,session:n,authKey:o}=this.options;this.setData(e),this.data&&(d.storage.save(t,e,{type:"local",prefix:s}),n&&d.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,d.storage.remove(e,{type:"local",prefix:t}),s&&d.cookie.remove(n)}logout(){this.clear(),this.toLogin()}getData(){return this.data?this.data:(this.loadData(),this.data)}getToken(){return this.data||this.loadData(),this.data?.token}can(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return typeof e=="function"?e(s):d.toArray(e).every(o=>s[o]||s[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return d.toArray(e).some(o=>s[o]||s[t+"."+o])}install(e){e.config.globalProperties.$access=this,e.provide(ie,this)}isAuthPath(e){const{auth:t,isAuth:s}=this.options;if(s)return s(e);if(e.path&&typeof t=="string"){const n=t.split("#")[1]||t;return e.path===n}return!1}toLogin(){const{auth:e,redirectParam:t}=this.options;if(!e)return;const s=t?`?${t}=${encodeURIComponent(location.href)}`:"";typeof e=="function"?e(s):location.href=t?`${e}${s}`:e}setData(e){const{privateKey:t}=this.options;if(Array.isArray(e)&&t){const s=e.map(n=>d.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?d.unRSA(e,t):e;s?this.data=JSON.parse(s):console.warn("RSA解密失败或登录信息缺失")}catch(s){console.warn(s)}else this.data=e}loadData(){const{storageKey:e,storagePrefix:t}=this.options,s=d.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!d.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===T){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,s,n)=>this.guard(t,n))}async guard(e,t){if(this.isWhiteList(e)||this.isAuthPath(e))return t();if(this.isLogined()){if(this.hasRoutePermission(e))return t();{const{noPermissionMessage:s="无权限访问",unauthorized:n=!1}=this.options;return await this.showTip(s),d.isFunction(n)?(n(),t(!1)):d.isString(n)?t(n):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(s=>e.fullPath.startsWith(s)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401,statusKey:s="code"}=this.options;return e.status===t||e.data?.[s]===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await d.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=>(this.interceptResponse&&await this.showUnauthorizedAlert(t),t),async t=>{if(!this.interceptResponse)return Promise.reject(t);const s=t.response||t||{};return await this.showUnauthorizedAlert(s),Promise.reject(t)})}}function ke(){return E.inject(ie,null)}function ct(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:o,useTitle:a,alert:i}=r;let p=null;return{request:d.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:l=>l.data?.code===0||!!l.data?.success,failMessage:!0,showError:l=>{e&&e(l||"未知错误")},showLoading:()=>{p&&p.close(),t&&(p=t())},hideLoading:()=>{p&&(p.close(),p=null)},...s}}),jsonp:d.jsonp,notify:e,loading:t,useTitle:a,startupComponent:n,access:o?new ae({alert:i,...o}):void 0}}function lt(r={}){return new ae(r)}function Oe(r,e){const{jsonp:t,request:s}=e;if(r.method==="jsonp")return(n={})=>t(r.url,{...r.jsonpOptions,query:n});{const n=r.headers?k(r.headers,{},!0):void 0,o={url:r.url,method:r.method,settings:{...r.settings,headers:n}};return(a,i)=>(delete o.data,s.send(d.merge(o,i||{},{data:a})))}}function De(r,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:n}=r;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,n,o,a)}}function He(r=[],e=[],t){const s={};for(const n of r)s[n.id]=Oe(n,t);for(const n of e)s[n.id]=De(n,t);return s}async function xe(r=[],e=window){const t=F(e);t&&(ce(e),r.forEach(s=>Ne(t,s)))}function Be(r,e=window){const t=O(r.mockTemplate)&&r.mockTemplate.value?J(r.mockTemplate,{},!0):void 0,s=F(e);return async(...n)=>{let o={};if(t)try{o=await t.apply(t,n)}catch(a){d.logger.warn("模拟数据模版异常",a)}return s?.mock(o)}}function Ne(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const n=d.pathToRegexp(`${t}(.*)`),o=d.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=k(s,{},!0);r.mock(n,i=>{const p=d.url.parse(i.url)||{},c=i.body instanceof FormData?d.formDataToJson(i.body):i.body,l=o(i.url)?.params;return Object.assign(i,{data:c,params:p,query:l}),r.mock(a(i))})}}function ce(r=window){const e=F(r);e&&(e._mocked={})}class Ue{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};props={};$props={};$refs={};$el=null;$emit=null;$nextTick=null;$parent=null;$root=null;$attrs=null;$slots=null;$watch=null;$options=null;$forceUpdate=null;$components={};$libs={};$apis={};__transform={};constructor(e){const{mode:t,dsl:s,attrs:n}=e;this.__mode=t,s&&(this.__id=s.id||null,this.__transform=s.transform||{}),n&&Object.assign(this,n)}setup(e,t=z){const s=t.getCurrentInstance();if(!s)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=s.proxy;const n=s.appContext.config.globalProperties;Object.assign(this,n),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__reset()})}__proxy(){this.__instance&&Z.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){Z.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return J({type:s,value:n},this)}else return J(e,this)}__parseExpression(e){if(e)if(this.__mode===S.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return k({type:s,value:n},this)}else return k(e,this)}__ref(e=null,t){if(this.__mode!==S.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await d.delay(0);let n=s?.$vtjEl||s?.$el||s?._?.vnode?.el||s;if(!n){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}return n.nodeType===3&&n.nextSibling&&(n=n.nextSibling),n.__vtj__=e,S.Design===this.__mode&&(n.__context__=this,n.draggable=!0),e&&(this.__refs[e]=this.__getRefEl(this.__refs,e,s)),typeof t=="function"?t(s):t&&(this.$refs[t]=this.__getRefEl(this.$refs,t,s)),s}}__getRefEl(e,t,s){const n=e[t];if(n&&s!==n){const o=new Set([].concat(n,s));return Array.from(o)}else return s}__clone(e={}){const t={...this.context,...e},s={...t,context:t};return s.context.__proto__=this.context,s.__proto__=this,s}}function q(r){const{Vue:e=z,mode:t=S.Runtime,components:s={},libs:n={},apis:o={},loader:a}=r,i=e.computed(()=>r.dsl),p={$components:s,$libs:n,$apis:o},c=new Ue({mode:t,dsl:i.value,attrs:p}),l=e.defineComponent({name:i.value.name,__scopeId:i.value.id?`data-v-${i.value.id}`:void 0,props:{...pt(i.value.props??[],c)},setup(u){c.$props=u,c.props=u,i.value.id&&re(r.window||window,i.value.id,i.value.css||"",!0),c.state=dt(e,i.value.state??{},c);const m=ft(e,i.value.computed??{},c),f=ht(i.value.methods??{},c),h=mt(e,i.value.inject,c);for(const[g,C]of Object.entries(h||{}))h[g]=e.inject(g,C);const y=Le(i.value.dataSources||{},c),v={...h,...m,...f,...y};return c.setup(v,e),gt(e,i.value.watch??[],c),{vtj:c}},emits:ut(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const u=i.value.nodes||[];return u.length===1?M(u[0],c,e,a,u):u.map(m=>M(m,c,e,a,u))},...vt(i.value.lifeCycles??{},c)});return{renderer:e.markRaw(l),context:c}}function ut(r=[]){return r.map(e=>d.isString(e)?e:e.name)}function pt(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(o=>Se[o]):void 0;return r.map(s=>d.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:$(s.default)?e.__parseExpression(s.default):s.default}).reduce((s,n)=>(s[n.name]={type:t(n.type),required:n.required,default:n.default},s),{})}function dt(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let o=e[n];return $(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),s[n]=o,s},{}))}function ft(r,e,t){return Object.entries(e??{}).reduce((s,[n,o])=>(s[n]=r.computed(t.__parseFunction(o)),s),{})}function ht(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function mt(r,e=[],t){return e.reduce((s,n)=>{const{name:o,from:a}=n||{};n.default;const i=$(a)?t.__parseExpression(a)||o:a??o,p=$(n.default)?t.__parseExpression(n.default):n.default??null;return s[o]=r.inject(i,p),s},{})}function Le(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=Be(n);else if(n.ref){const o=e.$apis[n.ref],a=O(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...i)=>{const p=await o.apply(e,i);return a?a(p):p}}return t},{})}function gt(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function vt(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>{const o=e.__parseFunction(n);return t[s]=async()=>{await d.delay(0),d.isFunction(o)&&o()},t},{})}const Je=new d.Queue;let Q=[],A={};const qe=r=>r;async function le(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(i=>N(i));if(n.length===0||!s)return null;const o=t.filter(i=>B(i));return o.length&&ne(o,e),await oe(n,s,e).catch(i=>(console.warn("loadScriptUrl error",n,s,i),null))}function K(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(Q.forEach(n=>{delete s.window[n]}),Q=[]),(n,o,a=z)=>{if(!o||typeof o=="string")return n;if(o.type==="Schema"&&o.id)return a.defineAsyncComponent(async()=>{const i=A[o.id]||await Je.add(o.id,()=>e(o.id));return i&&(i.name=n,A[o.id]=i),i?q({...s,Vue:a,dsl:d.cloneDeep(i),mode:S.Runtime,loader:K(r)}).renderer:null});if(o.type==="UrlSchema"&&o.url)return a.defineAsyncComponent(async()=>{const i=A[o.url]||await t(o.url);return i&&(i.name=n,A[o.url]=i),i?q({...s,Vue:a,dsl:d.cloneDeep(i),mode:S.Runtime,loader:K(r)}).renderer:null});if(o.type==="Plugin"){let i=o.library?A[o.library]:null;return i||(o.library&&Q.push(o.library),i=A[o.library||Symbol()]=a.defineAsyncComponent(async()=>{const p=await le(o,s.window);return p||(console.warn("getPlugin result is null",o),null)}),i)}return n}}function yt(){A={},Je.clearAllCache()}function M(r,e,t=z,s=qe,n=[],o=!1){if(!r||!r.name||r.invisible)return null;const a=t.getCurrentInstance()?.appContext,{id:i=null,directives:p=[]}=r,{vIf:c,vElseIf:l,vElse:u,vFor:m,vShow:f,vModels:h,vBind:y,vHtml:v,others:g}=Ke(p);if(!o&&(l||u))return null;if(c&&!St(c,e))return jt(r,e,t,s,n);const C=(_,U=0)=>{const P=_.$components,V=(()=>{if(r.name==="component")return wt(_,r.props?.is);if(r.name==="slot")return r.name;const j=s(r.name,r.from,t);if(d.isString(j))return Ie(j)||Te(j)?j:P[j]??a?.app?.component(j)??j;if(d.isObject(j)&&r.id){const ge=`Loader${r.id}_${U}`,ve=P[ge];return ve||(P[ge]=j)}return j})(),R=Et(i,r.props??{},_),Qe=$t(t,r.events??{},_);if(r.name==="slot")return Ct(t,r,R,_,s);y&&Object.assign(R,_.__parseExpression(y.value)),f&&(R.style=Object.assign(R.style??{},bt(f,_))),v&&Object.assign(R,Pt(v,_)),h.forEach(j=>{Object.assign(R,At(t,j,_))});const Ye=Mt(t,r.children??[],_,s,r),he=_?.__id?`data-v-${_.__id}`:void 0,Xe=he?{[he]:""}:{};let W=t.createVNode(V,{key:`${i}_${U}`,...Xe,...R,...Qe},Ye);const me=a?_t(a,g,_):[];return me.length&&(W=t.withDirectives(W,me)),W};return m?Ft(m,C,e):C(e)}function _t(r,e,t){const s=r.app;return e.map(n=>{const o=typeof n.name=="string"?s.directive(n.name):t.__parseExpression(n.name);if(!o)return null;const a=[o];return n.value&&a.push(t.__parseExpression(n.value)),n.arg&&a.push(n.arg),n.modifiers&&a.push(n.modifiers),a}).filter(n=>!!n)}function Ke(r=[]){const e=r.find(l=>d.camelCase(l.name)==="vIf"),t=r.find(l=>d.camelCase(l.name)==="vElseIf"),s=r.find(l=>d.camelCase(l.name)==="vElse"),n=r.find(l=>d.camelCase(l.name)==="vFor"),o=r.find(l=>d.camelCase(l.name)==="vShow"),a=r.find(l=>d.camelCase(l.name)==="vBind"),i=r.find(l=>d.camelCase(l.name)==="vHtml"),p=r.filter(l=>d.camelCase(l.name)==="vModel"),c=r.filter(l=>!_e.includes(d.camelCase(l.name)));return{vIf:e,vElseIf:t,vElse:s,vFor:n,vShow:o,vModels:p,vBind:a,others:c,vHtml:i}}function St(r,e){return!!e.__parseExpression(r.value)}function wt(r,e){return e?$(e)?r.__parseExpression(e):e:"div"}function Et(r,e,t){const s=ee(e,t);return s.ref=t.__ref(r,s.ref),s}function ee(r,e){return $(r)?e.__parseExpression(r):O(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>ee(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=ee(n,e),t},{}):r}function $t(r,e,t){const s=["passive","capture","once"],n={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,a)=>{const i=e[a],p=ue(i.modifiers),c=p.find(m=>s.includes(m)),l="on"+d.upperFirst(a)+(c&&n[c]||""),u=t.__parseFunction(i.handler);return u&&(o[l]=r.withModifiers(u,p)),o},{})}function jt(r,e,t,s,n=[]){let o=n.findIndex(a=>a.id===r.id);for(let a=++o;a<n.length;a++){const{directives:i=[]}=n[a],{vElseIf:p,vElse:c}=Ke(i);if(p){if(e.__parseExpression(p.value))return M(n[a],e,t,s,n,!0);continue}if(c)return M(n[a],e,t,s,n,!0)}return null}function ue(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function Ct(r,e,t,s,n){const{children:o}=e,a=Rt(e,s),i=s.$slots?.[a.name];return i?i(t):o?d.isString(o)?r.createTextVNode(o):$(o)?r.createTextVNode(se(s.__parseExpression(o))):Array.isArray(o)?o.map(p=>M(p,s,r,n,o)):null:null}function Rt(r,e){const{props:t}=r,s=t?.name||"default";return{name:$(s)?e.__parseExpression(s):s,params:[]}}function bt(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function Pt(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function At(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
|
10
10
|
${e.value.value} = v;
|
package/dist/index.mjs
CHANGED
@@ -7,10 +7,10 @@ import { useRoute as be } 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.12.
|
10
|
+
* @version 0.12.70
|
11
11
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
12
12
|
*/
|
13
|
-
const k = "0.12.
|
13
|
+
const k = "0.12.70";
|
14
14
|
var w = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(w || {});
|
15
15
|
const we = [
|
16
16
|
"$el",
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vtj/renderer",
|
3
3
|
"private": false,
|
4
|
-
"version": "0.12.
|
4
|
+
"version": "0.12.70",
|
5
5
|
"type": "module",
|
6
6
|
"keywords": [
|
7
7
|
"低代码引擎",
|
@@ -21,15 +21,15 @@
|
|
21
21
|
"author": "chenhuachun",
|
22
22
|
"license": "MIT",
|
23
23
|
"dependencies": {
|
24
|
-
"@vtj/core": "~0.12.
|
25
|
-
"@vtj/utils": "~0.12.
|
24
|
+
"@vtj/core": "~0.12.70",
|
25
|
+
"@vtj/utils": "~0.12.70"
|
26
26
|
},
|
27
27
|
"devDependencies": {
|
28
28
|
"vue": "~3.5.5",
|
29
29
|
"vue-router": "~4.5.0",
|
30
30
|
"@vtj/cli": "~0.12.10",
|
31
|
-
"@vtj/ui": "~0.12.
|
32
|
-
"@vtj/icons": "~0.12.
|
31
|
+
"@vtj/ui": "~0.12.70",
|
32
|
+
"@vtj/icons": "~0.12.70"
|
33
33
|
},
|
34
34
|
"exports": {
|
35
35
|
".": {
|
package/types/version.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* Copyright (c) 2025, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.12.
|
5
|
+
* @version 0.12.69
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
7
|
*/
|
8
|
-
export declare const version = "0.12.
|
8
|
+
export declare const version = "0.12.69";
|