@vtj/renderer 0.7.14 → 0.7.15
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 +5 -5
- package/dist/index.mjs +56 -56
- package/package.json +8 -8
- package/types/version.d.ts +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("@vtj/core"),c=require("@vtj/utils"),f=require("vue"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("@vtj/core"),c=require("@vtj/utils"),f=require("vue"),K=require("vue-router"),F=require("element-plus"),ue=require("@vueuse/core"),pe=require("@vtj/icons");function de(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const M=de(f);/**!
|
|
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.7.
|
|
5
|
+
* @version 0.7.15
|
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
|
7
|
-
*/const C="0.7.
|
|
8
|
-
`)+o;const i=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",i)(e)}catch(n){if(c.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function D(r,e,t=!1,s=!1){const n=R(r,e,t,s);if(typeof n!="function"&&(c.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function y(r){return r&&r.type==="JSExpression"}function H(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function te(r){return y(r)||H(r)}function ve(r){return te(r)?r.value:JSON.stringify(r)}let b=null;const _e=c.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:r=>r.data?.code===0||!!r.data?.success,failMessage:!0,showError:r=>{
|
|
7
|
+
*/const C="0.7.15";var j=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(j||{});const N=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],fe=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],W=["vIf","vShow","vModel","vFor","vBind"],X={String,Number,Boolean,Array,Object,Function,Date};function I(r,e){return r.map(t=>c.isUrl(t)?t:`${e}${t}`)}function A(r){return/\.css$/.test(r)}function V(r){return/\.js$/.test(r)}function me(r){return r.map(e=>`<script src="${c.url.append(e,{v:C})}"><\/script>`).join("")}function he(r=[]){return r.map(e=>`<link rel="stylesheet" href="${c.url.append(e,{v:C})}" />`).join("")}function G(r,e){const t=r.filter(h=>!!h.enabled),s=[],n=[],o=[],i=[],a={},u=[],l={};return t.forEach(({urls:h,assetsUrl:m,library:p,assetsLibrary:g})=>{h?.forEach(S=>{V(S)&&s.push(S),A(S)&&n.push(S)}),p&&(i.push(p),a[p]=I(h||[],e)),m&&o.push(m),g&&u.push(g),p&&g&&(l[g]=p)}),{scripts:I(s,e),css:I(n,e),materials:I(o,e),libraryExports:i,materialExports:c.dedupArray(u),materialMapLibrary:l,libraryMap:a}}function Q(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function B(r){return c.isString(r)?r:JSON.stringify(r)}function k(r,e,t){const s=r.CSSStyleSheet;if(s.prototype.replaceSync){const n=new s;n.id=e,n.replaceSync(t);const o=r.document,i=o.adoptedStyleSheets,a=Array.from(i).filter(u=>u.id!==e);o.adoptedStyleSheets=[...a,n]}else{const n=r.document;let o=n.getElementById(e);o?o.innerHTML=t:(o=n.createElement("style"),o.id=e,o.innerHTML=t,n.head.appendChild(o))}}async function Z(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&k(window,r,t)}function ee(r){return c.isFunction(r)||c.isFunction(r?.install)}function R(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,(a,u)=>`__self${u}`),o=n.join(`
|
|
8
|
+
`)+o;const i=`with(${t?"{}":"$scope || {}"}) { ${o} }`;return new Function("$scope",i)(e)}catch(n){if(c.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function D(r,e,t=!1,s=!1){const n=R(r,e,t,s);if(typeof n!="function"&&(c.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function y(r){return r&&r.type==="JSExpression"}function H(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function te(r){return y(r)||H(r)}function ve(r){return te(r)?r.value:JSON.stringify(r)}let b=null;const _e=c.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:r=>r.data?.code===0||!!r.data?.success,failMessage:!0,showError:r=>{F.ElNotification.error({message:r||"未知错误"})},showLoading:()=>{b&&b.close(),b=F.ElLoading.service({lock:!0,text:"Loading",background:"rgba(0, 0, 0, 0.05)"})},hideLoading:()=>{b&&(b.close(),b=null)}}});function re(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?R(r.headers,{},!0):void 0,o={url:r.url,method:r.method,settings:{...r.settings,headers:n}};return(i,a)=>s.send(c.merge(o,a||{},{data:i}))}}function se(r=[],e){return r.reduce((t,s)=>(t[s.id]=re(s,e),t),{})}class ne{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};$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=M){const s=t.getCurrentInstance();if(!s)return;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()})}__proxy(){this.__instance&&N.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){N.forEach(e=>{this[e]=null})}__parseFunction(e){if(e)if(this.__mode===j.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return D({type:s,value:n},this)}else return D(e,this)}__parseExpression(e){if(e)if(this.__mode===j.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return R({type:s,value:n},this)}else return R(e,this)}__ref(e=null,t){if(this.__mode!==j.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),s=>{let n=s?.$vtjEl||s?.$el||s;if(!n){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}if(n.__vtj__=e,n.nodeType===3&&n.nextSibling&&(n=n.nextSibling),j.Design===this.__mode&&(n.__context__=this),e&&(this.__refs[e]=s),typeof t=="function")t(s);else if(t){const o=this.$refs[t];if(o){const i=new Set([].concat(o,s));this.$refs[t]=Array.from(i)}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 L(r){const{Vue:e=M,mode:t=j.Runtime,components:s={},libs:n={},apis:o={},loader:i}=r,a=e.computed(()=>r.dsl),u={$components:s,$libs:n,$apis:o},l=new ne({mode:t,dsl:a.value,attrs:u}),h=e.defineComponent({name:a.value.name,props:{...ge(a.value.props??[],l)},setup(m){l.$props=m,a.value.id&&k(r.window||window,a.value.id,a.value.css||""),l.state=ye(e,a.value.state??{},l);const p=Se(e,a.value.computed??{},l),g=we(a.value.methods??{},l),S=je(e,a.value.inject,l),d=oe(a.value.dataSources||{},l),w={...S,...p,...g,...d};return l.setup(w,e),$e(e,a.value.watch??[],l),{vtj:l}},emits:[...a.value.emits??[]],expose:["vtj"],render(){if(!a.value.nodes)return null;const m=a.value.nodes||[];return m.length===1?x(m[0],l,e,i):m.map(p=>x(p,l,e,i))},...Ee(a.value.lifeCycles??{},l)});return{renderer:e.markRaw(h),context:l}}function ge(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(o=>X[o]):void 0;return r.map(s=>c.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:y(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 ye(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let o=e[n];return y(o)?o=t.__parseExpression(o):H(o)&&(o=t.__parseFunction(o)),s[n]=o,s},{}))}function Se(r,e,t){return Object.entries(e??{}).reduce((s,[n,o])=>(s[n]=r.computed(t.__parseFunction(o)),s),{})}function we(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function je(r,e=[],t){return e.reduce((s,n)=>{const{name:o,from:i}=n||{};n.default;const a=y(i)?t.__parseExpression(i)||o:i??o,u=y(n.default)?t.__parseExpression(n.default):n.default??null;return s[o]=r.inject(a,u),s},{})}function oe(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s],o=e.$apis[n.ref],i=H(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;return t[s]=async(...a)=>{const u=await o.apply(e,a);return i?i(u):u},t},{})}function $e(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function Ee(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}const ie=r=>r;function q(r){const{getDsl:e,options:t}=r;return(s,n,o=M)=>!n||typeof n=="string"?s:n.type==="Schema"?o.defineAsyncComponent(async()=>{const i=await e(n.id);return i?L({...t,Vue:o,dsl:i,mode:j.Runtime,loader:q(r)}).renderer:null}):s}function x(r,e,t=M,s=ie){if(!r||!r.name||r.invisible)return null;const{id:n=null,directives:o=[]}=r,{vIf:i,vFor:a,vShow:u,vModels:l,vBind:h}=Pe(o);if(i&&!be(i,e))return null;const m=p=>{const g=p.$components,S=(()=>{if(r.name==="component")return Ce(p,r.props?.is);if(r.name==="slot")return r.name;const v=s(r.name,r.from,t);return c.isString(v)?g[v]??v:v})(),d=Ie(n,r.props??{},p),w=Fe(t,r.events??{},p);if(r.name==="slot")return Re(t,r,d,p);h&&Object.assign(d,p.__parseExpression(h.value)),u&&(d.style=Object.assign(d.style??{},He(u,p))),l.forEach(v=>{Object.assign(d,Te(t,v,p))});const E=Me(t,r.children??[],p,r);return t.createVNode(S,{...d,...w},E)};return a?De(a,m,e):m(e)}function Pe(r=[]){const e=r.find(a=>c.camelCase(a.name)==="vIf"),t=r.find(a=>c.camelCase(a.name)==="vFor"),s=r.find(a=>c.camelCase(a.name)==="vShow"),n=r.find(a=>c.camelCase(a.name)==="vBind"),o=r.filter(a=>c.camelCase(a.name)==="vModel"),i=r.filter(a=>!W.includes(c.camelCase(a.name)));return{vIf:e,vFor:t,vShow:s,vModels:o,vBind:n,others:i}}function be(r,e){return!!e.__parseExpression(r.value)}function Ce(r,e){return e?y(e)?r.__parseExpression(e):e:"div"}function Ie(r,e,t){const s=Object.keys(e||{}).reduce((n,o)=>{let i=e[o];return y(i)?i=t.__parseExpression(i):H(i)&&(i=t.__parseFunction(i)),n[o]=i,n},{});return s.ref=t.__ref(r,s.ref),s}function Fe(r,e,t){const s=["passive","capture","once"],n={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((o,i)=>{const a=e[i],u=J(a.modifiers),l=u.find(p=>s.includes(p)),h="on"+c.upperFirst(i)+(l&&n[l]||""),m=t.__parseFunction(a.handler);return m&&(o[h]=r.withModifiers(m,u)),o},{})}function J(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function Re(r,e,t,s){const{children:n}=e,o=xe(e,s),i=s.$slots?.[o.name];return i?i(t):n?c.isString(n)?r.createTextVNode(n):y(n)?r.createTextVNode(B(s.__parseExpression(n))):Array.isArray(n)?n.map(a=>x(a,s,r)):null:null}function xe(r,e){const{props:t}=r,s=t?.name||"default";return{name:y(s)?e.__parseExpression(s):s,params:[]}}function He(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function Te(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
|
|
9
9
|
${e.value.value} = v;
|
|
10
|
-
}`:"(v) => {}"},n=t.__parseFunction(s),o=J(e.modifiers),i=y(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[i]:t.__parseExpression(e.value),[`onUpdate:${i}`]:o.length&&n?r.withModifiers(n,o):n}}function Oe(r,e,t,s){if(!e)return null;if(c.isString(e))return{default:()=>e};if(y(e))return{default:()=>B(t.__parseExpression(e))};if(Array.isArray(e)){const n=Me(e),o=i=>!i||!s?{}:s?.id&&Object.keys(i).length?{[`scope_${s.id}`]:i}:{};return Object.entries(n).reduce((i,[a,{nodes:u,params:l}])=>(i[a]=h=>{const m=l.length?c.pick(h??{},l):o(h);return u.map(p=>x(p,t.__clone(m),r))},i),{})}}function Me(r){const e={default:{params:[],nodes:[]}};for(const t of r){const s=Ne(t.slot),n=s.name;e[n]?(e[n].nodes.push(t),e[n].params=e[n].params.concat(s.params)):e[n]={nodes:[t],params:s.params}}return e}function Ne(r="default"){return c.isString(r)?{name:r,params:[]}:{params:[],...r}}function De(r,e,t){const{value:s,iterator:n}=r,{item:o="item",index:i="index"}=n||{};let a=t.__parseExpression(s)||[];return Number.isInteger(a)&&(a=new Array(a).fill(!0).map((u,l)=>l+1)),Array.isArray(a)?a.map((u,l)=>e(t.__clone({[o]:u,[i]:l}))):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const Y=f.defineComponent({name:"VtjPageContainer",async setup(){const r=K(),e=z.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null;return s&&ue.useTitle(s.title||"VTJ"),{provider:r,component:n,file:s,query:e.query}},render(){return this.component?f.h(this.component,this.query):f.h("div","页面不存在")}}),Ae={name:{type:String,default:"VTJ.PRO"},tagline:{type:String,default:"基于 Vue3 + TypeScript 快速打造高生产力的低代码研发平台"},actionText:{type:String,default:"开始设计"},actionLink:{type:String,default:"/@vtj/pro/"}},Ve={class:"x-startup"},Be={class:"x-startup__wrapper"},ke={class:"x-startup__name"},Le={class:"clip"},qe={class:"x-startup__tagline"},Je={class:"x-startup__actions"},Ue=f.defineComponent({__name:"Startup",props:Ae,setup(r){const e=r,t=()=>{if(typeof window<"u"){let s=(window.__VTJ_LINK__||{}).href||window.location.pathname+"@vtj/pro/#/";window.location.href=s}};return(s,n)=>(f.openBlock(),f.createElementBlock("div",Ve,[f.createElementVNode("div",Be,[f.createElementVNode("div",ke,[f.createElementVNode("span",Le,f.toDisplayString(e.name),1)]),f.createElementVNode("div",qe,f.toDisplayString(e.tagline),1),f.createElementVNode("div",Je,[f.createVNode(f.unref(I.ElButton),{type:"primary",size:"large",round:"",icon:f.unref(pe.EditPen),onClick:t},{default:f.withCtx(()=>[f.createTextVNode(f.toDisplayString(e.actionText),1)]),_:1},8,["icon"])])])]))}}),Ke=f.defineComponent({name:"VtjStartupContainer",render(){return f.h(Ue)}}),U=Symbol("Provider");class ae extends $.Base{mode;globals={};modules={};adapter={request:_e,jsonp:c.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};router=null;materialPath="./";constructor(e){super();const{service:t,mode:s=j.Raw,dependencies:n,materials:o,project:i={},adapter:a={},globals:u={},modules:l={},router:h=null,materialPath:m="./"}=e;this.mode=s,this.modules=l,this.service=t,this.router=h,this.materialPath=m,n&&(this.dependencies=n),o&&(this.materials=o),Object.assign(this.globals,u),Object.assign(this.adapter,a),s!==j.Design&&this.load(i)}async load(e){const t=this.modules[`.vtj/projects/${e.id}.json`];if(this.project=t?await t():await this.service.init(e),!this.project)throw new Error("project is null");const{dependencies:s=[],apis:n}=this.project,{dependencies:o,library:i,components:a,materialPath:u}=this,{libraryExports:l,libraryMap:h,materials:m,materialExports:p,materialMapLibrary:g}=G(s,u);for(const d of l){const w=o[d],E=window[d];if(E)i[d]=E;else if(w)window[d]=i[d]=await w();else{const v=h[d]||[];for(const P of v)A(P)&&await Z(d,c.url.append(P,{v:C})),V(P)&&await c.loadScript(c.url.append(P,{v:C})),i[d]=window[d]}}for(const d of m)await c.loadScript(c.url.append(d,{v:C}));const S=this.materials||{};for(const d of p){const w=window[g[d]],E=$.BUILT_IN_COMPONENTS[d];if(E)w&&E.forEach(v=>{a[v]=w[v]});else{const v=S[d]?(await S[d]()).default:window[d];v&&w&&(v.components||[]).forEach(P=>{a[P.name]=Q(P,w)})}}n&&(this.apis=se(n,this.adapter)),this.initRouter(),this.triggerReady()}initRouter(){const{router:e,project:t}=this;e&&(e.addRoute({path:"/page/:id",name:"VtjPage",component:Y}),e.addRoute({path:"/",name:"VtjHomepage",component:t?.homepage?Y:Ke}))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&ee(n)&&(e.use(n),t[s]=!0);e.provide(U,this),e.config.globalProperties.installed=t}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(s=>s.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},s=(n,o=[])=>{for(const i of o){if(i.id===n)return i;if(i.children&&i.children.length){const a=s(n,i.children);if(a)return a}}};return s(e,t)||null}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const t=this.modules[`.vtj/files/${e}.json`];return t?await t():this.service.getFile(e).catch(()=>null)}async getRenderComponent(e){const t=this.getFile(e);if(!t)return c.logger.warn(`Can not find file: ${e}`),null;const s=`.vtj/vue/${e}.vue`,n=this.modules[s];if(n)return(await n())?.default;const o=await this.getDsl(t.id);if(!o)return c.logger.warn(`Can not find dsl: ${e}`),null;const{library:i,components:a,mode:u,apis:l}=this,h={mode:u,Vue:i.Vue,components:a,libs:i,apis:l,window},m=q({getDsl:async g=>await this.getDsl(g)||null,options:h}),{renderer:p}=L({...h,dsl:o,loader:m});return p}}function Ye(r){const e=new ae(r);return{provider:e,onReady:s=>e.ready(s)}}function K(r={}){const e=f.inject(U);if(!e)throw new Error("Can not find provider");if(e.mode===j.Raw){const{id:t,version:s}=r;t&&s&&(async()=>{const n=await e.getDsl(t);n?.__VERSION__!==s&&I.ElNotification.warning({title:n?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const ze=new c.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0,showError:r=>{I.ElNotification.error({message:r||"未知错误"})}}}),We=(r="/vtj/local/repository/${type}.json")=>(e,t)=>ze.send({url:r,method:"post",query:{type:e},data:{type:e,data:t}});class M{api;constructor(){this.api=We()}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return console.log("BaseService.saveMaterials",e,t),!1}async saveFile(e){return console.log("BaseService.saveFile",e),!1}async getFile(e){return console.log("BaseService.getFile",e),{}}async removeFile(e){return console.log("BaseService.removeFile",e),!1}async saveHistory(e){return console.log("BaseService.saveHistory",e),!1}async removeHistory(e){return console.log("BaseService.removeHistory",e),!1}async getHistory(e){return console.log("BaseService.getHistory",e),{}}async getHistoryItem(e,t){return console.log("BaseService.getHistoryItem",e,t),{}}async saveHistoryItem(e,t){return console.log("BaseService.saveHistoryItem",e,t),!1}async removeHistoryItem(e,t){return console.log("BaseService.removeHistoryItem",e,t),!1}async publish(e){return!!await this.api("publish",e).catch(()=>!1)}async publishFile(e,t){return!!await this.api("publishFile",{project:e,file:t}).catch(()=>!1)}async genVueContent(e,t){return await this.api("genVueContent",{project:e,dsl:t}).catch(()=>"")}async createRawPage(e){return await this.api("createRawPage",e).catch(()=>"")}async removeRawPage(e){return await this.api("removeRawPage",e).catch(()=>"")}}const _=new c.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Xe extends M{init(e){const t=new $.ProjectModel(e),s=_.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return _.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new $.ProjectModel(e);return _.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return _.save(`materials_${e.id}`,c.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return _.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=_.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return _.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return _.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=_.get(`history_${e}`);if(t){const n=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,n),_.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=_.get(`history_${e}`),s=new $.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=_.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return _.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{_.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class ce extends M{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new $.ProjectModel(e),s=this.projects[t.id]||{},n=Object.assign(t.toDsl(),s);return this.projects[n.id]=n,Promise.resolve(n)}saveProject(e){const t=new $.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=c.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return this.files[e.id]=e,Promise.resolve(!0)}getFile(e){const t=this.files[e];return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return delete this.files[e],Promise.resolve(!0)}saveHistory(e){return this.histories[e.id]=e,Promise.resolve(!0)}removeHistory(e){const t=this.histories[e];if(t){const n=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new $.HistoryModel(t||{id:e});return Promise.resolve(s)}getHistoryItem(e,t){const s=`${e}_${t}`,n=this.historyItems[s]||{};return Promise.resolve(n)}saveHistoryItem(e,t){const s=`${e}_${t.id}`;return this.historyItems[s]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{const n=`${e}_${s}`;delete this.historyItems[n]}),Promise.resolve(!0)}}let T=null;function Ge(){return T||(T=new ce,T)}class Qe extends M{async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:c.mapToObject(t)}).catch(()=>!1)}async saveFile(e){return!!await this.api("saveFile",e).catch(()=>!1)}async getFile(e){return await this.api("getFile",e).catch(()=>null)||{}}async removeFile(e){return!!await this.api("removeFile",e).catch(()=>!1)}async saveHistory(e){return!!await this.api("saveHistory",e).catch(()=>!1)}async removeHistory(e){return!!await this.api("removeHistory",e).catch(()=>!1)}async getHistory(e){return await this.api("getHistory",e).catch(()=>null)||{}}async getHistoryItem(e,t){return await this.api("getHistoryItem",{fId:e,id:t}).catch(()=>null)||{}}async saveHistoryItem(e,t){return!!await this.api("saveHistoryItem",{fId:e,item:t}).catch(()=>!1)}async removeHistoryItem(e,t){return!!await this.api("removeHistoryItem",{fId:e,ids:t}).catch(()=>!1)}}function le(r=[]){return r.map(e=>{const{id:t,title:s,icon:n,children:o,hidden:i}=e;return{id:t,title:s,icon:n,hidden:i,url:`/page/${t}`,children:o&&o.length?le(o):void 0}})}function Ze(){const r=K(),e=z.useRoute(),t=f.ref(!1),s=r.project;f.watchEffect(()=>{const{name:o,params:i,meta:a}=e;if(o==="VtjPage"){const u=r.getPage(i.id);t.value=!u?.mask}else if(o==="VtjHomepage"){const u=r.getHomepage();t.value=!u?.mask}else t.value=!a.mask});const n=le(s?.pages);return{disabled:t,title:s?.description||s?.name||"VTJ App",menus:n}}exports.BUILT_IN_DIRECTIVES=W;exports.BaseService=M;exports.CONTEXT_HOST=N;exports.Context=ne;exports.ContextMode=j;exports.DATA_TYPES=X;exports.JSCodeToString=ve;exports.LIFE_CYCLES_LIST=fe;exports.LocalService=Qe;exports.MemoryService=ce;exports.Provider=ae;exports.StorageService=Xe;exports.VTJ_RENDERER_VERSION=C;exports.adoptedStyleSheets=k;exports.createAssetScripts=me;exports.createAssetsCss=he;exports.createDataSources=oe;exports.createLoader=q;exports.createMemoryService=Ge;exports.createProvider=Ye;exports.createRenderer=L;exports.createSchemaApi=re;exports.createSchemaApis=se;exports.defaultLoader=ie;exports.fillBasePath=F;exports.getModifiers=J;exports.getRawComponent=Q;exports.isCSSUrl=A;exports.isJSCode=te;exports.isJSExpression=y;exports.isJSFunction=H;exports.isJSUrl=V;exports.isVuePlugin=ee;exports.loadCss=Z;exports.nodeRender=x;exports.parseDeps=G;exports.parseExpression=R;exports.parseFunction=D;exports.providerKey=U;exports.toString=B;exports.useMask=Ze;exports.useProvider=K;
|
|
10
|
+
}`:"(v) => {}"},n=t.__parseFunction(s),o=J(e.modifiers),i=y(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[i]:t.__parseExpression(e.value),[`onUpdate:${i}`]:o.length&&n?r.withModifiers(n,o):n}}function Me(r,e,t,s){if(!e)return null;if(c.isString(e))return{default:()=>e};if(y(e))return{default:()=>B(t.__parseExpression(e))};if(Array.isArray(e)){const n=Oe(e),o=i=>!i||!s?{}:s?.id&&Object.keys(i).length?{[`scope_${s.id}`]:i}:{};return Object.entries(n).reduce((i,[a,{nodes:u,params:l}])=>(i[a]=h=>{const m=l.length?c.pick(h??{},l):o(h);return u.map(p=>x(p,t.__clone(m),r))},i),{})}}function Oe(r){const e={default:{params:[],nodes:[]}};for(const t of r){const s=Ne(t.slot),n=s.name;e[n]?(e[n].nodes.push(t),e[n].params=e[n].params.concat(s.params)):e[n]={nodes:[t],params:s.params}}return e}function Ne(r="default"){return c.isString(r)?{name:r,params:[]}:{params:[],...r}}function De(r,e,t){const{value:s,iterator:n}=r,{item:o="item",index:i="index"}=n||{};let a=t.__parseExpression(s)||[];return Number.isInteger(a)&&(a=new Array(a).fill(!0).map((u,l)=>l+1)),Array.isArray(a)?a.map((u,l)=>e(t.__clone({[o]:u,[i]:l}))):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const z=f.defineComponent({name:"VtjPageContainer",async setup(){const r=Y(),e=K.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null;return s&&ue.useTitle(s.title||"VTJ"),{provider:r,component:n,file:s,query:e.query}},render(){return this.component?f.h(this.component,this.query):f.h("div","页面不存在")}}),Ae={name:{type:String,default:"VTJ.PRO"},tagline:{type:String,default:"基于 Vue3 + TypeScript 快速打造高生产力的低代码研发平台"},actionText:{type:String,default:"开始设计"},actionLink:{type:String,default:"/@vtj/pro/"}},Ve={class:"x-startup"},Be={class:"x-startup__wrapper"},ke={class:"x-startup__name"},Le={class:"clip"},qe={class:"x-startup__tagline"},Je={class:"x-startup__actions"},Ue=f.defineComponent({__name:"Startup",props:Ae,setup(r){const e=r,t=()=>{if(typeof window<"u"){let s=(window.__VTJ_LINK__||{}).href||window.location.pathname+"@vtj/pro/#/";window.location.href=s}};return(s,n)=>(f.openBlock(),f.createElementBlock("div",Ve,[f.createElementVNode("div",Be,[f.createElementVNode("div",ke,[f.createElementVNode("span",Le,f.toDisplayString(e.name),1)]),f.createElementVNode("div",qe,f.toDisplayString(e.tagline),1),f.createElementVNode("div",Je,[f.createVNode(f.unref(F.ElButton),{type:"primary",size:"large",round:"",icon:f.unref(pe.EditPen),onClick:t},{default:f.withCtx(()=>[f.createTextVNode(f.toDisplayString(e.actionText),1)]),_:1},8,["icon"])])])]))}}),Ye=f.defineComponent({name:"VtjStartupContainer",render(){return f.h(Ue)}}),U=Symbol("Provider");class ae extends $.Base{mode;globals={};modules={};adapter={request:_e,jsonp:c.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};router=null;materialPath="./";constructor(e){super();const{service:t,mode:s=j.Raw,dependencies:n,materials:o,project:i={},adapter:a={},globals:u={},modules:l={},router:h=null,materialPath:m="./"}=e;this.mode=s,this.modules=l,this.service=t,this.router=h,this.materialPath=m,n&&(this.dependencies=n),o&&(this.materials=o),Object.assign(this.globals,u),Object.assign(this.adapter,a),s!==j.Design&&this.load(i)}async load(e){const t=this.modules[`.vtj/projects/${e.id}.json`];if(this.project=t?await t():await this.service.init(e),!this.project)throw new Error("project is null");const{dependencies:s=[],apis:n}=this.project,{dependencies:o,library:i,components:a,materialPath:u}=this,{libraryExports:l,libraryMap:h,materials:m,materialExports:p,materialMapLibrary:g}=G(s,u);for(const d of l){const w=o[d],E=window[d];if(E)i[d]=E;else if(w)window[d]=i[d]=await w();else{const v=h[d]||[];for(const P of v)A(P)&&await Z(d,c.url.append(P,{v:C})),V(P)&&await c.loadScript(c.url.append(P,{v:C})),i[d]=window[d]}}for(const d of m)await c.loadScript(c.url.append(d,{v:C}));const S=this.materials||{};for(const d of p){const w=window[g[d]],E=$.BUILT_IN_COMPONENTS[d];if(E)w&&E.forEach(v=>{a[v]=w[v]});else{const v=S[d]?(await S[d]()).default:window[d];v&&w&&(v.components||[]).forEach(P=>{a[P.name]=Q(P,w)})}}n&&(this.apis=se(n,this.adapter)),this.initRouter(),this.triggerReady()}initRouter(){const{router:e,project:t}=this;e&&(e.addRoute({path:"/page/:id",name:"VtjPage",component:z}),e.addRoute({path:"/",name:"VtjHomepage",component:t?.homepage?z:Ye}))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&ee(n)&&(e.use(n),t[s]=!0);e.provide(U,this),e.config.globalProperties.installed=t}getFile(e){const{blocks:t=[]}=this.project||{};return this.getPage(e)||t.find(s=>s.id===e)||null}getPage(e){const{pages:t=[]}=this.project||{},s=(n,o=[])=>{for(const i of o){if(i.id===n)return i;if(i.children&&i.children.length){const a=s(n,i.children);if(a)return a}}};return s(e,t)||null}getHomepage(){const{homepage:e}=this.project||{};return e?this.getPage(e):null}async getDsl(e){const t=this.modules[`.vtj/files/${e}.json`];return t?await t():this.service.getFile(e).catch(()=>null)}async getRenderComponent(e){const t=this.getFile(e);if(!t)return c.logger.warn(`Can not find file: ${e}`),null;const s=`.vtj/vue/${e}.vue`,n=this.modules[s];if(n)return(await n())?.default;const o=await this.getDsl(t.id);if(!o)return c.logger.warn(`Can not find dsl: ${e}`),null;const{library:i,components:a,mode:u,apis:l}=this,h={mode:u,Vue:i.Vue,components:a,libs:i,apis:l,window},m=q({getDsl:async g=>await this.getDsl(g)||null,options:h}),{renderer:p}=L({...h,dsl:o,loader:m});return p}}function ze(r){const e=new ae(r);return{provider:e,onReady:s=>e.ready(s)}}function Y(r={}){const e=f.inject(U);if(!e)throw new Error("Can not find provider");if(e.mode===j.Raw){const{id:t,version:s}=r;t&&s&&(async()=>{const n=await e.getDsl(t);n?.__VERSION__!==s&&F.ElNotification.warning({title:n?.name,message:"当前组件源码版本与运行时版本不一致,请重新发布组件"})})()}return e}const Ke=new c.Request({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0,showError:r=>{F.ElNotification.error({message:r||"未知错误"})}}}),We=(r="/vtj/local/repository/${type}.json")=>(e,t)=>Ke.send({url:r,method:"post",query:{type:e},data:{type:e,data:t}});class O{api;constructor(){this.api=We()}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return console.log("BaseService.saveMaterials",e,t),!1}async saveFile(e){return console.log("BaseService.saveFile",e),!1}async getFile(e){return console.log("BaseService.getFile",e),{}}async removeFile(e){return console.log("BaseService.removeFile",e),!1}async saveHistory(e){return console.log("BaseService.saveHistory",e),!1}async removeHistory(e){return console.log("BaseService.removeHistory",e),!1}async getHistory(e){return console.log("BaseService.getHistory",e),{}}async getHistoryItem(e,t){return console.log("BaseService.getHistoryItem",e,t),{}}async saveHistoryItem(e,t){return console.log("BaseService.saveHistoryItem",e,t),!1}async removeHistoryItem(e,t){return console.log("BaseService.removeHistoryItem",e,t),!1}async publish(e){return!!await this.api("publish",e).catch(()=>!1)}async publishFile(e,t){return!!await this.api("publishFile",{project:e,file:t}).catch(()=>!1)}async genVueContent(e,t){return await this.api("genVueContent",{project:e,dsl:t}).catch(()=>"")}async createRawPage(e){return await this.api("createRawPage",e).catch(()=>"")}async removeRawPage(e){return await this.api("removeRawPage",e).catch(()=>"")}}const _=new c.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Xe extends O{init(e){const t=new $.ProjectModel(e),s=_.get(`project_${t.id}`),n=Object.assign(t.toDsl(),s||{});return _.save(`project_${t.id}`,n),Promise.resolve(n)}saveProject(e){const t=new $.ProjectModel(e);return _.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return _.save(`materials_${e.id}`,c.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return _.save(`file_${e.id}`,e),Promise.resolve(!0)}getFile(e){const t=_.get(`file_${e}`);return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return _.remove(`file_${e}`),Promise.resolve(!0)}saveHistory(e){return _.save(`history_${e.id}`,e),Promise.resolve(!0)}removeHistory(e){const t=_.get(`history_${e}`);if(t){const n=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,n),_.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=_.get(`history_${e}`),s=new $.HistoryModel(t||{id:e});return Promise.resolve(s.toDsl())}getHistoryItem(e,t){const s=_.get(`history_${e}_${t}`);return Promise.resolve(s)}saveHistoryItem(e,t){return _.save(`history_${e}_${t.id}`,t),Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{_.remove(`history_${e}_${s}`)}),Promise.resolve(!0)}}class ce extends O{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new $.ProjectModel(e),s=this.projects[t.id]||{},n=Object.assign(t.toDsl(),s);return this.projects[n.id]=n,Promise.resolve(n)}saveProject(e){const t=new $.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=c.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return this.files[e.id]=e,Promise.resolve(!0)}getFile(e){const t=this.files[e];return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return delete this.files[e],Promise.resolve(!0)}saveHistory(e){return this.histories[e.id]=e,Promise.resolve(!0)}removeHistory(e){const t=this.histories[e];if(t){const n=(t.items||[]).map(o=>o.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new $.HistoryModel(t||{id:e});return Promise.resolve(s)}getHistoryItem(e,t){const s=`${e}_${t}`,n=this.historyItems[s]||{};return Promise.resolve(n)}saveHistoryItem(e,t){const s=`${e}_${t.id}`;return this.historyItems[s]=t,Promise.resolve(!0)}removeHistoryItem(e,t){return t.forEach(s=>{const n=`${e}_${s}`;delete this.historyItems[n]}),Promise.resolve(!0)}}let T=null;function Ge(){return T||(T=new ce,T)}class Qe extends O{async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e){return!!await this.api("saveProject",e).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:c.mapToObject(t)}).catch(()=>!1)}async saveFile(e){return!!await this.api("saveFile",e).catch(()=>!1)}async getFile(e){return await this.api("getFile",e).catch(()=>null)||{}}async removeFile(e){return!!await this.api("removeFile",e).catch(()=>!1)}async saveHistory(e){return!!await this.api("saveHistory",e).catch(()=>!1)}async removeHistory(e){return!!await this.api("removeHistory",e).catch(()=>!1)}async getHistory(e){return await this.api("getHistory",e).catch(()=>null)||{}}async getHistoryItem(e,t){return await this.api("getHistoryItem",{fId:e,id:t}).catch(()=>null)||{}}async saveHistoryItem(e,t){return!!await this.api("saveHistoryItem",{fId:e,item:t}).catch(()=>!1)}async removeHistoryItem(e,t){return!!await this.api("removeHistoryItem",{fId:e,ids:t}).catch(()=>!1)}}function le(r=[]){return r.map(e=>{const{id:t,title:s,icon:n,children:o,hidden:i}=e;return{id:t,title:s,icon:n,hidden:i,url:`/page/${t}`,children:o&&o.length?le(o):void 0}})}function Ze(){const r=Y(),e=K.useRoute(),t=f.ref(!1),s=r.project;f.watchEffect(()=>{const{name:o,params:i,meta:a}=e;if(o==="VtjPage"){const u=r.getPage(i.id);t.value=!u?.mask}else if(o==="VtjHomepage"){const u=r.getHomepage();t.value=!u?.mask}else t.value=!a.mask});const n=le(s?.pages);return{disabled:t,title:s?.description||s?.name||"VTJ App",menus:n}}exports.BUILT_IN_DIRECTIVES=W;exports.BaseService=O;exports.CONTEXT_HOST=N;exports.Context=ne;exports.ContextMode=j;exports.DATA_TYPES=X;exports.JSCodeToString=ve;exports.LIFE_CYCLES_LIST=fe;exports.LocalService=Qe;exports.MemoryService=ce;exports.Provider=ae;exports.StorageService=Xe;exports.VTJ_RENDERER_VERSION=C;exports.adoptedStyleSheets=k;exports.createAssetScripts=me;exports.createAssetsCss=he;exports.createDataSources=oe;exports.createLoader=q;exports.createMemoryService=Ge;exports.createProvider=ze;exports.createRenderer=L;exports.createSchemaApi=re;exports.createSchemaApis=se;exports.defaultLoader=ie;exports.fillBasePath=I;exports.getModifiers=J;exports.getRawComponent=Q;exports.isCSSUrl=A;exports.isJSCode=te;exports.isJSExpression=y;exports.isJSFunction=H;exports.isJSUrl=V;exports.isVuePlugin=ee;exports.loadCss=Z;exports.nodeRender=x;exports.parseDeps=G;exports.parseExpression=R;exports.parseFunction=D;exports.providerKey=U;exports.toString=B;exports.useMask=Ze;exports.useProvider=Y;
|
package/dist/index.mjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { Base as ae, BUILT_IN_COMPONENTS as ce, ProjectModel as R, HistoryModel as Y } from "@vtj/core";
|
|
2
2
|
import { isUrl as le, url as F, dedupArray as ue, isString as P, isFunction as L, logger as C, createRequest as pe, merge as fe, camelCase as j, upperFirst as de, pick as me, jsonp as he, loadScript as q, Request as ve, Storage as _e, mapToObject as A } from "@vtj/utils";
|
|
3
3
|
import * as M from "vue";
|
|
4
|
-
import { defineComponent as D, h as
|
|
5
|
-
import { useRoute as
|
|
4
|
+
import { defineComponent as D, h as k, openBlock as ye, createElementBlock as ge, createElementVNode as b, toDisplayString as B, createVNode as we, unref as U, withCtx as Se, createTextVNode as $e, inject as je, ref as Ee, watchEffect as Pe } from "vue";
|
|
5
|
+
import { useRoute as G } from "vue-router";
|
|
6
6
|
import { ElNotification as V, ElLoading as be, ElButton as Fe } from "element-plus";
|
|
7
7
|
import { useTitle as Ie } from "@vueuse/core";
|
|
8
|
-
import { EditPen as
|
|
8
|
+
import { EditPen as He } from "@vtj/icons";
|
|
9
9
|
/**!
|
|
10
10
|
* Copyright (c) 2024, VTJ.PRO All rights reserved.
|
|
11
11
|
* @name @vtj/renderer
|
|
12
12
|
* @author CHC chenhuachun1549@dingtalk.com
|
|
13
|
-
* @version 0.7.
|
|
13
|
+
* @version 0.7.15
|
|
14
14
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
|
15
15
|
*/
|
|
16
|
-
const I = "0.7.
|
|
16
|
+
const I = "0.7.15";
|
|
17
17
|
var w = /* @__PURE__ */ ((s) => (s.Runtime = "Runtime", s.Design = "Design", s.Raw = "Raw", s.VNode = "VNode", s))(w || {});
|
|
18
|
-
const
|
|
18
|
+
const z = [
|
|
19
19
|
"$el",
|
|
20
20
|
"$emit",
|
|
21
21
|
"$nextTick",
|
|
@@ -27,7 +27,7 @@ const K = [
|
|
|
27
27
|
"$props",
|
|
28
28
|
"$options",
|
|
29
29
|
"$forceUpdate"
|
|
30
|
-
],
|
|
30
|
+
], Ht = [
|
|
31
31
|
"beforeCreate",
|
|
32
32
|
"created",
|
|
33
33
|
"beforeMount",
|
|
@@ -41,7 +41,7 @@ const K = [
|
|
|
41
41
|
"renderTriggered",
|
|
42
42
|
"activated",
|
|
43
43
|
"deactivated"
|
|
44
|
-
],
|
|
44
|
+
], xe = ["vIf", "vShow", "vModel", "vFor", "vBind"], Re = {
|
|
45
45
|
String,
|
|
46
46
|
Number,
|
|
47
47
|
Boolean,
|
|
@@ -50,16 +50,16 @@ const K = [
|
|
|
50
50
|
Function,
|
|
51
51
|
Date
|
|
52
52
|
};
|
|
53
|
-
function
|
|
53
|
+
function H(s, e) {
|
|
54
54
|
return s.map((t) => le(t) ? t : `${e}${t}`);
|
|
55
55
|
}
|
|
56
|
-
function
|
|
56
|
+
function X(s) {
|
|
57
57
|
return /\.css$/.test(s);
|
|
58
58
|
}
|
|
59
59
|
function Q(s) {
|
|
60
60
|
return /\.js$/.test(s);
|
|
61
61
|
}
|
|
62
|
-
function
|
|
62
|
+
function xt(s) {
|
|
63
63
|
return s.map(
|
|
64
64
|
(e) => `<script src="${F.append(e, { v: I })}"><\/script>`
|
|
65
65
|
).join("");
|
|
@@ -73,12 +73,12 @@ function Ce(s, e) {
|
|
|
73
73
|
const t = s.filter((d) => !!d.enabled), r = [], n = [], o = [], i = [], a = {}, l = [], c = {};
|
|
74
74
|
return t.forEach(({ urls: d, assetsUrl: f, library: u, assetsLibrary: v }) => {
|
|
75
75
|
d?.forEach((_) => {
|
|
76
|
-
Q(_) && r.push(_),
|
|
77
|
-
}), u && (i.push(u), a[u] =
|
|
76
|
+
Q(_) && r.push(_), X(_) && n.push(_);
|
|
77
|
+
}), u && (i.push(u), a[u] = H(d || [], e)), f && o.push(f), v && l.push(v), u && v && (c[v] = u);
|
|
78
78
|
}), {
|
|
79
|
-
scripts:
|
|
80
|
-
css:
|
|
81
|
-
materials:
|
|
79
|
+
scripts: H(r, e),
|
|
80
|
+
css: H(n, e),
|
|
81
|
+
materials: H(o, e),
|
|
82
82
|
libraryExports: i,
|
|
83
83
|
materialExports: ue(l),
|
|
84
84
|
materialMapLibrary: c,
|
|
@@ -128,7 +128,7 @@ function O(s, e, t = !1, r = !1) {
|
|
|
128
128
|
throw n;
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
|
-
function
|
|
131
|
+
function K(s, e, t = !1, r = !1) {
|
|
132
132
|
const n = O(s, e, t, r);
|
|
133
133
|
if (typeof n != "function" && (C.error(
|
|
134
134
|
"parseFunction.error",
|
|
@@ -152,7 +152,7 @@ function Ct(s) {
|
|
|
152
152
|
return Ne(s) ? s.value : JSON.stringify(s);
|
|
153
153
|
}
|
|
154
154
|
let E = null;
|
|
155
|
-
const
|
|
155
|
+
const Be = pe({
|
|
156
156
|
settings: {
|
|
157
157
|
type: "form",
|
|
158
158
|
validSuccess: !0,
|
|
@@ -177,7 +177,7 @@ const ke = pe({
|
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
});
|
|
180
|
-
function
|
|
180
|
+
function ke(s, e) {
|
|
181
181
|
const { jsonp: t, request: r } = e;
|
|
182
182
|
if (s.method === "jsonp")
|
|
183
183
|
return (n = {}) => t(s.url, {
|
|
@@ -197,7 +197,7 @@ function Be(s, e) {
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
function Ae(s = [], e) {
|
|
200
|
-
return s.reduce((t, r) => (t[r.id] =
|
|
200
|
+
return s.reduce((t, r) => (t[r.id] = ke(r, e), t), {});
|
|
201
201
|
}
|
|
202
202
|
class De {
|
|
203
203
|
__id = null;
|
|
@@ -240,12 +240,12 @@ class De {
|
|
|
240
240
|
});
|
|
241
241
|
}
|
|
242
242
|
__proxy() {
|
|
243
|
-
this.__instance &&
|
|
243
|
+
this.__instance && z.forEach((e) => {
|
|
244
244
|
this[e] = this.__instance?.[e];
|
|
245
245
|
});
|
|
246
246
|
}
|
|
247
247
|
__cleanup() {
|
|
248
|
-
|
|
248
|
+
z.forEach((e) => {
|
|
249
249
|
this[e] = null;
|
|
250
250
|
});
|
|
251
251
|
}
|
|
@@ -253,9 +253,9 @@ class De {
|
|
|
253
253
|
if (e)
|
|
254
254
|
if (this.__mode === w.Runtime) {
|
|
255
255
|
const { id: t, type: r } = e, n = t ? this.__transform[t] ?? e.value : e.value;
|
|
256
|
-
return
|
|
256
|
+
return K({ type: r, value: n }, this);
|
|
257
257
|
} else
|
|
258
|
-
return
|
|
258
|
+
return K(e, this);
|
|
259
259
|
}
|
|
260
260
|
__parseExpression(e) {
|
|
261
261
|
if (e)
|
|
@@ -321,7 +321,7 @@ function te(s) {
|
|
|
321
321
|
a.value.id,
|
|
322
322
|
a.value.css || ""
|
|
323
323
|
), c.state = Je(e, a.value.state ?? {}, c);
|
|
324
|
-
const u = Le(e, a.value.computed ?? {}, c), v = qe(a.value.methods ?? {}, c), _ = Ue(e, a.value.inject, c), p =
|
|
324
|
+
const u = Le(e, a.value.computed ?? {}, c), v = qe(a.value.methods ?? {}, c), _ = Ue(e, a.value.inject, c), p = ze(
|
|
325
325
|
a.value.dataSources || {},
|
|
326
326
|
c
|
|
327
327
|
), y = {
|
|
@@ -330,7 +330,7 @@ function te(s) {
|
|
|
330
330
|
...v,
|
|
331
331
|
...p
|
|
332
332
|
};
|
|
333
|
-
return c.setup(y, e),
|
|
333
|
+
return c.setup(y, e), Ke(e, a.value.watch ?? [], c), {
|
|
334
334
|
vtj: c
|
|
335
335
|
};
|
|
336
336
|
},
|
|
@@ -401,7 +401,7 @@ function Ue(s, e = [], t) {
|
|
|
401
401
|
{}
|
|
402
402
|
);
|
|
403
403
|
}
|
|
404
|
-
function
|
|
404
|
+
function ze(s, e) {
|
|
405
405
|
return Object.keys(s).reduce(
|
|
406
406
|
(t, r) => {
|
|
407
407
|
const n = s[r], o = e.$apis[n.ref], i = N(n.transform) ? n.transform.value ? e.__parseFunction(n.transform) : void 0 : n.transform;
|
|
@@ -413,7 +413,7 @@ function Ke(s, e) {
|
|
|
413
413
|
{}
|
|
414
414
|
);
|
|
415
415
|
}
|
|
416
|
-
function
|
|
416
|
+
function Ke(s, e = [], t) {
|
|
417
417
|
e.forEach((r) => {
|
|
418
418
|
s.watch(
|
|
419
419
|
t.__parseExpression(r.source),
|
|
@@ -448,8 +448,8 @@ function re(s) {
|
|
|
448
448
|
function T(s, e, t = M, r = Ye) {
|
|
449
449
|
if (!s || !s.name || s.invisible)
|
|
450
450
|
return null;
|
|
451
|
-
const { id: n = null, directives: o = [] } = s, { vIf: i, vFor: a, vShow: l, vModels: c, vBind: d } =
|
|
452
|
-
if (i && !
|
|
451
|
+
const { id: n = null, directives: o = [] } = s, { vIf: i, vFor: a, vShow: l, vModels: c, vBind: d } = Ge(o);
|
|
452
|
+
if (i && !Xe(i, e))
|
|
453
453
|
return null;
|
|
454
454
|
const f = (u) => {
|
|
455
455
|
const v = u.$components, _ = (() => {
|
|
@@ -473,9 +473,9 @@ function T(s, e, t = M, r = Ye) {
|
|
|
473
473
|
};
|
|
474
474
|
return a ? ct(a, f, e) : f(e);
|
|
475
475
|
}
|
|
476
|
-
function
|
|
476
|
+
function Ge(s = []) {
|
|
477
477
|
const e = s.find((a) => j(a.name) === "vIf"), t = s.find((a) => j(a.name) === "vFor"), r = s.find((a) => j(a.name) === "vShow"), n = s.find((a) => j(a.name) === "vBind"), o = s.filter((a) => j(a.name) === "vModel"), i = s.filter(
|
|
478
|
-
(a) => !
|
|
478
|
+
(a) => !xe.includes(j(a.name))
|
|
479
479
|
);
|
|
480
480
|
return {
|
|
481
481
|
vIf: e,
|
|
@@ -486,7 +486,7 @@ function Xe(s = []) {
|
|
|
486
486
|
others: i
|
|
487
487
|
};
|
|
488
488
|
}
|
|
489
|
-
function
|
|
489
|
+
function Xe(s, e) {
|
|
490
490
|
return !!e.__parseExpression(s.value);
|
|
491
491
|
}
|
|
492
492
|
function Qe(s, e) {
|
|
@@ -598,7 +598,7 @@ function ct(s, e, t) {
|
|
|
598
598
|
const W = D({
|
|
599
599
|
name: "VtjPageContainer",
|
|
600
600
|
async setup() {
|
|
601
|
-
const s = oe(), e =
|
|
601
|
+
const s = oe(), e = G(), t = e.params.id, r = t ? s.getPage(t) : s.getHomepage(), n = r ? await s.getRenderComponent(r.id) : null;
|
|
602
602
|
return r && Ie(r.title || "VTJ"), {
|
|
603
603
|
provider: s,
|
|
604
604
|
component: n,
|
|
@@ -607,7 +607,7 @@ const W = D({
|
|
|
607
607
|
};
|
|
608
608
|
},
|
|
609
609
|
render() {
|
|
610
|
-
return this.component ?
|
|
610
|
+
return this.component ? k(this.component, this.query) : k("div", "页面不存在");
|
|
611
611
|
}
|
|
612
612
|
}), lt = {
|
|
613
613
|
name: {
|
|
@@ -639,19 +639,19 @@ const W = D({
|
|
|
639
639
|
return (r, n) => (ye(), ge("div", ut, [
|
|
640
640
|
b("div", pt, [
|
|
641
641
|
b("div", ft, [
|
|
642
|
-
b("span", dt,
|
|
642
|
+
b("span", dt, B(e.name), 1)
|
|
643
643
|
]),
|
|
644
|
-
b("div", mt,
|
|
644
|
+
b("div", mt, B(e.tagline), 1),
|
|
645
645
|
b("div", ht, [
|
|
646
646
|
we(U(Fe), {
|
|
647
647
|
type: "primary",
|
|
648
648
|
size: "large",
|
|
649
649
|
round: "",
|
|
650
|
-
icon: U(
|
|
650
|
+
icon: U(He),
|
|
651
651
|
onClick: t
|
|
652
652
|
}, {
|
|
653
653
|
default: Se(() => [
|
|
654
|
-
$e(
|
|
654
|
+
$e(B(e.actionText), 1)
|
|
655
655
|
]),
|
|
656
656
|
_: 1
|
|
657
657
|
}, 8, ["icon"])
|
|
@@ -662,14 +662,14 @@ const W = D({
|
|
|
662
662
|
}), _t = D({
|
|
663
663
|
name: "VtjStartupContainer",
|
|
664
664
|
render() {
|
|
665
|
-
return
|
|
665
|
+
return k(vt);
|
|
666
666
|
}
|
|
667
667
|
}), ne = Symbol("Provider");
|
|
668
668
|
class yt extends ae {
|
|
669
669
|
mode;
|
|
670
670
|
globals = {};
|
|
671
671
|
modules = {};
|
|
672
|
-
adapter = { request:
|
|
672
|
+
adapter = { request: Be, jsonp: he };
|
|
673
673
|
apis = {};
|
|
674
674
|
dependencies = {};
|
|
675
675
|
materials = {};
|
|
@@ -715,7 +715,7 @@ class yt extends ae {
|
|
|
715
715
|
else {
|
|
716
716
|
const m = d[p] || [];
|
|
717
717
|
for (const $ of m)
|
|
718
|
-
|
|
718
|
+
X($) && await Te(p, F.append($, { v: I })), Q($) && await q(F.append($, { v: I })), i[p] = window[p];
|
|
719
719
|
}
|
|
720
720
|
}
|
|
721
721
|
for (const p of f)
|
|
@@ -1024,9 +1024,9 @@ class St extends J {
|
|
|
1024
1024
|
}), Promise.resolve(!0);
|
|
1025
1025
|
}
|
|
1026
1026
|
}
|
|
1027
|
-
let
|
|
1027
|
+
let x = null;
|
|
1028
1028
|
function Mt() {
|
|
1029
|
-
return
|
|
1029
|
+
return x || (x = new St(), x);
|
|
1030
1030
|
}
|
|
1031
1031
|
class Nt extends J {
|
|
1032
1032
|
async init(e) {
|
|
@@ -1086,8 +1086,8 @@ function ie(s = []) {
|
|
|
1086
1086
|
};
|
|
1087
1087
|
});
|
|
1088
1088
|
}
|
|
1089
|
-
function
|
|
1090
|
-
const s = oe(), e =
|
|
1089
|
+
function Bt() {
|
|
1090
|
+
const s = oe(), e = G(), t = Ee(!1), r = s.project;
|
|
1091
1091
|
Pe(() => {
|
|
1092
1092
|
const { name: o, params: i, meta: a } = e;
|
|
1093
1093
|
if (o === "VtjPage") {
|
|
@@ -1107,34 +1107,34 @@ function kt() {
|
|
|
1107
1107
|
};
|
|
1108
1108
|
}
|
|
1109
1109
|
export {
|
|
1110
|
-
|
|
1110
|
+
xe as BUILT_IN_DIRECTIVES,
|
|
1111
1111
|
J as BaseService,
|
|
1112
|
-
|
|
1112
|
+
z as CONTEXT_HOST,
|
|
1113
1113
|
De as Context,
|
|
1114
1114
|
w as ContextMode,
|
|
1115
1115
|
Re as DATA_TYPES,
|
|
1116
1116
|
Ct as JSCodeToString,
|
|
1117
|
-
|
|
1117
|
+
Ht as LIFE_CYCLES_LIST,
|
|
1118
1118
|
Nt as LocalService,
|
|
1119
1119
|
St as MemoryService,
|
|
1120
1120
|
yt as Provider,
|
|
1121
1121
|
Tt as StorageService,
|
|
1122
1122
|
I as VTJ_RENDERER_VERSION,
|
|
1123
1123
|
ee as adoptedStyleSheets,
|
|
1124
|
-
|
|
1124
|
+
xt as createAssetScripts,
|
|
1125
1125
|
Rt as createAssetsCss,
|
|
1126
|
-
|
|
1126
|
+
ze as createDataSources,
|
|
1127
1127
|
re as createLoader,
|
|
1128
1128
|
Mt as createMemoryService,
|
|
1129
1129
|
Ot as createProvider,
|
|
1130
1130
|
te as createRenderer,
|
|
1131
|
-
|
|
1131
|
+
ke as createSchemaApi,
|
|
1132
1132
|
Ae as createSchemaApis,
|
|
1133
1133
|
Ye as defaultLoader,
|
|
1134
|
-
|
|
1134
|
+
H as fillBasePath,
|
|
1135
1135
|
se as getModifiers,
|
|
1136
1136
|
Oe as getRawComponent,
|
|
1137
|
-
|
|
1137
|
+
X as isCSSUrl,
|
|
1138
1138
|
Ne as isJSCode,
|
|
1139
1139
|
g as isJSExpression,
|
|
1140
1140
|
N as isJSFunction,
|
|
@@ -1144,9 +1144,9 @@ export {
|
|
|
1144
1144
|
T as nodeRender,
|
|
1145
1145
|
Ce as parseDeps,
|
|
1146
1146
|
O as parseExpression,
|
|
1147
|
-
|
|
1147
|
+
K as parseFunction,
|
|
1148
1148
|
ne as providerKey,
|
|
1149
1149
|
Z as toString,
|
|
1150
|
-
|
|
1150
|
+
Bt as useMask,
|
|
1151
1151
|
oe as useProvider
|
|
1152
1152
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vtj/renderer",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.15",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "vue-tsc && vite build",
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
"coverage": "vitest run --coverage"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@vtj/core": "^0.7.
|
|
14
|
-
"@vtj/icons": "^0.7.
|
|
15
|
-
"@vtj/ui": "^0.7.
|
|
16
|
-
"@vtj/utils": "^0.7.
|
|
13
|
+
"@vtj/core": "^0.7.15",
|
|
14
|
+
"@vtj/icons": "^0.7.15",
|
|
15
|
+
"@vtj/ui": "^0.7.15",
|
|
16
|
+
"@vtj/utils": "^0.7.15"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@vtj/cli": "^0.7.
|
|
19
|
+
"@vtj/cli": "^0.7.11",
|
|
20
20
|
"vue": "~3.4.15",
|
|
21
|
-
"vue-router": "~4.
|
|
21
|
+
"vue-router": "~4.3.0"
|
|
22
22
|
},
|
|
23
23
|
"exports": {
|
|
24
24
|
".": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dist",
|
|
35
35
|
"types"
|
|
36
36
|
],
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "cbb81a983f9271342f987a2507923ef7c2e55369",
|
|
38
38
|
"publishConfig": {
|
|
39
39
|
"access": "public"
|
|
40
40
|
}
|
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.7.
|
|
5
|
+
* @version 0.7.14
|
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
|
7
7
|
*/
|
|
8
|
-
export declare const version = "0.7.
|
|
8
|
+
export declare const version = "0.7.14";
|