@vtj/renderer 0.10.13 → 0.10.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/README.md ADDED
@@ -0,0 +1,65 @@
1
+ <div align="center">
2
+
3
+ [![star](https://gitee.com/newgateway/vtj/badge/star.svg?theme=gvp)](https://gitee.com/newgateway/vtj)
4
+ [![npm version](https://img.shields.io/npm/v/@vtj/pro.svg?style=flat-square)](https://www.npmjs.com/package/@vtj/pro)
5
+ [![npm downloads](https://img.shields.io/npm/dt/@vtj/pro.svg?style=flat-square)](https://npm-stat.com/charts.html?package=@vtj/pro)
6
+ [![npm license](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE)
7
+
8
+ </div>
9
+
10
+ # VTJ.PRO
11
+
12
+ VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器,面向前端开发者,开箱即用。 无缝嵌入本地开发工程,不改变前端开发流程和编码习惯。
13
+
14
+ - **官方文档**:[https://vtj.pro](https://vtj.pro)
15
+ - **在线应用开发平台**:[https://lcdp.vtj.pro](https://lcdp.vtj.pro)
16
+
17
+ ## 特性
18
+
19
+ - 🔥 **流行的技术栈**: Vue3、Typescript、Vite、EelementPlus、VueUse、Axios、ECharts、Lodash、Monaco Editor、Prettier 等。
20
+
21
+ - 🛠️ **自由个性化**: 低代码设计器支持源码级别的自定义,可轻松适配个性化需求,理论上写代码开发能实现的在设计器上都能完成。
22
+
23
+ - 🚩 **低学习成本**: 专为前端开发者设计,无需改变您熟悉的前端开发流程和编码习惯。只需了解Vue,即可轻松上手,实现无缝对接,真正做到零学习成本。
24
+
25
+ - 🚀️ **高扩展性**: 配备了先进的内置低代码引擎,通过配置化构建方式,赋予您对所有部件的完全自定义能力。您可以单独运用此引擎,自主打造专属的低代码平台。
26
+
27
+ - 📦 **无污染,可二开**: 设计器无缝嵌入本地项目开发环境,既安全又便捷,轻松接入。同时,采用创新的设计器和渲染器分离模式,确保项目代码保持纯净,不受任何污染,并且产物支持二次开发。
28
+
29
+ - ✨ **物料丰富**: 此外,还内置了多款常用、功能强大的组件库以及丰富的页面模板,不仅支持高度定制,还提供了可复用的区块组件,助您高效构建出色的应用。
30
+
31
+ ## 体验
32
+
33
+ ### 在线体验
34
+
35
+ - [https://lcdp.vtj.pro](https://lcdp.vtj.pro)
36
+
37
+ 访问Vtj专属低代码开发平台,创建应用可以体验设计器和出码功能
38
+
39
+ ### 离线本地体验(推荐:功能全, 性能最佳)
40
+
41
+ 使用VTJ提供的项目脚手架,可快速创建开发项目工程。 命令:
42
+
43
+ 1. Web应用(PC端)
44
+
45
+ ```sh
46
+ npm create vtj@latest --registry=https://registry.npmmirror.com -- -t app
47
+ ```
48
+
49
+ 1. H5应用(移动端)
50
+
51
+ ```sh
52
+ npm create vtj@latest --registry=https://registry.npmmirror.com -- -t h5
53
+ ```
54
+
55
+ 1. uni-app(跨端应用)
56
+
57
+ ```sh
58
+ npm create vtj@latest --registry=https://registry.npmmirror.com -- -t uniapp
59
+ ```
60
+
61
+ 1. 物料开发项目
62
+
63
+ ```sh
64
+ npm create vtj@latest --registry=https://registry.npmmirror.com -- -t material
65
+ ```
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("@vtj/core"),l=require("@vtj/utils"),S=require("vue"),re=require("vue-router");function Be(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 B=Be(S);/**!
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const R=require("@vtj/core"),l=require("@vtj/utils"),S=require("vue"),re=require("vue-router");function Be(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 B=Be(S);/**!
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.10.13
5
+ * @version 0.10.15
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
- */const R="0.10.13";var y=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(y||{});const z=["$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"],ne=["vIf","vShow","vModel","vFor","vBind","vHtml"],oe={String,Number,Boolean,Array,Object,Function,Date},C="VtjPage",F="VtjHomepage",ie="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot".split(","),ae="component,slot".split(",");function k(r,e){return r.map(t=>l.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function N(r){return/\.css$/.test(r)}function U(r){return/\.js$/.test(r)}function ce(r){return/\.json$/.test(r)}function Ue(r){return r.map(e=>`<script src="${l.url.append(e,{v:R})}"><\/script>`).join("")}function Le(r=[]){return r.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:R})}" />`).join("")}function le(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function ue(r,e,t=!1){const s=r.filter(g=>!!g.enabled),n=[],o=[],a=[],i=[],c={},u={},h=[],d={};return s.forEach(({urls:g,assetsUrl:m,library:f,assetsLibrary:p,localeLibrary:E})=>{g?.forEach(v=>{U(v)&&n.push(le(v,t)),N(v)&&o.push(v)}),f&&(i.push(f),c[f]=k(g||[],e),E&&(u[f]=E)),m&&a.push(m),p&&h.push(p),f&&p&&(d[p]=f)}),{scripts:k(n,e),css:k(o,e),materials:k(a,e),libraryExports:i,materialExports:l.dedupArray(h),materialMapLibrary:d,libraryMap:c,libraryLocaleMap:u}}function pe(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function G(r){return l.isString(r)?r:JSON.stringify(r)}function V(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,a=o.adoptedStyleSheets,i=Array.from(a).filter(c=>c.id!==e);o.adoptedStyleSheets=[...i,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 de(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&V(window,r,t)}function fe(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 he(r,e,t=window){const s=t.document,n=t.document.head;let o=t[e];return o?o.default||o:new Promise((a,i)=>{for(const c of r){const u=s.createElement("script");u.src=c,u.onload=()=>{o=t[e],o?a(o.default||o):i(null)},u.onerror=h=>{i(h)},n.appendChild(u)}})}function me(r){return l.isFunction(r)||l.isFunction(r?.install)}function ge(r){return ae.includes(r)}function ve(r){return ie.includes(r)}function $(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function Je(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 o=(r.value||"").trim();o=o.replace(/this(\W|$)/g,(i,c)=>`__self${c}`),o=n.join(`
8
- `)+o;const a=`with(${t?"{}":"$scope || {}"}) { ${o} }`;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 ye(r){return w(r)||T(r)}function qe(r){return ye(r)?r.value:JSON.stringify(r)}const ze={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:""},W=Symbol("access");class _e{options;data=null;mode=y.Raw;constructor(e){this.options=Object.assign({},ze,e),this.loadData()}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:o}=this.options;this.setData(e),this.data&&(l.storage.save(t,e,{type:"local",prefix:s}),n&&l.cookie.set(o,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(o=>s[o]||s[t+"."+o])}some(e){const{appName:t}=this.options,{permissions:s={}}=this.data||{};return l.toArray(e).some(o=>s[o]||s[t+"."+o])}install(e){e.config.globalProperties.$access||(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));this.data=JSON.parse(s.join(""));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}=this.options;return e.status===t||e.data?.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await l.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(await this.showUnauthorizedAlert(t),t),async t=>{const 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:o,remote:a="https://lcdp.vtj.pro"}=r;let i=null;return{request:l.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:u=>u.data?.code===0||!!u.data?.success,failMessage:!0,showError:u=>{e&&e(u||"未知错误")},showLoading:()=>{i&&i.close(),t&&(i=t())},hideLoading:()=>{i&&(i.close(),i=null)},...s}}),jsonp:l.jsonp,notify:e,loading:t,startupComponent:n,remote:a,access:o?we(o):void 0}}function we(r={}){const e={storageKey:"RRO_IDE_ACCESS_STORAGE__",auth:"https://lcdp.vtj.pro/auth.html",privateKey:"MIIBOgIBAAJBAKoIzmn1FYQ1YOhOBw9EhABxZ+PySAIaydI+zdhoKflrdgJ4A5E4/5gbQmRpk09hPWG8nvX7h+l/QLU8kXxAIBECAwEAAQJAAlgpxQY6sByLsXqzJcthC8LSGsLf2JEJkHwlnpwFqlEV8UCkoINpuZ2Wzl+aftURu5rIfAzRCQBvHmeOTW9/zQIhAO5ufWDmnSLyfAAsNo5JRNpVuLFCFodR8Xm+ulDlosR/AiEAtpAltyP9wmCABKG/v/hrtTr3mcvFNGCjoGa9bUAok28CIHbrVs9w1ijrBlvTsXYwJw46uP539uKRRT4ymZzlm9QjAiB+1KH/G9f9pEEL9rtaSOG7JF5D0JcOjlze4MGVFs+ZrQIhALKOUFBNr2zEsyJIjw2PlvEucdlG77UniszjXTROHSPd"};return new _e(Object.assign(e,r))}function Ee(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,o={url:r.url,method:r.method,settings:{...r.settings,headers:n}};return(a,i)=>(delete o.data,s.send(l.merge(o,i||{},{data:a})))}}function je(r,e){const{metaQuery:t}=e;if(!t)return;const{code:s,queryCode:n}=r;return(o,a)=>{if(!t){console.warn("adapter.metaQuery is not defined!");return}return t(s,n,o,a)}}function Pe(r=[],e=[],t){const s={};for(const n of r)s[n.id]=Ee(n,t);for(const n of e)s[n.id]=je(n,t);return s}async function Ae(r=[],e=window){const t=$(e);t&&(Q(e),r.forEach(s=>Re(t,s)))}function be(r,e=window){const t=T(r.mockTemplate)&&r.mockTemplate.value?D(r.mockTemplate,{},!0):void 0,s=$(e);return async(...n)=>{let o={};if(t)try{o=await t.apply(t,n)}catch(a){l.logger.warn("模拟数据模版异常",a)}return s?.mock(o)}}function Re(r,e){if(!e.mock)return;const{url:t,mockTemplate:s}=e;if(t&&s){const n=l.pathToRegexp(`${t}(.*)`),o=l.pathToRegexpMatch(t,{decode:decodeURIComponent}),a=M(s,{},!0);r.mock(n,i=>{const c=l.url.parse(i.url)||{},u=i.body instanceof FormData?l.formDataToJson(i.body):i.body,h=o(i.url)?.params;return Object.assign(i,{data:u,params:c,query:h}),r.mock(a(i))})}}function Q(r=window){const e=$(r);e&&(e._mocked={})}class Ce{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};props={};$props={};$refs={};$el=null;$emit=null;$nextTick=null;$parent=null;$root=null;$attrs=null;$slots=null;$watch=null;$options=null;$forceUpdate=null;$components={};$libs={};$apis={};__transform={};constructor(e){const{mode:t,dsl: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=B){const s=t.getCurrentInstance();if(!s)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=s.proxy;const n=s.appContext.config.globalProperties;Object.assign(this,n),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__reset()})}__proxy(){this.__instance&&z.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){z.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===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 o=new Set([].concat(n,s));return Array.from(o)}else return s}__clone(e={}){const t={...this.context,...e},s={...t,context:t};return s.context.__proto__=this.context,s.__proto__=this,s}}function H(r){const{Vue:e=B,mode:t=y.Runtime,components:s={},libs:n={},apis:o={},loader:a}=r,i=e.computed(()=>r.dsl),c={$components:s,$libs:n,$apis:o},u=new Ce({mode:t,dsl:i.value,attrs:c}),h=e.defineComponent({name:i.value.name,props:{...Ve(i.value.props??[],u)},setup(d){u.$props=d,u.props=d,i.value.id&&V(r.window||window,i.value.id,i.value.css||""),u.state=We(e,i.value.state??{},u);const g=Qe(e,i.value.computed??{},u),m=Ye(i.value.methods??{},u),f=Xe(e,i.value.inject,u),p=$e(i.value.dataSources||{},u),E={...f,...g,...m,...p};return u.setup(E,e),Ze(e,i.value.watch??[],u),{vtj:u}},emits:Ge(i.value.emits),expose:["vtj"],render(){if(!i.value.nodes)return null;const d=i.value.nodes||[];return d.length===1?I(d[0],u,e,a):d.map(g=>I(g,u,e,a))},...et(i.value.lifeCycles??{},u)});return{renderer:e.markRaw(h),context:u}}function Ge(r=[]){return r.map(e=>l.isString(e)?e:e.name)}function Ve(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(o=>oe[o]):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 o=e[n];return w(o)?o=t.__parseExpression(o):T(o)&&(o=t.__parseFunction(o)),s[n]=o,s},{}))}function Qe(r,e,t){return Object.entries(e??{}).reduce((s,[n,o])=>(s[n]=r.computed(t.__parseFunction(o)),s),{})}function Ye(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:o,from:a}=n||{};n.default;const i=w(a)?t.__parseExpression(a)||o:a??o,c=w(n.default)?t.__parseExpression(n.default):n.default??null;return s[o]=r.inject(i,c),s},{})}function $e(r,e){return Object.keys(r).reduce((t,s)=>{const n=r[s];if(n.type==="mock")t[s]=be(n);else if(n.ref){const o=e.$apis[n.ref],a=T(n.transform)?n.transform.value?e.__parseFunction(n.transform):void 0:n.transform;t[s]=async(...i)=>{const c=await o.apply(e,i);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 q=[],b={};const Me=r=>r;async function Y(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(i=>U(i));if(n.length===0||!s)return null;const o=t.filter(i=>N(i));return o.length&&fe(o,e),await he(n,s,e).catch(i=>(console.warn("loadScriptUrl error",n,s,i),null))}function x(r){const{getDsl:e,getDslByUrl:t,options:s}=r;return s.window&&(q.forEach(n=>{delete s.window[n]}),q=[]),(n,o,a=B)=>{if(!o||typeof o=="string")return n;if(o.type==="Schema"&&o.id){let i=b[o.id];return i||(i=b[o.id]=a.defineAsyncComponent(async()=>{const c=await e(o.id);return c&&(c.name=n),c?H({...s,Vue:a,dsl:c,mode:y.Runtime,loader:x(r)}).renderer:null}),i)}if(o.type==="UrlSchema"&&o.url){let i=b[o.url];return i||(i=b[o.url]=a.defineAsyncComponent(async()=>{const c=await t(o.url);return c&&(c.name=n),c?H({...s,Vue:a,dsl:c,mode:y.Runtime,loader:x(r)}).renderer:null}),i)}if(o.type==="Plugin"){let i=o.library?b[o.library]:null;return i||(o.library&&q.push(o.library),i=b[o.library||Symbol()]=a.defineAsyncComponent(async()=>{const c=await Y(o,s.window);return c||(console.warn("getPlugin result is null",o),null)}),i)}return n}}function tt(){b={}}function I(r,e,t=B,s=Me){if(!r||!r.name||r.invisible)return null;const n=t.getCurrentInstance()?.appContext,{id:o=null,directives:a=[]}=r,{vIf:i,vFor:c,vShow:u,vModels:h,vBind:d,vHtml:g,others:m}=rt(a);if(i&&!nt(i,e))return null;const f=p=>{const E=p.$components,v=(()=>{if(r.name==="component")return ot(p,r.props?.is);if(r.name==="slot")return r.name;const P=s(r.name,r.from,t);return l.isString(P)?ge(P)||ve(P)?P:E[P]??n?.app?.component(P)??P:P})(),j=it(o,r.props??{},p),He=at(t,r.events??{},p);if(r.name==="slot")return ct(t,r,j,p,s);d&&Object.assign(j,p.__parseExpression(d.value)),u&&(j.style=Object.assign(j.style??{},ut(u,p))),g&&Object.assign(j,pt(g,p)),h.forEach(P=>{Object.assign(j,dt(t,P,p))});const xe=ft(t,r.children??[],p,s,r);let J=t.createVNode(v,{...j,...He},xe);const te=n?st(n,m,p):[];return te.length&&(J=t.withDirectives(J,te)),J};return c?gt(c,f,e):f(e)}function st(r,e,t){const s=r.app;return e.map(n=>{const o=typeof n.name=="string"?s.directive(n.name):t.__parseExpression(n.name);if(!o)return null;const a=[o];return n.value&&a.push(t.__parseExpression(n.value)),n.arg&&a.push(n.arg),n.modifiers&&a.push(n.modifiers),a}).filter(n=>!!n)}function 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"),o=r.find(c=>l.camelCase(c.name)==="vHtml"),a=r.filter(c=>l.camelCase(c.name)==="vModel"),i=r.filter(c=>!ne.includes(l.camelCase(c.name)));return{vIf:e,vFor:t,vShow:s,vModels:a,vBind:n,others:i,vHtml:o}}function nt(r,e){return!!e.__parseExpression(r.value)}function ot(r,e){return e?w(e)?r.__parseExpression(e):e:"div"}function it(r,e,t){const s=K(e,t);return s.ref=t.__ref(r,s.ref),s}function K(r,e){return w(r)?e.__parseExpression(r):T(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>K(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=K(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((o,a)=>{const i=e[a],c=X(i.modifiers),u=c.find(g=>s.includes(g)),h="on"+l.upperFirst(a)+(u&&n[u]||""),d=t.__parseFunction(i.handler);return d&&(o[h]=r.withModifiers(d,c)),o},{})}function X(r={},e=!1){const t=Object.keys(r);return e?t.map(s=>"."+s):t}function ct(r,e,t,s,n){const{children:o}=e,a=lt(e,s),i=s.$slots?.[a.name];return i?i(t):o?l.isString(o)?r.createTextVNode(o):w(o)?r.createTextVNode(G(s.__parseExpression(o))):Array.isArray(o)?o.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) => {
7
+ */const A="0.10.15";var y=(r=>(r.Runtime="Runtime",r.Design="Design",r.Raw="Raw",r.VNode="VNode",r))(y||{});const z=["$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"],ne=["vIf","vShow","vModel","vFor","vBind","vHtml"],ie={String,Number,Boolean,Array,Object,Function,Date},C="VtjPage",k="VtjHomepage",oe="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot".split(","),ae="component,slot".split(",");function T(r,e){return r.map(t=>l.isUrl(t)||t.startsWith("/")?t:`${e}${t}`)}function N(r){return/\.css$/.test(r)}function U(r){return/\.js$/.test(r)}function ce(r){return/\.json$/.test(r)}function Ue(r){return r.map(e=>`<script src="${l.url.append(e,{v:A})}"><\/script>`).join("")}function Le(r=[]){return r.map(e=>`<link rel="stylesheet" href="${l.url.append(e,{v:A})}" />`).join("")}function le(r,e=!1){return e&&r.endsWith(".prod.js")?r.replace(".prod.js",".js"):r}function ue(r,e,t=!1){const s=r.filter(g=>!!g.enabled),n=[],i=[],a=[],o=[],c={},u={},h=[],d={};return s.forEach(({urls:g,assetsUrl:m,library:f,assetsLibrary:p,localeLibrary:j})=>{g?.forEach(v=>{U(v)&&n.push(le(v,t)),N(v)&&i.push(v)}),f&&(o.push(f),c[f]=T(g||[],e),j&&(u[f]=j)),m&&a.push(m),p&&h.push(p),f&&p&&(d[p]=f)}),{scripts:T(n,e),css:T(i,e),materials:T(a,e),libraryExports:o,materialExports:l.dedupArray(h),materialMapLibrary:d,libraryMap:c,libraryLocaleMap:u}}function pe(r,e){const{name:t,parent:s,alias:n}=r;return s?e[s]?.[n||t]:e[n||t]}function G(r){return l.isString(r)?r:JSON.stringify(r)}function V(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 de(r,e){const t=await window.fetch(e).then(s=>s.text()).catch(()=>"");t&&V(window,r,t)}function fe(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 he(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=h=>{o(h)},n.appendChild(u)}})}function me(r){return l.isFunction(r)||l.isFunction(r?.install)}function ge(r){return ae.includes(r)}function ve(r){return oe.includes(r)}function $(r=window){const e=window?.Mock;if(e)return e;const t=r?.Mock;if(t&&window)return window.Mock=t,t}function Je(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
+ `)+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 I(r){return typeof r=="object"&&r&&r.type==="JSFunction"}function ye(r){return w(r)||I(r)}function qe(r){return ye(r)?r.value:JSON.stringify(r)}const ze={session:!1,authKey:"Authorization",storageKey:"ACCESS_STORAGE",storagePrefix:"__VTJ_",unauthorized:void 0,auth:"/#/login",redirectParam:"r",unauthorizedCode:401,unauthorizedMessage:"登录已经失效,请重新登录!",noPermissionMessage:"无权限访问该页面",appName:""},W=Symbol("access");class _e{options;data=null;mode=y.Raw;interceptResponse=!0;constructor(e){this.options=Object.assign({},ze,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||(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));this.data=JSON.parse(s.join(""));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}=this.options;return e.status===t||e.data?.code===t}async showUnauthorizedAlert(e){const{unauthorizedMessage:t="登录已失效"}=this.options;this.isUnauthorized(e)&&(await this.showTip(t),this.toLogin())}async showTip(e){const{alert:t}=this.options;return t?(await l.delay(150),await t(e,{title:"提示",type:"warning"}).catch(()=>!1)):!1}setRequest(e){e.useRequest(t=>(this.data?.token&&(t.headers[this.options.authKey]=this.data?.token),t)),e.useResponse(async t=>(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,remote:a="https://lcdp.vtj.pro"}=r;let o=null;return{request:l.createRequest({settings:{type:"form",validSuccess:!0,originResponse:!1,loading:!0,validate:u=>u.data?.code===0||!!u.data?.success,failMessage:!0,showError:u=>{e&&e(u||"未知错误")},showLoading:()=>{o&&o.close(),t&&(o=t())},hideLoading:()=>{o&&(o.close(),o=null)},...s}}),jsonp:l.jsonp,notify:e,loading:t,startupComponent:n,remote:a,access:i?we(i):void 0}}function we(r={}){const e={storageKey:"RRO_IDE_ACCESS_STORAGE__",auth:"https://lcdp.vtj.pro/auth.html",privateKey:"MIIBOgIBAAJBAKoIzmn1FYQ1YOhOBw9EhABxZ+PySAIaydI+zdhoKflrdgJ4A5E4/5gbQmRpk09hPWG8nvX7h+l/QLU8kXxAIBECAwEAAQJAAlgpxQY6sByLsXqzJcthC8LSGsLf2JEJkHwlnpwFqlEV8UCkoINpuZ2Wzl+aftURu5rIfAzRCQBvHmeOTW9/zQIhAO5ufWDmnSLyfAAsNo5JRNpVuLFCFodR8Xm+ulDlosR/AiEAtpAltyP9wmCABKG/v/hrtTr3mcvFNGCjoGa9bUAok28CIHbrVs9w1ijrBlvTsXYwJw46uP539uKRRT4ymZzlm9QjAiB+1KH/G9f9pEEL9rtaSOG7JF5D0JcOjlze4MGVFs+ZrQIhALKOUFBNr2zEsyJIjw2PlvEucdlG77UniszjXTROHSPd"};return new _e(Object.assign(e,r))}function je(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 Ee(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 Pe(r=[],e=[],t){const s={};for(const n of r)s[n.id]=je(n,t);for(const n of e)s[n.id]=Ee(n,t);return s}async function Re(r=[],e=window){const t=$(e);t&&(Q(e),r.forEach(s=>Ae(t,s)))}function be(r,e=window){const t=I(r.mockTemplate)&&r.mockTemplate.value?D(r.mockTemplate,{},!0):void 0,s=$(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 Ae(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,h=i(o.url)?.params;return Object.assign(o,{data:u,params:c,query:h}),r.mock(a(o))})}}function Q(r=window){const e=$(r);e&&(e._mocked={})}class Ce{__id=null;__mode;__instance=null;__contextRefs={};__refs={};context={};state={};props={};$props={};$refs={};$el=null;$emit=null;$nextTick=null;$parent=null;$root=null;$attrs=null;$slots=null;$watch=null;$options=null;$forceUpdate=null;$components={};$libs={};$apis={};__transform={};constructor(e){const{mode:t,dsl: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=B){const s=t.getCurrentInstance();if(!s)return;this.__refs={},this.$refs={},this.context={},this.__contextRefs={},this.__instance=s.proxy;const n=s.appContext.config.globalProperties;Object.assign(this,n),Object.assign(this,e||{}),this.__proxy(),t.onMounted(()=>{this.__proxy()}),t.onUnmounted(()=>{this.__cleanup()}),t.onBeforeUpdate(()=>{this.__reset()})}__proxy(){this.__instance&&z.forEach(e=>{this[e]=this.__instance?.[e]})}__cleanup(){z.forEach(e=>{this[e]=null}),this.__reset()}__reset(){this.__refs={},this.$refs={},this.__contextRefs={},this.context={}}__parseFunction(e){if(e)if(this.__mode===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=B,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 Ce({mode:t,dsl:o.value,attrs:c}),h=e.defineComponent({name:o.value.name,props:{...Ve(o.value.props??[],u)},setup(d){u.$props=d,u.props=d,o.value.id&&V(r.window||window,o.value.id,o.value.css||""),u.state=We(e,o.value.state??{},u);const g=Qe(e,o.value.computed??{},u),m=Ye(o.value.methods??{},u),f=Xe(e,o.value.inject,u),p=$e(o.value.dataSources||{},u),j={...f,...g,...m,...p};return u.setup(j,e),Ze(e,o.value.watch??[],u),{vtj:u}},emits:Ge(o.value.emits),expose:["vtj"],render(){if(!o.value.nodes)return null;const d=o.value.nodes||[];return d.length===1?F(d[0],u,e,a):d.map(g=>F(g,u,e,a))},...et(o.value.lifeCycles??{},u)});return{renderer:e.markRaw(h),context:u}}function Ge(r=[]){return r.map(e=>l.isString(e)?e:e.name)}function Ve(r=[],e){const t=s=>s?(Array.isArray(s)?s:[s]).map(i=>ie[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):I(i)&&(i=t.__parseFunction(i)),s[n]=i,s},{}))}function Qe(r,e,t){return Object.entries(e??{}).reduce((s,[n,i])=>(s[n]=r.computed(t.__parseFunction(i)),s),{})}function Ye(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 $e(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=I(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 q=[],b={};const Me=r=>r;async function Y(r,e=window){const{urls:t=[],library:s}=r,n=t.filter(o=>U(o));if(n.length===0||!s)return null;const i=t.filter(o=>N(o));return i.length&&fe(i,e),await he(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&&(q.forEach(n=>{delete s.window[n]}),q=[]),(n,i,a=B)=>{if(!i||typeof i=="string")return n;if(i.type==="Schema"&&i.id){let o=b[i.id];return o||(o=b[i.id]=a.defineAsyncComponent(async()=>{const c=await e(i.id);return c&&(c.name=n),c?H({...s,Vue:a,dsl:c,mode:y.Runtime,loader:x(r)}).renderer:null}),o)}if(i.type==="UrlSchema"&&i.url){let o=b[i.url];return o||(o=b[i.url]=a.defineAsyncComponent(async()=>{const c=await t(i.url);return c&&(c.name=n),c?H({...s,Vue:a,dsl:c,mode:y.Runtime,loader:x(r)}).renderer:null}),o)}if(i.type==="Plugin"){let o=i.library?b[i.library]:null;return o||(i.library&&q.push(i.library),o=b[i.library||Symbol()]=a.defineAsyncComponent(async()=>{const c=await Y(i,s.window);return c||(console.warn("getPlugin result is null",i),null)}),o)}return n}}function tt(){b={}}function F(r,e,t=B,s=Me){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:h,vBind:d,vHtml:g,others:m}=rt(a);if(o&&!nt(o,e))return null;const f=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)?ge(P)||ve(P)?P:j[P]??n?.app?.component(P)??P:P})(),E=ot(i,r.props??{},p),He=at(t,r.events??{},p);if(r.name==="slot")return ct(t,r,E,p,s);d&&Object.assign(E,p.__parseExpression(d.value)),u&&(E.style=Object.assign(E.style??{},ut(u,p))),g&&Object.assign(E,pt(g,p)),h.forEach(P=>{Object.assign(E,dt(t,P,p))});const xe=ft(t,r.children??[],p,s,r);let J=t.createVNode(v,{...E,...He},xe);const te=n?st(n,m,p):[];return te.length&&(J=t.withDirectives(J,te)),J};return c?gt(c,f,e):f(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=>!ne.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=K(e,t);return s.ref=t.__ref(r,s.ref),s}function K(r,e){return w(r)?e.__parseExpression(r):I(r)?e.__parseFunction(r):Array.isArray(r)?r.map(t=>K(t,e)):typeof r=="object"?Object.keys(r||{}).reduce((t,s)=>{let n=r[s];return t[s]=K(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=X(o.modifiers),u=c.find(g=>s.includes(g)),h="on"+l.upperFirst(a)+(u&&n[u]||""),d=t.__parseFunction(o.handler);return d&&(i[h]=r.withModifiers(d,c)),i},{})}function X(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(G(s.__parseExpression(i))):Array.isArray(i)?i.map(c=>F(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
- }`:"(v) => {}"},n=t.__parseFunction(s),o=X(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}`]:o.length&&n?r.withModifiers(n,o):n}}function ft(r,e,t,s,n){if(!e)return null;if(l.isString(e))return{default:()=>e};if(w(e))return{default:()=>G(t.__parseExpression(e))};if(Array.isArray(e)&&e.length>0){const o=ht(e),a=i=>!i||!n?{}:n?.id&&Object.keys(i).length?{[`scope_${n.id}`]:i}:{};return Object.entries(o).reduce((i,[c,{nodes:u,params:h}])=>(i[c]=d=>{const g=h.length?l.pick(d??{},h):a(d);return u.map(m=>I(m,t.__clone(g),r,s))},i),{})}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:o="item",index:a="index"}=n||{};let i=t.__parseExpression(s)||[];return Number.isInteger(i)&&(i=new Array(i).fill(!0).map((c,u)=>u+1)),Array.isArray(i)?i.map((c,u)=>e(t.__clone({[o]:c,[a]:u}))):(console.warn("[vForRender]:",`${s?.value} is not a Arrary`),[])}const se=S.defineComponent({name:"VtjPageContainer",async setup(){const r=ee(),e=re.useRoute(),t=e.params.id,s=t?r.getPage(t):r.getHomepage(),n=s?await r.getRenderComponent(s.id):null,o=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:o,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!")}}),Z=Symbol("Provider");var Te=(r=>(r.Production="production",r.Development="development",r))(Te||{});class ke extends A.Base{constructor(e){super(),this.options=e;const{service:t,mode:s=y.Raw,dependencies:n,materials:o,project:a={},adapter:i={},globals:c={},modules:u={},router:h=null,materialPath:d="./",nodeEnv:g="development"}=e;this.mode=s,this.modules=u,this.service=t,this.router=h,this.materialPath=d,this.nodeEnv=g,n&&(this.dependencies=n),o&&(this.materials=o),Object.assign(this.globals,c),Object.assign(this.adapter,i);const{access:m,request:f}=this.adapter;m&&m.connect({mode:s,router:h,request:f}),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(o){l.logger.warn("模拟数据模版异常",o)}return $()?.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,o=window;o&&(o.CKEDITOR_VERSION=void 0),this.mode===y.Raw?await this.loadDependencies(o):await this.loadAssets(o),this.initMock(o),this.apis=Pe(s,n,this.adapter),Q(o),Ae(s,o),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=$(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:o,materialPath:a,nodeEnv:i}=this,{libraryExports:c,libraryMap:u,materials:h,materialExports:d,materialMapLibrary:g}=ue(t,a,i==="development");for(const m of c){const f=s[m],p=e[m];if(p)n[m]=p;else if(f)e[m]=n[m]=await f();else{const E=u[m]||[];for(const v of E)N(v)&&await de(m,l.url.append(v,{v:R})),U(v)&&await l.loadScript(l.url.append(v,{v:R}));n[m]=e[m]}}if(i==="development"){for(const f of h)await l.loadScript(l.url.append(f,{v:R}));const m=this.materials||{};for(const f of d){const p=e[g[f]],E=A.BUILT_IN_COMPONENTS[f];if(E)p&&E.forEach(v=>{o[v]=p[v]});else{const v=m[f]?(await m[f]()).default:e[f];v&&p&&(v.components||[]).forEach(j=>{o[j.name]=pe(j,p)})}}}}initRouter(){const{router:e,project:t,options:s,adapter:n}=this;if(!e)return;const o=t?.platform==="uniapp"?"pages":"page",{routeAppendTo:a,pageRouteName:i=o,routeMeta:c}=s,u=a?"":"/",h={path:`${u}${i}/:id`,name:C,component:se},d={path:u,name:F,component:t?.homepage?se:n.startupComponent||vt,meta:c};e.hasRoute(C)&&e.removeRoute(C),e.hasRoute(F)&&e.removeRoute(F),a?(e.addRoute(a,h),e.addRoute(a,d)):(e.addRoute(h),e.addRoute(d))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&me(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(Z,this),e.config.globalProperties.$provider=this,e.config.globalProperties.installed=t,this.mode===y.Design&&(e.config.errorHandler=(s,n,o)=>{const a=n?.$options.name,i=typeof s=="string"?s:s?.message||s?.msg||"未知错误",c=`[ ${a} ] ${i} ${o}`;console.error("[VTJ Error]:",{err:s,instance:n,info:o},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,o=[])=>{for(const a of o){if(a.id===n)return a;if(a.children&&a.children.length){const i=s(n,a.children);if(i)return i}}};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:o,apis:a}=this,i={mode:o,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:i});return H({...i,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`,o=this.modules[n]||this.modules[`/src/pages/${e}.vue`];if(o)return(await o())?.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 Y(e,window))}}function yt(r){const e=new ke(r);return{provider:e,onReady:s=>e.ready(s)}}function ee(r={}){const e=S.inject(Z,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 Fe={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:Fe}),St=(r,e="/__vtj__/api/uploader.json")=>async(t,s)=>await r.send({url:e,method:"post",data:{files:t,projectId:s},settings:{...Fe,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{api;pluginCaches={};uploader;constructor(e=l.request){this.api=_t(e),this.uploader=St(e)}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 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(o=>ce(o))[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(o=>o.data).catch(()=>null))}async genSource(e){return console.log("BaseService.genSource",e),""}}const _=new l.Storage({type:"local",expired:0,prefix:"__VTJ_"});class Et extends L{init(e){const t=new A.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 A.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(o=>o.id);this.removeHistoryItem(e,n),_.remove(`history_${e}`)}return Promise.resolve(!0)}getHistory(e){const t=_.get(`history_${e}`),s=new A.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 Ie extends L{projects={};materials={};files={};histories={};historyItems={};init(e){const t=new A.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 A.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(o=>o.id);this.removeHistoryItem(e,n),delete this.historyItems[e]}return Promise.resolve(!0)}getHistory(e){const t=this.histories[e],s=new A.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 jt(){return O||(O=new Ie,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 Oe(r,e,t=[]){return t.map(s=>{const{id:n,title:o,icon:a,children:i,hidden:c}=s;return{id:n,title:o,icon:a,hidden:c,url:`${r}/${e}/${n}`,children:i&&i.length?Oe(r,e,i):void 0}})}function De(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=De(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function At(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=ee(),o=re.useRoute(),a=Se(),i=S.ref(!1),c=S.ref(!1),u=n.project;S.watchEffect(()=>{const{name:g,params:m,meta:f}=o;if(g===C){const p=n.getPage(m.id);i.value=!p?.mask,c.value=!!p?.pure}else if(g===F){const p=n.getHomepage();i.value=!p?.mask,c.value=!!p?.pure}else i.value=!f.mask,c.value=!!f.pure});const h=Oe(e,t,u?.pages),d=u?.config;return{disabled:i,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||u?.description||u?.name||"VTJ App",menus:s?h:De(h,a),pure:c}}exports.ACCESS_KEY=W;exports.Access=_e;exports.BUILD_IN_TAGS=ae;exports.BUILT_IN_DIRECTIVES=ne;exports.BaseService=L;exports.CONTEXT_HOST=z;exports.Context=Ce;exports.ContextMode=y;exports.DATA_TYPES=oe;exports.HOMEPAGE_ROUTE_NAME=F;exports.HTML_TAGS=ie;exports.JSCodeToString=qe;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Pt;exports.MemoryService=Ie;exports.NodeEnv=Te;exports.PAGE_ROUTE_NAME=C;exports.Provider=ke;exports.StorageService=Et;exports.VTJ_RENDERER_VERSION=R;exports.adoptedStyleSheets=V;exports.clearLoaderCache=tt;exports.createAccess=we;exports.createAdapter=Ke;exports.createAssetScripts=Ue;exports.createAssetsCss=Le;exports.createDataSources=$e;exports.createLoader=x;exports.createMemoryService=jt;exports.createMetaApi=je;exports.createMock=be;exports.createProvider=yt;exports.createRenderer=H;exports.createSchemaApi=Ee;exports.createSchemaApis=Pe;exports.createServiceRequest=wt;exports.defaultLoader=Me;exports.fillBasePath=k;exports.getMock=$;exports.getModifiers=X;exports.getPlugin=Y;exports.getRawComponent=pe;exports.isBuiltInTag=ge;exports.isCSSUrl=N;exports.isJSCode=ye;exports.isJSExpression=w;exports.isJSFunction=T;exports.isJSON=ce;exports.isJSUrl=U;exports.isNativeTag=ve;exports.isVuePlugin=me;exports.loadCss=de;exports.loadCssUrl=fe;exports.loadScriptUrl=he;exports.mockApi=Re;exports.mockApis=Ae;exports.mockCleanup=Q;exports.nodeRender=I;exports.parseDeps=ue;exports.parseExpression=M;exports.parseFunction=D;exports.providerKey=Z;exports.removeProdFlag=le;exports.setupPageSetting=Je;exports.toString=G;exports.useAccess=Se;exports.useMask=At;exports.useProvider=ee;
10
+ }`:"(v) => {}"},n=t.__parseFunction(s),i=X(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:()=>G(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:h}])=>(o[c]=d=>{const g=h.length?l.pick(d??{},h):a(d);return u.map(m=>F(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 se=S.defineComponent({name:"VtjPageContainer",async setup(){const r=ee(),e=re.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!")}}),Z=Symbol("Provider");var Ie=(r=>(r.Production="production",r.Development="development",r))(Ie||{});class Te extends R.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:h=null,materialPath:d="./",nodeEnv:g="development"}=e;this.mode=s,this.modules=u,this.service=t,this.router=h,this.materialPath=d,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:f}=this.adapter;m&&m.connect({mode:s,router:h,request:f}),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 $()?.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=Pe(s,n,this.adapter),Q(i),Re(s,i),e.platform!=="uniapp"&&this.initRouter(),this.triggerReady()}initMock(e){const t=$(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:h,materialExports:d,materialMapLibrary:g}=ue(t,a,o==="development");for(const m of c){const f=s[m],p=e[m];if(p)n[m]=p;else if(f)e[m]=n[m]=await f();else{const j=u[m]||[];for(const v of j)N(v)&&await de(m,l.url.append(v,{v:A})),U(v)&&await l.loadScript(l.url.append(v,{v:A}));n[m]=e[m]}}if(o==="development"){for(const f of h)await l.loadScript(l.url.append(f,{v:A}));const m=this.materials||{};for(const f of d){const p=e[g[f]],j=R.BUILT_IN_COMPONENTS[f];if(j)p&&j.forEach(v=>{i[v]=p[v]});else{const v=m[f]?(await m[f]()).default:e[f];v&&p&&(v.components||[]).forEach(E=>{i[E.name]=pe(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?"":"/",h={path:`${u}${o}/:id`,name:C,component:se},d={path:u,name:k,component:t?.homepage?se:n.startupComponent||vt,meta:c};e.hasRoute(C)&&e.removeRoute(C),e.hasRoute(k)&&e.removeRoute(k),a?(e.addRoute(a,h),e.addRoute(a,d)):(e.addRoute(h),e.addRoute(d))}install(e){const t=e.config.globalProperties.installed||{};for(const[s,n]of Object.entries(this.library))!t[s]&&me(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(Z,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 Y(e,window))}}function yt(r){const e=new Te(r);return{provider:e,onReady:s=>e.ready(s)}}function ee(r={}){const e=S.inject(Z,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{api;pluginCaches={};uploader;constructor(e=l.request){this.api=_t(e),this.uploader=St(e)}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 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=>ce(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 R.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 R.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 R.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 R.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 R.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 R.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 Oe(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?Oe(r,e,o):void 0}})}function De(r,e){if(!e)return r;let t=[];for(const s of r)if(s.children&&s.children.length){const n=De(s.children,e);n.length&&(s.children=n,t.push(s))}else e.can(s.id.toString())&&t.push(s);return t}function Rt(r){const{menuPathPrefix:e="",pageRouteName:t="page",disableMenusFilter:s=!1}=r||{},n=ee(),i=re.useRoute(),a=Se(),o=S.ref(!1),c=S.ref(!1),u=n.project;S.watchEffect(()=>{const{name:g,params:m,meta:f}=i;if(g===C){const p=n.getPage(m.id);o.value=!p?.mask,c.value=!!p?.pure}else if(g===k){const p=n.getHomepage();o.value=!p?.mask,c.value=!!p?.pure}else o.value=!f.mask,c.value=!!f.pure});const h=Oe(e,t,u?.pages),d=u?.config;return{disabled:o,logo:d?.logo,themeSwitchable:d?.themeSwitchable,title:d?.title||u?.description||u?.name||"VTJ App",menus:s?h:De(h,a),pure:c}}exports.ACCESS_KEY=W;exports.Access=_e;exports.BUILD_IN_TAGS=ae;exports.BUILT_IN_DIRECTIVES=ne;exports.BaseService=L;exports.CONTEXT_HOST=z;exports.Context=Ce;exports.ContextMode=y;exports.DATA_TYPES=ie;exports.HOMEPAGE_ROUTE_NAME=k;exports.HTML_TAGS=oe;exports.JSCodeToString=qe;exports.LIFE_CYCLES_LIST=Ne;exports.LocalService=Pt;exports.MemoryService=Fe;exports.NodeEnv=Ie;exports.PAGE_ROUTE_NAME=C;exports.Provider=Te;exports.StorageService=jt;exports.VTJ_RENDERER_VERSION=A;exports.adoptedStyleSheets=V;exports.clearLoaderCache=tt;exports.createAccess=we;exports.createAdapter=Ke;exports.createAssetScripts=Ue;exports.createAssetsCss=Le;exports.createDataSources=$e;exports.createLoader=x;exports.createMemoryService=Et;exports.createMetaApi=Ee;exports.createMock=be;exports.createProvider=yt;exports.createRenderer=H;exports.createSchemaApi=je;exports.createSchemaApis=Pe;exports.createServiceRequest=wt;exports.defaultLoader=Me;exports.fillBasePath=T;exports.getMock=$;exports.getModifiers=X;exports.getPlugin=Y;exports.getRawComponent=pe;exports.isBuiltInTag=ge;exports.isCSSUrl=N;exports.isJSCode=ye;exports.isJSExpression=w;exports.isJSFunction=I;exports.isJSON=ce;exports.isJSUrl=U;exports.isNativeTag=ve;exports.isVuePlugin=me;exports.loadCss=de;exports.loadCssUrl=fe;exports.loadScriptUrl=he;exports.mockApi=Ae;exports.mockApis=Re;exports.mockCleanup=Q;exports.nodeRender=F;exports.parseDeps=ue;exports.parseExpression=M;exports.parseFunction=D;exports.providerKey=Z;exports.removeProdFlag=le;exports.setupPageSetting=Je;exports.toString=G;exports.useAccess=Se;exports.useMask=Rt;exports.useProvider=ee;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Base as Ae, BUILT_IN_COMPONENTS as Ce, ProjectModel as T, HistoryModel as ce } from "@vtj/core";
2
- import { isUrl as Fe, url as b, dedupArray as ke, isString as $, isFunction as J, logger as R, storage as N, cookie as U, toArray as se, unRSA as re, delay as le, createRequest as ue, jsonp as pe, merge as Ie, pathToRegexp as Me, pathToRegexpMatch as Oe, formDataToJson as He, camelCase as E, upperFirst as Te, pick as De, request as q, loadScript as ne, Storage as xe, mapToObject as X } from "@vtj/utils";
2
+ import { isUrl as Fe, url as b, dedupArray as Ie, isString as $, isFunction as J, logger as P, storage as N, cookie as U, toArray as se, unRSA as re, delay as le, createRequest as ue, jsonp as pe, merge as ke, pathToRegexp as Me, pathToRegexpMatch as Oe, formDataToJson as He, camelCase as E, upperFirst as Te, pick as De, request as q, loadScript as ne, Storage as xe, mapToObject as X } from "@vtj/utils";
3
3
  import * as x from "vue";
4
4
  import { inject as de, defineComponent as fe, h as z, ref as K, defineAsyncComponent as ie, watchEffect as Be } from "vue";
5
5
  import { useRoute as he } from "vue-router";
@@ -7,10 +7,10 @@ import { useRoute as he } 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.10.13
10
+ * @version 0.10.15
11
11
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
12
12
  */
13
- const A = "0.10.13";
13
+ const A = "0.10.15";
14
14
  var y = /* @__PURE__ */ ((r) => (r.Runtime = "Runtime", r.Design = "Design", r.Raw = "Raw", r.VNode = "VNode", r))(y || {});
15
15
  const oe = [
16
16
  "$el",
@@ -94,7 +94,7 @@ function Ke(r, e, t = !1) {
94
94
  css: M(i, e),
95
95
  materials: M(a, e),
96
96
  libraryExports: o,
97
- materialExports: ke(f),
97
+ materialExports: Ie(f),
98
98
  materialMapLibrary: p,
99
99
  libraryMap: c,
100
100
  libraryLocaleMap: l
@@ -169,7 +169,7 @@ function Qt(r, e, t) {
169
169
  const s = r?._container;
170
170
  t?.type === "page" && s.classList.add("is-page"), t?.pure && s.classList.add("is-pure");
171
171
  }
172
- function k(r, e, t = !1, s = !1) {
172
+ function I(r, e, t = !1, s = !1) {
173
173
  try {
174
174
  const n = ['"use strict";', "var __self = arguments[0];"];
175
175
  n.push("return ");
@@ -179,13 +179,13 @@ function k(r, e, t = !1, s = !1) {
179
179
  const a = `with(${t ? "{}" : "$scope || {}"}) { ${i} }`;
180
180
  return new Function("$scope", a)(e);
181
181
  } catch (n) {
182
- if (R.error("parseExpression.error", n, r, e?.__self ?? e), s)
182
+ if (P.error("parseExpression.error", n, r, e?.__self ?? e), s)
183
183
  throw n;
184
184
  }
185
185
  }
186
186
  function G(r, e, t = !1, s = !1) {
187
- const n = k(r, e, t, s);
188
- if (typeof n != "function" && (R.error(
187
+ const n = I(r, e, t, s);
188
+ if (typeof n != "function" && (P.error(
189
189
  "parseFunction.error",
190
190
  "not a function",
191
191
  r,
@@ -197,11 +197,11 @@ function G(r, e, t = !1, s = !1) {
197
197
  function _(r) {
198
198
  return r && r.type === "JSExpression";
199
199
  }
200
- function I(r) {
200
+ function k(r) {
201
201
  return typeof r == "object" && r && r.type === "JSFunction";
202
202
  }
203
203
  function et(r) {
204
- return _(r) || I(r);
204
+ return _(r) || k(r);
205
205
  }
206
206
  function Xt(r) {
207
207
  return et(r) ? r.value : JSON.stringify(r);
@@ -223,9 +223,16 @@ class st {
223
223
  options;
224
224
  data = null;
225
225
  mode = y.Raw;
226
+ interceptResponse = !0;
226
227
  constructor(e) {
227
228
  this.options = Object.assign({}, tt, e), this.loadData();
228
229
  }
230
+ enableIntercept() {
231
+ this.interceptResponse = !0;
232
+ }
233
+ disableIntercept() {
234
+ this.interceptResponse = !1;
235
+ }
229
236
  connect(e) {
230
237
  const { mode: t, router: s, request: n } = e;
231
238
  this.mode = t, s && this.mode === y.Raw && this.setGuard(s), n && this.setRequest(n);
@@ -352,8 +359,9 @@ class st {
352
359
  }
353
360
  setRequest(e) {
354
361
  e.useRequest((t) => (this.data?.token && (t.headers[this.options.authKey] = this.data?.token), t)), e.useResponse(
355
- async (t) => (await this.showUnauthorizedAlert(t), t),
362
+ async (t) => (this.interceptResponse && await this.showUnauthorizedAlert(t), t),
356
363
  async (t) => {
364
+ if (!this.interceptResponse) return Promise.reject(t);
357
365
  const s = t.response || t || {};
358
366
  return await this.showUnauthorizedAlert(s), Promise.reject(t);
359
367
  }
@@ -418,7 +426,7 @@ function it(r, e) {
418
426
  query: n
419
427
  });
420
428
  {
421
- const n = r.headers ? k(r.headers, {}, !0) : void 0, i = {
429
+ const n = r.headers ? I(r.headers, {}, !0) : void 0, i = {
422
430
  url: r.url,
423
431
  method: r.method,
424
432
  settings: {
@@ -426,7 +434,7 @@ function it(r, e) {
426
434
  headers: n
427
435
  }
428
436
  };
429
- return (a, o) => (delete i.data, s.send(Ie(i, o || {}, { data: a })));
437
+ return (a, o) => (delete i.data, s.send(ke(i, o || {}, { data: a })));
430
438
  }
431
439
  }
432
440
  function ot(r, e) {
@@ -454,14 +462,14 @@ async function ct(r = [], e = window) {
454
462
  t && (ye(e), r.forEach((s) => ut(t, s)));
455
463
  }
456
464
  function lt(r, e = window) {
457
- const t = I(r.mockTemplate) && r.mockTemplate.value ? G(r.mockTemplate, {}, !0) : void 0, s = F(e);
465
+ const t = k(r.mockTemplate) && r.mockTemplate.value ? G(r.mockTemplate, {}, !0) : void 0, s = F(e);
458
466
  return async (...n) => {
459
467
  let i = {};
460
468
  if (t)
461
469
  try {
462
470
  i = await t.apply(t, n);
463
471
  } catch (a) {
464
- R.warn("模拟数据模版异常", a);
472
+ P.warn("模拟数据模版异常", a);
465
473
  }
466
474
  return s?.mock(i);
467
475
  };
@@ -470,7 +478,7 @@ function ut(r, e) {
470
478
  if (!e.mock) return;
471
479
  const { url: t, mockTemplate: s } = e;
472
480
  if (t && s) {
473
- const n = Me(`${t}(.*)`), i = Oe(t, { decode: decodeURIComponent }), a = k(s, {}, !0);
481
+ const n = Me(`${t}(.*)`), i = Oe(t, { decode: decodeURIComponent }), a = I(s, {}, !0);
474
482
  r.mock(n, (o) => {
475
483
  const c = b.parse(o.url) || {}, l = o.body instanceof FormData ? He(o.body) : o.body, f = i(o.url)?.params;
476
484
  return Object.assign(o, { data: l, params: c, query: f }), r.mock(a(o));
@@ -548,9 +556,9 @@ class pt {
548
556
  if (e)
549
557
  if (this.__mode === y.Runtime) {
550
558
  const { id: t, type: s } = e, n = t ? this.__transform[t] ?? e.value : e.value;
551
- return k({ type: s, value: n }, this);
559
+ return I({ type: s, value: n }, this);
552
560
  } else
553
- return k(e, this);
561
+ return I(e, this);
554
562
  }
555
563
  __ref(e = null, t) {
556
564
  if (this.__mode !== y.VNode)
@@ -660,7 +668,7 @@ function ht(r, e, t) {
660
668
  Object.keys(e || {}).reduce(
661
669
  (s, n) => {
662
670
  let i = e[n];
663
- return _(i) ? i = t.__parseExpression(i) : I(i) && (i = t.__parseFunction(i)), s[n] = i, s;
671
+ return _(i) ? i = t.__parseExpression(i) : k(i) && (i = t.__parseFunction(i)), s[n] = i, s;
664
672
  },
665
673
  {}
666
674
  )
@@ -696,7 +704,7 @@ function yt(r, e) {
696
704
  if (n.type === "mock")
697
705
  t[s] = lt(n);
698
706
  else if (n.ref) {
699
- const i = e.$apis[n.ref], a = I(n.transform) ? n.transform.value ? e.__parseFunction(n.transform) : void 0 : n.transform;
707
+ const i = e.$apis[n.ref], a = k(n.transform) ? n.transform.value ? e.__parseFunction(n.transform) : void 0 : n.transform;
700
708
  t[s] = async (...o) => {
701
709
  const c = await i.apply(e, o);
702
710
  return a ? a(c) : c;
@@ -725,7 +733,7 @@ function wt(r, e) {
725
733
  {}
726
734
  );
727
735
  }
728
- let L = [], P = {};
736
+ let L = [], R = {};
729
737
  const St = (r) => r;
730
738
  async function _e(r, e = window) {
731
739
  const { urls: t = [], library: s } = r, n = t.filter((o) => Z(o));
@@ -742,8 +750,8 @@ function W(r) {
742
750
  }), L = []), (n, i, a = x) => {
743
751
  if (!i || typeof i == "string") return n;
744
752
  if (i.type === "Schema" && i.id) {
745
- let o = P[i.id];
746
- return o || (o = P[i.id] = a.defineAsyncComponent(async () => {
753
+ let o = R[i.id];
754
+ return o || (o = R[i.id] = a.defineAsyncComponent(async () => {
747
755
  const c = await e(i.id);
748
756
  return c && (c.name = n), c ? V({
749
757
  ...s,
@@ -755,8 +763,8 @@ function W(r) {
755
763
  }), o);
756
764
  }
757
765
  if (i.type === "UrlSchema" && i.url) {
758
- let o = P[i.url];
759
- return o || (o = P[i.url] = a.defineAsyncComponent(async () => {
766
+ let o = R[i.url];
767
+ return o || (o = R[i.url] = a.defineAsyncComponent(async () => {
760
768
  const c = await t(i.url);
761
769
  return c && (c.name = n), c ? V({
762
770
  ...s,
@@ -768,8 +776,8 @@ function W(r) {
768
776
  }), o);
769
777
  }
770
778
  if (i.type === "Plugin") {
771
- let o = i.library ? P[i.library] : null;
772
- return o || (i.library && L.push(i.library), o = P[i.library || Symbol()] = a.defineAsyncComponent(
779
+ let o = i.library ? R[i.library] : null;
780
+ return o || (i.library && L.push(i.library), o = R[i.library || Symbol()] = a.defineAsyncComponent(
773
781
  async () => {
774
782
  const c = await _e(i, s.window);
775
783
  return c || (console.warn("getPlugin result is null", i), null);
@@ -780,7 +788,7 @@ function W(r) {
780
788
  };
781
789
  }
782
790
  function Zt() {
783
- P = {};
791
+ R = {};
784
792
  }
785
793
  function D(r, e, t = x, s = St) {
786
794
  if (!r || !r.name || r.invisible) return null;
@@ -790,27 +798,27 @@ function D(r, e, t = x, s = St) {
790
798
  const d = (u) => {
791
799
  const w = u.$components, g = (() => {
792
800
  if (r.name === "component")
793
- return Pt(u, r.props?.is);
801
+ return Rt(u, r.props?.is);
794
802
  if (r.name === "slot") return r.name;
795
803
  const j = s(r.name, r.from, t);
796
804
  return $(j) ? Ye(j) || Ze(j) ? j : w[j] ?? n?.app?.component(j) ?? j : j;
797
- })(), S = bt(i, r.props ?? {}, u), be = Rt(t, r.events ?? {}, u);
805
+ })(), S = bt(i, r.props ?? {}, u), be = Pt(t, r.events ?? {}, u);
798
806
  if (r.name === "slot")
799
807
  return At(t, r, S, u, s);
800
808
  p && Object.assign(S, u.__parseExpression(p.value)), l && (S.style = Object.assign(
801
809
  S.style ?? {},
802
810
  Ft(l, u)
803
- )), m && Object.assign(S, kt(m, u)), f.forEach((j) => {
804
- Object.assign(S, It(t, j, u));
811
+ )), m && Object.assign(S, It(m, u)), f.forEach((j) => {
812
+ Object.assign(S, kt(t, j, u));
805
813
  });
806
- const Re = Mt(
814
+ const Pe = Mt(
807
815
  t,
808
816
  r.children ?? [],
809
817
  u,
810
818
  s,
811
819
  r
812
820
  );
813
- let B = t.createVNode(g, { ...S, ...be }, Re);
821
+ let B = t.createVNode(g, { ...S, ...be }, Pe);
814
822
  const te = n ? jt(n, h, u) : [];
815
823
  return te.length && (B = t.withDirectives(B, te)), B;
816
824
  };
@@ -844,7 +852,7 @@ function $t(r = []) {
844
852
  function Et(r, e) {
845
853
  return !!e.__parseExpression(r.value);
846
854
  }
847
- function Pt(r, e) {
855
+ function Rt(r, e) {
848
856
  return e ? _(e) ? r.__parseExpression(e) : e : "div";
849
857
  }
850
858
  function bt(r, e, t) {
@@ -852,7 +860,7 @@ function bt(r, e, t) {
852
860
  return s.ref = t.__ref(r, s.ref), s;
853
861
  }
854
862
  function Q(r, e) {
855
- return _(r) ? e.__parseExpression(r) : I(r) ? e.__parseFunction(r) : Array.isArray(r) ? r.map((t) => Q(t, e)) : typeof r == "object" ? Object.keys(r || {}).reduce(
863
+ return _(r) ? e.__parseExpression(r) : k(r) ? e.__parseFunction(r) : Array.isArray(r) ? r.map((t) => Q(t, e)) : typeof r == "object" ? Object.keys(r || {}).reduce(
856
864
  (t, s) => {
857
865
  let n = r[s];
858
866
  return t[s] = Q(n, e), t;
@@ -860,7 +868,7 @@ function Q(r, e) {
860
868
  {}
861
869
  ) : r;
862
870
  }
863
- function Rt(r, e, t) {
871
+ function Pt(r, e, t) {
864
872
  const s = ["passive", "capture", "once"], n = {
865
873
  capture: "Capture",
866
874
  once: "Once",
@@ -898,12 +906,12 @@ function Ft(r, e) {
898
906
  display: "none"
899
907
  };
900
908
  }
901
- function kt(r, e) {
909
+ function It(r, e) {
902
910
  return {
903
911
  innerHTML: e.__parseExpression(r.value) || ""
904
912
  };
905
913
  }
906
- function It(r, e, t) {
914
+ function kt(r, e, t) {
907
915
  const s = {
908
916
  type: "JSFunction",
909
917
  value: e.value?.value ? `(v) => {
@@ -1038,7 +1046,7 @@ class Bt extends Ae {
1038
1046
  try {
1039
1047
  s = await e.apply(e, t);
1040
1048
  } catch (i) {
1041
- R.warn("模拟数据模版异常", i);
1049
+ P.warn("模拟数据模版异常", i);
1042
1050
  }
1043
1051
  return F()?.mock(s);
1044
1052
  };
@@ -1202,13 +1210,13 @@ class Bt extends Ae {
1202
1210
  async getRenderComponent(e, t) {
1203
1211
  const s = this.getFile(e);
1204
1212
  if (!s)
1205
- return R.warn(`Can not find file: ${e}`), null;
1213
+ return P.warn(`Can not find file: ${e}`), null;
1206
1214
  t && t(s);
1207
1215
  const n = `.vtj/vue/${e}.vue`, i = this.modules[n] || this.modules[`/src/pages/${e}.vue`];
1208
1216
  if (i)
1209
1217
  return (await i())?.default;
1210
1218
  const a = await this.getDsl(s.id);
1211
- return a ? this.createDslRenderer(a).renderer : (R.warn(`Can not find dsl: ${e}`), null);
1219
+ return a ? this.createDslRenderer(a).renderer : (P.warn(`Can not find dsl: ${e}`), null);
1212
1220
  }
1213
1221
  defineUrlSchemaComponent(e, t) {
1214
1222
  return ie(async () => {
@@ -1568,12 +1576,12 @@ function Ee(r, e, t = []) {
1568
1576
  };
1569
1577
  });
1570
1578
  }
1571
- function Pe(r, e) {
1579
+ function Re(r, e) {
1572
1580
  if (!e) return r;
1573
1581
  let t = [];
1574
1582
  for (const s of r)
1575
1583
  if (s.children && s.children.length) {
1576
- const n = Pe(s.children, e);
1584
+ const n = Re(s.children, e);
1577
1585
  n.length && (s.children = n, t.push(s));
1578
1586
  } else
1579
1587
  e.can(s.id.toString()) && t.push(s);
@@ -1606,7 +1614,7 @@ function is(r) {
1606
1614
  logo: p?.logo,
1607
1615
  themeSwitchable: p?.themeSwitchable,
1608
1616
  title: p?.title || l?.description || l?.name || "VTJ App",
1609
- menus: s ? f : Pe(f, a),
1617
+ menus: s ? f : Re(f, a),
1610
1618
  pure: c
1611
1619
  };
1612
1620
  }
@@ -1657,7 +1665,7 @@ export {
1657
1665
  Y as isCSSUrl,
1658
1666
  et as isJSCode,
1659
1667
  _ as isJSExpression,
1660
- I as isJSFunction,
1668
+ k as isJSFunction,
1661
1669
  qe as isJSON,
1662
1670
  Z as isJSUrl,
1663
1671
  Ze as isNativeTag,
@@ -1670,7 +1678,7 @@ export {
1670
1678
  ye as mockCleanup,
1671
1679
  D as nodeRender,
1672
1680
  Ke as parseDeps,
1673
- k as parseExpression,
1681
+ I as parseExpression,
1674
1682
  G as parseFunction,
1675
1683
  Se as providerKey,
1676
1684
  ze as removeProdFlag,
package/package.json CHANGED
@@ -1,18 +1,35 @@
1
1
  {
2
2
  "name": "@vtj/renderer",
3
3
  "private": false,
4
- "version": "0.10.13",
4
+ "version": "0.10.15",
5
5
  "type": "module",
6
+ "keywords": [
7
+ "低代码引擎",
8
+ "LowCode Engine",
9
+ "Vue3低代码",
10
+ "低代码渲染器",
11
+ "低代码设计器",
12
+ "代码生成器",
13
+ "代码可视化"
14
+ ],
15
+ "description": "VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器,面向前端开发者,开箱即用。 无缝嵌入本地开发工程,不改变前端开发流程和编码习惯。",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://gitee.com/newgateway/vtj.git"
19
+ },
20
+ "homepage": "https://gitee.com/newgateway/vtj",
21
+ "author": "chenhuachun",
22
+ "license": "MIT",
6
23
  "dependencies": {
7
- "@vtj/core": "~0.10.13",
8
- "@vtj/utils": "~0.10.13"
24
+ "@vtj/core": "~0.10.15",
25
+ "@vtj/utils": "~0.10.15"
9
26
  },
10
27
  "devDependencies": {
11
28
  "vue": "~3.5.5",
12
29
  "vue-router": "~4.5.0",
13
- "@vtj/cli": "~0.10.2",
14
- "@vtj/icons": "~0.10.13",
15
- "@vtj/ui": "~0.10.13"
30
+ "@vtj/cli": "~0.10.4",
31
+ "@vtj/ui": "~0.10.15",
32
+ "@vtj/icons": "~0.10.15"
16
33
  },
17
34
  "exports": {
18
35
  ".": {
@@ -92,7 +92,10 @@ export declare class Access {
92
92
  options: AccessOptions;
93
93
  private data;
94
94
  private mode?;
95
+ private interceptResponse;
95
96
  constructor(options: Partial<AccessOptions>);
97
+ enableIntercept(): void;
98
+ disableIntercept(): void;
96
99
  connect(params: AccessConnectParams): void;
97
100
  login(data: AccessData | string | string[]): void;
98
101
  clear(): void;
@@ -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.10.12
5
+ * @version 0.10.14
6
6
  * @license <a href="https://vtj.pro/license.html">MIT License</a>
7
7
  */
8
- export declare const version = "0.10.12";
8
+ export declare const version = "0.10.14";
@@ -1,13 +0,0 @@
1
- import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
- export interface Props {
3
- name?: string;
4
- tagline?: string;
5
- actionText?: string;
6
- link?: string | (() => void);
7
- }
8
- declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {
9
- name: string;
10
- tagline: string;
11
- actionText: string;
12
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
13
- export default _default;
@@ -1,2 +0,0 @@
1
- import { default as Startup } from './Startup';
2
- export { Startup };