@vtj/renderer 0.9.1 → 0.9.2
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 +3 -3
- package/dist/index.mjs +41 -36
- package/package.json +5 -5
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
* Copyright (c) 2024, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.9.
|
5
|
+
* @version 0.9.2
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const R="0.9.
|
8
|
-
`)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",a)(e)}catch(r){if(u.logger.error("parseExpression.error",r,n,e?.__self??e),s)throw r}}function z(n,e,t=!1,s=!1){const r=x(n,e,t,s);if(typeof r!="function"&&(u.logger.error("parseFunction.error","not a function",n,e?.__self??e),s))throw new Error(`"${n.value}" not a function`);return r}function S(n){return n&&n.type==="JSExpression"}function O(n){return typeof n=="object"&&n&&n.type==="JSFunction"}function Se(n){return S(n)||O(n)}function Qe(n){return Se(n)?n.value:JSON.stringify(n)}let P=null;const Xe=u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:n=>n.data?.code===0||!!n.data?.success,failMessage:!0,showError:n=>{M.ElNotification.error({message:n||"未知错误"})},showLoading:()=>{P&&P.close(),P=M.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{P&&(P.close(),P=null)}}});let C;function be(n,e){const{jsonp:t,request:s}=e;if(n.method==="jsonp")return(r={})=>t(n.url,{...n.jsonpOptions,query:r});{const r=n.headers?x(n.headers,{},!0):void 0,o={url:n.url,method:n.method,settings:{...n.settings,headers:r}};return(a,i)=>(delete o.data,s.send(u.merge(o,i||{},{data:a})))}}function je(n,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:r}=n;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,r,o,a)}}function Ee(n=[],e=[],t){const s={};for(const r of n)s[r.id]=be(r,t);for(const r of e)s[r.id]=je(r,t);return s}async function $e(n=[]){C=await import("mockjs").then(e=>e.default||e),C&&(C.setup({timeout:"50-500"}),W(),n.forEach(e=>Pe(C,e)))}function Pe(n,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const r=u.pathToRegexp(`${t}(.*)`),o=u.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=x(s,{},!0);n.mock(r,i=>{const c=u.url.parse(i.url)||{},l=i.body instanceof FormData?u.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:l,params:c,query:m}),n.mock(a(i))})}}function W(){C&&(C._mocked={})}const Ze={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:""},Y=Symbol("access");class et{options;data=null;mode=_.Raw;constructor(e){this.options=Object.assign({},Ze,e),this.loadData()}connect(e){const{mode:t,router:s,request:r}=e;this.mode=t,s&&this.mode===_.Raw&&this.setGuard(s),r&&this.setRequest(r)}login(e){const{storageKey:t,storagePrefix:s,session:r,authKey:o}=this.options;this.setData(e),this.data&&(u.storage.save(t,e,{type:"local",prefix:s}),r&&u.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:r}=this.options;this.data=null,u.storage.remove(e,{type:"local",prefix:t}),s&&u.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:s={}}=this.data||{};return typeof e=="function"?e(s):u.toArray(e).every(o=>s[o]||s[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return u.toArray(e).some(o=>s[o]||s[t+"."+o])}install(e){e.config.globalProperties.$access||(e.config.globalProperties.$access=this),e.provide(Y,this)}isAuthPath(e){const{auth:t,isAuth:s}=this.options;if(s)return s(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 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(r=>u.unRSA(r,t));this.data=JSON.parse(s.join(""));return}if(typeof e=="string")try{const s=t?u.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=u.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!u.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,s,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:s="无权限访问",unauthorized:r=!1}=this.options;return await this.showTip(s),u.isFunction(r)?(r(),t(!1)):u.isString(r)?t(r):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(s=>e.fullPath.startsWith(s)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401}=this.options;return e.status===t||e.data.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await u.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(await this.showUnauthorizedAlert(t),t),async t=>{const s=t.response||t||{};return await this.showUnauthorizedAlert(s),Promise.reject(t)})}}function Ce(){return p.inject(Y,null)}class Re{__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:r}=e;this.__mode=t,s&&(this.__id=s.id||null,this.__transform=s.transform||{}),r&&Object.assign(this,r)}setup(e,t=N){const s=t.getCurrentInstance();if(!s)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=s.proxy;const r=s.appContext.config.globalProperties;Object.assign(this,r),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__refs={},this.$refs={},this.__contextRefs={},this.context={}})}__proxy(){this.__instance&&V.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){V.forEach(e=>{this[e]=null})}__parseFunction(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:s}=e,r=t?this.__transform[t]??e.value:e.value;return z({type:s,value:r},this)}else return z(e,this)}__parseExpression(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:s}=e,r=t?this.__transform[t]??e.value:e.value;return x({type:s,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 s=>{await u.delay(0);let r=s?.$vtjEl||s?.$el||s?._?.vnode?.el||s;if(!r){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,_.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=s),typeof t=="function")t(s);else if(t){const o=this.$refs[t];if(o&&s!==o){const a=new Set([].concat(o,s));this.$refs[t]=Array.from(a)}else this.$refs[t]=s}return s}}__clone(e={}){const t={...this.context,...e},s={...t,context:t};return s.context.__proto__=this.context,s.__proto__=this,s}}function D(n){const{Vue:e=N,mode:t=_.Runtime,components:s={},libs:r={},apis:o={},loader:a}=n,i=e.computed(()=>n.dsl),c={$components:s,$libs:r,$apis:o},l=new Re({mode:t,dsl:i.value,attrs:c}),m=e.defineComponent({name:i.value.name,props:{...st(i.value.props??[],l)},setup(d){l.$props=d,l.props=d,i.value.id&&G(n.window||window,i.value.id,i.value.css||""),l.state=nt(e,i.value.state??{},l);const f=rt(e,i.value.computed??{},l),g=ot(i.value.methods??{},l),v=it(e,i.value.inject,l),h=ke(i.value.dataSources||{},l),b={...v,...f,...g,...h};return l.setup(b,e),at(e,i.value.watch??[],l),{vtj:l}},emits:tt(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?F(d[0],l,e,a):d.map(f=>F(f,l,e,a))},...ct(i.value.lifeCycles??{},l)});return{renderer:e.markRaw(m),context:l}}function tt(n=[]){return n.map(e=>u.isString(e)?e:e.name)}function st(n=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(o=>ce[o]):void 0;return n.map(s=>u.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:S(s.default)?e.__parseExpression(s.default):s.default}).reduce((s,r)=>(s[r.name]={type:t(r.type),required:r.required,default:r.default},s),{})}function nt(n,e,t){return n.reactive(Object.keys(e||{}).reduce((s,r)=>{let o=e[r];return S(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),s[r]=o,s},{}))}function rt(n,e,t){return Object.entries(e??{}).reduce((s,[r,o])=>(s[r]=n.computed(t.__parseFunction(o)),s),{})}function ot(n,e){return Object.entries(n??{}).reduce((t,[s,r])=>(t[s]=e.__parseFunction(r),t),{})}function it(n,e=[],t){return e.reduce((s,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 s[o]=n.inject(i,c),s},{})}function ke(n,e){return Object.keys(n).reduce((t,s)=>{const r=n[s],o=e.$apis[r.ref],a=O(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;return t[s]=async(...i)=>{const c=await o.apply(e,i);return a?a(c):c},t},{})}function at(n,e=[],t){e.forEach(s=>{n.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function ct(n,e){return Object.entries(n??{}).reduce((t,[s,r])=>(t[s]=e.__parseFunction(r),t),{})}let J=[];const xe=n=>n;async function Q(n,e=window){const{urls:t=[],library:s}=n,r=t.filter(i=>U(i));if(r.length===0||!s)return null;const o=t.filter(i=>B(i));return o.length&&ge(o,e),await ve(r,s,e).catch(i=>(console.warn("loadScriptUrl error",r,s,i),null))}function H(n){const{getDsl:e,getDslByUrl:t,options:s}=n;return s.window&&(J.forEach(r=>{delete s.window[r]}),J=[]),(r,o,a=N)=>!o||typeof o=="string"?r:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=r),i?D({...s,Vue:a,dsl:i,mode:_.Runtime,loader:H(n)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=r),i?D({...s,Vue:a,dsl:i,mode:_.Runtime,loader:H(n)}).renderer:null}):o.type==="Plugin"?(o.library&&J.push(o.library),a.defineAsyncComponent(async()=>{const i=await Q(o,s.window);return i||(console.warn("getPlugin result is null",o),null)})):r}function F(n,e,t=N,s=xe){if(!n||!n.name||n.invisible)return null;const r=t.getCurrentInstance()?.appContext,{id:o=null,directives:a=[]}=n,{vIf:i,vFor:c,vShow:l,vModels:m,vBind:d,vHtml:f,others:g}=ut(a);if(i&&!dt(i,e))return null;const v=h=>{const b=h.$components,y=(()=>{if(n.name==="component")return pt(h,n.props?.is);if(n.name==="slot")return n.name;const E=s(n.name,n.from,t);return u.isString(E)?_e(E)||we(E)?E:b[E]??r?.app?.component(E)??E:E})(),j=ft(o,n.props??{},h),He=ht(t,n.events??{},h);if(n.name==="slot")return mt(t,n,j,h,s);d&&Object.assign(j,h.__parseExpression(d.value)),l&&(j.style=Object.assign(j.style??{},vt(l,h))),f&&Object.assign(j,yt(f,h)),m.forEach(E=>{Object.assign(j,_t(t,E,h))});const Ne=wt(t,n.children??[],h,s,n);let q=t.createVNode(y,{...j,...He},Ne);const ne=r?lt(r,g,h):[];return ne.length&&(q=t.withDirectives(q,ne)),q};return c?jt(c,v,e):v(e)}function lt(n,e,t){const s=n.app;return e.map(r=>{const o=typeof r.name=="string"?s.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(S(r.modifiers)?t.__parseExpression(r.modifiers):r.modifiers),a}).filter(r=>!!r)}function ut(n=[]){const e=n.find(c=>u.camelCase(c.name)==="vIf"),t=n.find(c=>u.camelCase(c.name)==="vFor"),s=n.find(c=>u.camelCase(c.name)==="vShow"),r=n.find(c=>u.camelCase(c.name)==="vBind"),o=n.find(c=>u.camelCase(c.name)==="vHtml"),a=n.filter(c=>u.camelCase(c.name)==="vModel"),i=n.filter(c=>!ae.includes(u.camelCase(c.name)));return{vIf:e,vFor:t,vShow:s,vModels:a,vBind:r,others:i,vHtml:o}}function dt(n,e){return!!e.__parseExpression(n.value)}function pt(n,e){return e?S(e)?n.__parseExpression(e):e:"div"}function ft(n,e,t){const s=Object.keys(e||{}).reduce((r,o)=>{let a=e[o];return S(a)?a=t.__parseExpression(a):O(a)&&(a=t.__parseFunction(a)),r[o]=a,r},{});return s.ref=t.__ref(n,s.ref),s}function ht(n,e,t){const s=["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),l=c.find(f=>s.includes(f)),m="on"+u.upperFirst(a)+(l&&r[l]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=n.withModifiers(d,c)),o},{})}function X(n={},e=!1){const t=Object.keys(n);return e?t.map(s=>"."+s):t}function mt(n,e,t,s,r){const{children:o}=e,a=gt(e,s),i=s.$slots?.[a.name];return i?i(t):o?u.isString(o)?n.createTextVNode(o):S(o)?n.createTextVNode(K(s.__parseExpression(o))):Array.isArray(o)?o.map(c=>F(c,s,n,r)):null:null}function gt(n,e){const{props:t}=n,s=t?.name||"default";return{name:S(s)?e.__parseExpression(s):s,params:[]}}function vt(n,e){return e.__parseExpression(n.value)?{}:{display:"none"}}function yt(n,e){return{innerHTML:e.__parseExpression(n.value)||""}}function _t(n,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
|
7
|
+
*/const R="0.9.2";var _=(n=>(n.Runtime="Runtime",n.Design="Design",n.Raw="Raw",n.VNode="VNode",n))(_||{});const V=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ge=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],ae=["vIf","vShow","vModel","vFor","vBind","vHtml"],ce={String,Number,Boolean,Array,Object,Function,Date},k="VtjPage",T="VtjHomepage",le="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(","),ue="component,slot".split(",");function A(n,e){return n.map(t=>u.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function B(n){return/\.css$/.test(n)}function U(n){return/\.js$/.test(n)}function de(n){return/\.json$/.test(n)}function We(n){return n.map(e=>`<script src="${u.url.append(e,{v:R})}"><\/script>`).join("")}function Ye(n=[]){return n.map(e=>`<link rel="stylesheet" href="${u.url.append(e,{v:R})}" />`).join("")}function pe(n,e=!1){return e&&n.endsWith(".prod.js")?n.replace(".prod.js",".js"):n}function fe(n,e,t=!1){const s=n.filter(f=>!!f.enabled),r=[],o=[],a=[],i=[],c={},l={},m=[],d={};return s.forEach(({urls:f,assetsUrl:g,library:v,assetsLibrary:h,localeLibrary:b})=>{f?.forEach(y=>{U(y)&&r.push(pe(y,t)),B(y)&&o.push(y)}),v&&(i.push(v),c[v]=A(f||[],e),b&&(l[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:u.dedupArray(m),materialMapLibrary:d,libraryMap:c,libraryLocaleMap:l}}function he(n,e){const{name:t,parent:s,alias:r}=n;return s?e[s]?.[r||t]:e[r||t]}function K(n){return u.isString(n)?n:JSON.stringify(n)}function G(n,e,t){const s=n.CSSStyleSheet;if(s.prototype.replaceSync){const r=new s;r.id=e,r.replaceSync(t);const o=n.document,a=o.adoptedStyleSheets,i=Array.from(a).filter(c=>c.id!==e);o.adoptedStyleSheets=[...i,r]}else{const r=n.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 me(n,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&G(window,n,t)}function ge(n,e=window){const t=e.document,s=e.document.head;for(const r of n)if(!t.getElementById(r)){const a=t.createElement("link");a.rel="stylesheet",a.id=r,a.href=r,s.appendChild(a)}}async function ve(n,e,t=window){const s=t.document,r=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const c of n){const l=s.createElement("script");l.src=c,l.onload=()=>{o=t[e],o?a(o.default||o):i(null)},l.onerror=m=>{i(m)},r.appendChild(l)}})}function ye(n){return u.isFunction(n)||u.isFunction(n?.install)}function _e(n){return ue.includes(n)}function we(n){return le.includes(n)}function x(n,e,t=!1,s=!1){try{const r=['"use strict";',"var __self = arguments[0];"];r.push("return ");let o=(n.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(u.logger.error("parseExpression.error",r,n,e?.__self??e),s)throw r}}function z(n,e,t=!1,s=!1){const r=x(n,e,t,s);if(typeof r!="function"&&(u.logger.error("parseFunction.error","not a function",n,e?.__self??e),s))throw new Error(`"${n.value}" not a function`);return r}function S(n){return n&&n.type==="JSExpression"}function O(n){return typeof n=="object"&&n&&n.type==="JSFunction"}function Se(n){return S(n)||O(n)}function Qe(n){return Se(n)?n.value:JSON.stringify(n)}let P=null;const Xe=u.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:n=>n.data?.code===0||!!n.data?.success,failMessage:!0,showError:n=>{M.ElNotification.error({message:n||"未知错误"})},showLoading:()=>{P&&P.close(),P=M.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{P&&(P.close(),P=null)}}});let C;function be(n,e){const{jsonp:t,request:s}=e;if(n.method==="jsonp")return(r={})=>t(n.url,{...n.jsonpOptions,query:r});{const r=n.headers?x(n.headers,{},!0):void 0,o={url:n.url,method:n.method,settings:{...n.settings,headers:r}};return(a,i)=>(delete o.data,s.send(u.merge(o,i||{},{data:a})))}}function je(n,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:r}=n;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,r,o,a)}}function Ee(n=[],e=[],t){const s={};for(const r of n)s[r.id]=be(r,t);for(const r of e)s[r.id]=je(r,t);return s}async function $e(n=[]){C=await import("mockjs").then(e=>e.default||e),C&&(C.setup({timeout:"50-500"}),W(),n.forEach(e=>Pe(C,e)))}function Pe(n,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const r=u.pathToRegexp(`${t}(.*)`),o=u.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=x(s,{},!0);n.mock(r,i=>{const c=u.url.parse(i.url)||{},l=i.body instanceof FormData?u.formDataToJson(i.body):i.body,m=o(i.url)?.params;return Object.assign(i,{data:l,params:c,query:m}),n.mock(a(i))})}}function W(){C&&(C._mocked={})}const Ze={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:""},Y=Symbol("access");class et{options;data=null;mode=_.Raw;constructor(e){this.options=Object.assign({},Ze,e),this.loadData()}connect(e){const{mode:t,router:s,request:r}=e;this.mode=t,s&&this.mode===_.Raw&&this.setGuard(s),r&&this.setRequest(r)}login(e){const{storageKey:t,storagePrefix:s,session:r,authKey:o}=this.options;this.setData(e),this.data&&(u.storage.save(t,e,{type:"local",prefix:s}),r&&u.cookie.set(o,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:r}=this.options;this.data=null,u.storage.remove(e,{type:"local",prefix:t}),s&&u.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:s={}}=this.data||{};return typeof e=="function"?e(s):u.toArray(e).every(o=>s[o]||s[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return u.toArray(e).some(o=>s[o]||s[t+"."+o])}install(e){e.config.globalProperties.$access||(e.config.globalProperties.$access=this),e.provide(Y,this)}isAuthPath(e){const{auth:t,isAuth:s}=this.options;if(s)return s(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 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(r=>u.unRSA(r,t));this.data=JSON.parse(s.join(""));return}if(typeof e=="string")try{const s=t?u.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=u.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!u.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,s,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:s="无权限访问",unauthorized:r=!1}=this.options;return await this.showTip(s),u.isFunction(r)?(r(),t(!1)):u.isString(r)?t(r):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(s=>e.fullPath.startsWith(s)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401}=this.options;return e.status===t||e.data.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await u.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(await this.showUnauthorizedAlert(t),t),async t=>{const s=t.response||t||{};return await this.showUnauthorizedAlert(s),Promise.reject(t)})}}function Ce(){return p.inject(Y,null)}class Re{__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:r}=e;this.__mode=t,s&&(this.__id=s.id||null,this.__transform=s.transform||{}),r&&Object.assign(this,r)}setup(e,t=N){const s=t.getCurrentInstance();if(!s)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=s.proxy;const r=s.appContext.config.globalProperties;Object.assign(this,r),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__refs={},this.$refs={},this.__contextRefs={},this.context={}})}__proxy(){this.__instance&&V.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){V.forEach(e=>{this[e]=null})}__parseFunction(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:s}=e,r=t?this.__transform[t]??e.value:e.value;return z({type:s,value:r},this)}else return z(e,this)}__parseExpression(e){if(e)if(this.__mode===_.Runtime){const{id:t,type:s}=e,r=t?this.__transform[t]??e.value:e.value;return x({type:s,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 s=>{await u.delay(0);let r=s?.$vtjEl||s?.$el||s?._?.vnode?.el||s;if(!r){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(r.nodeType===3&&r.nextSibling&&(r=r.nextSibling),r.__vtj__=e,_.Design===this.__mode&&(r.__context__=this,r.draggable=!0),e&&(this.__refs[e]=s),typeof t=="function")t(s);else if(t){const o=this.$refs[t];if(o&&s!==o){const a=new Set([].concat(o,s));this.$refs[t]=Array.from(a)}else this.$refs[t]=s}return s}}__clone(e={}){const t={...this.context,...e},s={...t,context:t};return s.context.__proto__=this.context,s.__proto__=this,s}}function D(n){const{Vue:e=N,mode:t=_.Runtime,components:s={},libs:r={},apis:o={},loader:a}=n,i=e.computed(()=>n.dsl),c={$components:s,$libs:r,$apis:o},l=new Re({mode:t,dsl:i.value,attrs:c}),m=e.defineComponent({name:i.value.name,props:{...st(i.value.props??[],l)},setup(d){l.$props=d,l.props=d,i.value.id&&G(n.window||window,i.value.id,i.value.css||""),l.state=nt(e,i.value.state??{},l);const f=rt(e,i.value.computed??{},l),g=ot(i.value.methods??{},l),v=it(e,i.value.inject,l),h=ke(i.value.dataSources||{},l),b={...v,...f,...g,...h};return l.setup(b,e),at(e,i.value.watch??[],l),{vtj:l}},emits:tt(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?F(d[0],l,e,a):d.map(f=>F(f,l,e,a))},...ct(i.value.lifeCycles??{},l)});return{renderer:e.markRaw(m),context:l}}function tt(n=[]){return n.map(e=>u.isString(e)?e:e.name)}function st(n=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(o=>ce[o]):void 0;return n.map(s=>u.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:S(s.default)?e.__parseExpression(s.default):s.default}).reduce((s,r)=>(s[r.name]={type:t(r.type),required:r.required,default:r.default},s),{})}function nt(n,e,t){return n.reactive(Object.keys(e||{}).reduce((s,r)=>{let o=e[r];return S(o)?o=t.__parseExpression(o):O(o)&&(o=t.__parseFunction(o)),s[r]=o,s},{}))}function rt(n,e,t){return Object.entries(e??{}).reduce((s,[r,o])=>(s[r]=n.computed(t.__parseFunction(o)),s),{})}function ot(n,e){return Object.entries(n??{}).reduce((t,[s,r])=>(t[s]=e.__parseFunction(r),t),{})}function it(n,e=[],t){return e.reduce((s,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 s[o]=n.inject(i,c),s},{})}function ke(n,e){return Object.keys(n).reduce((t,s)=>{const r=n[s],o=e.$apis[r.ref],a=O(r.transform)?r.transform.value?e.__parseFunction(r.transform):void 0:r.transform;return t[s]=async(...i)=>{const c=await o.apply(e,i);return a?a(c):c},t},{})}function at(n,e=[],t){e.forEach(s=>{n.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function ct(n,e){return Object.entries(n??{}).reduce((t,[s,r])=>(t[s]=e.__parseFunction(r),t),{})}let J=[];const xe=n=>n;async function Q(n,e=window){const{urls:t=[],library:s}=n,r=t.filter(i=>U(i));if(r.length===0||!s)return null;const o=t.filter(i=>B(i));return o.length&&ge(o,e),await ve(r,s,e).catch(i=>(console.warn("loadScriptUrl error",r,s,i),null))}function H(n){const{getDsl:e,getDslByUrl:t,options:s}=n;return s.window&&(J.forEach(r=>{delete s.window[r]}),J=[]),(r,o,a=N)=>!o||typeof o=="string"?r:o.type==="Schema"&&o.id?a.defineAsyncComponent(async()=>{const i=await e(o.id);return i&&(i.name=r),i?D({...s,Vue:a,dsl:i,mode:_.Runtime,loader:H(n)}).renderer:null}):o.type==="UrlSchema"&&o.url?a.defineAsyncComponent(async()=>{const i=await t(o.url);return i&&(i.name=r),i?D({...s,Vue:a,dsl:i,mode:_.Runtime,loader:H(n)}).renderer:null}):o.type==="Plugin"?(o.library&&J.push(o.library),a.defineAsyncComponent(async()=>{const i=await Q(o,s.window);return i||(console.warn("getPlugin result is null",o),null)})):r}function F(n,e,t=N,s=xe){if(!n||!n.name||n.invisible)return null;const r=t.getCurrentInstance()?.appContext,{id:o=null,directives:a=[]}=n,{vIf:i,vFor:c,vShow:l,vModels:m,vBind:d,vHtml:f,others:g}=ut(a);if(i&&!dt(i,e))return null;const v=h=>{const b=h.$components,y=(()=>{if(n.name==="component")return pt(h,n.props?.is);if(n.name==="slot")return n.name;const E=s(n.name,n.from,t);return u.isString(E)?_e(E)||we(E)?E:b[E]??r?.app?.component(E)??E:E})(),j=ft(o,n.props??{},h),He=ht(t,n.events??{},h);if(n.name==="slot")return mt(t,n,j,h,s);d&&Object.assign(j,h.__parseExpression(d.value)),l&&(j.style=Object.assign(j.style??{},vt(l,h))),f&&Object.assign(j,yt(f,h)),m.forEach(E=>{Object.assign(j,_t(t,E,h))});const Ne=wt(t,n.children??[],h,s,n);let q=t.createVNode(y,{...j,...He},Ne);const ne=r?lt(r,g,h):[];return ne.length&&(q=t.withDirectives(q,ne)),q};return c?jt(c,v,e):v(e)}function lt(n,e,t){const s=n.app;return e.map(r=>{const o=typeof r.name=="string"?s.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 ut(n=[]){const e=n.find(c=>u.camelCase(c.name)==="vIf"),t=n.find(c=>u.camelCase(c.name)==="vFor"),s=n.find(c=>u.camelCase(c.name)==="vShow"),r=n.find(c=>u.camelCase(c.name)==="vBind"),o=n.find(c=>u.camelCase(c.name)==="vHtml"),a=n.filter(c=>u.camelCase(c.name)==="vModel"),i=n.filter(c=>!ae.includes(u.camelCase(c.name)));return{vIf:e,vFor:t,vShow:s,vModels:a,vBind:r,others:i,vHtml:o}}function dt(n,e){return!!e.__parseExpression(n.value)}function pt(n,e){return e?S(e)?n.__parseExpression(e):e:"div"}function ft(n,e,t){const s=Object.keys(e||{}).reduce((r,o)=>{let a=e[o];return S(a)?a=t.__parseExpression(a):O(a)&&(a=t.__parseFunction(a)),r[o]=a,r},{});return s.ref=t.__ref(n,s.ref),s}function ht(n,e,t){const s=["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),l=c.find(f=>s.includes(f)),m="on"+u.upperFirst(a)+(l&&r[l]||""),d=t.__parseFunction(i.handler);return d&&(o[m]=n.withModifiers(d,c)),o},{})}function X(n={},e=!1){const t=Object.keys(n);return e?t.map(s=>"."+s):t}function mt(n,e,t,s,r){const{children:o}=e,a=gt(e,s),i=s.$slots?.[a.name];return i?i(t):o?u.isString(o)?n.createTextVNode(o):S(o)?n.createTextVNode(K(s.__parseExpression(o))):Array.isArray(o)?o.map(c=>F(c,s,n,r)):null:null}function gt(n,e){const{props:t}=n,s=t?.name||"default";return{name:S(s)?e.__parseExpression(s):s,params:[]}}function vt(n,e){return e.__parseExpression(n.value)?{}:{display:"none"}}function yt(n,e){return{innerHTML:e.__parseExpression(n.value)||""}}function _t(n,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
|
9
9
|
${e.value.value} = v;
|
10
10
|
}`:"(v) => {}"},r=t.__parseFunction(s),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?n.withModifiers(r,o):r}}function wt(n,e,t,s,r){if(!e)return null;if(u.isString(e))return{default:()=>e};if(S(e))return{default:()=>K(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=St(e),a=i=>!i||!r?{}:r?.id&&Object.keys(i).length?{[`scope_${r.id}`]:i}:{};return Object.entries(o).reduce((i,[c,{nodes:l,params:m}])=>(i[c]=d=>{const f=m.length?u.pick(d??{},m):a(d);return l.map(g=>F(g,t.__clone(f),n,s))},i),{})}return null}function St(n){const e={default:{params:[],nodes:[]}};for(const t of n){const s=bt(t.slot),r=s.name;e[r]?(e[r].nodes.push(t),e[r].params=e[r].params.concat(s.params)):e[r]={nodes:[t],params:s.params}}return e}function bt(n="default"){return u.isString(n)?{name:n,params:[]}:{params:[],...n}}function jt(n,e,t){const{value:s,iterator:r}=n,{item:o="item",index:a="index"}=r||{};let i=t.__parseExpression(s)||[];return Number.isInteger(i)&&(i=new Array(i).fill(!0).map((c,l)=>l+1)),Array.isArray(i)?i.map((c,l)=>e(t.__clone({[o]:c,[a]:l}))):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}function Et(n){return p.getCurrentScope()?(p.onScopeDispose(n),!0):!1}function Z(n){return typeof n=="function"?n():p.unref(n)}const Ae=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const $t=n=>n!=null,Pt=()=>{};function Ct(n){return p.getCurrentInstance()}function Rt(...n){if(n.length!==1)return p.toRef(...n);const e=n[0];return typeof e=="function"?p.readonly(p.customRef(()=>({get:e,set:Pt}))):p.ref(e)}function kt(n,e){Ct()&&p.onBeforeUnmount(n,e)}const xt=Ae?window:void 0,At=Ae?window.document:void 0;function Tt(n){var e;const t=Z(n);return(e=t?.$el)!=null?e:t}function Mt(){const n=p.ref(!1),e=p.getCurrentInstance();return e&&p.onMounted(()=>{n.value=!0},e),n}function Ft(n){const e=Mt();return p.computed(()=>(e.value,!!n()))}function Ot(n,e,t={}){const{window:s=xt,...r}=t;let o;const a=Ft(()=>s&&"MutationObserver"in s),i=()=>{o&&(o.disconnect(),o=void 0)},c=p.computed(()=>{const f=Z(n),g=(Array.isArray(f)?f:[f]).map(Tt).filter($t);return new Set(g)}),l=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=()=>{l(),i()};return Et(d),{isSupported:a,stop:d,takeRecords:m}}function It(n=null,e={}){var t,s,r;const{document:o=At,restoreOnUnmount:a=d=>d}=e,i=(t=o?.title)!=null?t:"",c=Rt((s=n??o?.title)!=null?s:null),l=n&&typeof n=="function";function m(d){if(!("titleTemplate"in e))return d;const f=e.titleTemplate||"%s";return typeof f=="function"?f(d):Z(f).replace(/%s/g,d)}return p.watch(c,(d,f)=>{d!==f&&o&&(o.title=m(typeof d=="string"?d:""))},{immediate:!0}),e.observe&&!e.titleTemplate&&o&&!l&&Ot((r=o.head)==null?void 0:r.querySelector("title"),()=>{o&&o.title!==c.value&&(c.value=m(o.title))},{childList:!0}),kt(()=>{if(a){const d=a(i,c.value||"");d!=null&&o&&(o.title=d)}}),c}const oe=p.defineComponent({name:"VtjPageContainer",async setup(){const n=te(),e=ie.useRoute(),t=e.params.id,s=t?n.getPage(t):n.getHomepage(),r=s?await n.getRenderComponent(s.id):null,o=p.ref(Symbol());return s&&(Object.assign(e.meta,s.meta||{},{cache:s.cache}),It(s.title||"VTJ")),{provider:n,component:r,file:s,query:e.query,meta:e.meta,sid:o,route:e}},render(){const{component:n,query:e,sid:t}=this;return n?p.h(n,{...e,key:t}):p.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),Dt={"data-l-h6o7ki7":"",class:"vtj-startup__wrapper"},Ht={"data-l-h6o7ki7":"",class:"vtj-startup"},Nt={"data-l-h6o7ki7":"",class:"vtj-startup__name"},Bt={"data-l-h6o7ki7":""},Ut={"data-l-h6o7ki7":"",class:"vtj-startup__tagline"},Lt={"data-l-h6o7ki7":"",class:"vtj-startup__actions"},Te=p.defineComponent({__name:"Startup",props:{name:{default:"VTJ.PRO"},tagline:{default:"基于 Vue3 + TypeScript 快速打造高生产力的低代码研发平台"},actionText:{default:"开始设计"},link:{}},setup(n){((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]{
|
package/dist/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import { Base as Ae, BUILT_IN_COMPONENTS as Te, ProjectModel as
|
2
|
-
import { isUrl as Ie, url as x, dedupArray as De, isString as j, isFunction as K, logger as
|
1
|
+
import { Base as Ae, BUILT_IN_COMPONENTS as Te, ProjectModel as H, HistoryModel as de } from "@vtj/core";
|
2
|
+
import { isUrl as Ie, url as x, dedupArray as De, isString as j, isFunction as K, logger as M, createRequest as He, merge as Me, pathToRegexp as Oe, pathToRegexpMatch as Be, formDataToJson as Ne, storage as q, cookie as J, toArray as oe, unRSA as ie, delay as fe, camelCase as $, upperFirst as Ue, pick as Le, jsonp as qe, loadScript as ae, Request as Je, Storage as Ve, mapToObject as Q } from "@vtj/utils";
|
3
3
|
import * as B from "vue";
|
4
4
|
import { inject as he, toRef as ze, readonly as Ke, customRef as We, ref as F, onBeforeUnmount as Ge, getCurrentScope as Ye, onScopeDispose as Qe, unref as Xe, getCurrentInstance as me, watch as ge, computed as ve, onMounted as Ze, defineComponent as X, h as W, openBlock as et, createElementBlock as tt, createElementVNode as E, toDisplayString as V, defineAsyncComponent as ce, watchEffect as st } from "vue";
|
5
5
|
import { ElNotification as N, ElLoading as nt } from "element-plus";
|
@@ -8,10 +8,10 @@ import { useRoute as ye } from "vue-router";
|
|
8
8
|
* Copyright (c) 2024, VTJ.PRO All rights reserved.
|
9
9
|
* @name @vtj/renderer
|
10
10
|
* @author CHC chenhuachun1549@dingtalk.com
|
11
|
-
* @version 0.9.
|
11
|
+
* @version 0.9.2
|
12
12
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
13
13
|
*/
|
14
|
-
const k = "0.9.
|
14
|
+
const k = "0.9.2";
|
15
15
|
var y = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(y || {});
|
16
16
|
const le = [
|
17
17
|
"$el",
|
@@ -39,7 +39,14 @@ const le = [
|
|
39
39
|
"renderTriggered",
|
40
40
|
"activated",
|
41
41
|
"deactivated"
|
42
|
-
], rt = [
|
42
|
+
], rt = [
|
43
|
+
"vIf",
|
44
|
+
"vShow",
|
45
|
+
"vModel",
|
46
|
+
"vFor",
|
47
|
+
"vBind",
|
48
|
+
"vHtml"
|
49
|
+
], ot = {
|
43
50
|
String,
|
44
51
|
Number,
|
45
52
|
Boolean,
|
@@ -161,13 +168,13 @@ function A(n, e, t = !1, s = !1) {
|
|
161
168
|
const a = `with(${t ? "{}" : "$scope || {}"}) { ${o} }`;
|
162
169
|
return new Function("$scope", a)(e);
|
163
170
|
} catch (r) {
|
164
|
-
if (
|
171
|
+
if (M.error("parseExpression.error", r, n, e?.__self ?? e), s)
|
165
172
|
throw r;
|
166
173
|
}
|
167
174
|
}
|
168
175
|
function ue(n, e, t = !1, s = !1) {
|
169
176
|
const r = A(n, e, t, s);
|
170
|
-
if (typeof r != "function" && (
|
177
|
+
if (typeof r != "function" && (M.error(
|
171
178
|
"parseFunction.error",
|
172
179
|
"not a function",
|
173
180
|
n,
|
@@ -189,7 +196,7 @@ function Ts(n) {
|
|
189
196
|
return yt(n) ? n.value : JSON.stringify(n);
|
190
197
|
}
|
191
198
|
let R = null;
|
192
|
-
const _t =
|
199
|
+
const _t = He({
|
193
200
|
settings: {
|
194
201
|
type: "form",
|
195
202
|
validSuccess: !0,
|
@@ -231,7 +238,7 @@ function wt(n, e) {
|
|
231
238
|
headers: r
|
232
239
|
}
|
233
240
|
};
|
234
|
-
return (a, i) => (delete o.data, s.send(
|
241
|
+
return (a, i) => (delete o.data, s.send(Me(o, i || {}, { data: a })));
|
235
242
|
}
|
236
243
|
}
|
237
244
|
function St(n, e) {
|
@@ -263,7 +270,7 @@ function $t(n, e) {
|
|
263
270
|
if (!e.mock) return;
|
264
271
|
const { url: t, mockTemplate: s } = e;
|
265
272
|
if (t && s) {
|
266
|
-
const r =
|
273
|
+
const r = Oe(`${t}(.*)`), o = Be(t, { decode: decodeURIComponent }), a = A(s, {}, !0);
|
267
274
|
n.mock(r, (i) => {
|
268
275
|
const c = x.parse(i.url) || {}, l = i.body instanceof FormData ? Ne(i.body) : i.body, f = o(i.url)?.params;
|
269
276
|
return Object.assign(i, { data: l, params: c, query: f }), n.mock(a(i));
|
@@ -573,9 +580,9 @@ function G(n) {
|
|
573
580
|
render() {
|
574
581
|
if (!i.value.nodes) return null;
|
575
582
|
const u = i.value.nodes || [];
|
576
|
-
return u.length === 1 ?
|
583
|
+
return u.length === 1 ? O(u[0], l, e, a) : u.map((p) => O(p, l, e, a));
|
577
584
|
},
|
578
|
-
...
|
585
|
+
...Ht(i.value.lifeCycles ?? {}, l)
|
579
586
|
});
|
580
587
|
return {
|
581
588
|
renderer: e.markRaw(f),
|
@@ -661,14 +668,14 @@ function Dt(n, e = [], t) {
|
|
661
668
|
);
|
662
669
|
});
|
663
670
|
}
|
664
|
-
function
|
671
|
+
function Ht(n, e) {
|
665
672
|
return Object.entries(n ?? {}).reduce(
|
666
673
|
(t, [s, r]) => (t[s] = e.__parseFunction(r), t),
|
667
674
|
{}
|
668
675
|
);
|
669
676
|
}
|
670
677
|
let z = [];
|
671
|
-
const
|
678
|
+
const Mt = (n) => n;
|
672
679
|
async function je(n, e = window) {
|
673
680
|
const { urls: t = [], library: s } = n, r = t.filter((i) => ee(i));
|
674
681
|
if (r.length === 0 || !s) return null;
|
@@ -704,7 +711,7 @@ function Y(n) {
|
|
704
711
|
return i || (console.warn("getPlugin result is null", o), null);
|
705
712
|
})) : r;
|
706
713
|
}
|
707
|
-
function
|
714
|
+
function O(n, e, t = B, s = Mt) {
|
708
715
|
if (!n || !n.name || n.invisible) return null;
|
709
716
|
const r = t.getCurrentInstance()?.appContext, { id: o = null, directives: a = [] } = n, { vIf: i, vFor: c, vShow: l, vModels: f, vBind: u, vHtml: p, others: h } = Bt(a);
|
710
717
|
if (i && !Nt(i, e))
|
@@ -733,20 +740,18 @@ function H(n, e, t = B, s = Ot) {
|
|
733
740
|
n
|
734
741
|
);
|
735
742
|
let L = t.createVNode(g, { ...S, ...Ce }, Fe);
|
736
|
-
const re = r ?
|
743
|
+
const re = r ? Ot(r, h, d) : [];
|
737
744
|
return re.length && (L = t.withDirectives(L, re)), L;
|
738
745
|
};
|
739
746
|
return c ? Xt(c, m, e) : m(e);
|
740
747
|
}
|
741
|
-
function
|
748
|
+
function Ot(n, e, t) {
|
742
749
|
const s = n.app;
|
743
750
|
return e.map((r) => {
|
744
751
|
const o = typeof r.name == "string" ? s.directive(r.name) : t.__parseExpression(r.name);
|
745
752
|
if (!o) return null;
|
746
753
|
const a = [o];
|
747
|
-
return r.value && a.push(t.__parseExpression(r.value)), r.arg && a.push(r.arg), r.modifiers && a.push(
|
748
|
-
_(r.modifiers) ? t.__parseExpression(r.modifiers) : r.modifiers
|
749
|
-
), a;
|
754
|
+
return r.value && a.push(t.__parseExpression(r.value)), r.arg && a.push(r.arg), r.modifiers && a.push(r.modifiers), a;
|
750
755
|
}).filter((r) => !!r);
|
751
756
|
}
|
752
757
|
function Bt(n = []) {
|
@@ -804,7 +809,7 @@ function Jt(n, e, t, s, r) {
|
|
804
809
|
return i ? i(t) : o ? j(o) ? n.createTextVNode(o) : _(o) ? n.createTextVNode(
|
805
810
|
_e(s.__parseExpression(o))
|
806
811
|
) : Array.isArray(o) ? o.map(
|
807
|
-
(c) =>
|
812
|
+
(c) => O(c, s, n, r)
|
808
813
|
) : null : null;
|
809
814
|
}
|
810
815
|
function Vt(n, e) {
|
@@ -853,7 +858,7 @@ function Gt(n, e, t, s, r) {
|
|
853
858
|
return Object.entries(o).reduce((i, [c, { nodes: l, params: f }]) => (i[c] = (u) => {
|
854
859
|
const p = f.length ? Le(u ?? {}, f) : a(u);
|
855
860
|
return l.map(
|
856
|
-
(h) =>
|
861
|
+
(h) => O(h, t.__clone(p), n, s)
|
857
862
|
);
|
858
863
|
}, i), {});
|
859
864
|
}
|
@@ -1309,13 +1314,13 @@ class Ss extends Ae {
|
|
1309
1314
|
async getRenderComponent(e, t) {
|
1310
1315
|
const s = this.getFile(e);
|
1311
1316
|
if (!s)
|
1312
|
-
return
|
1317
|
+
return M.warn(`Can not find file: ${e}`), null;
|
1313
1318
|
t && t(s);
|
1314
1319
|
const r = `.vtj/vue/${e}.vue`, o = this.modules[r];
|
1315
1320
|
if (o)
|
1316
1321
|
return (await o())?.default;
|
1317
1322
|
const a = await this.getDsl(s.id);
|
1318
|
-
return a ? this.createDslRenderer(a).renderer : (
|
1323
|
+
return a ? this.createDslRenderer(a).renderer : (M.warn(`Can not find dsl: ${e}`), null);
|
1319
1324
|
}
|
1320
1325
|
defineUrlSchemaComponent(e, t) {
|
1321
1326
|
return ce(async () => {
|
@@ -1481,13 +1486,13 @@ const v = new Ve({
|
|
1481
1486
|
expired: 0,
|
1482
1487
|
prefix: "__VTJ_"
|
1483
1488
|
});
|
1484
|
-
class
|
1489
|
+
class Hs extends ne {
|
1485
1490
|
init(e) {
|
1486
|
-
const t = new
|
1491
|
+
const t = new H(e), s = v.get(`project_${t.id}`), r = Object.assign(t.toDsl(), s || {});
|
1487
1492
|
return v.save(`project_${t.id}`, r), Promise.resolve(r);
|
1488
1493
|
}
|
1489
1494
|
saveProject(e) {
|
1490
|
-
const t = new
|
1495
|
+
const t = new H(e);
|
1491
1496
|
return v.save(`project_${t.id}`, t.toDsl()), Promise.resolve(!0);
|
1492
1497
|
}
|
1493
1498
|
saveMaterials(e, t) {
|
@@ -1538,11 +1543,11 @@ class $s extends ne {
|
|
1538
1543
|
histories = {};
|
1539
1544
|
historyItems = {};
|
1540
1545
|
init(e) {
|
1541
|
-
const t = new
|
1546
|
+
const t = new H(e), s = this.projects[t.id] || {}, r = Object.assign(t.toDsl(), s);
|
1542
1547
|
return this.projects[r.id] = r, Promise.resolve(r);
|
1543
1548
|
}
|
1544
1549
|
saveProject(e) {
|
1545
|
-
const t = new
|
1550
|
+
const t = new H(e);
|
1546
1551
|
return this.projects[t.id] = t.toDsl(), Promise.resolve(!0);
|
1547
1552
|
}
|
1548
1553
|
saveMaterials(e, t) {
|
@@ -1589,10 +1594,10 @@ class $s extends ne {
|
|
1589
1594
|
}
|
1590
1595
|
}
|
1591
1596
|
let I = null;
|
1592
|
-
function
|
1597
|
+
function Ms() {
|
1593
1598
|
return I || (I = new $s(), I);
|
1594
1599
|
}
|
1595
|
-
class
|
1600
|
+
class Os extends ne {
|
1596
1601
|
getFileCaches = {};
|
1597
1602
|
async getExtension() {
|
1598
1603
|
return await this.api("getExtension", {}).catch(() => {
|
@@ -1716,26 +1721,26 @@ export {
|
|
1716
1721
|
it as HTML_TAGS,
|
1717
1722
|
Ts as JSCodeToString,
|
1718
1723
|
Cs as LIFE_CYCLES_LIST,
|
1719
|
-
|
1724
|
+
Os as LocalService,
|
1720
1725
|
$s as MemoryService,
|
1721
1726
|
ws as NodeEnv,
|
1722
1727
|
C as PAGE_ROUTE_NAME,
|
1723
1728
|
Ss as Provider,
|
1724
1729
|
ys as Startup,
|
1725
|
-
|
1730
|
+
Hs as StorageService,
|
1726
1731
|
k as VTJ_RENDERER_VERSION,
|
1727
1732
|
we as adoptedStyleSheets,
|
1728
1733
|
Fs as createAssetScripts,
|
1729
1734
|
As as createAssetsCss,
|
1730
1735
|
It as createDataSources,
|
1731
1736
|
Y as createLoader,
|
1732
|
-
|
1737
|
+
Ms as createMemoryService,
|
1733
1738
|
St as createMetaApi,
|
1734
1739
|
Ds as createProvider,
|
1735
1740
|
G as createRenderer,
|
1736
1741
|
wt as createSchemaApi,
|
1737
1742
|
bt as createSchemaApis,
|
1738
|
-
|
1743
|
+
Mt as defaultLoader,
|
1739
1744
|
T as fillBasePath,
|
1740
1745
|
$e as getModifiers,
|
1741
1746
|
je as getPlugin,
|
@@ -1755,7 +1760,7 @@ export {
|
|
1755
1760
|
$t as mockApi,
|
1756
1761
|
jt as mockApis,
|
1757
1762
|
Se as mockCleanup,
|
1758
|
-
|
1763
|
+
O as nodeRender,
|
1759
1764
|
ut as parseDeps,
|
1760
1765
|
A as parseExpression,
|
1761
1766
|
ue as parseFunction,
|
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.2",
|
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.2",
|
9
|
+
"@vtj/utils": "~0.9.2"
|
10
10
|
},
|
11
11
|
"devDependencies": {
|
12
12
|
"vue": "~3.5.5",
|
13
13
|
"vue-router": "~4.5.0",
|
14
14
|
"@vtj/cli": "~0.9.1",
|
15
|
-
"@vtj/
|
16
|
-
"@vtj/
|
15
|
+
"@vtj/ui": "~0.9.2",
|
16
|
+
"@vtj/icons": "~0.9.2"
|
17
17
|
},
|
18
18
|
"exports": {
|
19
19
|
".": {
|
package/types/version.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* Copyright (c) 2024, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.9.
|
5
|
+
* @version 0.9.1
|
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.1";
|