@vtj/renderer 0.9.24 → 0.9.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +6 -6
- package/dist/index.mjs +605 -601
- package/package.json +6 -6
- package/types/render/loader.d.ts +1 -0
- package/types/version.d.ts +2 -2
package/dist/index.mjs
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
import { Base as Ie, BUILT_IN_COMPONENTS as Me, ProjectModel as O, HistoryModel as
|
2
|
-
import { isUrl as De, url as x, dedupArray as He, isString as j, isFunction as z, logger as P, storage as L, cookie as q, toArray as
|
1
|
+
import { Base as Ie, BUILT_IN_COMPONENTS as Me, ProjectModel as O, HistoryModel as pe } from "@vtj/core";
|
2
|
+
import { isUrl as De, url as x, dedupArray as He, isString as j, isFunction as z, logger as P, storage as L, cookie as q, toArray as oe, unRSA as ie, delay as de, createRequest as fe, jsonp as he, merge as Oe, pathToRegexp as Be, pathToRegexpMatch as Ne, formDataToJson as Ue, camelCase as $, upperFirst as Le, pick as qe, request as K, loadScript as ae, Storage as Je, mapToObject as X } from "@vtj/utils";
|
3
3
|
import * as N from "vue";
|
4
|
-
import { inject as me, toRef as Ve, readonly as ze,
|
5
|
-
import
|
4
|
+
import { inject as me, toRef as Ve, readonly as ze, ref as T, customRef as Ke, onBeforeUnmount as We, unref as Ge, getCurrentScope as Ye, onScopeDispose as Qe, getCurrentInstance as ge, watch as ve, computed as ye, onMounted as Xe, defineComponent as Z, h as W, createElementBlock as Ze, openBlock as et, createElementVNode as E, toDisplayString as J, defineAsyncComponent as ce, watchEffect as tt } from "vue";
|
5
|
+
import R from "mockjs";
|
6
6
|
import { useRoute as _e } from "vue-router";
|
7
7
|
/**!
|
8
8
|
* Copyright (c) 2025, VTJ.PRO All rights reserved.
|
9
9
|
* @name @vtj/renderer
|
10
10
|
* @author CHC chenhuachun1549@dingtalk.com
|
11
|
-
* @version 0.9.
|
11
|
+
* @version 0.9.26
|
12
12
|
* @license <a href="https://vtj.pro/license.html">MIT License</a>
|
13
13
|
*/
|
14
|
-
const C = "0.9.
|
15
|
-
var y = /* @__PURE__ */ ((
|
14
|
+
const C = "0.9.26";
|
15
|
+
var y = /* @__PURE__ */ ((n) => (n.Runtime = "Runtime", n.Design = "Design", n.Raw = "Raw", n.VNode = "VNode", n))(y || {});
|
16
16
|
const le = [
|
17
17
|
"$el",
|
18
18
|
"$emit",
|
@@ -25,7 +25,7 @@ const le = [
|
|
25
25
|
"$props",
|
26
26
|
"$options",
|
27
27
|
"$forceUpdate"
|
28
|
-
],
|
28
|
+
], xs = [
|
29
29
|
"beforeCreate",
|
30
30
|
"created",
|
31
31
|
"beforeMount",
|
@@ -39,14 +39,14 @@ const le = [
|
|
39
39
|
"renderTriggered",
|
40
40
|
"activated",
|
41
41
|
"deactivated"
|
42
|
-
],
|
42
|
+
], st = [
|
43
43
|
"vIf",
|
44
44
|
"vShow",
|
45
45
|
"vModel",
|
46
46
|
"vFor",
|
47
47
|
"vBind",
|
48
48
|
"vHtml"
|
49
|
-
],
|
49
|
+
], nt = {
|
50
50
|
String,
|
51
51
|
Number,
|
52
52
|
Boolean,
|
@@ -56,144 +56,144 @@ const le = [
|
|
56
56
|
Date
|
57
57
|
}, F = "VtjPage", H = "VtjHomepage", rt = "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(
|
58
58
|
","
|
59
|
-
),
|
60
|
-
function M(
|
61
|
-
return
|
59
|
+
), ot = "component,slot".split(",");
|
60
|
+
function M(n, e) {
|
61
|
+
return n.map((t) => De(t) || t.startsWith("/") ? t : `${e}${t}`);
|
62
62
|
}
|
63
|
-
function ee(
|
64
|
-
return /\.css$/.test(
|
63
|
+
function ee(n) {
|
64
|
+
return /\.css$/.test(n);
|
65
65
|
}
|
66
|
-
function te(
|
67
|
-
return /\.js$/.test(
|
66
|
+
function te(n) {
|
67
|
+
return /\.js$/.test(n);
|
68
68
|
}
|
69
|
-
function
|
70
|
-
return /\.json$/.test(
|
69
|
+
function it(n) {
|
70
|
+
return /\.json$/.test(n);
|
71
71
|
}
|
72
|
-
function
|
73
|
-
return
|
72
|
+
function Ps(n) {
|
73
|
+
return n.map(
|
74
74
|
(e) => `<script src="${x.append(e, { v: C })}"><\/script>`
|
75
75
|
).join("");
|
76
76
|
}
|
77
|
-
function
|
78
|
-
return
|
77
|
+
function Cs(n = []) {
|
78
|
+
return n.map(
|
79
79
|
(e) => `<link rel="stylesheet" href="${x.append(e, { v: C })}" />`
|
80
80
|
).join("");
|
81
81
|
}
|
82
|
-
function at(
|
83
|
-
return e &&
|
82
|
+
function at(n, e = !1) {
|
83
|
+
return e && n.endsWith(".prod.js") ? n.replace(".prod.js", ".js") : n;
|
84
84
|
}
|
85
|
-
function ct(
|
86
|
-
const
|
87
|
-
return
|
88
|
-
({ urls:
|
89
|
-
|
90
|
-
te(g) && r.push(at(g, t)), ee(g) &&
|
91
|
-
}), m && (
|
85
|
+
function ct(n, e, t = !1) {
|
86
|
+
const s = n.filter((p) => !!p.enabled), r = [], o = [], a = [], i = [], c = {}, l = {}, f = [], u = {};
|
87
|
+
return s.forEach(
|
88
|
+
({ urls: p, assetsUrl: h, library: m, assetsLibrary: d, localeLibrary: w }) => {
|
89
|
+
p?.forEach((g) => {
|
90
|
+
te(g) && r.push(at(g, t)), ee(g) && o.push(g);
|
91
|
+
}), m && (i.push(m), c[m] = M(p || [], e), w && (l[m] = w)), h && a.push(h), d && f.push(d), m && d && (u[d] = m);
|
92
92
|
}
|
93
93
|
), {
|
94
94
|
scripts: M(r, e),
|
95
|
-
css: M(
|
95
|
+
css: M(o, e),
|
96
96
|
materials: M(a, e),
|
97
|
-
libraryExports:
|
97
|
+
libraryExports: i,
|
98
98
|
materialExports: He(f),
|
99
99
|
materialMapLibrary: u,
|
100
100
|
libraryMap: c,
|
101
101
|
libraryLocaleMap: l
|
102
102
|
};
|
103
103
|
}
|
104
|
-
function lt(
|
105
|
-
const { name: t, parent:
|
106
|
-
return
|
104
|
+
function lt(n, e) {
|
105
|
+
const { name: t, parent: s, alias: r } = n;
|
106
|
+
return s ? e[s]?.[r || t] : e[r || t];
|
107
107
|
}
|
108
|
-
function we(
|
109
|
-
return j(
|
108
|
+
function we(n) {
|
109
|
+
return j(n) ? n : JSON.stringify(n);
|
110
110
|
}
|
111
|
-
function Se(
|
112
|
-
const
|
113
|
-
if (
|
114
|
-
const r = new
|
111
|
+
function Se(n, e, t) {
|
112
|
+
const s = n.CSSStyleSheet;
|
113
|
+
if (s.prototype.replaceSync) {
|
114
|
+
const r = new s();
|
115
115
|
r.id = e, r.replaceSync(t);
|
116
|
-
const
|
116
|
+
const o = n.document, a = o.adoptedStyleSheets, i = Array.from(a).filter(
|
117
117
|
(c) => c.id !== e
|
118
118
|
);
|
119
|
-
|
119
|
+
o.adoptedStyleSheets = [...i, r];
|
120
120
|
} else {
|
121
|
-
const r =
|
122
|
-
let
|
123
|
-
|
121
|
+
const r = n.document;
|
122
|
+
let o = r.getElementById(e);
|
123
|
+
o ? o.innerHTML = t : (o = r.createElement("style"), o.id = e, o.innerHTML = t, r.head.appendChild(o));
|
124
124
|
}
|
125
125
|
}
|
126
|
-
async function ut(
|
127
|
-
const t = await window.fetch(e).then((
|
128
|
-
t && Se(window,
|
126
|
+
async function ut(n, e) {
|
127
|
+
const t = await window.fetch(e).then((s) => s.text()).catch(() => "");
|
128
|
+
t && Se(window, n, t);
|
129
129
|
}
|
130
|
-
function
|
131
|
-
const t = e.document,
|
132
|
-
for (const r of
|
130
|
+
function pt(n, e = window) {
|
131
|
+
const t = e.document, s = e.document.head;
|
132
|
+
for (const r of n)
|
133
133
|
if (!t.getElementById(r)) {
|
134
134
|
const a = t.createElement("link");
|
135
|
-
a.rel = "stylesheet", a.id = r, a.href = r,
|
135
|
+
a.rel = "stylesheet", a.id = r, a.href = r, s.appendChild(a);
|
136
136
|
}
|
137
137
|
}
|
138
|
-
async function
|
139
|
-
const
|
140
|
-
let
|
141
|
-
return
|
142
|
-
for (const c of
|
143
|
-
const l =
|
138
|
+
async function dt(n, e, t = window) {
|
139
|
+
const s = t.document, r = t.document.head;
|
140
|
+
let o = t[e];
|
141
|
+
return o ? o.default || o : new Promise((a, i) => {
|
142
|
+
for (const c of n) {
|
143
|
+
const l = s.createElement("script");
|
144
144
|
l.src = c, l.onload = () => {
|
145
|
-
|
145
|
+
o = t[e], o ? a(o.default || o) : i(null);
|
146
146
|
}, l.onerror = (f) => {
|
147
|
-
|
147
|
+
i(f);
|
148
148
|
}, r.appendChild(l);
|
149
149
|
}
|
150
150
|
});
|
151
151
|
}
|
152
|
-
function ft(
|
153
|
-
return z(
|
152
|
+
function ft(n) {
|
153
|
+
return z(n) || z(n?.install);
|
154
154
|
}
|
155
|
-
function ht(
|
156
|
-
return
|
155
|
+
function ht(n) {
|
156
|
+
return ot.includes(n);
|
157
157
|
}
|
158
|
-
function mt(
|
159
|
-
return rt.includes(
|
158
|
+
function mt(n) {
|
159
|
+
return rt.includes(n);
|
160
160
|
}
|
161
|
-
function A(
|
161
|
+
function A(n, e, t = !1, s = !1) {
|
162
162
|
try {
|
163
163
|
const r = ['"use strict";', "var __self = arguments[0];"];
|
164
164
|
r.push("return ");
|
165
|
-
let
|
166
|
-
|
167
|
-
`) +
|
168
|
-
const a = `with(${t ? "{}" : "$scope || {}"}) { ${
|
165
|
+
let o = (n.value || "").trim();
|
166
|
+
o = o.replace(/this(\W|$)/g, (i, c) => `__self${c}`), o = r.join(`
|
167
|
+
`) + o;
|
168
|
+
const a = `with(${t ? "{}" : "$scope || {}"}) { ${o} }`;
|
169
169
|
return new Function("$scope", a)(e);
|
170
170
|
} catch (r) {
|
171
|
-
if (P.error("parseExpression.error", r,
|
171
|
+
if (P.error("parseExpression.error", r, n, e?.__self ?? e), s)
|
172
172
|
throw r;
|
173
173
|
}
|
174
174
|
}
|
175
|
-
function G(
|
176
|
-
const r = A(
|
175
|
+
function G(n, e, t = !1, s = !1) {
|
176
|
+
const r = A(n, e, t, s);
|
177
177
|
if (typeof r != "function" && (P.error(
|
178
178
|
"parseFunction.error",
|
179
179
|
"not a function",
|
180
|
-
|
180
|
+
n,
|
181
181
|
e?.__self ?? e
|
182
|
-
),
|
183
|
-
throw new Error(`"${
|
182
|
+
), s))
|
183
|
+
throw new Error(`"${n.value}" not a function`);
|
184
184
|
return r;
|
185
185
|
}
|
186
|
-
function _(
|
187
|
-
return
|
186
|
+
function _(n) {
|
187
|
+
return n && n.type === "JSExpression";
|
188
188
|
}
|
189
|
-
function I(
|
190
|
-
return typeof
|
189
|
+
function I(n) {
|
190
|
+
return typeof n == "object" && n && n.type === "JSFunction";
|
191
191
|
}
|
192
|
-
function gt(
|
193
|
-
return _(
|
192
|
+
function gt(n) {
|
193
|
+
return _(n) || I(n);
|
194
194
|
}
|
195
|
-
function
|
196
|
-
return gt(
|
195
|
+
function Fs(n) {
|
196
|
+
return gt(n) ? n.value : JSON.stringify(n);
|
197
197
|
}
|
198
198
|
const vt = {
|
199
199
|
session: !1,
|
@@ -208,7 +208,7 @@ const vt = {
|
|
208
208
|
noPermissionMessage: "无权限访问该页面",
|
209
209
|
appName: ""
|
210
210
|
}, be = Symbol("access");
|
211
|
-
class
|
211
|
+
class Ts {
|
212
212
|
options;
|
213
213
|
data = null;
|
214
214
|
mode = y.Raw;
|
@@ -216,22 +216,22 @@ class An {
|
|
216
216
|
this.options = Object.assign({}, vt, e), this.loadData();
|
217
217
|
}
|
218
218
|
connect(e) {
|
219
|
-
const { mode: t, router:
|
220
|
-
this.mode = t,
|
219
|
+
const { mode: t, router: s, request: r } = e;
|
220
|
+
this.mode = t, s && this.mode === y.Raw && this.setGuard(s), r && this.setRequest(r);
|
221
221
|
}
|
222
222
|
login(e) {
|
223
|
-
const { storageKey: t, storagePrefix:
|
223
|
+
const { storageKey: t, storagePrefix: s, session: r, authKey: o } = this.options;
|
224
224
|
this.setData(e), this.data && (L.save(t, e, {
|
225
225
|
type: "local",
|
226
|
-
prefix:
|
227
|
-
}), r && q.set(
|
226
|
+
prefix: s
|
227
|
+
}), r && q.set(o, this.data.token));
|
228
228
|
}
|
229
229
|
clear() {
|
230
|
-
const { storageKey: e, storagePrefix: t, session:
|
230
|
+
const { storageKey: e, storagePrefix: t, session: s, authKey: r } = this.options;
|
231
231
|
this.data = null, L.remove(e, {
|
232
232
|
type: "local",
|
233
233
|
prefix: t
|
234
|
-
}),
|
234
|
+
}), s && q.remove(r);
|
235
235
|
}
|
236
236
|
logout() {
|
237
237
|
this.clear(), this.toLogin();
|
@@ -243,20 +243,20 @@ class An {
|
|
243
243
|
return this.data || this.loadData(), this.data?.token;
|
244
244
|
}
|
245
245
|
can(e) {
|
246
|
-
const { appName: t } = this.options, { permissions:
|
247
|
-
return typeof e == "function" ? e(
|
246
|
+
const { appName: t } = this.options, { permissions: s = {} } = this.data || {};
|
247
|
+
return typeof e == "function" ? e(s) : oe(e).every((o) => s[o] || s[t + "." + o]);
|
248
248
|
}
|
249
249
|
some(e) {
|
250
|
-
const { appName: t } = this.options, { permissions:
|
251
|
-
return
|
250
|
+
const { appName: t } = this.options, { permissions: s = {} } = this.data || {};
|
251
|
+
return oe(e).some((o) => s[o] || s[t + "." + o]);
|
252
252
|
}
|
253
253
|
install(e) {
|
254
254
|
e.config.globalProperties.$access || (e.config.globalProperties.$access = this), e.provide(be, this);
|
255
255
|
}
|
256
256
|
isAuthPath(e) {
|
257
|
-
const { auth: t, isAuth:
|
258
|
-
if (
|
259
|
-
return
|
257
|
+
const { auth: t, isAuth: s } = this.options;
|
258
|
+
if (s)
|
259
|
+
return s(e);
|
260
260
|
if (e.path && typeof t == "string") {
|
261
261
|
const r = t.split("#")[1] || t;
|
262
262
|
return e.path === r;
|
@@ -266,32 +266,32 @@ class An {
|
|
266
266
|
toLogin() {
|
267
267
|
const { auth: e, redirectParam: t } = this.options;
|
268
268
|
if (!e) return;
|
269
|
-
const
|
270
|
-
typeof e == "function" ? e(
|
269
|
+
const s = t ? `?${t}=${encodeURIComponent(location.href)}` : "";
|
270
|
+
typeof e == "function" ? e(s) : location.href = t ? `${e}${s}` : e;
|
271
271
|
}
|
272
272
|
setData(e) {
|
273
273
|
const { privateKey: t } = this.options;
|
274
274
|
if (Array.isArray(e) && t) {
|
275
|
-
const
|
276
|
-
this.data = JSON.parse(
|
275
|
+
const s = e.map((r) => ie(r, t));
|
276
|
+
this.data = JSON.parse(s.join(""));
|
277
277
|
return;
|
278
278
|
}
|
279
279
|
if (typeof e == "string")
|
280
280
|
try {
|
281
|
-
const
|
282
|
-
|
283
|
-
} catch (
|
284
|
-
console.warn(
|
281
|
+
const s = t ? ie(e, t) : e;
|
282
|
+
s ? this.data = JSON.parse(s) : console.warn("RSA解密失败或登录信息缺失");
|
283
|
+
} catch (s) {
|
284
|
+
console.warn(s);
|
285
285
|
}
|
286
286
|
else
|
287
287
|
this.data = e;
|
288
288
|
}
|
289
289
|
loadData() {
|
290
|
-
const { storageKey: e, storagePrefix: t } = this.options,
|
290
|
+
const { storageKey: e, storagePrefix: t } = this.options, s = L.get(e, {
|
291
291
|
type: "local",
|
292
292
|
prefix: t
|
293
293
|
});
|
294
|
-
this.setData(
|
294
|
+
this.setData(s || null);
|
295
295
|
}
|
296
296
|
isLogined() {
|
297
297
|
const { session: e, authKey: t } = this.options;
|
@@ -305,7 +305,7 @@ class An {
|
|
305
305
|
return !0;
|
306
306
|
}
|
307
307
|
setGuard(e) {
|
308
|
-
e.beforeEach((t,
|
308
|
+
e.beforeEach((t, s, r) => this.guard(t, r));
|
309
309
|
}
|
310
310
|
async guard(e, t) {
|
311
311
|
if (this.isWhiteList(e) || this.isAuthPath(e))
|
@@ -314,15 +314,15 @@ class An {
|
|
314
314
|
if (this.hasRoutePermission(e))
|
315
315
|
return t();
|
316
316
|
{
|
317
|
-
const { noPermissionMessage:
|
318
|
-
return await this.showTip(
|
317
|
+
const { noPermissionMessage: s = "无权限访问", unauthorized: r = !1 } = this.options;
|
318
|
+
return await this.showTip(s), z(r) ? (r(), t(!1)) : j(r) ? t(r) : t(!1);
|
319
319
|
}
|
320
320
|
}
|
321
321
|
t(!1), this.toLogin();
|
322
322
|
}
|
323
323
|
isWhiteList(e) {
|
324
324
|
const { whiteList: t } = this.options;
|
325
|
-
return t ? Array.isArray(t) ? t.some((
|
325
|
+
return t ? Array.isArray(t) ? t.some((s) => e.fullPath.startsWith(s)) : t(e) : !1;
|
326
326
|
}
|
327
327
|
isUnauthorized(e) {
|
328
328
|
const { unauthorizedCode: t = 401 } = this.options;
|
@@ -334,7 +334,7 @@ class An {
|
|
334
334
|
}
|
335
335
|
async showTip(e) {
|
336
336
|
const { alert: t } = this.options;
|
337
|
-
return t ? (await
|
337
|
+
return t ? (await de(150), await t(e, {
|
338
338
|
title: "提示",
|
339
339
|
type: "warning"
|
340
340
|
}).catch(() => !1)) : !1;
|
@@ -343,8 +343,8 @@ class An {
|
|
343
343
|
e.useRequest((t) => (this.data?.token && (t.headers[this.options.authKey] = this.data?.token), t)), e.useResponse(
|
344
344
|
async (t) => (await this.showUnauthorizedAlert(t), t),
|
345
345
|
async (t) => {
|
346
|
-
const
|
347
|
-
return await this.showUnauthorizedAlert(
|
346
|
+
const s = t.response || t || {};
|
347
|
+
return await this.showUnauthorizedAlert(s), Promise.reject(t);
|
348
348
|
}
|
349
349
|
);
|
350
350
|
}
|
@@ -352,8 +352,8 @@ class An {
|
|
352
352
|
function yt() {
|
353
353
|
return me(be, null);
|
354
354
|
}
|
355
|
-
function
|
356
|
-
const { notify: e, loading: t, settings:
|
355
|
+
function As(n = {}) {
|
356
|
+
const { notify: e, loading: t, settings: s = {} } = n;
|
357
357
|
let r = null;
|
358
358
|
return {
|
359
359
|
request: fe({
|
@@ -373,7 +373,7 @@ function In(s = {}) {
|
|
373
373
|
hideLoading: () => {
|
374
374
|
r && (r.close(), r = null);
|
375
375
|
},
|
376
|
-
...
|
376
|
+
...s
|
377
377
|
}
|
378
378
|
}),
|
379
379
|
jsonp: he,
|
@@ -381,74 +381,74 @@ function In(s = {}) {
|
|
381
381
|
loading: t
|
382
382
|
};
|
383
383
|
}
|
384
|
-
function _t(
|
385
|
-
const { jsonp: t, request:
|
386
|
-
if (
|
387
|
-
return (r = {}) => t(
|
388
|
-
...
|
384
|
+
function _t(n, e) {
|
385
|
+
const { jsonp: t, request: s } = e;
|
386
|
+
if (n.method === "jsonp")
|
387
|
+
return (r = {}) => t(n.url, {
|
388
|
+
...n.jsonpOptions,
|
389
389
|
query: r
|
390
390
|
});
|
391
391
|
{
|
392
|
-
const r =
|
393
|
-
url:
|
394
|
-
method:
|
392
|
+
const r = n.headers ? A(n.headers, {}, !0) : void 0, o = {
|
393
|
+
url: n.url,
|
394
|
+
method: n.method,
|
395
395
|
settings: {
|
396
|
-
...
|
396
|
+
...n.settings,
|
397
397
|
headers: r
|
398
398
|
}
|
399
399
|
};
|
400
|
-
return (a,
|
400
|
+
return (a, i) => (delete o.data, s.send(Oe(o, i || {}, { data: a })));
|
401
401
|
}
|
402
402
|
}
|
403
|
-
function wt(
|
403
|
+
function wt(n, e) {
|
404
404
|
const { metaQuery: t } = e;
|
405
405
|
if (!t) return;
|
406
|
-
const { code:
|
407
|
-
return (
|
406
|
+
const { code: s, queryCode: r } = n;
|
407
|
+
return (o, a) => {
|
408
408
|
if (!t) {
|
409
409
|
console.warn("adapter.metaQuery is not defined!");
|
410
410
|
return;
|
411
411
|
}
|
412
|
-
return t(
|
412
|
+
return t(s, r, o, a);
|
413
413
|
};
|
414
414
|
}
|
415
|
-
function St(
|
416
|
-
const
|
417
|
-
for (const r of
|
418
|
-
|
415
|
+
function St(n = [], e = [], t) {
|
416
|
+
const s = {};
|
417
|
+
for (const r of n)
|
418
|
+
s[r.id] = _t(r, t);
|
419
419
|
for (const r of e)
|
420
|
-
|
421
|
-
return
|
420
|
+
s[r.id] = wt(r, t);
|
421
|
+
return s;
|
422
422
|
}
|
423
|
-
async function bt(
|
424
|
-
|
423
|
+
async function bt(n = []) {
|
424
|
+
R && (je(), n.forEach((e) => $t(R, e)));
|
425
425
|
}
|
426
|
-
function jt(
|
427
|
-
const e = I(
|
426
|
+
function jt(n) {
|
427
|
+
const e = I(n.mockTemplate) && n.mockTemplate.value ? G(n.mockTemplate, {}, !0) : void 0;
|
428
428
|
return async (...t) => {
|
429
|
-
let
|
429
|
+
let s = {};
|
430
430
|
if (e)
|
431
431
|
try {
|
432
|
-
|
432
|
+
s = await e.apply(e, t);
|
433
433
|
} catch (r) {
|
434
434
|
P.warn("模拟数据模版异常", r);
|
435
435
|
}
|
436
|
-
return
|
436
|
+
return R.mock(s);
|
437
437
|
};
|
438
438
|
}
|
439
|
-
function $t(
|
439
|
+
function $t(n, e) {
|
440
440
|
if (!e.mock) return;
|
441
|
-
const { url: t, mockTemplate:
|
442
|
-
if (t &&
|
443
|
-
const r = Be(`${t}(.*)`),
|
444
|
-
|
445
|
-
const c = x.parse(
|
446
|
-
return Object.assign(
|
441
|
+
const { url: t, mockTemplate: s } = e;
|
442
|
+
if (t && s) {
|
443
|
+
const r = Be(`${t}(.*)`), o = Ne(t, { decode: decodeURIComponent }), a = A(s, {}, !0);
|
444
|
+
n.mock(r, (i) => {
|
445
|
+
const c = x.parse(i.url) || {}, l = i.body instanceof FormData ? Ue(i.body) : i.body, f = o(i.url)?.params;
|
446
|
+
return Object.assign(i, { data: l, params: c, query: f }), n.mock(a(i));
|
447
447
|
});
|
448
448
|
}
|
449
449
|
}
|
450
450
|
function je() {
|
451
|
-
|
451
|
+
R && (R._mocked = {});
|
452
452
|
}
|
453
453
|
class Et {
|
454
454
|
__id = null;
|
@@ -476,14 +476,14 @@ class Et {
|
|
476
476
|
$apis = {};
|
477
477
|
__transform = {};
|
478
478
|
constructor(e) {
|
479
|
-
const { mode: t, dsl:
|
480
|
-
this.__mode = t,
|
479
|
+
const { mode: t, dsl: s, attrs: r } = e;
|
480
|
+
this.__mode = t, s && (this.__id = s.id || null, this.__transform = s.transform || {}), r && Object.assign(this, r);
|
481
481
|
}
|
482
482
|
setup(e, t = N) {
|
483
|
-
const
|
484
|
-
if (!
|
485
|
-
this.__refs = {}, this.$refs = {}, this.context = {}, this.__contextRefs = {}, this.__instance =
|
486
|
-
const r =
|
483
|
+
const s = t.getCurrentInstance();
|
484
|
+
if (!s) return;
|
485
|
+
this.__refs = {}, this.$refs = {}, this.context = {}, this.__contextRefs = {}, this.__instance = s.proxy;
|
486
|
+
const r = s.appContext.config.globalProperties;
|
487
487
|
Object.assign(this, r), Object.assign(this, e || {}), this.__proxy(), t.onMounted(() => {
|
488
488
|
this.__proxy();
|
489
489
|
}), t.onUnmounted(() => {
|
@@ -508,166 +508,166 @@ class Et {
|
|
508
508
|
__parseFunction(e) {
|
509
509
|
if (e)
|
510
510
|
if (this.__mode === y.Runtime) {
|
511
|
-
const { id: t, type:
|
512
|
-
return G({ type:
|
511
|
+
const { id: t, type: s } = e, r = t ? this.__transform[t] ?? e.value : e.value;
|
512
|
+
return G({ type: s, value: r }, this);
|
513
513
|
} else
|
514
514
|
return G(e, this);
|
515
515
|
}
|
516
516
|
__parseExpression(e) {
|
517
517
|
if (e)
|
518
518
|
if (this.__mode === y.Runtime) {
|
519
|
-
const { id: t, type:
|
520
|
-
return A({ type:
|
519
|
+
const { id: t, type: s } = e, r = t ? this.__transform[t] ?? e.value : e.value;
|
520
|
+
return A({ type: s, value: r }, this);
|
521
521
|
} else
|
522
522
|
return A(e, this);
|
523
523
|
}
|
524
524
|
__ref(e = null, t) {
|
525
525
|
if (this.__mode !== y.VNode)
|
526
|
-
return e && e !== this.__id && (this.__contextRefs[e] = this), async (
|
527
|
-
await
|
528
|
-
let r =
|
526
|
+
return e && e !== this.__id && (this.__contextRefs[e] = this), async (s) => {
|
527
|
+
await de(0);
|
528
|
+
let r = s?.$vtjEl || s?.$el || s?._?.vnode?.el || s;
|
529
529
|
if (!r) {
|
530
530
|
typeof t == "string" && (delete this.$refs[t], e && delete this.__refs[e]);
|
531
531
|
return;
|
532
532
|
}
|
533
|
-
return r.nodeType === 3 && r.nextSibling && (r = r.nextSibling), r.__vtj__ = e, y.Design === this.__mode && (r.__context__ = this, r.draggable = !0), e && (this.__refs[e] = this.__getRefEl(this.__refs, e,
|
533
|
+
return r.nodeType === 3 && r.nextSibling && (r = r.nextSibling), r.__vtj__ = e, y.Design === this.__mode && (r.__context__ = this, r.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;
|
534
534
|
};
|
535
535
|
}
|
536
|
-
__getRefEl(e, t,
|
536
|
+
__getRefEl(e, t, s) {
|
537
537
|
const r = e[t];
|
538
|
-
if (r &&
|
539
|
-
const
|
540
|
-
return Array.from(
|
538
|
+
if (r && s !== r) {
|
539
|
+
const o = new Set([].concat(r, s));
|
540
|
+
return Array.from(o);
|
541
541
|
} else
|
542
|
-
return
|
542
|
+
return s;
|
543
543
|
}
|
544
544
|
__clone(e = {}) {
|
545
|
-
const t = { ...this.context, ...e },
|
545
|
+
const t = { ...this.context, ...e }, s = {
|
546
546
|
...t,
|
547
547
|
context: t
|
548
548
|
};
|
549
|
-
return
|
549
|
+
return s.context.__proto__ = this.context, s.__proto__ = this, s;
|
550
550
|
}
|
551
551
|
}
|
552
|
-
function Y(
|
552
|
+
function Y(n) {
|
553
553
|
const {
|
554
554
|
Vue: e = N,
|
555
555
|
mode: t = y.Runtime,
|
556
|
-
components:
|
556
|
+
components: s = {},
|
557
557
|
libs: r = {},
|
558
|
-
apis:
|
558
|
+
apis: o = {},
|
559
559
|
loader: a
|
560
|
-
} =
|
561
|
-
$components:
|
560
|
+
} = n, i = e.computed(() => n.dsl), c = {
|
561
|
+
$components: s,
|
562
562
|
$libs: r,
|
563
|
-
$apis:
|
563
|
+
$apis: o
|
564
564
|
}, l = new Et({
|
565
565
|
mode: t,
|
566
|
-
dsl:
|
566
|
+
dsl: i.value,
|
567
567
|
attrs: c
|
568
568
|
}), f = e.defineComponent({
|
569
|
-
name:
|
569
|
+
name: i.value.name,
|
570
570
|
props: {
|
571
|
-
...Rt(
|
571
|
+
...Rt(i.value.props ?? [], l)
|
572
572
|
},
|
573
573
|
setup(u) {
|
574
|
-
l.$props = u, l.props = u,
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
), l.state = xt(e,
|
579
|
-
const
|
580
|
-
|
574
|
+
l.$props = u, l.props = u, i.value.id && Se(
|
575
|
+
n.window || window,
|
576
|
+
i.value.id,
|
577
|
+
i.value.css || ""
|
578
|
+
), l.state = xt(e, i.value.state ?? {}, l);
|
579
|
+
const p = Pt(e, i.value.computed ?? {}, l), h = Ct(i.value.methods ?? {}, l), m = Ft(e, i.value.inject, l), d = Tt(
|
580
|
+
i.value.dataSources || {},
|
581
581
|
l
|
582
582
|
), w = {
|
583
583
|
...m,
|
584
|
-
...
|
584
|
+
...p,
|
585
585
|
...h,
|
586
|
-
...
|
586
|
+
...d
|
587
587
|
};
|
588
|
-
return l.setup(w, e), At(e,
|
588
|
+
return l.setup(w, e), At(e, i.value.watch ?? [], l), {
|
589
589
|
vtj: l
|
590
590
|
};
|
591
591
|
},
|
592
|
-
emits: kt(
|
592
|
+
emits: kt(i.value.emits),
|
593
593
|
expose: ["vtj"],
|
594
594
|
render() {
|
595
|
-
if (!
|
596
|
-
const u =
|
597
|
-
return u.length === 1 ? B(u[0], l, e, a) : u.map((
|
595
|
+
if (!i.value.nodes) return null;
|
596
|
+
const u = i.value.nodes || [];
|
597
|
+
return u.length === 1 ? B(u[0], l, e, a) : u.map((p) => B(p, l, e, a));
|
598
598
|
},
|
599
|
-
...It(
|
599
|
+
...It(i.value.lifeCycles ?? {}, l)
|
600
600
|
});
|
601
601
|
return {
|
602
602
|
renderer: e.markRaw(f),
|
603
603
|
context: l
|
604
604
|
};
|
605
605
|
}
|
606
|
-
function kt(
|
607
|
-
return
|
606
|
+
function kt(n = []) {
|
607
|
+
return n.map((e) => j(e) ? e : e.name);
|
608
608
|
}
|
609
|
-
function Rt(
|
610
|
-
const t = (
|
611
|
-
return
|
612
|
-
name:
|
609
|
+
function Rt(n = [], e) {
|
610
|
+
const t = (s) => s ? (Array.isArray(s) ? s : [s]).map((o) => nt[o]) : void 0;
|
611
|
+
return n.map((s) => j(s) ? {
|
612
|
+
name: s
|
613
613
|
} : {
|
614
|
-
name:
|
615
|
-
type:
|
616
|
-
required:
|
617
|
-
default: _(
|
614
|
+
name: s.name,
|
615
|
+
type: s.type,
|
616
|
+
required: s.required,
|
617
|
+
default: _(s.default) ? e.__parseExpression(s.default) : s.default
|
618
618
|
}).reduce(
|
619
|
-
(
|
619
|
+
(s, r) => (s[r.name] = {
|
620
620
|
type: t(r.type),
|
621
621
|
required: r.required,
|
622
622
|
default: r.default
|
623
|
-
},
|
623
|
+
}, s),
|
624
624
|
{}
|
625
625
|
);
|
626
626
|
}
|
627
|
-
function xt(
|
628
|
-
return
|
627
|
+
function xt(n, e, t) {
|
628
|
+
return n.reactive(
|
629
629
|
Object.keys(e || {}).reduce(
|
630
|
-
(
|
631
|
-
let
|
632
|
-
return _(
|
630
|
+
(s, r) => {
|
631
|
+
let o = e[r];
|
632
|
+
return _(o) ? o = t.__parseExpression(o) : I(o) && (o = t.__parseFunction(o)), s[r] = o, s;
|
633
633
|
},
|
634
634
|
{}
|
635
635
|
)
|
636
636
|
);
|
637
637
|
}
|
638
|
-
function Pt(
|
638
|
+
function Pt(n, e, t) {
|
639
639
|
return Object.entries(e ?? {}).reduce(
|
640
|
-
(
|
640
|
+
(s, [r, o]) => (s[r] = n.computed(t.__parseFunction(o)), s),
|
641
641
|
{}
|
642
642
|
);
|
643
643
|
}
|
644
|
-
function Ct(
|
645
|
-
return Object.entries(
|
646
|
-
(t, [
|
644
|
+
function Ct(n, e) {
|
645
|
+
return Object.entries(n ?? {}).reduce(
|
646
|
+
(t, [s, r]) => (t[s] = e.__parseFunction(r), t),
|
647
647
|
{}
|
648
648
|
);
|
649
649
|
}
|
650
|
-
function Ft(
|
650
|
+
function Ft(n, e = [], t) {
|
651
651
|
return e.reduce(
|
652
|
-
(
|
653
|
-
const { name:
|
652
|
+
(s, r) => {
|
653
|
+
const { name: o, from: a } = r || {};
|
654
654
|
r.default;
|
655
|
-
const
|
656
|
-
return
|
655
|
+
const i = _(a) ? t.__parseExpression(a) || o : a ?? o, c = _(r.default) ? t.__parseExpression(r.default) : r.default ?? null;
|
656
|
+
return s[o] = n.inject(i, c), s;
|
657
657
|
},
|
658
658
|
{}
|
659
659
|
);
|
660
660
|
}
|
661
|
-
function Tt(
|
662
|
-
return Object.keys(
|
663
|
-
(t,
|
664
|
-
const r = s
|
661
|
+
function Tt(n, e) {
|
662
|
+
return Object.keys(n).reduce(
|
663
|
+
(t, s) => {
|
664
|
+
const r = n[s];
|
665
665
|
if (r.type === "mock")
|
666
|
-
t[
|
666
|
+
t[s] = jt(r);
|
667
667
|
else if (r.ref) {
|
668
|
-
const
|
669
|
-
t[
|
670
|
-
const c = await
|
668
|
+
const o = e.$apis[r.ref], a = I(r.transform) ? r.transform.value ? e.__parseFunction(r.transform) : void 0 : r.transform;
|
669
|
+
t[s] = async (...i) => {
|
670
|
+
const c = await o.apply(e, i);
|
671
671
|
return a ? a(c) : c;
|
672
672
|
};
|
673
673
|
}
|
@@ -676,211 +676,214 @@ function Tt(s, e) {
|
|
676
676
|
{}
|
677
677
|
);
|
678
678
|
}
|
679
|
-
function At(
|
680
|
-
e.forEach((
|
681
|
-
|
682
|
-
t.__parseExpression(
|
683
|
-
t.__parseFunction(
|
679
|
+
function At(n, e = [], t) {
|
680
|
+
e.forEach((s) => {
|
681
|
+
n.watch(
|
682
|
+
t.__parseExpression(s.source),
|
683
|
+
t.__parseFunction(s.handler),
|
684
684
|
{
|
685
|
-
deep:
|
686
|
-
immediate:
|
685
|
+
deep: s.deep,
|
686
|
+
immediate: s.immediate
|
687
687
|
}
|
688
688
|
);
|
689
689
|
});
|
690
690
|
}
|
691
|
-
function It(
|
692
|
-
return Object.entries(
|
693
|
-
(t, [
|
691
|
+
function It(n, e) {
|
692
|
+
return Object.entries(n ?? {}).reduce(
|
693
|
+
(t, [s, r]) => (t[s] = e.__parseFunction(r), t),
|
694
694
|
{}
|
695
695
|
);
|
696
696
|
}
|
697
|
-
let V = [],
|
698
|
-
const Mt = (
|
699
|
-
async function $e(
|
700
|
-
const { urls: t = [], library:
|
701
|
-
if (r.length === 0 || !
|
702
|
-
const
|
703
|
-
return
|
704
|
-
(
|
697
|
+
let V = [], k = {};
|
698
|
+
const Mt = (n) => n;
|
699
|
+
async function $e(n, e = window) {
|
700
|
+
const { urls: t = [], library: s } = n, r = t.filter((i) => te(i));
|
701
|
+
if (r.length === 0 || !s) return null;
|
702
|
+
const o = t.filter((i) => ee(i));
|
703
|
+
return o.length && pt(o, e), await dt(r, s, e).catch(
|
704
|
+
(i) => (console.warn("loadScriptUrl error", r, s, i), null)
|
705
705
|
);
|
706
706
|
}
|
707
|
-
function Q(
|
708
|
-
const { getDsl: e, getDslByUrl: t, options:
|
709
|
-
return
|
710
|
-
delete
|
711
|
-
}), V = []), (r,
|
712
|
-
if (!
|
713
|
-
if (
|
714
|
-
let
|
715
|
-
return
|
716
|
-
const c = await e(
|
707
|
+
function Q(n) {
|
708
|
+
const { getDsl: e, getDslByUrl: t, options: s } = n;
|
709
|
+
return s.window && (V.forEach((r) => {
|
710
|
+
delete s.window[r];
|
711
|
+
}), V = []), (r, o, a = N) => {
|
712
|
+
if (!o || typeof o == "string") return r;
|
713
|
+
if (o.type === "Schema" && o.id) {
|
714
|
+
let i = k[o.id];
|
715
|
+
return i || (i = k[o.id] = a.defineAsyncComponent(async () => {
|
716
|
+
const c = await e(o.id);
|
717
717
|
return c && (c.name = r), c ? Y({
|
718
|
-
...
|
718
|
+
...s,
|
719
719
|
Vue: a,
|
720
720
|
dsl: c,
|
721
721
|
mode: y.Runtime,
|
722
|
-
loader: Q(
|
722
|
+
loader: Q(n)
|
723
723
|
}).renderer : null;
|
724
|
-
}),
|
724
|
+
}), i);
|
725
725
|
}
|
726
|
-
if (
|
727
|
-
let
|
728
|
-
return
|
729
|
-
const c = await t(
|
726
|
+
if (o.type === "UrlSchema" && o.url) {
|
727
|
+
let i = k[o.url];
|
728
|
+
return i || (i = k[o.url] = a.defineAsyncComponent(async () => {
|
729
|
+
const c = await t(o.url);
|
730
730
|
return c && (c.name = r), c ? Y({
|
731
|
-
...
|
731
|
+
...s,
|
732
732
|
Vue: a,
|
733
733
|
dsl: c,
|
734
734
|
mode: y.Runtime,
|
735
|
-
loader: Q(
|
735
|
+
loader: Q(n)
|
736
736
|
}).renderer : null;
|
737
|
-
}),
|
737
|
+
}), i);
|
738
738
|
}
|
739
|
-
if (
|
740
|
-
let
|
741
|
-
return
|
739
|
+
if (o.type === "Plugin") {
|
740
|
+
let i = o.library ? k[o.library] : null;
|
741
|
+
return i || (o.library && V.push(o.library), i = k[o.library || Symbol()] = a.defineAsyncComponent(
|
742
742
|
async () => {
|
743
|
-
const c = await $e(
|
744
|
-
return c || (console.warn("getPlugin result is null",
|
743
|
+
const c = await $e(o, s.window);
|
744
|
+
return c || (console.warn("getPlugin result is null", o), null);
|
745
745
|
}
|
746
|
-
),
|
746
|
+
), i);
|
747
747
|
}
|
748
748
|
return r;
|
749
749
|
};
|
750
750
|
}
|
751
|
-
function
|
752
|
-
|
753
|
-
|
754
|
-
|
751
|
+
function Is() {
|
752
|
+
k = {};
|
753
|
+
}
|
754
|
+
function B(n, e, t = N, s = Mt) {
|
755
|
+
if (!n || !n.name || n.invisible) return null;
|
756
|
+
const r = t.getCurrentInstance()?.appContext, { id: o = null, directives: a = [] } = n, { vIf: i, vFor: c, vShow: l, vModels: f, vBind: u, vHtml: p, others: h } = Ht(a);
|
757
|
+
if (i && !Ot(i, e))
|
755
758
|
return null;
|
756
|
-
const m = (
|
757
|
-
const w =
|
758
|
-
if (
|
759
|
-
return Bt(
|
760
|
-
if (
|
761
|
-
const b = n
|
759
|
+
const m = (d) => {
|
760
|
+
const w = d.$components, g = (() => {
|
761
|
+
if (n.name === "component")
|
762
|
+
return Bt(d, n.props?.is);
|
763
|
+
if (n.name === "slot") return n.name;
|
764
|
+
const b = s(n.name, n.from, t);
|
762
765
|
return j(b) ? ht(b) || mt(b) ? b : w[b] ?? r?.app?.component(b) ?? b : b;
|
763
|
-
})(), S = Nt(
|
764
|
-
if (
|
765
|
-
return Lt(t,
|
766
|
-
u && Object.assign(S,
|
766
|
+
})(), S = Nt(o, n.props ?? {}, d), Te = Ut(t, n.events ?? {}, d);
|
767
|
+
if (n.name === "slot")
|
768
|
+
return Lt(t, n, S, d, s);
|
769
|
+
u && Object.assign(S, d.__parseExpression(u.value)), l && (S.style = Object.assign(
|
767
770
|
S.style ?? {},
|
768
|
-
Jt(l,
|
769
|
-
)),
|
770
|
-
Object.assign(S, zt(t, b,
|
771
|
+
Jt(l, d)
|
772
|
+
)), p && Object.assign(S, Vt(p, d)), f.forEach((b) => {
|
773
|
+
Object.assign(S, zt(t, b, d));
|
771
774
|
});
|
772
775
|
const Ae = Kt(
|
773
776
|
t,
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
777
|
+
n.children ?? [],
|
778
|
+
d,
|
779
|
+
s,
|
780
|
+
n
|
778
781
|
);
|
779
782
|
let U = t.createVNode(g, { ...S, ...Te }, Ae);
|
780
|
-
const re = r ? Dt(r, h,
|
783
|
+
const re = r ? Dt(r, h, d) : [];
|
781
784
|
return re.length && (U = t.withDirectives(U, re)), U;
|
782
785
|
};
|
783
786
|
return c ? Yt(c, m, e) : m(e);
|
784
787
|
}
|
785
|
-
function Dt(
|
786
|
-
const
|
788
|
+
function Dt(n, e, t) {
|
789
|
+
const s = n.app;
|
787
790
|
return e.map((r) => {
|
788
|
-
const
|
789
|
-
if (!
|
790
|
-
const a = [
|
791
|
+
const o = typeof r.name == "string" ? s.directive(r.name) : t.__parseExpression(r.name);
|
792
|
+
if (!o) return null;
|
793
|
+
const a = [o];
|
791
794
|
return r.value && a.push(t.__parseExpression(r.value)), r.arg && a.push(r.arg), r.modifiers && a.push(r.modifiers), a;
|
792
795
|
}).filter((r) => !!r);
|
793
796
|
}
|
794
|
-
function Ht(
|
795
|
-
const e =
|
797
|
+
function Ht(n = []) {
|
798
|
+
const e = n.find((c) => $(c.name) === "vIf"), t = n.find((c) => $(c.name) === "vFor"), s = n.find((c) => $(c.name) === "vShow"), r = n.find((c) => $(c.name) === "vBind"), o = n.find((c) => $(c.name) === "vHtml"), a = n.filter(
|
796
799
|
(c) => $(c.name) === "vModel"
|
797
|
-
),
|
798
|
-
(c) => !
|
800
|
+
), i = n.filter(
|
801
|
+
(c) => !st.includes($(c.name))
|
799
802
|
);
|
800
803
|
return {
|
801
804
|
vIf: e,
|
802
805
|
vFor: t,
|
803
|
-
vShow:
|
806
|
+
vShow: s,
|
804
807
|
vModels: a,
|
805
808
|
vBind: r,
|
806
|
-
others:
|
807
|
-
vHtml:
|
809
|
+
others: i,
|
810
|
+
vHtml: o
|
808
811
|
};
|
809
812
|
}
|
810
|
-
function Ot(
|
811
|
-
return !!e.__parseExpression(
|
813
|
+
function Ot(n, e) {
|
814
|
+
return !!e.__parseExpression(n.value);
|
812
815
|
}
|
813
|
-
function Bt(
|
814
|
-
return e ? _(e) ?
|
816
|
+
function Bt(n, e) {
|
817
|
+
return e ? _(e) ? n.__parseExpression(e) : e : "div";
|
815
818
|
}
|
816
|
-
function Nt(
|
817
|
-
const
|
818
|
-
(r,
|
819
|
-
let a = e[
|
820
|
-
return _(a) ? a = t.__parseExpression(a) : I(a) && (a = t.__parseFunction(a)), r[
|
819
|
+
function Nt(n, e, t) {
|
820
|
+
const s = Object.keys(e || {}).reduce(
|
821
|
+
(r, o) => {
|
822
|
+
let a = e[o];
|
823
|
+
return _(a) ? a = t.__parseExpression(a) : I(a) && (a = t.__parseFunction(a)), r[o] = a, r;
|
821
824
|
},
|
822
825
|
{}
|
823
826
|
);
|
824
|
-
return
|
827
|
+
return s.ref = t.__ref(n, s.ref), s;
|
825
828
|
}
|
826
|
-
function Ut(
|
827
|
-
const
|
829
|
+
function Ut(n, e, t) {
|
830
|
+
const s = ["passive", "capture", "once"], r = {
|
828
831
|
capture: "Capture",
|
829
832
|
once: "Once",
|
830
833
|
passive: "OnceCapture"
|
831
834
|
};
|
832
835
|
return Object.keys(e || {}).reduce(
|
833
|
-
(
|
834
|
-
const
|
835
|
-
return u && (
|
836
|
+
(o, a) => {
|
837
|
+
const i = e[a], c = Ee(i.modifiers), l = c.find((p) => s.includes(p)), f = "on" + Le(a) + (l && r[l] || ""), u = t.__parseFunction(i.handler);
|
838
|
+
return u && (o[f] = n.withModifiers(u, c)), o;
|
836
839
|
},
|
837
840
|
{}
|
838
841
|
);
|
839
842
|
}
|
840
|
-
function Ee(
|
841
|
-
const t = Object.keys(
|
842
|
-
return e ? t.map((
|
843
|
+
function Ee(n = {}, e = !1) {
|
844
|
+
const t = Object.keys(n);
|
845
|
+
return e ? t.map((s) => "." + s) : t;
|
843
846
|
}
|
844
|
-
function Lt(
|
845
|
-
const { children:
|
846
|
-
return
|
847
|
-
we(
|
848
|
-
) : Array.isArray(
|
849
|
-
(c) => B(c,
|
847
|
+
function Lt(n, e, t, s, r) {
|
848
|
+
const { children: o } = e, a = qt(e, s), i = s.$slots?.[a.name];
|
849
|
+
return i ? i(t) : o ? j(o) ? n.createTextVNode(o) : _(o) ? n.createTextVNode(
|
850
|
+
we(s.__parseExpression(o))
|
851
|
+
) : Array.isArray(o) ? o.map(
|
852
|
+
(c) => B(c, s, n, r)
|
850
853
|
) : null : null;
|
851
854
|
}
|
852
|
-
function qt(
|
853
|
-
const { props: t } =
|
855
|
+
function qt(n, e) {
|
856
|
+
const { props: t } = n, s = t?.name || "default";
|
854
857
|
return {
|
855
|
-
name: _(
|
858
|
+
name: _(s) ? e.__parseExpression(s) : s,
|
856
859
|
params: []
|
857
860
|
};
|
858
861
|
}
|
859
|
-
function Jt(
|
860
|
-
return e.__parseExpression(
|
862
|
+
function Jt(n, e) {
|
863
|
+
return e.__parseExpression(n.value) ? {} : {
|
861
864
|
display: "none"
|
862
865
|
};
|
863
866
|
}
|
864
|
-
function Vt(
|
867
|
+
function Vt(n, e) {
|
865
868
|
return {
|
866
|
-
innerHTML: e.__parseExpression(
|
869
|
+
innerHTML: e.__parseExpression(n.value) || ""
|
867
870
|
};
|
868
871
|
}
|
869
|
-
function zt(
|
870
|
-
const
|
872
|
+
function zt(n, e, t) {
|
873
|
+
const s = {
|
871
874
|
type: "JSFunction",
|
872
875
|
value: e.value?.value ? `(v) => {
|
873
876
|
${e.value.value} = v;
|
874
877
|
}` : "(v) => {}"
|
875
|
-
}, r = t.__parseFunction(
|
878
|
+
}, r = t.__parseFunction(s), o = Ee(
|
876
879
|
_(e.modifiers) ? t.__parseExpression(e.modifiers) : e.modifiers
|
877
880
|
), a = _(e.arg) ? t.__parseExpression(e.arg) : e.arg || "modelValue";
|
878
881
|
return {
|
879
882
|
[a]: t.__parseExpression(e.value),
|
880
|
-
[`onUpdate:${a}`]:
|
883
|
+
[`onUpdate:${a}`]: o.length && r ? n.withModifiers(r, o) : r
|
881
884
|
};
|
882
885
|
}
|
883
|
-
function Kt(
|
886
|
+
function Kt(n, e, t, s, r) {
|
884
887
|
if (!e) return null;
|
885
888
|
if (j(e))
|
886
889
|
return { default: () => e };
|
@@ -889,96 +892,96 @@ function Kt(s, e, t, n, r) {
|
|
889
892
|
default: () => we(t.__parseExpression(e))
|
890
893
|
};
|
891
894
|
if (Array.isArray(e) && e.length > 0) {
|
892
|
-
const
|
893
|
-
[`scope_${r.id}`]:
|
895
|
+
const o = Wt(e), a = (i) => !i || !r ? {} : r?.id && Object.keys(i).length ? {
|
896
|
+
[`scope_${r.id}`]: i
|
894
897
|
} : {};
|
895
|
-
return Object.entries(
|
896
|
-
const
|
898
|
+
return Object.entries(o).reduce((i, [c, { nodes: l, params: f }]) => (i[c] = (u) => {
|
899
|
+
const p = f.length ? qe(u ?? {}, f) : a(u);
|
897
900
|
return l.map(
|
898
|
-
(h) => B(h, t.__clone(
|
901
|
+
(h) => B(h, t.__clone(p), n, s)
|
899
902
|
);
|
900
|
-
},
|
903
|
+
}, i), {});
|
901
904
|
}
|
902
905
|
return null;
|
903
906
|
}
|
904
|
-
function Wt(
|
907
|
+
function Wt(n) {
|
905
908
|
const e = {
|
906
909
|
default: {
|
907
910
|
params: [],
|
908
911
|
nodes: []
|
909
912
|
}
|
910
913
|
};
|
911
|
-
for (const t of
|
912
|
-
const
|
913
|
-
e[r] ? (e[r].nodes.push(t), e[r].params = e[r].params.concat(
|
914
|
+
for (const t of n) {
|
915
|
+
const s = Gt(t.slot), r = s.name;
|
916
|
+
e[r] ? (e[r].nodes.push(t), e[r].params = e[r].params.concat(s.params)) : e[r] = {
|
914
917
|
nodes: [t],
|
915
|
-
params:
|
918
|
+
params: s.params
|
916
919
|
};
|
917
920
|
}
|
918
921
|
return e;
|
919
922
|
}
|
920
|
-
function Gt(
|
921
|
-
return j(
|
923
|
+
function Gt(n = "default") {
|
924
|
+
return j(n) ? { name: n, params: [] } : { params: [], ...n };
|
922
925
|
}
|
923
|
-
function Yt(
|
924
|
-
const { value:
|
925
|
-
let
|
926
|
-
return Number.isInteger(
|
926
|
+
function Yt(n, e, t) {
|
927
|
+
const { value: s, iterator: r } = n, { item: o = "item", index: a = "index" } = r || {};
|
928
|
+
let i = t.__parseExpression(s) || [];
|
929
|
+
return Number.isInteger(i) && (i = new Array(i).fill(!0).map((c, l) => l + 1)), Array.isArray(i) ? i.map((c, l) => e(t.__clone({ [o]: c, [a]: l }))) : (console.warn("[vForRender]:", `${s?.value} is not a Arrary`), []);
|
927
930
|
}
|
928
|
-
function Qt(
|
929
|
-
return
|
931
|
+
function Qt(n) {
|
932
|
+
return Ye() ? (Qe(n), !0) : !1;
|
930
933
|
}
|
931
|
-
function
|
932
|
-
return typeof
|
934
|
+
function se(n) {
|
935
|
+
return typeof n == "function" ? n() : Ge(n);
|
933
936
|
}
|
934
937
|
const ke = typeof window < "u" && typeof document < "u";
|
935
938
|
typeof WorkerGlobalScope < "u" && globalThis instanceof WorkerGlobalScope;
|
936
|
-
const Xt = (
|
939
|
+
const Xt = (n) => n != null, Zt = () => {
|
937
940
|
};
|
938
|
-
function
|
941
|
+
function es(n) {
|
939
942
|
return ge();
|
940
943
|
}
|
941
|
-
function
|
942
|
-
if (
|
943
|
-
return Ve(...
|
944
|
-
const e =
|
944
|
+
function ts(...n) {
|
945
|
+
if (n.length !== 1)
|
946
|
+
return Ve(...n);
|
947
|
+
const e = n[0];
|
945
948
|
return typeof e == "function" ? ze(Ke(() => ({ get: e, set: Zt }))) : T(e);
|
946
949
|
}
|
947
|
-
function
|
948
|
-
|
950
|
+
function ss(n, e) {
|
951
|
+
es() && We(n, e);
|
949
952
|
}
|
950
|
-
const
|
951
|
-
function
|
953
|
+
const ns = ke ? window : void 0, rs = ke ? window.document : void 0;
|
954
|
+
function os(n) {
|
952
955
|
var e;
|
953
|
-
const t =
|
956
|
+
const t = se(n);
|
954
957
|
return (e = t?.$el) != null ? e : t;
|
955
958
|
}
|
956
|
-
function
|
957
|
-
const
|
959
|
+
function is() {
|
960
|
+
const n = T(!1), e = ge();
|
958
961
|
return e && Xe(() => {
|
959
|
-
|
960
|
-
}, e),
|
961
|
-
}
|
962
|
-
function
|
963
|
-
const e =
|
964
|
-
return ye(() => (e.value, !!
|
965
|
-
}
|
966
|
-
function
|
967
|
-
const { window:
|
968
|
-
let
|
969
|
-
const a =
|
970
|
-
|
962
|
+
n.value = !0;
|
963
|
+
}, e), n;
|
964
|
+
}
|
965
|
+
function as(n) {
|
966
|
+
const e = is();
|
967
|
+
return ye(() => (e.value, !!n()));
|
968
|
+
}
|
969
|
+
function cs(n, e, t = {}) {
|
970
|
+
const { window: s = ns, ...r } = t;
|
971
|
+
let o;
|
972
|
+
const a = as(() => s && "MutationObserver" in s), i = () => {
|
973
|
+
o && (o.disconnect(), o = void 0);
|
971
974
|
}, c = ye(() => {
|
972
|
-
const
|
975
|
+
const p = se(n), h = (Array.isArray(p) ? p : [p]).map(os).filter(Xt);
|
973
976
|
return new Set(h);
|
974
977
|
}), l = ve(
|
975
978
|
() => c.value,
|
976
|
-
(
|
977
|
-
|
979
|
+
(p) => {
|
980
|
+
i(), a.value && p.size && (o = new MutationObserver(e), p.forEach((h) => o.observe(h, r)));
|
978
981
|
},
|
979
982
|
{ immediate: !0, flush: "post" }
|
980
|
-
), f = () =>
|
981
|
-
l(),
|
983
|
+
), f = () => o?.takeRecords(), u = () => {
|
984
|
+
l(), i();
|
982
985
|
};
|
983
986
|
return Qt(u), {
|
984
987
|
isSupported: a,
|
@@ -986,74 +989,74 @@ function ln(s, e, t = {}) {
|
|
986
989
|
takeRecords: f
|
987
990
|
};
|
988
991
|
}
|
989
|
-
function
|
990
|
-
var t,
|
992
|
+
function ls(n = null, e = {}) {
|
993
|
+
var t, s, r;
|
991
994
|
const {
|
992
|
-
document:
|
995
|
+
document: o = rs,
|
993
996
|
restoreOnUnmount: a = (u) => u
|
994
|
-
} = e,
|
997
|
+
} = e, i = (t = o?.title) != null ? t : "", c = ts((s = n ?? o?.title) != null ? s : null), l = n && typeof n == "function";
|
995
998
|
function f(u) {
|
996
999
|
if (!("titleTemplate" in e))
|
997
1000
|
return u;
|
998
|
-
const
|
999
|
-
return typeof
|
1001
|
+
const p = e.titleTemplate || "%s";
|
1002
|
+
return typeof p == "function" ? p(u) : se(p).replace(/%s/g, u);
|
1000
1003
|
}
|
1001
1004
|
return ve(
|
1002
1005
|
c,
|
1003
|
-
(u,
|
1004
|
-
u !==
|
1006
|
+
(u, p) => {
|
1007
|
+
u !== p && o && (o.title = f(typeof u == "string" ? u : ""));
|
1005
1008
|
},
|
1006
1009
|
{ immediate: !0 }
|
1007
|
-
), e.observe && !e.titleTemplate &&
|
1008
|
-
(r =
|
1010
|
+
), e.observe && !e.titleTemplate && o && !l && cs(
|
1011
|
+
(r = o.head) == null ? void 0 : r.querySelector("title"),
|
1009
1012
|
() => {
|
1010
|
-
|
1013
|
+
o && o.title !== c.value && (c.value = f(o.title));
|
1011
1014
|
},
|
1012
1015
|
{ childList: !0 }
|
1013
|
-
),
|
1016
|
+
), ss(() => {
|
1014
1017
|
if (a) {
|
1015
|
-
const u = a(
|
1016
|
-
u != null &&
|
1018
|
+
const u = a(i, c.value || "");
|
1019
|
+
u != null && o && (o.title = u);
|
1017
1020
|
}
|
1018
1021
|
}), c;
|
1019
1022
|
}
|
1020
1023
|
const ue = Z({
|
1021
1024
|
name: "VtjPageContainer",
|
1022
1025
|
async setup() {
|
1023
|
-
const
|
1024
|
-
return
|
1025
|
-
provider:
|
1026
|
+
const n = xe(), e = _e(), t = e.params.id, s = t ? n.getPage(t) : n.getHomepage(), r = s ? await n.getRenderComponent(s.id) : null, o = T(Symbol());
|
1027
|
+
return s && (Object.assign(e.meta, s.meta || {}, { cache: s.cache }), ls(s.title || "VTJ")), {
|
1028
|
+
provider: n,
|
1026
1029
|
component: r,
|
1027
|
-
file:
|
1030
|
+
file: s,
|
1028
1031
|
query: e.query,
|
1029
1032
|
meta: e.meta,
|
1030
|
-
sid:
|
1033
|
+
sid: o,
|
1031
1034
|
route: e
|
1032
1035
|
};
|
1033
1036
|
},
|
1034
1037
|
render() {
|
1035
|
-
const { component:
|
1036
|
-
return
|
1038
|
+
const { component: n, query: e, sid: t } = this;
|
1039
|
+
return n ? W(n, { ...e, key: t }) : W("div", "页面不存在");
|
1037
1040
|
},
|
1038
1041
|
activated() {
|
1039
1042
|
this.meta.cache === !1 && (this.sid = Symbol());
|
1040
1043
|
}
|
1041
|
-
}),
|
1044
|
+
}), us = {
|
1042
1045
|
"data-l-h6o7ki7": "",
|
1043
1046
|
class: "vtj-startup__wrapper"
|
1044
|
-
},
|
1047
|
+
}, ps = {
|
1045
1048
|
"data-l-h6o7ki7": "",
|
1046
1049
|
class: "vtj-startup"
|
1047
|
-
},
|
1050
|
+
}, ds = {
|
1048
1051
|
"data-l-h6o7ki7": "",
|
1049
1052
|
class: "vtj-startup__name"
|
1050
|
-
},
|
1053
|
+
}, fs = { "data-l-h6o7ki7": "" }, hs = {
|
1051
1054
|
"data-l-h6o7ki7": "",
|
1052
1055
|
class: "vtj-startup__tagline"
|
1053
|
-
},
|
1056
|
+
}, ms = {
|
1054
1057
|
"data-l-h6o7ki7": "",
|
1055
1058
|
class: "vtj-startup__actions"
|
1056
|
-
},
|
1059
|
+
}, gs = /* @__PURE__ */ Z({
|
1057
1060
|
__name: "Startup",
|
1058
1061
|
props: {
|
1059
1062
|
name: { default: "VTJ.PRO" },
|
@@ -1061,10 +1064,10 @@ const ue = Z({
|
|
1061
1064
|
actionText: { default: "开始设计" },
|
1062
1065
|
link: {}
|
1063
1066
|
},
|
1064
|
-
setup(
|
1065
|
-
((r,
|
1067
|
+
setup(n) {
|
1068
|
+
((r, o) => {
|
1066
1069
|
let a = document.getElementById("h6o7ki7");
|
1067
|
-
a || (a = document.createElement("style"), a.id = "h6o7ki7", document.head.appendChild(a), a.innerHTML =
|
1070
|
+
a || (a = document.createElement("style"), a.id = "h6o7ki7", document.head.appendChild(a), a.innerHTML = o);
|
1068
1071
|
})("h6o7ki7", `
|
1069
1072
|
.vtj-startup[data-l-h6o7ki7]{
|
1070
1073
|
padding: 20px;
|
@@ -1143,59 +1146,59 @@ const ue = Z({
|
|
1143
1146
|
.vtj-startup__actions button[data-l-h6o7ki7]:hover{
|
1144
1147
|
opacity: 0.7;
|
1145
1148
|
}`);
|
1146
|
-
const t =
|
1149
|
+
const t = n, s = () => {
|
1147
1150
|
if (typeof window < "u") {
|
1148
1151
|
if (t.link) {
|
1149
1152
|
typeof t.link == "function" ? t.link() : window.location.href = t.link;
|
1150
1153
|
return;
|
1151
1154
|
}
|
1152
|
-
let
|
1153
|
-
window.location.href =
|
1155
|
+
let o = (window.__VTJ_LINK__ || {}).href || window.location.pathname + "__vtj__/#/";
|
1156
|
+
window.location.href = o;
|
1154
1157
|
}
|
1155
1158
|
};
|
1156
|
-
return (r,
|
1157
|
-
E("div",
|
1158
|
-
E("h1",
|
1159
|
-
E("span",
|
1159
|
+
return (r, o) => (et(), Ze("div", us, [
|
1160
|
+
E("div", ps, [
|
1161
|
+
E("h1", ds, [
|
1162
|
+
E("span", fs, J(t.name), 1)
|
1160
1163
|
]),
|
1161
|
-
E("div",
|
1162
|
-
E("div",
|
1163
|
-
|
1164
|
+
E("div", hs, J(t.tagline), 1),
|
1165
|
+
E("div", ms, [
|
1166
|
+
o[0] || (o[0] = E("span", { "data-l-h6o7ki7": "" }, "设置项目主页后,将替换此页面显示", -1)),
|
1164
1167
|
E("button", {
|
1165
1168
|
"data-l-h6o7ki7": "",
|
1166
|
-
onClick:
|
1169
|
+
onClick: s
|
1167
1170
|
}, J(t.actionText), 1)
|
1168
1171
|
])
|
1169
1172
|
])
|
1170
1173
|
]));
|
1171
1174
|
}
|
1172
|
-
}),
|
1175
|
+
}), vs = Z({
|
1173
1176
|
name: "VtjStartupContainer",
|
1174
1177
|
render() {
|
1175
|
-
return W(
|
1178
|
+
return W(gs);
|
1176
1179
|
}
|
1177
1180
|
}), Re = Symbol("Provider");
|
1178
|
-
var
|
1179
|
-
class
|
1181
|
+
var ys = /* @__PURE__ */ ((n) => (n.Production = "production", n.Development = "development", n))(ys || {});
|
1182
|
+
class _s extends Ie {
|
1180
1183
|
constructor(e) {
|
1181
1184
|
super(), this.options = e;
|
1182
1185
|
const {
|
1183
1186
|
service: t,
|
1184
|
-
mode:
|
1187
|
+
mode: s = y.Raw,
|
1185
1188
|
dependencies: r,
|
1186
|
-
materials:
|
1189
|
+
materials: o,
|
1187
1190
|
project: a = {},
|
1188
|
-
adapter:
|
1191
|
+
adapter: i = {},
|
1189
1192
|
globals: c = {},
|
1190
1193
|
modules: l = {},
|
1191
1194
|
router: f = null,
|
1192
1195
|
materialPath: u = "./",
|
1193
|
-
nodeEnv:
|
1196
|
+
nodeEnv: p = "development"
|
1194
1197
|
/* Development */
|
1195
1198
|
} = e;
|
1196
|
-
this.mode =
|
1199
|
+
this.mode = s, this.modules = l, this.service = t, this.router = f, this.materialPath = u, this.nodeEnv = p, r && (this.dependencies = r), o && (this.materials = o), Object.assign(this.globals, c), Object.assign(this.adapter, i);
|
1197
1200
|
const { access: h, request: m } = this.adapter;
|
1198
|
-
h && h.connect({ mode:
|
1201
|
+
h && h.connect({ mode: s, router: f, request: m }), a && s !== y.Design ? this.load(a) : this.project = a, R.setup({
|
1199
1202
|
timeout: "50-500"
|
1200
1203
|
});
|
1201
1204
|
}
|
@@ -1216,45 +1219,45 @@ class wn extends Ie {
|
|
1216
1219
|
urlDslCaches = {};
|
1217
1220
|
createMock(e) {
|
1218
1221
|
return async (...t) => {
|
1219
|
-
let
|
1222
|
+
let s = {};
|
1220
1223
|
if (e)
|
1221
1224
|
try {
|
1222
|
-
|
1225
|
+
s = await e.apply(e, t);
|
1223
1226
|
} catch (r) {
|
1224
1227
|
P.warn("模拟数据模版异常", r);
|
1225
1228
|
}
|
1226
|
-
return
|
1229
|
+
return R.mock(s);
|
1227
1230
|
};
|
1228
1231
|
}
|
1229
1232
|
async load(e) {
|
1230
1233
|
const t = this.modules[`.vtj/projects/${e.id}.json`];
|
1231
1234
|
if (this.project = t ? await t() : await this.service.init(e), !this.project)
|
1232
1235
|
throw new Error("project is null");
|
1233
|
-
const { apis:
|
1234
|
-
|
1236
|
+
const { apis: s = [], meta: r = [] } = this.project, o = window;
|
1237
|
+
o.CKEDITOR_VERSION = void 0, this.mode === y.Raw ? await this.loadDependencies(o) : await this.loadAssets(o), this.apis = St(s, r, this.adapter), je(), bt(s), this.initRouter(), this.triggerReady();
|
1235
1238
|
}
|
1236
1239
|
async loadDependencies(e) {
|
1237
1240
|
const t = Object.entries(this.dependencies);
|
1238
|
-
for (const [
|
1239
|
-
e[
|
1241
|
+
for (const [s, r] of t)
|
1242
|
+
e[s] || (e[s] = this.library[s] = await r());
|
1240
1243
|
}
|
1241
1244
|
async loadAssets(e) {
|
1242
|
-
const { dependencies: t = [] } = this.project, { dependencies:
|
1245
|
+
const { dependencies: t = [] } = this.project, { dependencies: s, library: r, components: o, materialPath: a, nodeEnv: i } = this, {
|
1243
1246
|
libraryExports: c,
|
1244
1247
|
libraryMap: l,
|
1245
1248
|
materials: f,
|
1246
1249
|
materialExports: u,
|
1247
|
-
materialMapLibrary:
|
1250
|
+
materialMapLibrary: p
|
1248
1251
|
} = ct(
|
1249
1252
|
t,
|
1250
1253
|
a,
|
1251
|
-
|
1254
|
+
i === "development"
|
1252
1255
|
/* Development */
|
1253
1256
|
);
|
1254
1257
|
for (const h of c) {
|
1255
|
-
const m =
|
1256
|
-
if (
|
1257
|
-
r[h] =
|
1258
|
+
const m = s[h], d = e[h];
|
1259
|
+
if (d)
|
1260
|
+
r[h] = d;
|
1258
1261
|
else if (m)
|
1259
1262
|
e[h] = r[h] = await m();
|
1260
1263
|
else {
|
@@ -1264,74 +1267,74 @@ class wn extends Ie {
|
|
1264
1267
|
r[h] = e[h];
|
1265
1268
|
}
|
1266
1269
|
}
|
1267
|
-
if (
|
1270
|
+
if (i === "development") {
|
1268
1271
|
for (const m of f)
|
1269
1272
|
await ae(x.append(m, { v: C }));
|
1270
1273
|
const h = this.materials || {};
|
1271
1274
|
for (const m of u) {
|
1272
|
-
const
|
1275
|
+
const d = e[p[m]], w = Me[m];
|
1273
1276
|
if (w)
|
1274
|
-
|
1275
|
-
|
1277
|
+
d && w.forEach((g) => {
|
1278
|
+
o[g] = d[g];
|
1276
1279
|
});
|
1277
1280
|
else {
|
1278
1281
|
const g = h[m] ? (await h[m]()).default : e[m];
|
1279
|
-
g &&
|
1280
|
-
|
1282
|
+
g && d && (g.components || []).forEach((S) => {
|
1283
|
+
o[S.name] = lt(S, d);
|
1281
1284
|
});
|
1282
1285
|
}
|
1283
1286
|
}
|
1284
1287
|
}
|
1285
1288
|
}
|
1286
1289
|
initRouter() {
|
1287
|
-
const { router: e, project: t, options:
|
1290
|
+
const { router: e, project: t, options: s, adapter: r } = this;
|
1288
1291
|
if (!e) return;
|
1289
|
-
const { routeAppendTo:
|
1292
|
+
const { routeAppendTo: o, pageRouteName: a = "page", routeMeta: i } = s, c = o ? "" : "/", l = {
|
1290
1293
|
path: `${c}${a}/:id`,
|
1291
1294
|
name: F,
|
1292
1295
|
component: ue
|
1293
1296
|
}, f = {
|
1294
1297
|
path: c,
|
1295
1298
|
name: H,
|
1296
|
-
component: t?.homepage ? ue : r.startupComponent ||
|
1297
|
-
meta:
|
1299
|
+
component: t?.homepage ? ue : r.startupComponent || vs,
|
1300
|
+
meta: i
|
1298
1301
|
};
|
1299
|
-
e.hasRoute(F) && e.removeRoute(F), e.hasRoute(H) && e.removeRoute(H),
|
1302
|
+
e.hasRoute(F) && e.removeRoute(F), e.hasRoute(H) && e.removeRoute(H), o ? (e.addRoute(o, l), e.addRoute(o, f)) : (e.addRoute(l), e.addRoute(f));
|
1300
1303
|
}
|
1301
1304
|
install(e) {
|
1302
1305
|
const t = e.config.globalProperties.installed || {};
|
1303
|
-
for (const [
|
1304
|
-
!t[
|
1305
|
-
this.options.install && e.use(this.options.install), this.adapter.access && e.use(this.adapter.access), e.provide(Re, this), e.config.globalProperties.installed = t, this.mode === y.Design && (e.config.errorHandler = (
|
1306
|
-
const a = r?.$options.name,
|
1306
|
+
for (const [s, r] of Object.entries(this.library))
|
1307
|
+
!t[s] && ft(r) && (e.use(r), t[s] = !0);
|
1308
|
+
this.options.install && e.use(this.options.install), this.adapter.access && e.use(this.adapter.access), e.provide(Re, this), e.config.globalProperties.installed = t, this.mode === y.Design && (e.config.errorHandler = (s, r, o) => {
|
1309
|
+
const a = r?.$options.name, i = typeof s == "string" ? s : s?.message || s?.msg || "未知错误", c = `[ ${a} ] ${i} ${o}`;
|
1307
1310
|
console.error(
|
1308
1311
|
"[VTJ Error]:",
|
1309
1312
|
{
|
1310
|
-
err:
|
1313
|
+
err: s,
|
1311
1314
|
instance: r,
|
1312
|
-
info:
|
1315
|
+
info: o
|
1313
1316
|
},
|
1314
|
-
|
1317
|
+
s?.stack
|
1315
1318
|
), this.adapter.notify && this.adapter.notify(c, "组件渲染错误", "error");
|
1316
1319
|
});
|
1317
1320
|
}
|
1318
1321
|
getFile(e) {
|
1319
1322
|
const { blocks: t = [] } = this.project || {};
|
1320
|
-
return this.getPage(e) || t.find((
|
1323
|
+
return this.getPage(e) || t.find((s) => s.id === e) || null;
|
1321
1324
|
}
|
1322
1325
|
getPage(e) {
|
1323
|
-
const { pages: t = [] } = this.project || {},
|
1324
|
-
for (const a of
|
1326
|
+
const { pages: t = [] } = this.project || {}, s = (r, o = []) => {
|
1327
|
+
for (const a of o) {
|
1325
1328
|
if (a.id === r)
|
1326
1329
|
return a;
|
1327
1330
|
if (a.children && a.children.length) {
|
1328
|
-
const
|
1329
|
-
if (
|
1330
|
-
return
|
1331
|
+
const i = s(r, a.children);
|
1332
|
+
if (i)
|
1333
|
+
return i;
|
1331
1334
|
}
|
1332
1335
|
}
|
1333
1336
|
};
|
1334
|
-
return
|
1337
|
+
return s(e, t) || null;
|
1335
1338
|
}
|
1336
1339
|
getHomepage() {
|
1337
1340
|
const { homepage: e } = this.project || {};
|
@@ -1350,65 +1353,65 @@ class wn extends Ie {
|
|
1350
1353
|
validSuccess: !1,
|
1351
1354
|
originResponse: !0
|
1352
1355
|
}
|
1353
|
-
}).then((
|
1356
|
+
}).then((s) => s.data).catch(() => null));
|
1354
1357
|
}
|
1355
1358
|
createDslRenderer(e, t = {}) {
|
1356
|
-
const { library:
|
1357
|
-
mode:
|
1358
|
-
Vue:
|
1359
|
+
const { library: s, components: r, mode: o, apis: a } = this, i = {
|
1360
|
+
mode: o,
|
1361
|
+
Vue: s.Vue,
|
1359
1362
|
components: r,
|
1360
|
-
libs:
|
1363
|
+
libs: s,
|
1361
1364
|
apis: a,
|
1362
1365
|
window,
|
1363
1366
|
...t
|
1364
1367
|
}, c = Q({
|
1365
1368
|
getDsl: async (l) => await this.getDsl(l) || null,
|
1366
1369
|
getDslByUrl: async (l) => await this.getDslByUrl(l) || null,
|
1367
|
-
options:
|
1370
|
+
options: i
|
1368
1371
|
});
|
1369
1372
|
return Y({
|
1370
|
-
...
|
1373
|
+
...i,
|
1371
1374
|
dsl: e,
|
1372
1375
|
loader: c
|
1373
1376
|
});
|
1374
1377
|
}
|
1375
1378
|
async getRenderComponent(e, t) {
|
1376
|
-
const
|
1377
|
-
if (!
|
1379
|
+
const s = this.getFile(e);
|
1380
|
+
if (!s)
|
1378
1381
|
return P.warn(`Can not find file: ${e}`), null;
|
1379
|
-
t && t(
|
1380
|
-
const r = `.vtj/vue/${e}.vue`,
|
1381
|
-
if (
|
1382
|
-
return (await
|
1383
|
-
const a = await this.getDsl(
|
1382
|
+
t && t(s);
|
1383
|
+
const r = `.vtj/vue/${e}.vue`, o = this.modules[r];
|
1384
|
+
if (o)
|
1385
|
+
return (await o())?.default;
|
1386
|
+
const a = await this.getDsl(s.id);
|
1384
1387
|
return a ? this.createDslRenderer(a).renderer : (P.warn(`Can not find dsl: ${e}`), null);
|
1385
1388
|
}
|
1386
1389
|
defineUrlSchemaComponent(e, t) {
|
1387
1390
|
return ce(async () => {
|
1388
|
-
const
|
1389
|
-
return
|
1391
|
+
const s = await this.getDslByUrl(e);
|
1392
|
+
return s ? (s.name = t || s.name, this.createDslRenderer(s).renderer) : null;
|
1390
1393
|
});
|
1391
1394
|
}
|
1392
1395
|
definePluginComponent(e) {
|
1393
1396
|
return ce(async () => await $e(e, window));
|
1394
1397
|
}
|
1395
1398
|
}
|
1396
|
-
function
|
1397
|
-
const e = new
|
1399
|
+
function Ms(n) {
|
1400
|
+
const e = new _s(n);
|
1398
1401
|
return {
|
1399
1402
|
provider: e,
|
1400
|
-
onReady: (
|
1403
|
+
onReady: (s) => e.ready(s)
|
1401
1404
|
};
|
1402
1405
|
}
|
1403
|
-
function xe(
|
1406
|
+
function xe(n = {}) {
|
1404
1407
|
const e = me(Re);
|
1405
1408
|
if (!e)
|
1406
1409
|
throw new Error("Can not find provider");
|
1407
1410
|
if (e.nodeEnv === "development") {
|
1408
|
-
const { id: t, version:
|
1409
|
-
t &&
|
1411
|
+
const { id: t, version: s } = n;
|
1412
|
+
t && s && (async () => {
|
1410
1413
|
const r = await e.getDsl(t);
|
1411
|
-
r?.__VERSION__ !==
|
1414
|
+
r?.__VERSION__ !== s && e.adapter.notify && e.adapter.notify(
|
1412
1415
|
`[ ${r?.name} ] 组件源码版本与运行时版本不一致,请重新发布组件`,
|
1413
1416
|
"版本不一致",
|
1414
1417
|
"warning"
|
@@ -1422,29 +1425,29 @@ const Pe = {
|
|
1422
1425
|
validSuccess: !0,
|
1423
1426
|
originResponse: !1,
|
1424
1427
|
failMessage: !0,
|
1425
|
-
validate: (
|
1426
|
-
},
|
1428
|
+
validate: (n) => n.data?.code === 0
|
1429
|
+
}, ws = (n, e = "/__vtj__/api/:type.json") => (t, s) => n.send({
|
1427
1430
|
url: e,
|
1428
1431
|
method: "post",
|
1429
1432
|
params: { type: t },
|
1430
1433
|
data: {
|
1431
1434
|
type: t,
|
1432
|
-
data:
|
1435
|
+
data: s
|
1433
1436
|
},
|
1434
1437
|
settings: Pe
|
1435
|
-
}),
|
1438
|
+
}), Ss = (n, e = "/__vtj__/api/uploader.json") => async (t, s) => await n.send({
|
1436
1439
|
url: e,
|
1437
1440
|
method: "post",
|
1438
1441
|
data: {
|
1439
1442
|
files: t,
|
1440
|
-
projectId:
|
1443
|
+
projectId: s
|
1441
1444
|
},
|
1442
1445
|
settings: {
|
1443
1446
|
...Pe,
|
1444
1447
|
type: "data"
|
1445
1448
|
}
|
1446
1449
|
}).then((r) => r && r[0] ? r[0] : null).catch(() => null);
|
1447
|
-
function
|
1450
|
+
function Ds(n) {
|
1448
1451
|
return fe({
|
1449
1452
|
settings: {
|
1450
1453
|
type: "json",
|
@@ -1453,17 +1456,17 @@ function Dn(s) {
|
|
1453
1456
|
failMessage: !0,
|
1454
1457
|
validate: (e) => e.data?.code === 0,
|
1455
1458
|
showError: (e) => {
|
1456
|
-
|
1459
|
+
n && n(e || "未知错误");
|
1457
1460
|
}
|
1458
1461
|
}
|
1459
1462
|
});
|
1460
1463
|
}
|
1461
|
-
class
|
1464
|
+
class ne {
|
1462
1465
|
api;
|
1463
1466
|
pluginCaches = {};
|
1464
1467
|
uploader;
|
1465
1468
|
constructor(e = K) {
|
1466
|
-
this.api =
|
1469
|
+
this.api = ws(e), this.uploader = Ss(e);
|
1467
1470
|
}
|
1468
1471
|
async getExtension() {
|
1469
1472
|
console.log("BaseService.getExtension");
|
@@ -1536,17 +1539,17 @@ class se {
|
|
1536
1539
|
return await this.api("clearStaticFiles", e).catch(() => "");
|
1537
1540
|
}
|
1538
1541
|
async getPluginMaterial(e) {
|
1539
|
-
const { urls: t = [] } = e,
|
1540
|
-
if (!
|
1541
|
-
const r = this.pluginCaches[
|
1542
|
-
return r || (this.pluginCaches[
|
1543
|
-
url:
|
1542
|
+
const { urls: t = [] } = e, s = t.filter((o) => it(o))[0];
|
1543
|
+
if (!s) return null;
|
1544
|
+
const r = this.pluginCaches[s];
|
1545
|
+
return r || (this.pluginCaches[s] = K.send({
|
1546
|
+
url: s,
|
1544
1547
|
method: "get",
|
1545
1548
|
settings: {
|
1546
1549
|
validSuccess: !1,
|
1547
1550
|
originResponse: !0
|
1548
1551
|
}
|
1549
|
-
}).then((
|
1552
|
+
}).then((o) => o.data).catch(() => null));
|
1550
1553
|
}
|
1551
1554
|
async genSource(e) {
|
1552
1555
|
return console.log("BaseService.genSource", e), "";
|
@@ -1557,9 +1560,9 @@ const v = new Je({
|
|
1557
1560
|
expired: 0,
|
1558
1561
|
prefix: "__VTJ_"
|
1559
1562
|
});
|
1560
|
-
class
|
1563
|
+
class Hs extends ne {
|
1561
1564
|
init(e) {
|
1562
|
-
const t = new O(e),
|
1565
|
+
const t = new O(e), s = v.get(`project_${t.id}`), r = Object.assign(t.toDsl(), s || {});
|
1563
1566
|
return v.save(`project_${t.id}`, r), Promise.resolve(r);
|
1564
1567
|
}
|
1565
1568
|
saveProject(e) {
|
@@ -1585,36 +1588,36 @@ class Hn extends se {
|
|
1585
1588
|
removeHistory(e) {
|
1586
1589
|
const t = v.get(`history_${e}`);
|
1587
1590
|
if (t) {
|
1588
|
-
const r = (t.items || []).map((
|
1591
|
+
const r = (t.items || []).map((o) => o.id);
|
1589
1592
|
this.removeHistoryItem(e, r), v.remove(`history_${e}`);
|
1590
1593
|
}
|
1591
1594
|
return Promise.resolve(!0);
|
1592
1595
|
}
|
1593
1596
|
getHistory(e) {
|
1594
|
-
const t = v.get(`history_${e}`),
|
1595
|
-
return Promise.resolve(
|
1597
|
+
const t = v.get(`history_${e}`), s = new pe(t || { id: e });
|
1598
|
+
return Promise.resolve(s.toDsl());
|
1596
1599
|
}
|
1597
1600
|
getHistoryItem(e, t) {
|
1598
|
-
const
|
1599
|
-
return Promise.resolve(
|
1601
|
+
const s = v.get(`history_${e}_${t}`);
|
1602
|
+
return Promise.resolve(s);
|
1600
1603
|
}
|
1601
1604
|
saveHistoryItem(e, t) {
|
1602
1605
|
return v.save(`history_${e}_${t.id}`, t), Promise.resolve(!0);
|
1603
1606
|
}
|
1604
1607
|
removeHistoryItem(e, t) {
|
1605
|
-
return t.forEach((
|
1606
|
-
v.remove(`history_${e}_${
|
1608
|
+
return t.forEach((s) => {
|
1609
|
+
v.remove(`history_${e}_${s}`);
|
1607
1610
|
}), Promise.resolve(!0);
|
1608
1611
|
}
|
1609
1612
|
}
|
1610
|
-
class
|
1613
|
+
class bs extends ne {
|
1611
1614
|
projects = {};
|
1612
1615
|
materials = {};
|
1613
1616
|
files = {};
|
1614
1617
|
histories = {};
|
1615
1618
|
historyItems = {};
|
1616
1619
|
init(e) {
|
1617
|
-
const t = new O(e),
|
1620
|
+
const t = new O(e), s = this.projects[t.id] || {}, r = Object.assign(t.toDsl(), s);
|
1618
1621
|
return this.projects[r.id] = r, Promise.resolve(r);
|
1619
1622
|
}
|
1620
1623
|
saveProject(e) {
|
@@ -1640,35 +1643,35 @@ class jn extends se {
|
|
1640
1643
|
removeHistory(e) {
|
1641
1644
|
const t = this.histories[e];
|
1642
1645
|
if (t) {
|
1643
|
-
const r = (t.items || []).map((
|
1646
|
+
const r = (t.items || []).map((o) => o.id);
|
1644
1647
|
this.removeHistoryItem(e, r), delete this.historyItems[e];
|
1645
1648
|
}
|
1646
1649
|
return Promise.resolve(!0);
|
1647
1650
|
}
|
1648
1651
|
getHistory(e) {
|
1649
|
-
const t = this.histories[e],
|
1650
|
-
return Promise.resolve(
|
1652
|
+
const t = this.histories[e], s = new pe(t || { id: e });
|
1653
|
+
return Promise.resolve(s);
|
1651
1654
|
}
|
1652
1655
|
getHistoryItem(e, t) {
|
1653
|
-
const
|
1656
|
+
const s = `${e}_${t}`, r = this.historyItems[s] || {};
|
1654
1657
|
return Promise.resolve(r);
|
1655
1658
|
}
|
1656
1659
|
saveHistoryItem(e, t) {
|
1657
|
-
const
|
1658
|
-
return this.historyItems[
|
1660
|
+
const s = `${e}_${t.id}`;
|
1661
|
+
return this.historyItems[s] = t, Promise.resolve(!0);
|
1659
1662
|
}
|
1660
1663
|
removeHistoryItem(e, t) {
|
1661
|
-
return t.forEach((
|
1662
|
-
const r = `${e}_${
|
1664
|
+
return t.forEach((s) => {
|
1665
|
+
const r = `${e}_${s}`;
|
1663
1666
|
delete this.historyItems[r];
|
1664
1667
|
}), Promise.resolve(!0);
|
1665
1668
|
}
|
1666
1669
|
}
|
1667
1670
|
let D = null;
|
1668
|
-
function
|
1669
|
-
return D || (D = new
|
1671
|
+
function Os() {
|
1672
|
+
return D || (D = new bs(), D);
|
1670
1673
|
}
|
1671
|
-
class
|
1674
|
+
class Bs extends ne {
|
1672
1675
|
getFileCaches = {};
|
1673
1676
|
async getExtension() {
|
1674
1677
|
return await this.api("getExtension", {}).catch(() => {
|
@@ -1723,46 +1726,46 @@ class Bn extends se {
|
|
1723
1726
|
);
|
1724
1727
|
}
|
1725
1728
|
}
|
1726
|
-
function Ce(
|
1727
|
-
return t.map((
|
1728
|
-
const { id: r, title:
|
1729
|
+
function Ce(n, e, t = []) {
|
1730
|
+
return t.map((s) => {
|
1731
|
+
const { id: r, title: o, icon: a, children: i, hidden: c } = s;
|
1729
1732
|
return {
|
1730
1733
|
id: r,
|
1731
|
-
title:
|
1734
|
+
title: o,
|
1732
1735
|
icon: a,
|
1733
1736
|
hidden: c,
|
1734
|
-
url: `${
|
1735
|
-
children:
|
1737
|
+
url: `${n}/${e}/${r}`,
|
1738
|
+
children: i && i.length ? Ce(n, e, i) : void 0
|
1736
1739
|
};
|
1737
1740
|
});
|
1738
1741
|
}
|
1739
|
-
function Fe(
|
1740
|
-
if (!e) return
|
1742
|
+
function Fe(n, e) {
|
1743
|
+
if (!e) return n;
|
1741
1744
|
let t = [];
|
1742
|
-
for (const
|
1743
|
-
if (
|
1744
|
-
const r = Fe(
|
1745
|
-
r.length && (
|
1745
|
+
for (const s of n)
|
1746
|
+
if (s.children && s.children.length) {
|
1747
|
+
const r = Fe(s.children, e);
|
1748
|
+
r.length && (s.children = r, t.push(s));
|
1746
1749
|
} else
|
1747
|
-
e.can(
|
1750
|
+
e.can(s.id.toString()) && t.push(s);
|
1748
1751
|
return t;
|
1749
1752
|
}
|
1750
|
-
function
|
1753
|
+
function Ns(n) {
|
1751
1754
|
const {
|
1752
1755
|
menuPathPrefix: e = "",
|
1753
1756
|
pageRouteName: t = "page",
|
1754
|
-
disableMenusFilter:
|
1755
|
-
} =
|
1757
|
+
disableMenusFilter: s = !1
|
1758
|
+
} = n || {}, r = xe(), o = _e(), a = yt(), i = T(!1), c = T(!1), l = r.project;
|
1756
1759
|
tt(() => {
|
1757
|
-
const { name:
|
1758
|
-
if (
|
1759
|
-
const
|
1760
|
-
|
1761
|
-
} else if (
|
1762
|
-
const
|
1763
|
-
|
1760
|
+
const { name: p, params: h, meta: m } = o;
|
1761
|
+
if (p === F) {
|
1762
|
+
const d = r.getPage(h.id);
|
1763
|
+
i.value = !d?.mask, c.value = !!d?.pure;
|
1764
|
+
} else if (p === H) {
|
1765
|
+
const d = r.getHomepage();
|
1766
|
+
i.value = !d?.mask, c.value = !!d?.pure;
|
1764
1767
|
} else
|
1765
|
-
|
1768
|
+
i.value = !m.mask, c.value = !!m.pure;
|
1766
1769
|
});
|
1767
1770
|
const f = Ce(
|
1768
1771
|
e,
|
@@ -1770,50 +1773,51 @@ function Nn(s) {
|
|
1770
1773
|
l?.pages
|
1771
1774
|
), u = l?.config;
|
1772
1775
|
return {
|
1773
|
-
disabled:
|
1776
|
+
disabled: i,
|
1774
1777
|
logo: u?.logo,
|
1775
1778
|
themeSwitchable: u?.themeSwitchable,
|
1776
1779
|
title: u?.title || l?.description || l?.name || "VTJ App",
|
1777
|
-
menus:
|
1780
|
+
menus: s ? f : Fe(f, a),
|
1778
1781
|
pure: c
|
1779
1782
|
};
|
1780
1783
|
}
|
1781
1784
|
export {
|
1782
1785
|
be as ACCESS_KEY,
|
1783
|
-
|
1784
|
-
|
1785
|
-
|
1786
|
-
|
1786
|
+
Ts as Access,
|
1787
|
+
ot as BUILD_IN_TAGS,
|
1788
|
+
st as BUILT_IN_DIRECTIVES,
|
1789
|
+
ne as BaseService,
|
1787
1790
|
le as CONTEXT_HOST,
|
1788
1791
|
Et as Context,
|
1789
1792
|
y as ContextMode,
|
1790
|
-
|
1793
|
+
nt as DATA_TYPES,
|
1791
1794
|
H as HOMEPAGE_ROUTE_NAME,
|
1792
1795
|
rt as HTML_TAGS,
|
1793
|
-
|
1794
|
-
|
1795
|
-
|
1796
|
-
|
1797
|
-
|
1796
|
+
Fs as JSCodeToString,
|
1797
|
+
xs as LIFE_CYCLES_LIST,
|
1798
|
+
Bs as LocalService,
|
1799
|
+
bs as MemoryService,
|
1800
|
+
ys as NodeEnv,
|
1798
1801
|
F as PAGE_ROUTE_NAME,
|
1799
|
-
|
1800
|
-
|
1801
|
-
|
1802
|
+
_s as Provider,
|
1803
|
+
gs as Startup,
|
1804
|
+
Hs as StorageService,
|
1802
1805
|
C as VTJ_RENDERER_VERSION,
|
1803
1806
|
Se as adoptedStyleSheets,
|
1804
|
-
|
1805
|
-
|
1806
|
-
|
1807
|
+
Is as clearLoaderCache,
|
1808
|
+
As as createAdapter,
|
1809
|
+
Ps as createAssetScripts,
|
1810
|
+
Cs as createAssetsCss,
|
1807
1811
|
Tt as createDataSources,
|
1808
1812
|
Q as createLoader,
|
1809
|
-
|
1813
|
+
Os as createMemoryService,
|
1810
1814
|
wt as createMetaApi,
|
1811
1815
|
jt as createMock,
|
1812
|
-
|
1816
|
+
Ms as createProvider,
|
1813
1817
|
Y as createRenderer,
|
1814
1818
|
_t as createSchemaApi,
|
1815
1819
|
St as createSchemaApis,
|
1816
|
-
|
1820
|
+
Ds as createServiceRequest,
|
1817
1821
|
Mt as defaultLoader,
|
1818
1822
|
M as fillBasePath,
|
1819
1823
|
Ee as getModifiers,
|
@@ -1824,13 +1828,13 @@ export {
|
|
1824
1828
|
gt as isJSCode,
|
1825
1829
|
_ as isJSExpression,
|
1826
1830
|
I as isJSFunction,
|
1827
|
-
|
1831
|
+
it as isJSON,
|
1828
1832
|
te as isJSUrl,
|
1829
1833
|
mt as isNativeTag,
|
1830
1834
|
ft as isVuePlugin,
|
1831
1835
|
ut as loadCss,
|
1832
|
-
|
1833
|
-
|
1836
|
+
pt as loadCssUrl,
|
1837
|
+
dt as loadScriptUrl,
|
1834
1838
|
$t as mockApi,
|
1835
1839
|
bt as mockApis,
|
1836
1840
|
je as mockCleanup,
|
@@ -1842,6 +1846,6 @@ export {
|
|
1842
1846
|
at as removeProdFlag,
|
1843
1847
|
we as toString,
|
1844
1848
|
yt as useAccess,
|
1845
|
-
|
1849
|
+
Ns as useMask,
|
1846
1850
|
xe as useProvider
|
1847
1851
|
};
|