@lumal/cockpit 0.0.1-beta → 0.0.2-beta
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/LICENSE +21 -21
- package/dist/cockpit.css +1 -1
- package/dist/designer.cjs +1 -1
- package/dist/designer.js +613 -546
- package/dist/index.cjs +1 -1
- package/dist/index.js +5 -5
- package/dist/{resolveComponent-QbJRsdxR.js → resolveComponent-BZJb6nHc.js} +102 -90
- package/dist/resolveComponent-BwChMZGV.cjs +1 -0
- package/dist/runtime-CZWB99yu.cjs +1 -0
- package/dist/{runtime-CXiih7DE.js → runtime-jYdPGqNX.js} +167 -155
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.js +2 -2
- package/dist/src/composables/index.d.ts +2 -2
- package/dist/src/composables/index.d.ts.map +1 -1
- package/dist/src/composables/useCanvasScale.d.ts +2 -1
- package/dist/src/composables/useCanvasScale.d.ts.map +1 -1
- package/dist/src/composables/useCockpitAutoRefresh.d.ts +1 -1
- package/dist/src/composables/useCockpitAutoRefresh.d.ts.map +1 -1
- package/dist/src/composables/useCockpitRefresh.d.ts +1 -1
- package/dist/src/composables/useCockpitRefresh.d.ts.map +1 -1
- package/dist/src/designer/CockpitComponentLibrary.vue.d.ts.map +1 -1
- package/dist/src/designer/CockpitLayoutEditor.vue.d.ts.map +1 -1
- package/dist/src/designer/CockpitWidgetPreview.vue.d.ts +3 -1
- package/dist/src/designer/CockpitWidgetPreview.vue.d.ts.map +1 -1
- package/dist/src/designer/LumalCockpitDesigner.vue.d.ts +2 -2
- package/dist/src/designer/useCockpitDraft.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/runtime/LumalCockpit.vue.d.ts.map +1 -1
- package/dist/src/runtime/LumalCockpitContainer.vue.d.ts.map +1 -1
- package/dist/src/runtime/LumalCockpitWidgetHost.vue.d.ts.map +1 -1
- package/dist/{validate-DkC_IHrC.js → validate-DRblcHTt.js} +1 -1
- package/dist/{validate-KSzm5SZW.cjs → validate-Df_kkc31.cjs} +1 -1
- package/package.json +3 -3
- package/dist/resolveComponent-BF1aCxAk.cjs +0 -1
- package/dist/runtime-wzWMTWrS.cjs +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./resolveComponent-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./resolveComponent-BwChMZGV.cjs"),t=require("./runtime-CZWB99yu.cjs"),n=require("./validate-Df_kkc31.cjs"),r=require("./createCockpitRegistry-DHr9nXJY.cjs");let i=require("vue");function a(n){let r=e.y();(0,i.onBeforeUnmount)(r.messages.subscribe(t.d,n,{targetId:r.instanceId}))}function o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function s(e){if(!o(e))throw Error(`驾驶舱配置必须是对象。`);if(e.schemaVersion!==3)throw Error(`仅支持 v3 驾驶舱配置,请重新创建布局。`);return{...e}}function c(e){return e.schemaVersion!==3}function l(t){return e.i(s(t))}exports.COCKPIT_REFRESH_TOPIC=t.d,exports.COCKPIT_SCHEMA_VERSION=e.a,exports.DEFAULT_COCKPIT_AUTO_REFRESH_INTERVAL_MS=t.l,exports.DEFAULT_COLUMN_WIDTH=e.o,exports.DEFAULT_REGION_WIDTH=e.s,exports.DEFAULT_ROW_HEIGHT=e.c,exports.LumalCockpit=t.t,exports.LumalCockpitCard=t.n,exports.computeCanvasScale=e.b,exports.createCockpitId=e.l,exports.createCockpitMessageBus=e.r,exports.createCockpitRegistry=r.t,exports.createDefaultCockpitConfig=e.u,exports.createGridCell=e.d,exports.createGridColumn=e.f,exports.createGridRow=e.p,exports.createLayout=e.m,exports.createRegion=e.h,exports.createWidgetInstance=e.g,exports.equalizeRegionColumns=e._,exports.migrateCockpitConfig=s,exports.needsMigration=c,exports.normalizeCockpitConfig=e.i,exports.prepareCockpitConfig=l,exports.useCanvasScale=e.x,exports.useCockpit=t.f,exports.useCockpitAutoRefresh=t.u,exports.useCockpitContext=e.y,exports.useCockpitRefresh=a,exports.useCockpitRuntimeEnv=t.c,exports.validateCockpitConfig=n.t;
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, o as d, p as f, r as p, s as m, u as h, x as g, y as _ } from "./resolveComponent-
|
|
2
|
-
import { c as v, d as y, f as b, l as x, n as S, t as C, u as w } from "./runtime-
|
|
3
|
-
import { t as T } from "./validate-
|
|
1
|
+
import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, o as d, p as f, r as p, s as m, u as h, x as g, y as _ } from "./resolveComponent-BZJb6nHc.js";
|
|
2
|
+
import { c as v, d as y, f as b, l as x, n as S, t as C, u as w } from "./runtime-jYdPGqNX.js";
|
|
3
|
+
import { t as T } from "./validate-DRblcHTt.js";
|
|
4
4
|
import { t as E } from "./createCockpitRegistry-D5F4d5By.js";
|
|
5
5
|
import { onBeforeUnmount as D } from "vue";
|
|
6
6
|
//#region src/composables/useCockpitRefresh.ts
|
|
7
7
|
function O(e) {
|
|
8
8
|
let t = _();
|
|
9
|
-
D(t.messages.subscribe(
|
|
9
|
+
D(t.messages.subscribe(y, e, { targetId: t.instanceId }));
|
|
10
10
|
}
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/config/migrate.ts
|
|
@@ -27,4 +27,4 @@ function M(e) {
|
|
|
27
27
|
return c(A(e));
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
|
-
export {
|
|
30
|
+
export { y as COCKPIT_REFRESH_TOPIC, t as COCKPIT_SCHEMA_VERSION, x as DEFAULT_COCKPIT_AUTO_REFRESH_INTERVAL_MS, d as DEFAULT_COLUMN_WIDTH, m as DEFAULT_REGION_WIDTH, r as DEFAULT_ROW_HEIGHT, C as LumalCockpit, S as LumalCockpitCard, n as computeCanvasScale, l as createCockpitId, p as createCockpitMessageBus, E as createCockpitRegistry, h as createDefaultCockpitConfig, i as createGridCell, a as createGridColumn, f as createGridRow, u as createLayout, s as createRegion, o as createWidgetInstance, e as equalizeRegionColumns, A as migrateCockpitConfig, j as needsMigration, c as normalizeCockpitConfig, M as prepareCockpitConfig, g as useCanvasScale, b as useCockpit, w as useCockpitAutoRefresh, _ as useCockpitContext, O as useCockpitRefresh, v as useCockpitRuntimeEnv, T as validateCockpitConfig };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { createElementBlock as e, createElementVNode as t, createTextVNode as n, createVNode as r, defineAsyncComponent as i, defineComponent as a, inject as o, nextTick as s, onBeforeUnmount as c, onErrorCaptured as l,
|
|
2
|
-
import { ElButton as
|
|
3
|
-
import { LumalIcon as
|
|
1
|
+
import { createElementBlock as e, createElementVNode as t, createTextVNode as n, createVNode as r, defineAsyncComponent as i, defineComponent as a, inject as o, nextTick as s, onBeforeUnmount as c, onErrorCaptured as l, openBlock as u, provide as d, ref as f, renderSlot as p, shallowRef as m, toValue as h, unref as g, watch as _, withCtx as v } from "vue";
|
|
2
|
+
import { ElButton as y } from "element-plus";
|
|
3
|
+
import { LumalIcon as b } from "@lumal/icons-vue";
|
|
4
4
|
//#region src/composables/useCanvasScale.ts
|
|
5
|
-
function
|
|
5
|
+
function x(e, t, n, r) {
|
|
6
6
|
if (n <= 0 || r <= 0 || e <= 0 || t <= 0) return {
|
|
7
7
|
scale: 1,
|
|
8
8
|
scaledWidth: n,
|
|
@@ -19,17 +19,17 @@ function y(e, t, n, r) {
|
|
|
19
19
|
offsetY: (t - o) / 2
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
let n =
|
|
22
|
+
function S(e, t) {
|
|
23
|
+
let n = m({
|
|
24
24
|
scale: 1,
|
|
25
25
|
scaledWidth: t.baseWidth(),
|
|
26
26
|
scaledHeight: t.baseHeight(),
|
|
27
27
|
offsetX: 0,
|
|
28
28
|
offsetY: 0
|
|
29
|
-
}), r =
|
|
29
|
+
}), r = f(!1), i = null, a = 0;
|
|
30
30
|
function o() {
|
|
31
31
|
let i = e.value;
|
|
32
|
-
i && (n.value =
|
|
32
|
+
i && (n.value = x(i.clientWidth, i.clientHeight, t.baseWidth(), t.baseHeight()), r.value = !0);
|
|
33
33
|
}
|
|
34
34
|
function s() {
|
|
35
35
|
if (typeof requestAnimationFrame > "u") {
|
|
@@ -40,10 +40,22 @@ function b(e, t) {
|
|
|
40
40
|
a = 0, o();
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
function l() {
|
|
44
|
+
i?.disconnect(), i = null;
|
|
45
|
+
}
|
|
46
|
+
function u() {
|
|
47
|
+
l(), !(t.enabled !== void 0 && !h(t.enabled)) && (o(), typeof ResizeObserver < "u" && e.value && (i = new ResizeObserver(s), i.observe(e.value)));
|
|
48
|
+
}
|
|
49
|
+
return _([
|
|
50
|
+
e,
|
|
51
|
+
t.baseWidth,
|
|
52
|
+
t.baseHeight,
|
|
53
|
+
() => t.enabled === void 0 || h(t.enabled)
|
|
54
|
+
], u, {
|
|
55
|
+
flush: "post",
|
|
56
|
+
immediate: !0
|
|
45
57
|
}), c(() => {
|
|
46
|
-
a && typeof cancelAnimationFrame < "u" && cancelAnimationFrame(a),
|
|
58
|
+
a && typeof cancelAnimationFrame < "u" && cancelAnimationFrame(a), l();
|
|
47
59
|
}), {
|
|
48
60
|
result: n,
|
|
49
61
|
ready: r,
|
|
@@ -52,37 +64,37 @@ function b(e, t) {
|
|
|
52
64
|
}
|
|
53
65
|
//#endregion
|
|
54
66
|
//#region src/composables/useCockpitContext.ts
|
|
55
|
-
var
|
|
56
|
-
function
|
|
57
|
-
|
|
67
|
+
var C = Symbol("lumal-cockpit-context");
|
|
68
|
+
function w(e) {
|
|
69
|
+
d(C, e);
|
|
58
70
|
}
|
|
59
|
-
function
|
|
60
|
-
let t = o(
|
|
71
|
+
function T(e = !1) {
|
|
72
|
+
let t = o(C, null);
|
|
61
73
|
if (!t && !e) throw Error("[cockpit] 未找到驾驶舱渲染上下文,请确认组件在 LumalCockpit 内渲染。");
|
|
62
74
|
return t;
|
|
63
75
|
}
|
|
64
76
|
//#endregion
|
|
65
77
|
//#region src/config/defaults.ts
|
|
66
|
-
var
|
|
67
|
-
function
|
|
68
|
-
|
|
78
|
+
var E = 3, D = 320, ee = 420, O = 100, k = 0;
|
|
79
|
+
function A(e = "ck") {
|
|
80
|
+
k += 1;
|
|
69
81
|
let t = Date.now().toString(36), n = Math.random().toString(36).slice(2, 8);
|
|
70
|
-
return `${e}-${t}-${
|
|
82
|
+
return `${e}-${t}-${k.toString(36)}-${n}`;
|
|
71
83
|
}
|
|
72
|
-
function
|
|
84
|
+
function j(e, t) {
|
|
73
85
|
return {
|
|
74
|
-
id:
|
|
86
|
+
id: A("widget"),
|
|
75
87
|
type: e,
|
|
76
88
|
title: t
|
|
77
89
|
};
|
|
78
90
|
}
|
|
79
|
-
function
|
|
91
|
+
function M(e = 320) {
|
|
80
92
|
return {
|
|
81
|
-
id:
|
|
93
|
+
id: A("column"),
|
|
82
94
|
width: e
|
|
83
95
|
};
|
|
84
96
|
}
|
|
85
|
-
function
|
|
97
|
+
function N(e) {
|
|
86
98
|
let t = Math.max(1, e.columns.length), n = Math.max(t, Math.round(e.width) || 420);
|
|
87
99
|
e.width = n;
|
|
88
100
|
let r = Math.floor(n / t), i = n - r * t;
|
|
@@ -90,36 +102,36 @@ function M(e) {
|
|
|
90
102
|
e.width = r + +(i > 0), i > 0 && --i;
|
|
91
103
|
});
|
|
92
104
|
}
|
|
93
|
-
function
|
|
94
|
-
return { id:
|
|
105
|
+
function P() {
|
|
106
|
+
return { id: A("cell") };
|
|
95
107
|
}
|
|
96
|
-
function
|
|
108
|
+
function F(e, t = "grid", n = 100) {
|
|
97
109
|
return {
|
|
98
|
-
id:
|
|
110
|
+
id: A("row"),
|
|
99
111
|
height: n,
|
|
100
112
|
mode: t,
|
|
101
|
-
cells: t === "grid" ? Array.from({ length: Math.max(1, e) },
|
|
113
|
+
cells: t === "grid" ? Array.from({ length: Math.max(1, e) }, P) : [],
|
|
102
114
|
widgets: []
|
|
103
115
|
};
|
|
104
116
|
}
|
|
105
|
-
function
|
|
106
|
-
let r = Array.from({ length: Math.max(1, e) }, () =>
|
|
117
|
+
function I(e = 1, t = 1, n = 420) {
|
|
118
|
+
let r = Array.from({ length: Math.max(1, e) }, () => M()), i = {
|
|
107
119
|
width: n,
|
|
108
120
|
columns: r,
|
|
109
|
-
rows: Array.from({ length: Math.max(1, t) }, () =>
|
|
121
|
+
rows: Array.from({ length: Math.max(1, t) }, () => F(r.length, "grid", 100 / Math.max(1, t)))
|
|
110
122
|
};
|
|
111
|
-
return
|
|
123
|
+
return N(i), i;
|
|
112
124
|
}
|
|
113
|
-
function
|
|
125
|
+
function L(e = "新布局") {
|
|
114
126
|
return {
|
|
115
|
-
id:
|
|
127
|
+
id: A("layout"),
|
|
116
128
|
title: e,
|
|
117
|
-
left:
|
|
118
|
-
right:
|
|
129
|
+
left: I(),
|
|
130
|
+
right: I()
|
|
119
131
|
};
|
|
120
132
|
}
|
|
121
|
-
function
|
|
122
|
-
let t =
|
|
133
|
+
function R(e = A("cockpit")) {
|
|
134
|
+
let t = L("布局 1");
|
|
123
135
|
return {
|
|
124
136
|
schemaVersion: 3,
|
|
125
137
|
id: e,
|
|
@@ -130,63 +142,63 @@ function L(e = k("cockpit")) {
|
|
|
130
142
|
}
|
|
131
143
|
//#endregion
|
|
132
144
|
//#region src/config/normalize.ts
|
|
133
|
-
function
|
|
145
|
+
function z(e) {
|
|
134
146
|
return typeof e == "object" && !!e && !Array.isArray(e);
|
|
135
147
|
}
|
|
136
|
-
function
|
|
148
|
+
function B(e) {
|
|
137
149
|
return Array.isArray(e) ? e : [];
|
|
138
150
|
}
|
|
139
|
-
function
|
|
151
|
+
function V(e, t) {
|
|
140
152
|
return typeof e == "string" && e.trim() ? e : t;
|
|
141
153
|
}
|
|
142
|
-
function
|
|
154
|
+
function H(e, t) {
|
|
143
155
|
let n = typeof e == "number" ? e : Number(e);
|
|
144
156
|
return Number.isFinite(n) && n > 0 ? n : t;
|
|
145
157
|
}
|
|
146
|
-
function
|
|
147
|
-
if (!(!
|
|
148
|
-
id:
|
|
158
|
+
function U(e) {
|
|
159
|
+
if (!(!z(e) || typeof e.type != "string" || !e.type.trim())) return {
|
|
160
|
+
id: V(e.id, A("widget")),
|
|
149
161
|
type: e.type,
|
|
150
162
|
title: typeof e.title == "string" && e.title.trim() ? e.title : void 0
|
|
151
163
|
};
|
|
152
164
|
}
|
|
153
|
-
function
|
|
154
|
-
let t =
|
|
165
|
+
function W(e) {
|
|
166
|
+
let t = z(e) ? e : {};
|
|
155
167
|
return {
|
|
156
|
-
id:
|
|
157
|
-
widget:
|
|
168
|
+
id: V(t.id, A("cell")),
|
|
169
|
+
widget: U(t.widget)
|
|
158
170
|
};
|
|
159
171
|
}
|
|
160
|
-
function
|
|
161
|
-
let t =
|
|
162
|
-
let t =
|
|
172
|
+
function G(e) {
|
|
173
|
+
let t = B(e).map((e) => {
|
|
174
|
+
let t = z(e) ? e : {};
|
|
163
175
|
return {
|
|
164
|
-
id:
|
|
165
|
-
width: Math.round(
|
|
176
|
+
id: V(t.id, A("column")),
|
|
177
|
+
width: Math.round(H(t.width, 320))
|
|
166
178
|
};
|
|
167
179
|
});
|
|
168
|
-
return t.length ? t : [
|
|
180
|
+
return t.length ? t : [M()];
|
|
169
181
|
}
|
|
170
|
-
function
|
|
171
|
-
let n =
|
|
172
|
-
id:
|
|
173
|
-
height:
|
|
182
|
+
function K(e, t) {
|
|
183
|
+
let n = z(e) ? e : {}, r = n.mode === "tabs" ? "tabs" : "grid", i = {
|
|
184
|
+
id: V(n.id, A("row")),
|
|
185
|
+
height: H(n.height, 100),
|
|
174
186
|
mode: r,
|
|
175
187
|
cells: [],
|
|
176
188
|
widgets: []
|
|
177
189
|
};
|
|
178
190
|
if (r === "tabs") {
|
|
179
|
-
i.widgets =
|
|
191
|
+
i.widgets = B(n.widgets).map(U).filter((e) => !!e);
|
|
180
192
|
let e = typeof n.activeWidgetId == "string" ? n.activeWidgetId : void 0;
|
|
181
193
|
i.activeWidgetId = i.widgets.some((t) => t.id === e) ? e : i.widgets[0]?.id;
|
|
182
194
|
} else {
|
|
183
|
-
let e =
|
|
184
|
-
for (; e.length < t;) e.push(
|
|
195
|
+
let e = B(n.cells).map(W).slice(0, t);
|
|
196
|
+
for (; e.length < t;) e.push(P());
|
|
185
197
|
i.cells = e;
|
|
186
198
|
}
|
|
187
199
|
return i;
|
|
188
200
|
}
|
|
189
|
-
function
|
|
201
|
+
function q(e) {
|
|
190
202
|
let t = e.reduce((e, t) => e + t.height, 0);
|
|
191
203
|
if (t <= 0) {
|
|
192
204
|
let t = 100 / e.length;
|
|
@@ -201,32 +213,32 @@ function K(e) {
|
|
|
201
213
|
let n = Number((100 - e.reduce((e, t) => e + t.height, 0)).toFixed(3));
|
|
202
214
|
e[e.length - 1] && (e[e.length - 1].height = Number((e[e.length - 1].height + n).toFixed(3)));
|
|
203
215
|
}
|
|
204
|
-
function
|
|
205
|
-
let t =
|
|
206
|
-
a.length || a.push(
|
|
216
|
+
function J(e) {
|
|
217
|
+
let t = z(e) ? e : {}, n = G(t.columns), r = n.reduce((e, t) => e + t.width, 0), i = Math.round(H(t.width, r > 0 ? r : 420)), a = B(t.rows).map((e) => K(e, n.length));
|
|
218
|
+
a.length || a.push(F(n.length)), q(a);
|
|
207
219
|
let o = {
|
|
208
220
|
width: i,
|
|
209
221
|
columns: n,
|
|
210
222
|
rows: a
|
|
211
223
|
};
|
|
212
|
-
return
|
|
213
|
-
}
|
|
214
|
-
function J(e) {
|
|
215
|
-
let t = R(e) ? e : {}, n = I(B(t.title, "未命名布局"));
|
|
216
|
-
return n.id = B(t.id, n.id), n.left = q(t.left), n.right = q(t.right), n;
|
|
224
|
+
return N(o), o;
|
|
217
225
|
}
|
|
218
226
|
function Y(e) {
|
|
219
|
-
let t =
|
|
227
|
+
let t = z(e) ? e : {}, n = L(V(t.title, "未命名布局"));
|
|
228
|
+
return n.id = V(t.id, n.id), n.left = J(t.left), n.right = J(t.right), n;
|
|
229
|
+
}
|
|
230
|
+
function X(e) {
|
|
231
|
+
let t = z(e) ? e : {}, n = B(t.layouts).map(Y), r = {
|
|
220
232
|
schemaVersion: 3,
|
|
221
|
-
id:
|
|
222
|
-
title:
|
|
223
|
-
layouts: n.length ? n : [
|
|
233
|
+
id: V(t.id, A("cockpit")),
|
|
234
|
+
title: V(t.title, "驾驶舱"),
|
|
235
|
+
layouts: n.length ? n : [L("布局 1")]
|
|
224
236
|
}, i = typeof t.activeLayoutId == "string" ? t.activeLayoutId : void 0;
|
|
225
237
|
return r.activeLayoutId = r.layouts.some((e) => e.id === i) ? i : r.layouts[0].id, r;
|
|
226
238
|
}
|
|
227
239
|
//#endregion
|
|
228
240
|
//#region src/messaging/createCockpitMessageBus.ts
|
|
229
|
-
function
|
|
241
|
+
function Z() {
|
|
230
242
|
let e = /* @__PURE__ */ new Map();
|
|
231
243
|
function t(t) {
|
|
232
244
|
let n = e.get(t.topic);
|
|
@@ -267,35 +279,35 @@ function X() {
|
|
|
267
279
|
}
|
|
268
280
|
//#endregion
|
|
269
281
|
//#region src/runtime/CockpitErrorBoundary.vue?vue&type=script&setup=true&lang.ts
|
|
270
|
-
var
|
|
282
|
+
var Q = { class: "lumal-cockpit-error-boundary" }, te = {
|
|
271
283
|
class: "lumal-cockpit-error-boundary__fallback",
|
|
272
284
|
role: "alert"
|
|
273
|
-
},
|
|
285
|
+
}, ne = /* @__PURE__ */ a({
|
|
274
286
|
__name: "CockpitErrorBoundary",
|
|
275
287
|
emits: ["error"],
|
|
276
288
|
setup(i, { emit: a }) {
|
|
277
|
-
let o = a, c =
|
|
278
|
-
l((e) => (c.value = !0,
|
|
289
|
+
let o = a, c = f(!1), d = f(null), m = f(0);
|
|
290
|
+
l((e) => (c.value = !0, d.value = e, o("error", e), !1));
|
|
279
291
|
async function h() {
|
|
280
|
-
c.value = !1,
|
|
292
|
+
c.value = !1, d.value = null, await s(), m.value += 1;
|
|
281
293
|
}
|
|
282
|
-
return (i, a) => (
|
|
294
|
+
return (i, a) => (u(), e("div", Q, [c.value ? p(i.$slots, "error", {
|
|
283
295
|
key: 0,
|
|
284
|
-
error:
|
|
296
|
+
error: d.value,
|
|
285
297
|
retry: h
|
|
286
|
-
}, () => [t("div",
|
|
298
|
+
}, () => [t("div", te, [a[1] ||= t("p", { class: "lumal-cockpit-error-boundary__message" }, " 组件渲染失败 ", -1), r(g(y), {
|
|
287
299
|
class: "lumal-cockpit-error-boundary__retry",
|
|
288
300
|
onClick: h
|
|
289
301
|
}, {
|
|
290
|
-
default:
|
|
302
|
+
default: v(() => [r(g(b), {
|
|
291
303
|
name: "lumal:refresh",
|
|
292
304
|
size: 15
|
|
293
305
|
}), a[0] ||= n(" 重试 ", -1)]),
|
|
294
306
|
_: 1
|
|
295
|
-
})])]) :
|
|
307
|
+
})])]) : p(i.$slots, "default", { key: m.value })]));
|
|
296
308
|
}
|
|
297
309
|
}), $ = /* @__PURE__ */ new WeakMap();
|
|
298
|
-
function
|
|
310
|
+
function re(e) {
|
|
299
311
|
if (typeof e == "function") {
|
|
300
312
|
let t = e, n = $.get(t);
|
|
301
313
|
if (n) return n;
|
|
@@ -305,4 +317,4 @@ function ne(e) {
|
|
|
305
317
|
return e;
|
|
306
318
|
}
|
|
307
319
|
//#endregion
|
|
308
|
-
export {
|
|
320
|
+
export { N as _, E as a, x as b, O as c, P as d, M as f, j as g, I as h, X as i, A as l, L as m, ne as n, D as o, F as p, Z as r, ee as s, re as t, R as u, w as v, S as x, T as y };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require("vue"),t=require("element-plus"),n=require("@lumal/icons-vue");function r(e,t,n,r){if(n<=0||r<=0||e<=0||t<=0)return{scale:1,scaledWidth:n,scaledHeight:r,offsetX:0,offsetY:0};let i=Math.min(e/n,t/r),a=n*i,o=r*i;return{scale:i,scaledWidth:a,scaledHeight:o,offsetX:(e-a)/2,offsetY:(t-o)/2}}function i(t,n){let i=(0,e.shallowRef)({scale:1,scaledWidth:n.baseWidth(),scaledHeight:n.baseHeight(),offsetX:0,offsetY:0}),a=(0,e.ref)(!1),o=null,s=0;function c(){let e=t.value;e&&(i.value=r(e.clientWidth,e.clientHeight,n.baseWidth(),n.baseHeight()),a.value=!0)}function l(){if(typeof requestAnimationFrame>`u`){c();return}s&&cancelAnimationFrame(s),s=requestAnimationFrame(()=>{s=0,c()})}function u(){o?.disconnect(),o=null}function d(){u(),!(n.enabled!==void 0&&!(0,e.toValue)(n.enabled))&&(c(),typeof ResizeObserver<`u`&&t.value&&(o=new ResizeObserver(l),o.observe(t.value)))}return(0,e.watch)([t,n.baseWidth,n.baseHeight,()=>n.enabled===void 0||(0,e.toValue)(n.enabled)],d,{flush:`post`,immediate:!0}),(0,e.onBeforeUnmount)(()=>{s&&typeof cancelAnimationFrame<`u`&&cancelAnimationFrame(s),u()}),{result:i,ready:a,measure:c}}var a=Symbol(`lumal-cockpit-context`);function o(t){(0,e.provide)(a,t)}function s(t=!1){let n=(0,e.inject)(a,null);if(!n&&!t)throw Error(`[cockpit] 未找到驾驶舱渲染上下文,请确认组件在 LumalCockpit 内渲染。`);return n}var c=3,l=320,u=420,d=100,f=0;function p(e=`ck`){f+=1;let t=Date.now().toString(36),n=Math.random().toString(36).slice(2,8);return`${e}-${t}-${f.toString(36)}-${n}`}function m(e,t){return{id:p(`widget`),type:e,title:t}}function h(e=320){return{id:p(`column`),width:e}}function g(e){let t=Math.max(1,e.columns.length),n=Math.max(t,Math.round(e.width)||420);e.width=n;let r=Math.floor(n/t),i=n-r*t;e.columns.forEach(e=>{e.width=r+ +(i>0),i>0&&--i})}function _(){return{id:p(`cell`)}}function v(e,t=`grid`,n=100){return{id:p(`row`),height:n,mode:t,cells:t===`grid`?Array.from({length:Math.max(1,e)},_):[],widgets:[]}}function y(e=1,t=1,n=420){let r=Array.from({length:Math.max(1,e)},()=>h()),i={width:n,columns:r,rows:Array.from({length:Math.max(1,t)},()=>v(r.length,`grid`,100/Math.max(1,t)))};return g(i),i}function b(e=`新布局`){return{id:p(`layout`),title:e,left:y(),right:y()}}function x(e=p(`cockpit`)){let t=b(`布局 1`);return{schemaVersion:3,id:e,title:`驾驶舱`,activeLayoutId:t.id,layouts:[t]}}function S(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function C(e){return Array.isArray(e)?e:[]}function w(e,t){return typeof e==`string`&&e.trim()?e:t}function T(e,t){let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)&&n>0?n:t}function E(e){if(!(!S(e)||typeof e.type!=`string`||!e.type.trim()))return{id:w(e.id,p(`widget`)),type:e.type,title:typeof e.title==`string`&&e.title.trim()?e.title:void 0}}function D(e){let t=S(e)?e:{};return{id:w(t.id,p(`cell`)),widget:E(t.widget)}}function O(e){let t=C(e).map(e=>{let t=S(e)?e:{};return{id:w(t.id,p(`column`)),width:Math.round(T(t.width,320))}});return t.length?t:[h()]}function k(e,t){let n=S(e)?e:{},r=n.mode===`tabs`?`tabs`:`grid`,i={id:w(n.id,p(`row`)),height:T(n.height,100),mode:r,cells:[],widgets:[]};if(r===`tabs`){i.widgets=C(n.widgets).map(E).filter(e=>!!e);let e=typeof n.activeWidgetId==`string`?n.activeWidgetId:void 0;i.activeWidgetId=i.widgets.some(t=>t.id===e)?e:i.widgets[0]?.id}else{let e=C(n.cells).map(D).slice(0,t);for(;e.length<t;)e.push(_());i.cells=e}return i}function A(e){let t=e.reduce((e,t)=>e+t.height,0);if(t<=0){let t=100/e.length;e.forEach(e=>{e.height=t});return}e.forEach(e=>{e.height=Number((e.height/t*100).toFixed(3))});let n=Number((100-e.reduce((e,t)=>e+t.height,0)).toFixed(3));e[e.length-1]&&(e[e.length-1].height=Number((e[e.length-1].height+n).toFixed(3)))}function j(e){let t=S(e)?e:{},n=O(t.columns),r=n.reduce((e,t)=>e+t.width,0),i=Math.round(T(t.width,r>0?r:420)),a=C(t.rows).map(e=>k(e,n.length));a.length||a.push(v(n.length)),A(a);let o={width:i,columns:n,rows:a};return g(o),o}function M(e){let t=S(e)?e:{},n=b(w(t.title,`未命名布局`));return n.id=w(t.id,n.id),n.left=j(t.left),n.right=j(t.right),n}function N(e){let t=S(e)?e:{},n=C(t.layouts).map(M),r={schemaVersion:3,id:w(t.id,p(`cockpit`)),title:w(t.title,`驾驶舱`),layouts:n.length?n:[b(`布局 1`)]},i=typeof t.activeLayoutId==`string`?t.activeLayoutId:void 0;return r.activeLayoutId=r.layouts.some(e=>e.id===i)?i:r.layouts[0].id,r}function P(){let e=new Map;function t(t){let n=e.get(t.topic);if(!n||n.size===0)return;let r=[...n];for(let e of r){let n=t.targetId===void 0,r=e.targetId!==void 0&&e.targetId===t.targetId;if(!(!n&&!r))try{e.handler(t)}catch(e){console.error(`[cockpit] 消息订阅处理器异常(topic: ${t.topic})`,e)}}}function n(t,n,r){let i=e.get(t);i||(i=new Set,e.set(t,i));let a={handler:n,targetId:r?.targetId};return i.add(a),function(){let n=e.get(t);n&&(n.delete(a),n.size===0&&e.delete(t))}}function r(t){for(let[n,r]of e){for(let e of[...r])e.targetId===t&&r.delete(e);r.size===0&&e.delete(n)}}return{publish:t,subscribe:n,clearInstance:r}}var F={class:`lumal-cockpit-error-boundary`},I={class:`lumal-cockpit-error-boundary__fallback`,role:`alert`},L=(0,e.defineComponent)({__name:`CockpitErrorBoundary`,emits:[`error`],setup(r,{emit:i}){let a=i,o=(0,e.ref)(!1),s=(0,e.ref)(null),c=(0,e.ref)(0);(0,e.onErrorCaptured)(e=>(o.value=!0,s.value=e,a(`error`,e),!1));async function l(){o.value=!1,s.value=null,await(0,e.nextTick)(),c.value+=1}return(r,i)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,F,[o.value?(0,e.renderSlot)(r.$slots,`error`,{key:0,error:s.value,retry:l},()=>[(0,e.createElementVNode)(`div`,I,[i[1]||=(0,e.createElementVNode)(`p`,{class:`lumal-cockpit-error-boundary__message`},` 组件渲染失败 `,-1),(0,e.createVNode)((0,e.unref)(t.ElButton),{class:`lumal-cockpit-error-boundary__retry`,onClick:l},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(n.LumalIcon),{name:`lumal:refresh`,size:15}),i[0]||=(0,e.createTextVNode)(` 重试 `,-1)]),_:1})])]):(0,e.renderSlot)(r.$slots,`default`,{key:c.value})]))}}),R=new WeakMap;function z(t){if(typeof t==`function`){let n=t,r=R.get(n);if(r)return r;let i=(0,e.defineAsyncComponent)(t);return R.set(n,i),i}return t}Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return s}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./resolveComponent-BwChMZGV.cjs");let t=require("vue"),n=require("element-plus"),r=require("@lumal/icons-vue");function i(e){let n=(0,t.computed)(()=>{let t=e.config().layouts;if(!t.length)return;let n=e.activeLayoutId.value??e.config().activeLayoutId;return t.find(e=>e.id===n)??t[0]});function r(t){e.activeLayoutId.value=t}return{activeLayout:n,selectLayout:r}}var a=`cockpit:refresh`,o=300*1e3;function s(e){let n=e.enabled??(0,t.ref)(e.defaultEnabled??!1),r;function i(n=`manual`){let r={reason:n,at:Date.now()};e.messages.publish({topic:a,sourceId:(0,t.toValue)(e.sourceId),payload:r})}function o(){r!==void 0&&(clearInterval(r),r=void 0)}function s(){o();let n=Math.max(1e3,(0,t.toValue)(e.intervalMs)??3e5);r=setInterval(()=>{typeof document<`u`&&document.hidden||i(`interval`)},n)}function c(){!document.hidden&&n.value&&i(`interval`)}return typeof document<`u`&&document.addEventListener(`visibilitychange`,c),(0,t.watch)(n,e=>{e?s():o()},{immediate:!0}),(0,t.watch)(()=>(0,t.toValue)(e.intervalMs),()=>{n.value&&s()}),(0,t.onBeforeUnmount)(()=>{o(),typeof document<`u`&&document.removeEventListener(`visibilitychange`,c)}),{enabled:n,refreshNow:i}}var c=Symbol(`lumal-cockpit-runtime-env`);function l(){let e=(0,t.inject)(c,null);if(!e)throw Error(`[cockpit] 运行时环境缺失,组件必须在 LumalCockpit 内渲染。`);return e}var u=[`data-widget-type`,`data-instance-id`,`data-cockpit-node-id`,`data-cockpit-side`],d={class:`lumal-cockpit-widget__body`},f={key:1,class:`lumal-cockpit-widget__missing`,role:`status`},p={key:1,class:`lumal-cockpit-widget__error`,role:`alert`},m=(0,t.defineComponent)({__name:`LumalCockpitWidgetHost`,props:{layoutId:{},side:{},widget:{},embedded:{type:Boolean}},setup(i){let a=i,o=l(),s=(0,t.computed)(()=>o.registry.resolveWidget(a.widget.type)),c=(0,t.computed)(()=>{let t=s.value;return t?e.t(t.component):null}),m=(0,t.shallowReactive)({cockpitId:o.cockpitId,layoutId:a.layoutId,instanceId:a.widget.id,mode:o.mode,messages:o.messages});(0,t.watchEffect)(()=>{m.cockpitId=o.cockpitId,m.layoutId=a.layoutId,m.instanceId=a.widget.id,m.mode=o.mode,m.messages=o.messages}),e.v(m),(0,t.onBeforeUnmount)(()=>{o.messages.clearInstance(a.widget.id)});let h=(0,t.computed)(()=>a.widget.title??s.value?.label??a.widget.type),g=(0,t.computed)(()=>a.embedded?`div`:o.cardComponent),_=(0,t.computed)(()=>a.embedded?{class:`lumal-cockpit-widget__embedded`}:{title:h.value,widget:a.widget});return(a,l)=>((0,t.openBlock)(),(0,t.createElementBlock)(`section`,{class:`lumal-cockpit-widget`,"data-widget-type":i.widget.type,"data-instance-id":i.widget.id,"data-cockpit-node":`widget`,"data-cockpit-node-id":i.widget.id,"data-cockpit-side":i.side},[((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(g.value),(0,t.normalizeProps)((0,t.guardReactiveProps)(_.value)),(0,t.createSlots)({default:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`div`,d,[s.value?((0,t.openBlock)(),(0,t.createBlock)(e.n,{key:1},{error:(0,t.withCtx)(({retry:e})=>[(0,t.unref)(o).slots.error?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)((0,t.unref)(o).slots.error),{key:0,retry:e,"instance-id":i.widget.id},null,8,[`retry`,`instance-id`])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,p,[l[1]||=(0,t.createElementVNode)(`span`,null,`模块加载失败`,-1),(0,t.createVNode)((0,t.unref)(n.ElButton),{text:``,type:`primary`,onClick:e},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(r.LumalIcon),{name:`lumal:refresh`,size:14}),l[0]||=(0,t.createTextVNode)(` 重试 `,-1)]),_:1},8,[`onClick`])]))]),default:(0,t.withCtx)(()=>[((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(c.value),{context:(0,t.unref)(m)},null,8,[`context`]))]),_:1})):((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:0},[(0,t.unref)(o).slots[`missing-widget`]?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)((0,t.unref)(o).slots[`missing-widget`]),{key:0,type:i.widget.type,"instance-id":i.widget.id},null,8,[`type`,`instance-id`])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,f,` 未注册模块:`+(0,t.toDisplayString)(i.widget.type),1))],64))])]),_:2},[!i.embedded&&(0,t.unref)(o).slots[`widget-title`]?{name:`title`,fn:(0,t.withCtx)(()=>[((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)((0,t.unref)(o).slots[`widget-title`]),{widget:i.widget,title:h.value},null,8,[`widget`,`title`]))]),key:`0`}:void 0]),1040))],8,u))}}),h=[`data-cockpit-node-id`,`data-cockpit-side`],g=[`data-cockpit-node-id`,`data-cockpit-side`],_={key:1,class:`lumal-cockpit-container__empty`,role:`status`},v={key:0,class:`lumal-cockpit-container__tabpanel`},y={key:1,class:`lumal-cockpit-container__empty`,role:`status`},b=(0,t.defineComponent)({__name:`LumalCockpitContainer`,props:{columns:{},layoutId:{},row:{},side:{}},setup(e){let n=e,r=(0,t.computed)(()=>({height:`${n.row.height}%`})),i=(0,t.computed)(()=>({gridTemplateColumns:n.columns.map(e=>`calc(${e.width} * var(--lumal-cockpit-x-unit, 1px))`).join(` `)})),a=(0,t.ref)(),o=(0,t.reactive)(new Set),s=l(),c=(0,t.computed)(()=>n.row.widgets.map(e=>({id:e.id,title:e.title??s.registry.resolveWidget(e.type)?.label??e.type,widget:e})));function u(){let e=n.row.activeWidgetId;return n.row.widgets.some(t=>t.id===e)?e:n.row.widgets[0]?.id}return(0,t.watch)(()=>[n.row.id,n.row.activeWidgetId],()=>{a.value=u()},{immediate:!0}),(0,t.watch)(()=>n.row.widgets.map(e=>e.id).join(`,`),()=>{let e=new Set(n.row.widgets.map(e=>e.id));o.forEach(t=>{e.has(t)||o.delete(t)}),n.row.widgets.some(e=>e.id===a.value)||(a.value=u())}),(0,t.watch)(a,e=>{e&&o.add(e)},{immediate:!0}),(n,l)=>((0,t.openBlock)(),(0,t.createElementBlock)(`section`,{class:(0,t.normalizeClass)([`lumal-cockpit-container`,{"is-tabs":e.row.mode===`tabs`}]),style:(0,t.normalizeStyle)(r.value),"data-cockpit-node":`row`,"data-cockpit-node-id":e.row.id,"data-cockpit-side":e.side},[e.row.mode===`grid`?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,class:`lumal-cockpit-container__grid`,style:(0,t.normalizeStyle)(i.value)},[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.row.cells,n=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n.id,class:`lumal-cockpit-container__cell`,"data-cockpit-node":`cell`,"data-cockpit-node-id":n.id,"data-cockpit-side":e.side},[n.widget?((0,t.openBlock)(),(0,t.createBlock)(m,{key:n.widget.id,"layout-id":e.layoutId,side:e.side,widget:n.widget},null,8,[`layout-id`,`side`,`widget`])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_,` 空模块槽 `))],8,g))),128))],4)):((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:1},[e.row.widgets.length?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)((0,t.unref)(s).cardComponent),{key:0,"active-tab-id":a.value,"onUpdate:activeTabId":l[0]||=e=>a.value=e,tabs:c.value},(0,t.createSlots)({default:(0,t.withCtx)(()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.row.widgets,n=>((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:n.id},[((0,t.unref)(s).cachePages?o.has(n.id):n.id===a.value)?(0,t.withDirectives)(((0,t.openBlock)(),(0,t.createElementBlock)(`div`,v,[(0,t.createVNode)(m,{embedded:``,"layout-id":e.layoutId,side:e.side,widget:n},null,8,[`layout-id`,`side`,`widget`])],512)),[[t.vShow,n.id===a.value]]):(0,t.createCommentVNode)(``,!0)],64))),128))]),_:2},[(0,t.unref)(s).slots[`widget-title`]?{name:`title`,fn:(0,t.withCtx)(({title:e,widget:n})=>[((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)((0,t.unref)(s).slots[`widget-title`]),{widget:n,title:e},null,8,[`widget`,`title`]))]),key:`0`}:void 0,(0,t.unref)(s).slots[`widget-title`]?{name:`tab`,fn:(0,t.withCtx)(({tab:e})=>[((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)((0,t.unref)(s).slots[`widget-title`]),{widget:e.widget,title:e.title},null,8,[`widget`,`title`]))]),key:`1`}:void 0]),1064,[`active-tab-id`,`tabs`])):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,y,` 空 Tab 行 `))],64))],14,h))}}),x=[`data-side`,`data-cockpit-node-id`,`data-cockpit-side`],S=(0,t.defineComponent)({__name:`LumalCockpitRegion`,props:{layoutId:{},region:{},side:{}},setup(e){let n=e,r=(0,t.computed)(()=>n.region.width>0?n.region.width:n.region.columns.reduce((e,t)=>e+t.width,0)),i=(0,t.computed)(()=>({width:`calc(${r.value} * var(--lumal-cockpit-x-unit, 1px) + ${Math.max(0,n.region.columns.length-1)} * var(--lumal-cockpit-gap-x, 12px))`}));return(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`section`,{class:`lumal-cockpit-region`,"data-side":e.side,"data-cockpit-node":`region`,"data-cockpit-node-id":`${e.layoutId}:${e.side}`,"data-cockpit-side":e.side,style:(0,t.normalizeStyle)(i.value)},[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.region.rows,n=>((0,t.openBlock)(),(0,t.createBlock)(b,{key:n.id,"layout-id":e.layoutId,side:e.side,columns:e.region.columns,row:n},null,8,[`layout-id`,`side`,`columns`,`row`]))),128))],12,x))}}),C=[`data-scale`,`data-viewport-mode`],w={class:`lumal-cockpit-canvas__header`},T={class:`lumal-cockpit-canvas__header-prefix`},E={class:`lumal-cockpit-canvas__title`},D={class:`lumal-cockpit-canvas__header-actions`},O={class:`lumal-cockpit-canvas__body`},k={class:`lumal-cockpit-canvas__center`},A={class:`lumal-cockpit-canvas__left`},j={class:`lumal-cockpit-canvas__right`},M=(0,t.defineComponent)({__name:`LumalCockpitCanvas`,props:{title:{},baseWidth:{},baseHeight:{},layout:{},centerContext:{},viewportMode:{}},setup(n){let r=n,i=(0,t.ref)(null),{result:a}=e.x(i,{baseWidth:()=>r.baseWidth,baseHeight:()=>r.baseHeight}),o=(0,t.computed)(()=>r.viewportMode===`vwvh`?{width:`100vw`,height:`100vh`,"--lumal-cockpit-x-unit":`${100/r.baseWidth}vw`,"--lumal-cockpit-y-unit":`${100/r.baseHeight}vh`}:r.viewportMode===`external`?{width:`${r.baseWidth}px`,height:`${r.baseHeight}px`,"--lumal-cockpit-x-unit":`1px`,"--lumal-cockpit-y-unit":`1px`}:{width:`${r.baseWidth}px`,height:`${r.baseHeight}px`,transform:`translate(${a.value.offsetX}px, ${a.value.offsetY}px) scale(${a.value.scale})`,transformOrigin:`top left`,"--lumal-cockpit-x-unit":`1px`,"--lumal-cockpit-y-unit":`1px`});return(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`containerRef`,ref:i,class:`lumal-cockpit-canvas`,"data-scale":(0,t.unref)(a).scale.toFixed(3),"data-viewport-mode":n.viewportMode},[(0,t.createElementVNode)(`div`,{class:`lumal-cockpit-canvas__stage`,style:(0,t.normalizeStyle)(o.value)},[(0,t.createElementVNode)(`header`,w,[(0,t.createElementVNode)(`div`,T,[(0,t.renderSlot)(e.$slots,`header-prefix`)]),(0,t.createElementVNode)(`div`,E,[(0,t.renderSlot)(e.$slots,`header-title`,{title:n.title},()=>[(0,t.createElementVNode)(`h1`,null,(0,t.toDisplayString)(n.title),1)])]),(0,t.createElementVNode)(`div`,D,[(0,t.renderSlot)(e.$slots,`header-actions`)])]),(0,t.createElementVNode)(`div`,O,[(0,t.createElementVNode)(`main`,k,[(0,t.renderSlot)(e.$slots,`center`,{context:n.centerContext,layout:n.layout},()=>[r[0]||=(0,t.createElementVNode)(`div`,{class:`lumal-cockpit-center__empty`,role:`status`},` 由应用提供中央内容 `,-1)])]),(0,t.createElementVNode)(`div`,A,[(0,t.renderSlot)(e.$slots,`left`,{layout:n.layout,region:n.layout.left,side:`left`},()=>[(0,t.createVNode)(S,{side:`left`,"layout-id":n.layout.id,region:n.layout.left},null,8,[`layout-id`,`region`])])]),(0,t.createElementVNode)(`div`,j,[(0,t.renderSlot)(e.$slots,`right`,{layout:n.layout,region:n.layout.right,side:`right`},()=>[(0,t.createVNode)(S,{side:`right`,"layout-id":n.layout.id,region:n.layout.right},null,8,[`layout-id`,`region`])])])])],4)],8,C))}}),N={key:0,class:`lumal-cockpit-card__header`},P={class:`lumal-cockpit-card__tablist`,role:`tablist`,"aria-label":`模块切换`},F=[`id`,`aria-selected`,`tabindex`,`onClick`,`onKeydown`],I={key:1,class:`lumal-cockpit-card__header`},L={class:`lumal-cockpit-card__title`},R=[`id`,`role`,`aria-labelledby`,`tabindex`],z=(0,t.defineComponent)({__name:`LumalCockpitCard`,props:{title:{},widget:{},tabs:{default:()=>[]},activeTabId:{}},emits:[`update:activeTabId`],setup(e,{emit:n}){let r=e,i=n,a=(0,t.useId)(),o=new Map,s=(0,t.computed)(()=>r.tabs.length>1),c=(0,t.computed)(()=>r.tabs[0]),l=(0,t.computed)(()=>{let e=r.activeTabId;return r.tabs.some(t=>t.id===e)?e:r.tabs[0]?.id}),u=(0,t.computed)(()=>r.widget??c.value?.widget),d=(0,t.computed)(()=>r.title??r.widget?.title??c.value?.title??u.value?.title??u.value?.type),f=`${a}-tabpanel`;function p(e){return`${a}-tab-${e}`}function m(e,t){t instanceof HTMLButtonElement?o.set(e,t):o.delete(e)}function h(e){e!==l.value&&i(`update:activeTabId`,e)}function g(e,n){if(!r.tabs.length)return;let i={ArrowRight:(n+1)%r.tabs.length,ArrowDown:(n+1)%r.tabs.length,ArrowLeft:(n-1+r.tabs.length)%r.tabs.length,ArrowUp:(n-1+r.tabs.length)%r.tabs.length,Home:0,End:r.tabs.length-1}[e.key],a=r.tabs[i];a&&(e.preventDefault(),h(a.id),(0,t.nextTick)(()=>o.get(a.id)?.focus()))}return(0,t.watch)(()=>[r.activeTabId,r.tabs.map(e=>e.id).join(`,`)],()=>{let e=l.value;s.value&&e&&e!==r.activeTabId&&i(`update:activeTabId`,e)},{immediate:!0}),(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`section`,{class:(0,t.normalizeClass)([`lumal-cockpit-card`,{"is-tabs":s.value}])},[s.value?((0,t.openBlock)(),(0,t.createElementBlock)(`header`,N,[(0,t.createElementVNode)(`div`,P,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(e.tabs,(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{id:p(r),key:e.id,ref_for:!0,ref:t=>m(e.id,t),type:`button`,role:`tab`,class:(0,t.normalizeClass)([`lumal-cockpit-card__tab`,{"is-active":e.id===l.value}]),"aria-controls":f,"aria-selected":e.id===l.value,tabindex:e.id===l.value?0:-1,onClick:t=>h(e.id),onKeydown:e=>g(e,r)},[(0,t.renderSlot)(n.$slots,`tab`,{tab:e,active:e.id===l.value},()=>[(0,t.createTextVNode)((0,t.toDisplayString)(e.title),1)])],42,F))),128))])])):d.value||n.$slots.title?((0,t.openBlock)(),(0,t.createElementBlock)(`header`,I,[(0,t.createElementVNode)(`div`,L,[(0,t.renderSlot)(n.$slots,`title`,{title:d.value,widget:u.value},()=>[(0,t.createTextVNode)((0,t.toDisplayString)(d.value),1)])])])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,{id:s.value?f:void 0,class:`lumal-cockpit-card__body`,role:s.value?`tabpanel`:void 0,"aria-labelledby":s.value?p(Math.max(0,e.tabs.findIndex(e=>e.id===l.value))):void 0,tabindex:s.value?0:void 0},[(0,t.renderSlot)(n.$slots,`default`,{activeTabId:l.value})],8,R)],2))}}),B=[`data-mode`,`data-cockpit-theme`,`data-viewport-mode`],V={key:0,class:`lumal-cockpit__auto-refresh`},H={class:`lumal-cockpit__auto-refresh-control`},U=(0,t.defineComponent)({__name:`LumalCockpit`,props:(0,t.mergeModels)({config:{},registry:{},baseWidth:{default:1920},baseHeight:{default:1080},cachePages:{type:Boolean,default:!0},renderMode:{default:`runtime`},viewportMode:{default:`scale`},messageBus:{},cardComponent:{},autoRefresh:{type:Boolean,default:!1},autoRefreshIntervalMs:{default:o}},{activeLayoutId:{},activeLayoutIdModifiers:{},themeMode:{default:`dark`},themeModeModifiers:{},autoRefreshEnabled:{type:Boolean,default:!1},autoRefreshEnabledModifiers:{}}),emits:(0,t.mergeModels)([`configure`,`configError`,`nodeSelect`],[`update:activeLayoutId`,`update:themeMode`,`update:autoRefreshEnabled`]),setup(r,{expose:a,emit:o}){let l=r,u=o,d=(0,t.useModel)(r,`activeLayoutId`),f=(0,t.useModel)(r,`themeMode`),p=(0,t.useModel)(r,`autoRefreshEnabled`),m=(0,t.useSlots)(),h=(0,t.shallowRef)(null),g=(0,t.shallowRef)(null),_=``,v=``;(0,t.watchEffect)(()=>{try{let t=JSON.stringify(l.config);if(t===_){g.value=null;return}let n=e.i(l.config),r=JSON.stringify(n);_=t,g.value=null,r!==v&&(h.value=n,v=r)}catch(e){g.value=e}});let y=(0,t.computed)(()=>({config:h.value,error:g.value}));(0,t.watch)(()=>y.value.error,e=>{e&&u(`configError`,e)},{immediate:!0});let b=l.messageBus??e.r(),x=(0,t.shallowReactive)({cockpitId:l.config.id,mode:l.renderMode,registry:l.registry,messages:b,cachePages:l.cachePages,slots:m,cardComponent:l.cardComponent??z});(0,t.watchEffect)(()=>{x.cockpitId=h.value?.id??l.config.id,x.mode=l.renderMode,x.registry=l.registry,x.cachePages=l.cachePages,x.cardComponent=l.cardComponent??z}),(0,t.provide)(c,x);let S=i({config:()=>h.value??l.config,activeLayoutId:d}),C=(0,t.computed)(()=>{let e=S.activeLayout.value;if(e)return{cockpitId:h.value?.id??l.config.id,layoutId:e.id,instanceId:`${e.id}:center`,mode:l.renderMode,messages:b}}),w=(0,t.ref)(!1);(0,t.watch)([()=>l.autoRefresh,p],([e,t])=>{w.value=!!(e&&t)},{immediate:!0});let T=(0,t.computed)(()=>{let e=Math.round(l.autoRefreshIntervalMs/6e4);return e>=1?`${e} 分钟`:`${Math.round(l.autoRefreshIntervalMs/1e3)} 秒`}),{refreshNow:E}=s({messages:b,sourceId:()=>h.value?.id??l.config.id,intervalMs:()=>l.autoRefreshIntervalMs,enabled:w}),D=(0,t.ref)(null);async function O(){D.value?.requestFullscreen&&await D.value.requestFullscreen()}async function k(){document.fullscreenElement&&await document.exitFullscreen()}function A(){f.value=f.value===`dark`?`light`:`dark`}a({enterFullscreen:O,exitFullscreen:k,messages:b,toggleTheme:A,refreshNow:E});let j=(0,t.computed)(()=>!!h.value?.layouts.length);function N(){u(`configure`)}function P(e){if(l.renderMode!==`design`)return;let t=(e.target instanceof Element?e.target:null)?.closest(`[data-cockpit-node]`);if(!t||!D.value?.contains(t))return;let n=t.dataset.cockpitNode,r=t.dataset.cockpitNodeId;!n||!r||u(`nodeSelect`,{kind:n,id:r,side:t.dataset.cockpitSide})}return(e,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`rootRef`,ref:D,class:`lumal-cockpit`,"data-mode":r.renderMode,"data-cockpit-theme":f.value,"data-viewport-mode":r.viewportMode,onClickCapture:P},[y.value.error?(0,t.renderSlot)(e.$slots,`error`,{key:0,error:y.value.error},()=>[i[1]||=(0,t.createElementVNode)(`div`,{class:`lumal-cockpit__error`,role:`alert`},` 配置加载失败 `,-1)]):j.value?(0,t.unref)(S).activeLayout.value&&C.value?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:2},[(0,t.createVNode)(M,{title:h.value.title,"base-width":r.baseWidth,"base-height":r.baseHeight,"viewport-mode":r.viewportMode,layout:(0,t.unref)(S).activeLayout.value,"center-context":C.value},{"header-prefix":(0,t.withCtx)(()=>[(0,t.renderSlot)(e.$slots,`header-prefix`)]),"header-title":(0,t.withCtx)(n=>[(0,t.renderSlot)(e.$slots,`header-title`,(0,t.normalizeProps)((0,t.guardReactiveProps)(n)))]),"header-actions":(0,t.withCtx)(()=>[r.autoRefresh?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,V,[(0,t.createVNode)((0,t.unref)(n.ElTooltip),{content:p.value?`关闭自动刷新(每 ${T.value})`:`开启自动刷新(每 ${T.value})`},{default:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`label`,H,[i[3]||=(0,t.createElementVNode)(`span`,null,`自动刷新`,-1),(0,t.createVNode)((0,t.unref)(n.ElSwitch),{modelValue:p.value,"onUpdate:modelValue":i[0]||=e=>p.value=e,size:`small`,"data-action":`cockpit-auto-refresh`,"aria-label":`全局自动刷新,间隔 ${T.value}`},null,8,[`modelValue`,`aria-label`])])]),_:1},8,[`content`])])):(0,t.createCommentVNode)(``,!0),(0,t.renderSlot)(e.$slots,`header-actions`)]),center:(0,t.withCtx)(n=>[(0,t.renderSlot)(e.$slots,`center`,(0,t.normalizeProps)((0,t.guardReactiveProps)(n)))]),left:(0,t.withCtx)(n=>[(0,t.renderSlot)(e.$slots,`left`,(0,t.normalizeProps)((0,t.guardReactiveProps)(n)))]),right:(0,t.withCtx)(n=>[(0,t.renderSlot)(e.$slots,`right`,(0,t.normalizeProps)((0,t.guardReactiveProps)(n)))]),_:3},8,[`title`,`base-width`,`base-height`,`viewport-mode`,`layout`,`center-context`]),(0,t.renderSlot)(e.$slots,`configure-trigger`,{configure:N})],64)):(0,t.createCommentVNode)(``,!0):(0,t.renderSlot)(e.$slots,`empty`,{key:1},()=>[i[2]||=(0,t.createElementVNode)(`div`,{class:`lumal-cockpit__empty`,role:`status`},` 空驾驶舱 `,-1)])],40,B))}});function W(e,t){let n=e;return n.install=function(n){n.component(t,e)},n}var G=W(U,`LumalCockpit`),K=W(z,`LumalCockpitCard`);Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return s}});
|