@vtj/renderer 0.12.2 → 0.12.4
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/README.md +46 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +6 -6
- package/types/version.d.ts +2 -2
package/README.md
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
<div align="center">
|
1
|
+
<div align="center"> <a href="https://gitee.com/newgateway/vtj"> <img width="100" src="./platforms/pro/public/logo.svg"> </a> <br> <br>
|
2
2
|
|
3
3
|
[](https://gitee.com/newgateway/vtj)
|
4
4
|
[](https://www.npmjs.com/package/@vtj/pro)
|
5
|
-
[](https://npm-stat.com/charts.html?package=@vtj/core)
|
6
6
|
[](LICENSE)
|
7
7
|
|
8
8
|
</div>
|
9
9
|
|
10
|
-
# VTJ.PRO
|
10
|
+
# VTJ.PRO ( AI + 低代码 )
|
11
11
|
|
12
|
-
VTJ
|
12
|
+
VTJ 是一款以AI驱动的Vue3前端低代码开发工具。内置低代码引擎、渲染器和代码生成器,支持Vue源码与低代码DSL双向转换,面向前端开发者,开箱即用。 无缝嵌入本地开发工程,不改变前端开发流程和编码习惯。
|
13
13
|
|
14
14
|
- **官方文档**:[https://vtj.pro](https://vtj.pro)
|
15
15
|
- **在线应用开发平台**:[https://lcdp.vtj.pro](https://lcdp.vtj.pro)
|
@@ -28,6 +28,16 @@ VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内
|
|
28
28
|
|
29
29
|
- ✨ **物料丰富**: 此外,还内置了多款常用、功能强大的组件库以及丰富的页面模板,不仅支持高度定制,还提供了可复用的区块组件,助您高效构建出色的应用。
|
30
30
|
|
31
|
+
## 预览
|
32
|
+
|
33
|
+

|
34
|
+
|
35
|
+

|
36
|
+
|
37
|
+

|
38
|
+
|
39
|
+

|
40
|
+
|
31
41
|
## 体验
|
32
42
|
|
33
43
|
### 在线体验
|
@@ -63,3 +73,35 @@ VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内
|
|
63
73
|
```sh
|
64
74
|
npm create vtj@latest --registry=https://registry.npmmirror.com -- -t material
|
65
75
|
```
|
76
|
+
|
77
|
+
## 贡献指南
|
78
|
+
|
79
|
+
### 开发环境要求
|
80
|
+
|
81
|
+
VTJ 使用了最新的 Vue3 生态技术栈,要求 Node 版本必须是 v20+, 建议使用 nvm 切换 Node 版本。
|
82
|
+
开发项目工程采用`lerna` 和 `pnpm` 包管理工具,需要全局安装。
|
83
|
+
|
84
|
+
```sh
|
85
|
+
npm install -g lerna@latest pnpm@latest --registry=https://registry.npmmirror.com
|
86
|
+
```
|
87
|
+
|
88
|
+
如果需要二开或贡献代码,可以拉取仓库master分支。
|
89
|
+
|
90
|
+
### 快速开始
|
91
|
+
|
92
|
+
```sh
|
93
|
+
git clone https://gitee.com/newgateway/vtj.git
|
94
|
+
cd vtj
|
95
|
+
npm run setup && npm run build && npm run app:dev
|
96
|
+
```
|
97
|
+
|
98
|
+
- 首次启动需要执行初始化:`npm run setup && npm run build`
|
99
|
+
- 重启开发环境:`npm run app:dev`
|
100
|
+
- 清理项目:`npm run clean` 清理后需要重新执行初始化
|
101
|
+
|
102
|
+
## 技术交流
|
103
|
+
|
104
|
+
钉钉群、 微信群(加好友,拉进群,备注:vtj)
|
105
|
+
|
106
|
+
<table border="0">
|
107
|
+
<tr><td><img src="./dingtalk.png" /></td><td><img src="./wechat.png" width="" /></td></tr></table>
|
package/dist/index.cjs
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
* Copyright (c) 2025, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.12.
|
5
|
+
* @version 0.12.4
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
|
-
*/const R="0.12.
|
7
|
+
*/const R="0.12.4";var y=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(y||{});const K=["$el","$emit","$nextTick","$parent","$root","$attrs","$slots","$watch","$props","$options","$forceUpdate"],Ne=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeUnmount","unmounted","errorCaptured","renderTracked","renderTriggered","activated","deactivated"],ie=["vIf","vShow","vModel","vFor","vBind","vHtml"],oe={String,Number,Boolean,Array,Object,Function,Date},C="VtjPage",F="VtjHomepage",ae="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(","),ce="component,slot".split(",");function k(r,e){return r.map(t=>l.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function U(r){return/\.css$/.test(r)}function B(r){return/\.js$/.test(r)}function le(r){return/\.json$/.test(r)}function Ue(r){return r.map(e=>`<script src="${l.url.append(e,{v:R})}"><\/script>`).join("")}function Be(r=[]){return r.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:R})}" />`).join("")}function ue(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function pe(r,e,t=!1){const s=r.filter(g=>!!g.enabled),n=[],i=[],a=[],o=[],c={},u={},d=[],f={};return s.forEach(({urls:g,assetsUrl:m,library:h,assetsLibrary:p,localeLibrary:j})=>{g?.forEach(v=>{B(v)&&n.push(ue(v,t)),U(v)&&i.push(v)}),h&&(o.push(h),c[h]=k(g||[],e),j&&(u[h]=j)),m&&a.push(m),p&&d.push(p),h&&p&&(f[p]=h)}),{scripts:k(n,e),css:k(i,e),materials:k(a,e),libraryExports:o,materialExports:l.dedupArray(d),materialMapLibrary:f,libraryMap:c,libraryLocaleMap:u}}function de(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function z(r){return l.isString(r)?r:JSON.stringify(r)}function G(r,e,t){const s=r.CSSStyleSheet;if(s.prototype.replaceSync){const n=new s;n.id=e,n.replaceSync(t);const i=r.document,a=i.adoptedStyleSheets,o=Array.from(a).filter(c=>c.id!==e);i.adoptedStyleSheets=[...o,n]}else{const n=r.document;let i=n.getElementById(e);i?i.innerHTML=t:(i=n.createElement("style"),i.id=e,i.innerHTML=t,n.head.appendChild(i))}}async function fe(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&G(window,r,t)}function he(r,e=window){const t=e.document,s=e.document.head;for(const n of r)if(!t.getElementById(n)){const a=t.createElement("link");a.rel="stylesheet",a.id=n,a.href=n,s.appendChild(a)}}async function me(r,e,t=window){const s=t.document,n=t.document.head;let i=t[e];return i?i.default||i:new Promise((a,o)=>{for(const c of r){const u=s.createElement("script");u.src=c,u.onload=()=>{i=t[e],i?a(i.default||i):o(null)},u.onerror=d=>{o(d)},n.appendChild(u)}})}function ge(r){return l.isFunction(r)||l.isFunction(r?.install)}function ve(r){return ce.includes(r)}function ye(r){return ae.includes(r)}function A(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function Le(r,e,t){Object.assign(e.meta,t.meta);const s=r?._container;t?.type==="page"&&s.classList.add("is-page"),t?.pure&&s.classList.add("is-pure")}function M(r,e,t=!1,s=!1){try{const n=['"use strict";',"var __self = arguments[0];"];n.push("return ");let i=(r.value||"").trim();i=i.replace(/this(\W|$)/g,(o,c)=>`__self${c}`),i=n.join(`
|
8
8
|
`)+i;const a=`with(${t?"{}":"$scope || {}"}) { ${i} }`;return new Function("$scope",a)(e)}catch(n){if(l.logger.error("parseExpression.error",n,r,e?.__self??e),s)throw n}}function D(r,e,t=!1,s=!1){const n=M(r,e,t,s);if(typeof n!="function"&&(l.logger.error("parseFunction.error","not a function",r,e?.__self??e),s))throw new Error(`"${r.value}" not a function`);return n}function w(r){return r&&r.type==="JSExpression"}function T(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function _e(r){return w(r)||T(r)}function qe(r){return _e(r)?r.value:JSON.stringify(r)}const Je={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:"",statusKey:"code"},W=Symbol("access");class Y{options;data=null;mode=y.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},Je,e),this.loadData()}enableIntercept(){this.interceptResponse=!0}disableIntercept(){this.interceptResponse=!1}connect(e){const{mode:t,router:s,request:n}=e;this.mode=t,s&&this.mode===y.Raw&&this.setGuard(s),n&&this.setRequest(n)}login(e){const{storageKey:t,storagePrefix:s,session:n,authKey:i}=this.options;this.setData(e),this.data&&(l.storage.save(t,e,{type:"local",prefix:s}),n&&l.cookie.set(i,this.data.token))}clear(){const{storageKey:e,storagePrefix:t,session:s,authKey:n}=this.options;this.data=null,l.storage.remove(e,{type:"local",prefix:t}),s&&l.cookie.remove(n)}logout(){this.clear(),this.toLogin()}getData(){return this.data?this.data:(this.loadData(),this.data)}getToken(){return this.data||this.loadData(),this.data?.token}can(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return typeof e=="function"?e(s):l.toArray(e).every(i=>s[i]||s[t+"."+i])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return l.toArray(e).some(i=>s[i]||s[t+"."+i])}install(e){e.config.globalProperties.$access=this,e.provide(W,this)}isAuthPath(e){const{auth:t,isAuth:s}=this.options;if(s)return s(e);if(e.path&&typeof t=="string"){const n=t.split("#")[1]||t;return e.path===n}return!1}toLogin(){const{auth:e,redirectParam:t}=this.options;if(!e)return;const s=t?`?${t}=${encodeURIComponent(location.href)}`:"";typeof e=="function"?e(s):location.href=t?`${e}${s}`:e}setData(e){const{privateKey:t}=this.options;if(Array.isArray(e)&&t){const s=e.map(n=>l.unRSA(n,t));try{this.data=JSON.parse(s.join(""))}catch(n){console.warn(n)}return}if(typeof e=="string")try{const s=t?l.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=l.storage.get(e,{type:"local",prefix:t});this.setData(s||null)}isLogined(){const{session:e,authKey:t}=this.options;return e&&t?!!l.cookie.get(t):!!this.getToken()}hasRoutePermission(e){if(e.name===C){const t=e.params.id;return t&&this.can(t)}return!0}setGuard(e){e.beforeEach((t,s,n)=>this.guard(t,n))}async guard(e,t){if(this.isWhiteList(e)||this.isAuthPath(e))return t();if(this.isLogined()){if(this.hasRoutePermission(e))return t();{const{noPermissionMessage:s="无权限访问",unauthorized:n=!1}=this.options;return await this.showTip(s),l.isFunction(n)?(n(),t(!1)):l.isString(n)?t(n):t(!1)}}t(!1),this.toLogin()}isWhiteList(e){const{whiteList:t}=this.options;return t?Array.isArray(t)?t.some(s=>e.fullPath.startsWith(s)):t(e):!1}isUnauthorized(e){const{unauthorizedCode:t=401,statusKey:s="code"}=this.options;return e.status===t||e.data?.[s]===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await l.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(this.interceptResponse&&await this.showUnauthorizedAlert(t),t),async t=>{if(!this.interceptResponse)return Promise.reject(t);const s=t.response||t||{};return await this.showUnauthorizedAlert(s),Promise.reject(t)})}}function Se(){return S.inject(W,null)}function Ke(r={}){const{notify:e,loading:t,settings:s={},Startup:n,access:i,useTitle:a,alert:o}=r;let c=null;return{request:l.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:d=>d.data?.code===0||!!d.data?.success,failMessage:!0,showError:d=>{e&&e(d||"未知错误")},showLoading:()=>{c&&c.close(),t&&(c=t())},hideLoading:()=>{c&&(c.close(),c=null)},...s}}),jsonp:l.jsonp,notify:e,loading:t,useTitle:a,startupComponent:n,access:i?new Y({alert:o,...i}):void 0}}function Ve(r={}){return new Y(r)}function we(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?M(r.headers,{},!0):void 0,i={url:r.url,method:r.method,settings:{...r.settings,headers:n}};return(a,o)=>(delete i.data,s.send(l.merge(i,o||{},{data:a})))}}function je(r,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:n}=r;return(i,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,n,i,a)}}function Ee(r=[],e=[],t){const s={};for(const n of r)s[n.id]=we(n,t);for(const n of e)s[n.id]=je(n,t);return s}async function Pe(r=[],e=window){const t=A(e);t&&(Q(e),r.forEach(s=>$e(t,s)))}function be(r,e=window){const t=T(r.mockTemplate)&&r.mockTemplate.value?D(r.mockTemplate,{},!0):void 0,s=A(e);return async(...n)=>{let i={};if(t)try{i=await t.apply(t,n)}catch(a){l.logger.warn("模拟数据模版异常",a)}return s?.mock(i)}}function $e(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const n=l.pathToRegexp(`${t}(.*)`),i=l.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=M(s,{},!0);r.mock(n,o=>{const c=l.url.parse(o.url)||{},u=o.body instanceof FormData?l.formDataToJson(o.body):o.body,d=i(o.url)?.params;return Object.assign(o,{data:u,params:c,query:d}),r.mock(a(o))})}}function Q(r=window){const e=A(r);e&&(e._mocked={})}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:n}=e;this.__mode=t,s&&(this.__id=s.id||null,this.__transform=s.transform||{}),n&&Object.assign(this,n)}setup(e,t=N){const s=t.getCurrentInstance();if(!s)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=s.proxy;const n=s.appContext.config.globalProperties;Object.assign(this,n),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__reset()})}__proxy(){this.__instance&&K.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){K.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===y.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===y.Runtime){const{id:t,type:s}=e,n=t?this.__transform[t]??e.value:e.value;return M({type:s,value:n},this)}else return M(e,this)}__ref(e=null,t){if(this.__mode!==y.VNode)return e&&e!==this.__id&&(this.__contextRefs[e]=this),async s=>{await l.delay(0);let n=s?.$vtjEl||s?.$el||s?._?.vnode?.el||s;if(!n){typeof t=="string"&&(delete this.$refs[t],e&&delete this.__refs[e]);return}return n.nodeType===3&&n.nextSibling&&(n=n.nextSibling),n.__vtj__=e,y.Design===this.__mode&&(n.__context__=this,n.draggable=!0),e&&(this.__refs[e]=this.__getRefEl(this.__refs,e,s)),typeof t=="function"?t(s):t&&(this.$refs[t]=this.__getRefEl(this.$refs,t,s)),s}}__getRefEl(e,t,s){const n=e[t];if(n&&s!==n){const i=new Set([].concat(n,s));return Array.from(i)}else return s}__clone(e={}){const t={...this.context,...e},s={...t,context:t};return s.context.__proto__=this.context,s.__proto__=this,s}}function H(r){const{Vue:e=N,mode:t=y.Runtime,components:s={},libs:n={},apis:i={},loader:a}=r,o=e.computed(()=>r.dsl),c={$components:s,$libs:n,$apis:i},u=new Re({mode:t,dsl:o.value,attrs:c}),d=e.defineComponent({name:o.value.name,props:{...Ge(o.value.props??[],u)},setup(f){u.$props=f,u.props=f,o.value.id&&G(r.window||window,o.value.id,o.value.css||""),u.state=We(e,o.value.state??{},u);const g=Ye(e,o.value.computed??{},u),m=Qe(o.value.methods??{},u),h=Xe(e,o.value.inject,u),p=Ce(o.value.dataSources||{},u),j={...h,...g,...m,...p};return u.setup(j,e),Ze(e,o.value.watch??[],u),{vtj:u}},emits:ze(o.value.emits),expose:["vtj"],render(){if(!o.value.nodes)return null;const f=o.value.nodes||[];return f.length===1?I(f[0],u,e,a):f.map(g=>I(g,u,e,a))},...et(o.value.lifeCycles??{},u)});return{renderer:e.markRaw(d),context:u}}function ze(r=[]){return r.map(e=>l.isString(e)?e:e.name)}function Ge(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(i=>oe[i]):void 0;return r.map(s=>l.isString(s)?{name:s}:{name:s.name,type:s.type,required:s.required,default:w(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 We(r,e,t){return r.reactive(Object.keys(e||{}).reduce((s,n)=>{let i=e[n];return w(i)?i=t.__parseExpression(i):T(i)&&(i=t.__parseFunction(i)),s[n]=i,s},{}))}function Ye(r,e,t){return Object.entries(e??{}).reduce((s,[n,i])=>(s[n]=r.computed(t.__parseFunction(i)),s),{})}function Qe(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}function Xe(r,e=[],t){return e.reduce((s,n)=>{const{name:i,from:a}=n||{};n.default;const o=w(a)?t.__parseExpression(a)||i:a??i,c=w(n.default)?t.__parseExpression(n.default):n.default??null;return s[i]=r.inject(o,c),s},{})}function Ce(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=be(n);else if(n.ref){const i=e.$apis[n.ref],a=T(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...o)=>{const c=await i.apply(e,o);return a?a(c):c}}return t},{})}function Ze(r,e=[],t){e.forEach(s=>{r.watch(t.__parseExpression(s.source),t.__parseFunction(s.handler),{deep:s.deep,immediate:s.immediate})})}function et(r,e){return Object.entries(r??{}).reduce((t,[s,n])=>(t[s]=e.__parseFunction(n),t),{})}let J=[],$={};const Ae=r=>r;async function X(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(o=>B(o));if(n.length===0||!s)return null;const i=t.filter(o=>U(o));return i.length&&he(i,e),await me(n,s,e).catch(o=>(console.warn("loadScriptUrl error",n,s,o),null))}function x(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(J.forEach(n=>{delete s.window[n]}),J=[]),(n,i,a=N)=>{if(!i||typeof i=="string")return n;if(i.type==="Schema"&&i.id)return a.defineAsyncComponent(async()=>{const o=$[i.id]||await e(i.id);return o&&(o.name=n,$[i.id]=o),o?H({...s,Vue:a,dsl:l.cloneDeep(o),mode:y.Runtime,loader:x(r)}).renderer:null});if(i.type==="UrlSchema"&&i.url)return a.defineAsyncComponent(async()=>{const o=$[i.url]||await t(i.url);return o&&(o.name=n,$[i.url]=o),o?H({...s,Vue:a,dsl:l.cloneDeep(o),mode:y.Runtime,loader:x(r)}).renderer:null});if(i.type==="Plugin"){let o=i.library?$[i.library]:null;return o||(i.library&&J.push(i.library),o=$[i.library||Symbol()]=a.defineAsyncComponent(async()=>{const c=await X(i,s.window);return c||(console.warn("getPlugin result is null",i),null)}),o)}return n}}function tt(){$={}}function I(r,e,t=N,s=Ae){if(!r||!r.name||r.invisible)return null;const n=t.getCurrentInstance()?.appContext,{id:i=null,directives:a=[]}=r,{vIf:o,vFor:c,vShow:u,vModels:d,vBind:f,vHtml:g,others:m}=rt(a);if(o&&!nt(o,e))return null;const h=p=>{const j=p.$components,v=(()=>{if(r.name==="component")return it(p,r.props?.is);if(r.name==="slot")return r.name;const P=s(r.name,r.from,t);return l.isString(P)?ve(P)||ye(P)?P:j[P]??n?.app?.component(P)??P:P})(),E=ot(i,r.props??{},p),De=at(t,r.events??{},p);if(r.name==="slot")return ct(t,r,E,p,s);f&&Object.assign(E,p.__parseExpression(f.value)),u&&(E.style=Object.assign(E.style??{},ut(u,p))),g&&Object.assign(E,pt(g,p)),d.forEach(P=>{Object.assign(E,dt(t,P,p))});const He=ft(t,r.children??[],p,s,r);let q=t.createVNode(v,{...E,...De},He);const se=n?st(n,m,p):[];return se.length&&(q=t.withDirectives(q,se)),q};return c?gt(c,h,e):h(e)}function st(r,e,t){const s=r.app;return e.map(n=>{const i=typeof n.name=="string"?s.directive(n.name):t.__parseExpression(n.name);if(!i)return null;const a=[i];return n.value&&a.push(t.__parseExpression(n.value)),n.arg&&a.push(n.arg),n.modifiers&&a.push(n.modifiers),a}).filter(n=>!!n)}function rt(r=[]){const e=r.find(c=>l.camelCase(c.name)==="vIf"),t=r.find(c=>l.camelCase(c.name)==="vFor"),s=r.find(c=>l.camelCase(c.name)==="vShow"),n=r.find(c=>l.camelCase(c.name)==="vBind"),i=r.find(c=>l.camelCase(c.name)==="vHtml"),a=r.filter(c=>l.camelCase(c.name)==="vModel"),o=r.filter(c=>!ie.includes(l.camelCase(c.name)));return{vIf:e,vFor:t,vShow:s,vModels:a,vBind:n,others:o,vHtml:i}}function nt(r,e){return!!e.__parseExpression(r.value)}function it(r,e){return e?w(e)?r.__parseExpression(e):e:"div"}function ot(r,e,t){const s=V(e,t);return s.ref=t.__ref(r,s.ref),s}function V(r,e){return w(r)?e.__parseExpression(r):T(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>V(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=V(n,e),t},{}):r}function at(r,e,t){const s=["passive","capture","once"],n={capture:"Capture",once:"Once",passive:"OnceCapture"};return Object.keys(e||{}).reduce((i,a)=>{const o=e[a],c=Z(o.modifiers),u=c.find(g=>s.includes(g)),d="on"+l.upperFirst(a)+(u&&n[u]||""),f=t.__parseFunction(o.handler);return f&&(i[d]=r.withModifiers(f,c)),i},{})}function Z(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function ct(r,e,t,s,n){const{children:i}=e,a=lt(e,s),o=s.$slots?.[a.name];return o?o(t):i?l.isString(i)?r.createTextVNode(i):w(i)?r.createTextVNode(z(s.__parseExpression(i))):Array.isArray(i)?i.map(c=>I(c,s,r,n)):null:null}function lt(r,e){const{props:t}=r,s=t?.name||"default";return{name:w(s)?e.__parseExpression(s):s,params:[]}}function ut(r,e){return e.__parseExpression(r.value)?{}:{display:"none"}}function pt(r,e){return{innerHTML:e.__parseExpression(r.value)||""}}function dt(r,e,t){const s={type:"JSFunction",value:e.value?.value?`(v) => {
|
9
9
|
${e.value.value} = v;
|
10
10
|
}`:"(v) => {}"},n=t.__parseFunction(s),i=Z(w(e.modifiers)?t.__parseExpression(e.modifiers):e.modifiers),a=w(e.arg)?t.__parseExpression(e.arg):e.arg||"modelValue";return{[a]:t.__parseExpression(e.value),[`onUpdate:${a}`]:i.length&&n?r.withModifiers(n,i):n}}function ft(r,e,t,s,n){if(!e)return null;if(l.isString(e))return{default:()=>e};if(w(e))return{default:()=>z(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const i=ht(e),a=o=>!o||!n?{}:n?.id&&Object.keys(o).length?{[`scope_${n.id}`]:o}:{};return Object.entries(i).reduce((o,[c,{nodes:u,params:d}])=>(o[c]=f=>{const g=d.length?l.pick(f??{},d):a(f);return u.map(m=>I(m,t.__clone(g),r,s))},o),{})}return null}function ht(r){const e={default:{params:[],nodes:[]}};for(const t of r){const s=mt(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 mt(r="default"){return l.isString(r)?{name:r,params:[]}:{params:[],...r}}function gt(r,e,t){const{value:s,iterator:n}=r,{item:i="item",index:a="index"}=n||{};let o=t.__parseExpression(s)||[];return Number.isInteger(o)&&(o=new Array(o).fill(!0).map((c,u)=>u+1)),Array.isArray(o)?o.map((c,u)=>e(t.__clone({[i]:c,[a]:u}))):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const re=S.defineComponent({name:"VtjPageContainer",async setup(){const r=te(),e=ne.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,i=S.ref(Symbol());if(s){Object.assign(e.meta,s.meta||{},{cache:s.cache});const{useTitle:a}=r?.adapter;a&&a(s.title||"VTJ")}return{provider:r,component:n,file:s,query:e.query,meta:e.meta,sid:i,route:e}},render(){const{component:r,query:e,sid:t}=this;return r?S.h(r,{...e,key:t}):S.h("div","页面不存在")},activated(){this.meta.cache===!1&&(this.sid=Symbol())}}),vt=S.defineComponent({name:"VtjStartupContainer",render(){return S.h("div","page not found!")}}),ee=Symbol("Provider");var Me=(r=>(r.Production="production",r.Development="development",r))(Me||{});class Te extends b.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=y.Raw,dependencies:n,materials:i,project:a={},adapter:o={},globals:c={},modules:u={},router:d=null,materialPath:f="./",nodeEnv:g="development"}=e;this.mode=s,this.modules=u,this.service=t,this.router=d,this.materialPath=f,this.nodeEnv=g,n&&(this.dependencies=n),i&&(this.materials=i),Object.assign(this.globals,c),Object.assign(this.adapter,o);const{access:m,request:h}=this.adapter;m&&m.connect({mode:s,router:d,request:h}),a&&s!==y.Design?this.load(a):this.project=a}mode;globals={};modules={};adapter={request:l.request,jsonp:l.jsonp};apis={};dependencies={};materials={};library={};service;project=null;components={};nodeEnv="development";router=null;materialPath="./";urlDslCaches={};createMock(e){return async(...t)=>{let s={};if(e)try{s=await e.apply(e,t)}catch(i){l.logger.warn("模拟数据模版异常",i)}return A()?.mock(s)}}async load(e){const t=this.modules[`.vtj/projects/${e.id}.json`]||this.modules[`/src/.vtj/projects/${e.id}.json`];if(this.project=t?await t():await this.service.init(e),!this.project)throw new Error("project is null");const{apis:s=[],meta:n=[]}=this.project,i=window;i&&(i.CKEDITOR_VERSION=void 0),this.mode===y.Raw?await this.loadDependencies(i):await this.loadAssets(i),this.initMock(i),this.apis=Ee(s,n,this.adapter),Q(i),Pe(s,i),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=A(e);t&&t.setup({timeout:"50-500"})}async loadDependencies(e){const t=Object.entries(this.dependencies);for(const[s,n]of t)e[s]||(e[s]=this.library[s]=await n())}async loadAssets(e){const{dependencies:t=[]}=this.project,{dependencies:s,library:n,components:i,materialPath:a,nodeEnv:o}=this,{libraryExports:c,libraryMap:u,materials:d,materialExports:f,materialMapLibrary:g}=pe(t,a,o==="development");for(const m of c){const h=s[m],p=e[m];if(p)n[m]=p;else if(h)e[m]=n[m]=await h();else{const j=u[m]||[];for(const v of j)U(v)&&await fe(m,l.url.append(v,{v:R})),B(v)&&await l.loadScript(l.url.append(v,{v:R}));n[m]=e[m]}}if(o==="development"){for(const h of d)await l.loadScript(l.url.append(h,{v:R}));const m=this.materials||{};for(const h of f){const p=e[g[h]],j=b.BUILT_IN_COMPONENTS[h];if(j)p&&j.forEach(v=>{i[v]=p[v]});else{const v=m[h]?(await m[h]()).default:e[h];v&&p&&(v.components||[]).forEach(E=>{i[E.name]=de(E,p)})}}}}initRouter(){const{router:e,project:t,options:s,adapter:n}=this;if(!e)return;const i=t?.platform==="uniapp"?"pages":"page",{routeAppendTo:a,pageRouteName:o=i,routeMeta:c}=s,u=a?"":"/",d={path:`${u}${o}/:id`,name:C,component:re},f={path:u,name:F,component:t?.homepage?re:n.startupComponent||vt,meta:c};e.hasRoute(C)&&e.removeRoute(C),e.hasRoute(F)&&e.removeRoute(F),a?(e.addRoute(a,d),e.addRoute(a,f)):(e.addRoute(d),e.addRoute(f))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&ge(n)&&(e.use(n),t[s]=!0);this.options.install&&e.use(this.options.install),this.adapter.access&&e.use(this.adapter.access),e.provide(ee,this),e.config.globalProperties.$provider=this,e.config.globalProperties.installed=t,this.mode===y.Design&&(e.config.errorHandler=(s,n,i)=>{const a=n?.$options.name,o=typeof s=="string"?s:s?.message||s?.msg||"未知错误",c=`[ ${a} ] ${o} ${i}`;console.error("[VTJ Error]:",{err:s,instance:n,info:i},s?.stack),this.adapter.notify&&this.adapter.notify(c,"组件渲染错误","error")})}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,i=[])=>{for(const a of i){if(a.id===n)return a;if(a.children&&a.children.length){const o=s(n,a.children);if(o)return o}}};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`]||this.modules[`/src/.vtj/files/${e}.json`];return t?await t():this.service.getFile(e,this.project||void 0).catch(()=>null)}async getDslByUrl(e){const t=this.urlDslCaches[e];return t||(this.adapter.request?this.urlDslCaches[e]=this.adapter.request.send({url:e,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(s=>s.data).catch(()=>null):null)}createDslRenderer(e,t={}){const{library:s,components:n,mode:i,apis:a}=this,o={mode:i,Vue:s.Vue,components:n,libs:s,apis:a,window,...t},c=x({getDsl:async u=>await this.getDsl(u)||null,getDslByUrl:async u=>await this.getDslByUrl(u)||null,options:o});return H({...o,dsl:e,loader:c})}async getRenderComponent(e,t){const s=this.getFile(e);if(!s)return l.logger.warn(`Can not find file: ${e}`),null;t&&t(s);const n=`.vtj/vue/${e}.vue`,i=this.modules[n]||this.modules[`/src/pages/${e}.vue`];if(i)return(await i())?.default;const a=await this.getDsl(s.id);return a?this.createDslRenderer(a).renderer:(l.logger.warn(`Can not find dsl: ${e}`),null)}defineUrlSchemaComponent(e,t){return S.defineAsyncComponent(async()=>{const s=await this.getDslByUrl(e);return s?(s.name=t||s.name,this.createDslRenderer(s).renderer):null})}definePluginComponent(e){return S.defineAsyncComponent(async()=>await X(e,window))}}function yt(r){const e=new Te(r);return{provider:e,onReady:s=>e.ready(s)}}function te(r={}){const e=S.inject(ee,null);if(!e)throw new Error("Can not find provider");if(e.nodeEnv==="development"){const{id:t,version:s}=r;t&&s&&(async()=>{const n=await e.getDsl(t);n?.__VERSION__!==s&&e.adapter.notify&&e.adapter.notify(`[ ${n?.name} ] 组件源码版本与运行时版本不一致,请重新发布组件`,"版本不一致","warning")})()}return e}const ke={type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:r=>r.data?.code===0},_t=(r,e="/__vtj__/api/:type.json")=>(t,s,n)=>r.send({url:e,method:"post",params:{type:t},query:n,data:{type:t,data:s},settings:ke}),St=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...ke,type:"data"}}).then(n=>n&&n[0]?n[0]:null).catch(()=>null);function wt(r){return l.createRequest({settings:{type:"json",validSuccess:!0,originResponse:!1,failMessage:!0,validate:e=>e.data?.code===0,showError:e=>{r&&r(e||"未知错误")}}})}class L{constructor(e=l.request){this.req=e,this.api=_t(e),this.uploader=St(e)}api;pluginCaches={};uploader;async getExtension(){console.log("BaseService.getExtension")}async init(e){return console.log("BaseService.init",e),{}}async saveProject(e,t){return!!await this.api("saveProject",e,{type:t}).catch(()=>!1)}async saveMaterials(e,t){return console.log("BaseService.saveMaterials",e,t),!1}async saveFile(e){return console.log("BaseService.saveFile",e),!1}async getFile(e){return console.log("BaseService.getFile",e),{}}async removeFile(e){return console.log("BaseService.removeFile",e),!1}async saveHistory(e){return console.log("BaseService.saveHistory",e),!1}async removeHistory(e){return console.log("BaseService.removeHistory",e),!1}async getHistory(e){return console.log("BaseService.getHistory",e),{}}async getHistoryItem(e,t){return console.log("BaseService.getHistoryItem",e,t),{}}async saveHistoryItem(e,t){return console.log("BaseService.saveHistoryItem",e,t),!1}async removeHistoryItem(e,t){return console.log("BaseService.removeHistoryItem",e,t),!1}async publish(e){return!!await this.api("publish",e).catch(()=>!1)}async publishFile(e,t){return!!await this.api("publishFile",{project:e,file:t}).catch(()=>!1)}async genVueContent(e,t){return await this.api("genVueContent",{project:e,dsl:t}).catch(()=>"")}async parseVue(e,t){return await this.api("parseVue",{project:e,...t})}async createRawPage(e){return await this.api("createRawPage",e).catch(()=>"")}async removeRawPage(e){return await this.api("removeRawPage",e).catch(()=>"")}async uploadStaticFile(e,t){return await this.uploader(e,t).catch(()=>null)}async getStaticFiles(e){return await this.api("getStaticFiles",e).catch(()=>[])}async removeStaticFile(e,t){return await this.api("removeStaticFile",{name:e,projectId:t}).catch(()=>"")}async clearStaticFiles(e){return await this.api("clearStaticFiles",e).catch(()=>"")}async getPluginMaterial(e){const{urls:t=[]}=e,s=t.filter(i=>le(i))[0];if(!s)return null;const n=this.pluginCaches[s];return n||(this.pluginCaches[s]=l.request.send({url:s,method:"get",settings:{validSuccess:!1,originResponse:!0}}).then(i=>i.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const _=new l.Storage({type:"local",expired:0,prefix:"__VTJ_"});class jt extends L{init(e){const t=new b.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 b.ProjectModel(e);return _.save(`project_${t.id}`,t.toDsl()),Promise.resolve(!0)}saveMaterials(e,t){return _.save(`materials_${e.id}`,l.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(i=>i.id);this.removeHistoryItem(e,n),_.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=_.get(`history_${e}`),s=new b.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 Fe extends L{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new b.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 b.ProjectModel(e);return this.projects[t.id]=t.toDsl(),Promise.resolve(!0)}saveMaterials(e,t){return e.id&&(this.materials[e.id]=l.mapToObject(t)),Promise.resolve(!0)}saveFile(e){return this.files[e.id]=e,Promise.resolve(!0)}getFile(e){const t=this.files[e];return t?Promise.resolve(t):Promise.reject(null)}removeFile(e){return delete this.files[e],Promise.resolve(!0)}saveHistory(e){return this.histories[e.id]=e,Promise.resolve(!0)}removeHistory(e){const t=this.histories[e];if(t){const n=(t.items||[]).map(i=>i.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new b.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 O=null;function Et(){return O||(O=new Fe,O)}class Pt extends L{getFileCaches={};async getExtension(){return await this.api("getExtension",{}).catch(()=>{})}async init(e){return await this.api("init",e).catch(()=>null)||{}}async saveProject(e,t){return!!await this.api("saveProject",e,{type:t}).catch(()=>!1)}async saveMaterials(e,t){return!!await this.api("saveMaterials",{project:e,materials:l.mapToObject(t)}).catch(()=>!1)}async saveFile(e){return!!await this.api("saveFile",e).catch(()=>!1)}async getFile(e){const t=this.getFileCaches[e];return t||(this.getFileCaches[e]=this.api("getFile",e).catch(()=>null)).finally(()=>{delete this.getFileCaches[e]})}async removeFile(e){return!!await this.api("removeFile",e).catch(()=>!1)}async saveHistory(e){return!!await this.api("saveHistory",e).catch(()=>!1)}async removeHistory(e){return!!await this.api("removeHistory",e).catch(()=>!1)}async getHistory(e){return await this.api("getHistory",e).catch(()=>null)||{}}async getHistoryItem(e,t){return await this.api("getHistoryItem",{fId:e,id:t}).catch(()=>null)||{}}async saveHistoryItem(e,t){return!!await this.api("saveHistoryItem",{fId:e,item:t}).catch(()=>!1)}async removeHistoryItem(e,t){return!!await this.api("removeHistoryItem",{fId:e,ids:t}).catch(()=>!1)}}function Ie(r,e,t=[]){return t.map(s=>{const{id:n,title:i,icon:a,children:o,hidden:c}=s;return{id:n,title:i,icon:a,hidden:c,url:`${r}/${e}/${n}`,children:o&&o.length?Ie(r,e,o):void 0}})}function Oe(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=Oe(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function bt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=te(),i=ne.useRoute(),a=Se(),o=S.ref(!1),c=S.ref(!1),u=n.project;S.watchEffect(()=>{const{name:g,params:m,meta:h}=i;if(g===C){const p=n.getPage(m.id);o.value=!p?.mask,c.value=!!p?.pure}else if(g===F){const p=n.getHomepage();o.value=!p?.mask,c.value=!!p?.pure}else o.value=!h.mask,c.value=!!h.pure});const d=Ie(e,t,u?.pages),f=u?.config;return{disabled:o,logo:f?.logo,themeSwitchable:f?.themeSwitchable,title:f?.title||u?.description||u?.name||"VTJ App",menus:s?d:Oe(d,a),pure:c}}exports.ACCESS_KEY=W;exports.Access=Y;exports.BUILD_IN_TAGS=ce;exports.BUILT_IN_DIRECTIVES=ie;exports.BaseService=L;exports.CONTEXT_HOST=K;exports.Context=Re;exports.ContextMode=y;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=F;exports.HTML_TAGS=ae;exports.JSCodeToString=qe;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Pt;exports.MemoryService=Fe;exports.NodeEnv=Me;exports.PAGE_ROUTE_NAME=C;exports.Provider=Te;exports.StorageService=jt;exports.VTJ_RENDERER_VERSION=R;exports.adoptedStyleSheets=G;exports.clearLoaderCache=tt;exports.createAccess=Ve;exports.createAdapter=Ke;exports.createAssetScripts=Ue;exports.createAssetsCss=Be;exports.createDataSources=Ce;exports.createLoader=x;exports.createMemoryService=Et;exports.createMetaApi=je;exports.createMock=be;exports.createProvider=yt;exports.createRenderer=H;exports.createSchemaApi=we;exports.createSchemaApis=Ee;exports.createServiceRequest=wt;exports.defaultLoader=Ae;exports.fillBasePath=k;exports.getMock=A;exports.getModifiers=Z;exports.getPlugin=X;exports.getRawComponent=de;exports.isBuiltInTag=ve;exports.isCSSUrl=U;exports.isJSCode=_e;exports.isJSExpression=w;exports.isJSFunction=T;exports.isJSON=le;exports.isJSUrl=B;exports.isNativeTag=ye;exports.isVuePlugin=ge;exports.loadCss=fe;exports.loadCssUrl=he;exports.loadScriptUrl=me;exports.mockApi=$e;exports.mockApis=Pe;exports.mockCleanup=Q;exports.nodeRender=I;exports.parseDeps=pe;exports.parseExpression=M;exports.parseFunction=D;exports.providerKey=ee;exports.removeProdFlag=ue;exports.setupPageSetting=Le;exports.toString=z;exports.useAccess=Se;exports.useMask=bt;exports.useProvider=te;
|
package/dist/index.mjs
CHANGED
@@ -7,10 +7,10 @@ import { useRoute as me } from "vue-router";
|
|
7
7
|
* Copyright (c) 2025, VTJ.PRO All rights reserved.
|
8
8
|
* @name @vtj/renderer
|
9
9
|
* @author CHC chenhuachun1549@dingtalk.com
|
10
|
-
* @version 0.12.
|
10
|
+
* @version 0.12.4
|
11
11
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
12
12
|
*/
|
13
|
-
const C = "0.12.
|
13
|
+
const C = "0.12.4";
|
14
14
|
var y = /* @__PURE__ */ ((r) => (r.Runtime = "Runtime", r.Design = "Design", r.Raw = "Raw", r.VNode = "VNode", r))(y || {});
|
15
15
|
const ae = [
|
16
16
|
"$el",
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vtj/renderer",
|
3
3
|
"private": false,
|
4
|
-
"version": "0.12.
|
4
|
+
"version": "0.12.4",
|
5
5
|
"type": "module",
|
6
6
|
"keywords": [
|
7
7
|
"低代码引擎",
|
@@ -21,15 +21,15 @@
|
|
21
21
|
"author": "chenhuachun",
|
22
22
|
"license": "MIT",
|
23
23
|
"dependencies": {
|
24
|
-
"@vtj/core": "~0.12.
|
25
|
-
"@vtj/utils": "~0.12.
|
24
|
+
"@vtj/core": "~0.12.4",
|
25
|
+
"@vtj/utils": "~0.12.4"
|
26
26
|
},
|
27
27
|
"devDependencies": {
|
28
28
|
"vue": "~3.5.5",
|
29
29
|
"vue-router": "~4.5.0",
|
30
|
-
"@vtj/
|
31
|
-
"@vtj/
|
32
|
-
"@vtj/
|
30
|
+
"@vtj/cli": "~0.12.1",
|
31
|
+
"@vtj/ui": "~0.12.4",
|
32
|
+
"@vtj/icons": "~0.12.4"
|
33
33
|
},
|
34
34
|
"exports": {
|
35
35
|
".": {
|
package/types/version.d.ts
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* Copyright (c) 2025, VTJ.PRO All rights reserved.
|
3
3
|
* @name @vtj/renderer
|
4
4
|
* @author CHC chenhuachun1549@dingtalk.com
|
5
|
-
* @version 0.12.
|
5
|
+
* @version 0.12.3
|
6
6
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
7
7
|
*/
|
8
|
-
export declare const version = "0.12.
|
8
|
+
export declare const version = "0.12.3";
|