@lumal/cockpit 0.0.1-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 -0
- package/README.md +103 -0
- package/dist/cockpit.css +2 -0
- package/dist/createCockpitRegistry-D5F4d5By.js +30 -0
- package/dist/createCockpitRegistry-DHr9nXJY.cjs +1 -0
- package/dist/designer.cjs +1 -0
- package/dist/designer.js +2282 -0
- package/dist/index.cjs +1 -0
- package/dist/index.js +30 -0
- package/dist/registry.cjs +1 -0
- package/dist/registry.js +2 -0
- package/dist/resolveComponent-BF1aCxAk.cjs +1 -0
- package/dist/resolveComponent-QbJRsdxR.js +308 -0
- package/dist/runtime-CXiih7DE.js +627 -0
- package/dist/runtime-wzWMTWrS.cjs +1 -0
- package/dist/runtime.cjs +1 -0
- package/dist/runtime.js +3 -0
- package/dist/src/composables/index.d.ts +9 -0
- package/dist/src/composables/index.d.ts.map +1 -0
- package/dist/src/composables/useCanvasScale.d.ts +30 -0
- package/dist/src/composables/useCanvasScale.d.ts.map +1 -0
- package/dist/src/composables/useCockpit.d.ts +14 -0
- package/dist/src/composables/useCockpit.d.ts.map +1 -0
- package/dist/src/composables/useCockpitAutoRefresh.d.ts +27 -0
- package/dist/src/composables/useCockpitAutoRefresh.d.ts.map +1 -0
- package/dist/src/composables/useCockpitContext.d.ts +16 -0
- package/dist/src/composables/useCockpitContext.d.ts.map +1 -0
- package/dist/src/composables/useCockpitRefresh.d.ts +9 -0
- package/dist/src/composables/useCockpitRefresh.d.ts.map +1 -0
- package/dist/src/config/defaults.d.ts +19 -0
- package/dist/src/config/defaults.d.ts.map +1 -0
- package/dist/src/config/index.d.ts +13 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/migrate.d.ts +6 -0
- package/dist/src/config/migrate.d.ts.map +1 -0
- package/dist/src/config/normalize.d.ts +3 -0
- package/dist/src/config/normalize.d.ts.map +1 -0
- package/dist/src/config/validate.d.ts +8 -0
- package/dist/src/config/validate.d.ts.map +1 -0
- package/dist/src/designer/CockpitComponentLibrary.vue.d.ts +16 -0
- package/dist/src/designer/CockpitComponentLibrary.vue.d.ts.map +1 -0
- package/dist/src/designer/CockpitLayoutEditor.vue.d.ts +34 -0
- package/dist/src/designer/CockpitLayoutEditor.vue.d.ts.map +1 -0
- package/dist/src/designer/CockpitWidgetDropZone.vue.d.ts +45 -0
- package/dist/src/designer/CockpitWidgetDropZone.vue.d.ts.map +1 -0
- package/dist/src/designer/CockpitWidgetPreview.vue.d.ts +19 -0
- package/dist/src/designer/CockpitWidgetPreview.vue.d.ts.map +1 -0
- package/dist/src/designer/LumalCockpitDesigner.vue.d.ts +41 -0
- package/dist/src/designer/LumalCockpitDesigner.vue.d.ts.map +1 -0
- package/dist/src/designer/confirmWidgetReplacement.d.ts +3 -0
- package/dist/src/designer/confirmWidgetReplacement.d.ts.map +1 -0
- package/dist/src/designer/index.d.ts +13 -0
- package/dist/src/designer/index.d.ts.map +1 -0
- package/dist/src/designer/types.d.ts +13 -0
- package/dist/src/designer/types.d.ts.map +1 -0
- package/dist/src/designer/useCockpitDraft.d.ts +50 -0
- package/dist/src/designer/useCockpitDraft.d.ts.map +1 -0
- package/dist/src/index.d.ts +22 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/messaging/createCockpitMessageBus.d.ts +16 -0
- package/dist/src/messaging/createCockpitMessageBus.d.ts.map +1 -0
- package/dist/src/messaging/index.d.ts +5 -0
- package/dist/src/messaging/index.d.ts.map +1 -0
- package/dist/src/messaging/topics.d.ts +10 -0
- package/dist/src/messaging/topics.d.ts.map +1 -0
- package/dist/src/messaging/types.d.ts +24 -0
- package/dist/src/messaging/types.d.ts.map +1 -0
- package/dist/src/registry/createCockpitRegistry.d.ts +4 -0
- package/dist/src/registry/createCockpitRegistry.d.ts.map +1 -0
- package/dist/src/registry/index.d.ts +3 -0
- package/dist/src/registry/index.d.ts.map +1 -0
- package/dist/src/registry/types.d.ts +20 -0
- package/dist/src/registry/types.d.ts.map +1 -0
- package/dist/src/runtime/CockpitErrorBoundary.vue.d.ts +26 -0
- package/dist/src/runtime/CockpitErrorBoundary.vue.d.ts.map +1 -0
- package/dist/src/runtime/LumalCockpit.vue.d.ts +105 -0
- package/dist/src/runtime/LumalCockpit.vue.d.ts.map +1 -0
- package/dist/src/runtime/LumalCockpitCanvas.vue.d.ts +47 -0
- package/dist/src/runtime/LumalCockpitCanvas.vue.d.ts.map +1 -0
- package/dist/src/runtime/LumalCockpitCard.vue.d.ts +31 -0
- package/dist/src/runtime/LumalCockpitCard.vue.d.ts.map +1 -0
- package/dist/src/runtime/LumalCockpitContainer.vue.d.ts +12 -0
- package/dist/src/runtime/LumalCockpitContainer.vue.d.ts.map +1 -0
- package/dist/src/runtime/LumalCockpitRegion.vue.d.ts +11 -0
- package/dist/src/runtime/LumalCockpitRegion.vue.d.ts.map +1 -0
- package/dist/src/runtime/LumalCockpitWidgetHost.vue.d.ts +12 -0
- package/dist/src/runtime/LumalCockpitWidgetHost.vue.d.ts.map +1 -0
- package/dist/src/runtime/card.d.ts +16 -0
- package/dist/src/runtime/card.d.ts.map +1 -0
- package/dist/src/runtime/context.d.ts +25 -0
- package/dist/src/runtime/context.d.ts.map +1 -0
- package/dist/src/runtime/index.d.ts +19 -0
- package/dist/src/runtime/index.d.ts.map +1 -0
- package/dist/src/runtime/resolveComponent.d.ts +13 -0
- package/dist/src/runtime/resolveComponent.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +83 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/validate-DkC_IHrC.js +94 -0
- package/dist/validate-KSzm5SZW.cjs +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
import { i as e, n as t, r as n, t as r, v as i, x as a } from "./resolveComponent-QbJRsdxR.js";
|
|
2
|
+
import { Fragment as o, computed as s, createBlock as c, createCommentVNode as l, createElementBlock as u, createElementVNode as d, createSlots as f, createTextVNode as p, createVNode as m, defineComponent as h, guardReactiveProps as g, inject as _, mergeModels as v, nextTick as y, normalizeClass as b, normalizeProps as x, normalizeStyle as S, onBeforeUnmount as C, openBlock as w, provide as ee, reactive as T, ref as E, renderList as D, renderSlot as O, resolveDynamicComponent as k, toDisplayString as A, toValue as j, unref as M, useId as N, useModel as P, useSlots as te, vShow as F, watch as I, withCtx as L, withDirectives as R } from "vue";
|
|
3
|
+
import { ElButton as z, ElSwitch as ne, ElTooltip as re } from "element-plus";
|
|
4
|
+
import { LumalIcon as B } from "@lumal/icons-vue";
|
|
5
|
+
//#region src/messaging/topics.ts
|
|
6
|
+
var V = "cockpit:refresh", H = 300 * 1e3;
|
|
7
|
+
function U(e) {
|
|
8
|
+
let t = e.enabled ?? E(e.defaultEnabled ?? !1), n;
|
|
9
|
+
function r(t = "manual") {
|
|
10
|
+
let n = {
|
|
11
|
+
reason: t,
|
|
12
|
+
at: Date.now()
|
|
13
|
+
};
|
|
14
|
+
e.messages.publish({
|
|
15
|
+
topic: V,
|
|
16
|
+
sourceId: j(e.sourceId),
|
|
17
|
+
payload: n
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function i() {
|
|
21
|
+
n !== void 0 && (clearInterval(n), n = void 0);
|
|
22
|
+
}
|
|
23
|
+
function a() {
|
|
24
|
+
i();
|
|
25
|
+
let t = Math.max(1e3, j(e.intervalMs) ?? 3e5);
|
|
26
|
+
n = setInterval(() => {
|
|
27
|
+
r("interval");
|
|
28
|
+
}, t);
|
|
29
|
+
}
|
|
30
|
+
return I(t, (e) => {
|
|
31
|
+
e ? a() : i();
|
|
32
|
+
}, { immediate: !0 }), I(() => j(e.intervalMs), () => {
|
|
33
|
+
t.value && a();
|
|
34
|
+
}), C(i), {
|
|
35
|
+
enabled: t,
|
|
36
|
+
refreshNow: r
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/composables/useCockpit.ts
|
|
41
|
+
function W(e) {
|
|
42
|
+
let t = s(() => {
|
|
43
|
+
let t = e.config().layouts;
|
|
44
|
+
if (!t.length) return;
|
|
45
|
+
let n = e.activeLayoutId.value ?? e.config().activeLayoutId;
|
|
46
|
+
return t.find((e) => e.id === n) ?? t[0];
|
|
47
|
+
});
|
|
48
|
+
function n(t) {
|
|
49
|
+
e.activeLayoutId.value = t;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
activeLayout: t,
|
|
53
|
+
selectLayout: n
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/runtime/context.ts
|
|
58
|
+
var G = Symbol("lumal-cockpit-runtime-env");
|
|
59
|
+
function K() {
|
|
60
|
+
let e = _(G, null);
|
|
61
|
+
if (!e) throw Error("[cockpit] 运行时环境缺失,组件必须在 LumalCockpit 内渲染。");
|
|
62
|
+
return e;
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/runtime/LumalCockpitWidgetHost.vue?vue&type=script&setup=true&lang.ts
|
|
66
|
+
var ie = [
|
|
67
|
+
"data-widget-type",
|
|
68
|
+
"data-instance-id",
|
|
69
|
+
"data-cockpit-node-id",
|
|
70
|
+
"data-cockpit-side"
|
|
71
|
+
], ae = { class: "lumal-cockpit-widget__body" }, oe = {
|
|
72
|
+
key: 1,
|
|
73
|
+
class: "lumal-cockpit-widget__missing",
|
|
74
|
+
role: "status"
|
|
75
|
+
}, se = {
|
|
76
|
+
key: 1,
|
|
77
|
+
class: "lumal-cockpit-widget__error",
|
|
78
|
+
role: "alert"
|
|
79
|
+
}, q = /* @__PURE__ */ h({
|
|
80
|
+
__name: "LumalCockpitWidgetHost",
|
|
81
|
+
props: {
|
|
82
|
+
layoutId: {},
|
|
83
|
+
side: {},
|
|
84
|
+
widget: {},
|
|
85
|
+
embedded: { type: Boolean }
|
|
86
|
+
},
|
|
87
|
+
setup(e) {
|
|
88
|
+
let n = e, a = K(), l = s(() => a.registry.resolveWidget(n.widget.type)), h = s(() => {
|
|
89
|
+
let e = l.value;
|
|
90
|
+
return e ? r(e.component) : null;
|
|
91
|
+
}), _ = s(() => ({
|
|
92
|
+
cockpitId: a.cockpitId,
|
|
93
|
+
layoutId: n.layoutId,
|
|
94
|
+
instanceId: n.widget.id,
|
|
95
|
+
mode: a.mode,
|
|
96
|
+
messages: a.messages
|
|
97
|
+
}));
|
|
98
|
+
i(_.value), C(() => {
|
|
99
|
+
a.messages.clearInstance(n.widget.id);
|
|
100
|
+
});
|
|
101
|
+
let v = s(() => n.widget.title ?? l.value?.label ?? n.widget.type), y = s(() => n.embedded ? "div" : a.cardComponent), b = s(() => n.embedded ? { class: "lumal-cockpit-widget__embedded" } : {
|
|
102
|
+
title: v.value,
|
|
103
|
+
widget: n.widget
|
|
104
|
+
});
|
|
105
|
+
return (n, r) => (w(), u("section", {
|
|
106
|
+
class: "lumal-cockpit-widget",
|
|
107
|
+
"data-widget-type": e.widget.type,
|
|
108
|
+
"data-instance-id": e.widget.id,
|
|
109
|
+
"data-cockpit-node": "widget",
|
|
110
|
+
"data-cockpit-node-id": e.widget.id,
|
|
111
|
+
"data-cockpit-side": e.side
|
|
112
|
+
}, [(w(), c(k(y.value), x(g(b.value)), f({
|
|
113
|
+
default: L(() => [d("div", ae, [l.value ? (w(), c(t, { key: 1 }, {
|
|
114
|
+
error: L(({ retry: t }) => [M(a).slots.error ? (w(), c(k(M(a).slots.error), {
|
|
115
|
+
key: 0,
|
|
116
|
+
retry: t,
|
|
117
|
+
"instance-id": e.widget.id
|
|
118
|
+
}, null, 8, ["retry", "instance-id"])) : (w(), u("div", se, [r[1] ||= d("span", null, "模块加载失败", -1), m(M(z), {
|
|
119
|
+
text: "",
|
|
120
|
+
type: "primary",
|
|
121
|
+
onClick: t
|
|
122
|
+
}, {
|
|
123
|
+
default: L(() => [m(M(B), {
|
|
124
|
+
name: "lumal:refresh",
|
|
125
|
+
size: 14
|
|
126
|
+
}), r[0] ||= p(" 重试 ", -1)]),
|
|
127
|
+
_: 1
|
|
128
|
+
}, 8, ["onClick"])]))]),
|
|
129
|
+
default: L(() => [(w(), c(k(h.value), { context: _.value }, null, 8, ["context"]))]),
|
|
130
|
+
_: 1
|
|
131
|
+
})) : (w(), u(o, { key: 0 }, [M(a).slots["missing-widget"] ? (w(), c(k(M(a).slots["missing-widget"]), {
|
|
132
|
+
key: 0,
|
|
133
|
+
type: e.widget.type,
|
|
134
|
+
"instance-id": e.widget.id
|
|
135
|
+
}, null, 8, ["type", "instance-id"])) : (w(), u("div", oe, " 未注册模块:" + A(e.widget.type), 1))], 64))])]),
|
|
136
|
+
_: 2
|
|
137
|
+
}, [!e.embedded && M(a).slots["widget-title"] ? {
|
|
138
|
+
name: "title",
|
|
139
|
+
fn: L(() => [(w(), c(k(M(a).slots["widget-title"]), {
|
|
140
|
+
widget: e.widget,
|
|
141
|
+
title: v.value
|
|
142
|
+
}, null, 8, ["widget", "title"]))]),
|
|
143
|
+
key: "0"
|
|
144
|
+
} : void 0]), 1040))], 8, ie));
|
|
145
|
+
}
|
|
146
|
+
}), ce = ["data-cockpit-node-id", "data-cockpit-side"], le = ["data-cockpit-node-id", "data-cockpit-side"], ue = {
|
|
147
|
+
key: 1,
|
|
148
|
+
class: "lumal-cockpit-container__empty",
|
|
149
|
+
role: "status"
|
|
150
|
+
}, de = {
|
|
151
|
+
key: 0,
|
|
152
|
+
class: "lumal-cockpit-container__tabpanel"
|
|
153
|
+
}, fe = {
|
|
154
|
+
key: 1,
|
|
155
|
+
class: "lumal-cockpit-container__empty",
|
|
156
|
+
role: "status"
|
|
157
|
+
}, J = /* @__PURE__ */ h({
|
|
158
|
+
__name: "LumalCockpitContainer",
|
|
159
|
+
props: {
|
|
160
|
+
columns: {},
|
|
161
|
+
layoutId: {},
|
|
162
|
+
row: {},
|
|
163
|
+
side: {}
|
|
164
|
+
},
|
|
165
|
+
setup(e) {
|
|
166
|
+
let t = e, n = s(() => ({ height: `${t.row.height}%` })), r = s(() => ({ gridTemplateColumns: t.columns.map((e) => `calc(${e.width} * var(--lumal-cockpit-x-unit, 1px))`).join(" ") })), i = E(), a = T(/* @__PURE__ */ new Set()), d = K(), p = s(() => t.row.widgets.map((e) => ({
|
|
167
|
+
id: e.id,
|
|
168
|
+
title: e.title ?? d.registry.resolveWidget(e.type)?.label ?? e.type,
|
|
169
|
+
widget: e
|
|
170
|
+
})));
|
|
171
|
+
function h() {
|
|
172
|
+
let e = t.row.activeWidgetId;
|
|
173
|
+
return t.row.widgets.some((t) => t.id === e) ? e : t.row.widgets[0]?.id;
|
|
174
|
+
}
|
|
175
|
+
return I(() => [t.row.id, t.row.activeWidgetId], () => {
|
|
176
|
+
i.value = h();
|
|
177
|
+
}, { immediate: !0 }), I(() => t.row.widgets.map((e) => e.id).join(","), () => {
|
|
178
|
+
let e = new Set(t.row.widgets.map((e) => e.id));
|
|
179
|
+
a.forEach((t) => {
|
|
180
|
+
e.has(t) || a.delete(t);
|
|
181
|
+
}), t.row.widgets.some((e) => e.id === i.value) || (i.value = h());
|
|
182
|
+
}), I(i, (e) => {
|
|
183
|
+
e && a.add(e);
|
|
184
|
+
}, { immediate: !0 }), (t, s) => (w(), u("section", {
|
|
185
|
+
class: b(["lumal-cockpit-container", { "is-tabs": e.row.mode === "tabs" }]),
|
|
186
|
+
style: S(n.value),
|
|
187
|
+
"data-cockpit-node": "row",
|
|
188
|
+
"data-cockpit-node-id": e.row.id,
|
|
189
|
+
"data-cockpit-side": e.side
|
|
190
|
+
}, [e.row.mode === "grid" ? (w(), u("div", {
|
|
191
|
+
key: 0,
|
|
192
|
+
class: "lumal-cockpit-container__grid",
|
|
193
|
+
style: S(r.value)
|
|
194
|
+
}, [(w(!0), u(o, null, D(e.row.cells, (t) => (w(), u("div", {
|
|
195
|
+
key: t.id,
|
|
196
|
+
class: "lumal-cockpit-container__cell",
|
|
197
|
+
"data-cockpit-node": "cell",
|
|
198
|
+
"data-cockpit-node-id": t.id,
|
|
199
|
+
"data-cockpit-side": e.side
|
|
200
|
+
}, [t.widget ? (w(), c(q, {
|
|
201
|
+
key: t.widget.id,
|
|
202
|
+
"layout-id": e.layoutId,
|
|
203
|
+
side: e.side,
|
|
204
|
+
widget: t.widget
|
|
205
|
+
}, null, 8, [
|
|
206
|
+
"layout-id",
|
|
207
|
+
"side",
|
|
208
|
+
"widget"
|
|
209
|
+
])) : (w(), u("div", ue, " 空模块槽 "))], 8, le))), 128))], 4)) : (w(), u(o, { key: 1 }, [e.row.widgets.length ? (w(), c(k(M(d).cardComponent), {
|
|
210
|
+
key: 0,
|
|
211
|
+
"active-tab-id": i.value,
|
|
212
|
+
"onUpdate:activeTabId": s[0] ||= (e) => i.value = e,
|
|
213
|
+
tabs: p.value
|
|
214
|
+
}, f({
|
|
215
|
+
default: L(() => [(w(!0), u(o, null, D(e.row.widgets, (t) => (w(), u(o, { key: t.id }, [a.has(t.id) ? R((w(), u("div", de, [m(q, {
|
|
216
|
+
embedded: "",
|
|
217
|
+
"layout-id": e.layoutId,
|
|
218
|
+
side: e.side,
|
|
219
|
+
widget: t
|
|
220
|
+
}, null, 8, [
|
|
221
|
+
"layout-id",
|
|
222
|
+
"side",
|
|
223
|
+
"widget"
|
|
224
|
+
])], 512)), [[F, t.id === i.value]]) : l("", !0)], 64))), 128))]),
|
|
225
|
+
_: 2
|
|
226
|
+
}, [M(d).slots["widget-title"] ? {
|
|
227
|
+
name: "title",
|
|
228
|
+
fn: L(({ title: e, widget: t }) => [(w(), c(k(M(d).slots["widget-title"]), {
|
|
229
|
+
widget: t,
|
|
230
|
+
title: e
|
|
231
|
+
}, null, 8, ["widget", "title"]))]),
|
|
232
|
+
key: "0"
|
|
233
|
+
} : void 0, M(d).slots["widget-title"] ? {
|
|
234
|
+
name: "tab",
|
|
235
|
+
fn: L(({ tab: e }) => [(w(), c(k(M(d).slots["widget-title"]), {
|
|
236
|
+
widget: e.widget,
|
|
237
|
+
title: e.title
|
|
238
|
+
}, null, 8, ["widget", "title"]))]),
|
|
239
|
+
key: "1"
|
|
240
|
+
} : void 0]), 1064, ["active-tab-id", "tabs"])) : (w(), u("div", fe, " 空 Tab 行 "))], 64))], 14, ce));
|
|
241
|
+
}
|
|
242
|
+
}), pe = [
|
|
243
|
+
"data-side",
|
|
244
|
+
"data-cockpit-node-id",
|
|
245
|
+
"data-cockpit-side"
|
|
246
|
+
], Y = /* @__PURE__ */ h({
|
|
247
|
+
__name: "LumalCockpitRegion",
|
|
248
|
+
props: {
|
|
249
|
+
layoutId: {},
|
|
250
|
+
region: {},
|
|
251
|
+
side: {}
|
|
252
|
+
},
|
|
253
|
+
setup(e) {
|
|
254
|
+
let t = e, n = s(() => t.region.width > 0 ? t.region.width : t.region.columns.reduce((e, t) => e + t.width, 0)), r = s(() => ({ width: `calc(${n.value} * var(--lumal-cockpit-x-unit, 1px) + ${Math.max(0, t.region.columns.length - 1)} * var(--lumal-cockpit-gap-x, 12px))` }));
|
|
255
|
+
return (t, n) => (w(), u("section", {
|
|
256
|
+
class: "lumal-cockpit-region",
|
|
257
|
+
"data-side": e.side,
|
|
258
|
+
"data-cockpit-node": "region",
|
|
259
|
+
"data-cockpit-node-id": `${e.layoutId}:${e.side}`,
|
|
260
|
+
"data-cockpit-side": e.side,
|
|
261
|
+
style: S(r.value)
|
|
262
|
+
}, [(w(!0), u(o, null, D(e.region.rows, (t) => (w(), c(J, {
|
|
263
|
+
key: t.id,
|
|
264
|
+
"layout-id": e.layoutId,
|
|
265
|
+
side: e.side,
|
|
266
|
+
columns: e.region.columns,
|
|
267
|
+
row: t
|
|
268
|
+
}, null, 8, [
|
|
269
|
+
"layout-id",
|
|
270
|
+
"side",
|
|
271
|
+
"columns",
|
|
272
|
+
"row"
|
|
273
|
+
]))), 128))], 12, pe));
|
|
274
|
+
}
|
|
275
|
+
}), me = ["data-scale", "data-viewport-mode"], he = { class: "lumal-cockpit-canvas__header" }, ge = { class: "lumal-cockpit-canvas__header-prefix" }, _e = { class: "lumal-cockpit-canvas__title" }, ve = { class: "lumal-cockpit-canvas__header-actions" }, X = { class: "lumal-cockpit-canvas__body" }, ye = { class: "lumal-cockpit-canvas__center" }, be = { class: "lumal-cockpit-canvas__left" }, xe = { class: "lumal-cockpit-canvas__right" }, Z = /* @__PURE__ */ h({
|
|
276
|
+
__name: "LumalCockpitCanvas",
|
|
277
|
+
props: {
|
|
278
|
+
title: {},
|
|
279
|
+
baseWidth: {},
|
|
280
|
+
baseHeight: {},
|
|
281
|
+
layout: {},
|
|
282
|
+
centerContext: {},
|
|
283
|
+
viewportMode: {}
|
|
284
|
+
},
|
|
285
|
+
setup(e) {
|
|
286
|
+
let t = e, n = E(null), { result: r } = a(n, {
|
|
287
|
+
baseWidth: () => t.baseWidth,
|
|
288
|
+
baseHeight: () => t.baseHeight
|
|
289
|
+
}), i = s(() => t.viewportMode === "vwvh" ? {
|
|
290
|
+
width: "100vw",
|
|
291
|
+
height: "100vh",
|
|
292
|
+
"--lumal-cockpit-x-unit": `${100 / t.baseWidth}vw`,
|
|
293
|
+
"--lumal-cockpit-y-unit": `${100 / t.baseHeight}vh`
|
|
294
|
+
} : t.viewportMode === "external" ? {
|
|
295
|
+
width: `${t.baseWidth}px`,
|
|
296
|
+
height: `${t.baseHeight}px`,
|
|
297
|
+
"--lumal-cockpit-x-unit": "1px",
|
|
298
|
+
"--lumal-cockpit-y-unit": "1px"
|
|
299
|
+
} : {
|
|
300
|
+
width: `${t.baseWidth}px`,
|
|
301
|
+
height: `${t.baseHeight}px`,
|
|
302
|
+
transform: `translate(${r.value.offsetX}px, ${r.value.offsetY}px) scale(${r.value.scale})`,
|
|
303
|
+
transformOrigin: "top left",
|
|
304
|
+
"--lumal-cockpit-x-unit": "1px",
|
|
305
|
+
"--lumal-cockpit-y-unit": "1px"
|
|
306
|
+
});
|
|
307
|
+
return (t, a) => (w(), u("div", {
|
|
308
|
+
ref_key: "containerRef",
|
|
309
|
+
ref: n,
|
|
310
|
+
class: "lumal-cockpit-canvas",
|
|
311
|
+
"data-scale": M(r).scale.toFixed(3),
|
|
312
|
+
"data-viewport-mode": e.viewportMode
|
|
313
|
+
}, [d("div", {
|
|
314
|
+
class: "lumal-cockpit-canvas__stage",
|
|
315
|
+
style: S(i.value)
|
|
316
|
+
}, [d("header", he, [
|
|
317
|
+
d("div", ge, [O(t.$slots, "header-prefix")]),
|
|
318
|
+
d("div", _e, [O(t.$slots, "header-title", { title: e.title }, () => [d("h1", null, A(e.title), 1)])]),
|
|
319
|
+
d("div", ve, [O(t.$slots, "header-actions")])
|
|
320
|
+
]), d("div", X, [
|
|
321
|
+
d("main", ye, [O(t.$slots, "center", {
|
|
322
|
+
context: e.centerContext,
|
|
323
|
+
layout: e.layout
|
|
324
|
+
}, () => [a[0] ||= d("div", {
|
|
325
|
+
class: "lumal-cockpit-center__empty",
|
|
326
|
+
role: "status"
|
|
327
|
+
}, " 由应用提供中央内容 ", -1)])]),
|
|
328
|
+
d("div", be, [O(t.$slots, "left", {
|
|
329
|
+
layout: e.layout,
|
|
330
|
+
region: e.layout.left,
|
|
331
|
+
side: "left"
|
|
332
|
+
}, () => [m(Y, {
|
|
333
|
+
side: "left",
|
|
334
|
+
"layout-id": e.layout.id,
|
|
335
|
+
region: e.layout.left
|
|
336
|
+
}, null, 8, ["layout-id", "region"])])]),
|
|
337
|
+
d("div", xe, [O(t.$slots, "right", {
|
|
338
|
+
layout: e.layout,
|
|
339
|
+
region: e.layout.right,
|
|
340
|
+
side: "right"
|
|
341
|
+
}, () => [m(Y, {
|
|
342
|
+
side: "right",
|
|
343
|
+
"layout-id": e.layout.id,
|
|
344
|
+
region: e.layout.right
|
|
345
|
+
}, null, 8, ["layout-id", "region"])])])
|
|
346
|
+
])], 4)], 8, me));
|
|
347
|
+
}
|
|
348
|
+
}), Se = {
|
|
349
|
+
key: 0,
|
|
350
|
+
class: "lumal-cockpit-card__header"
|
|
351
|
+
}, Ce = {
|
|
352
|
+
class: "lumal-cockpit-card__tablist",
|
|
353
|
+
role: "tablist",
|
|
354
|
+
"aria-label": "模块切换"
|
|
355
|
+
}, we = [
|
|
356
|
+
"id",
|
|
357
|
+
"aria-selected",
|
|
358
|
+
"tabindex",
|
|
359
|
+
"onClick",
|
|
360
|
+
"onKeydown"
|
|
361
|
+
], Te = {
|
|
362
|
+
key: 1,
|
|
363
|
+
class: "lumal-cockpit-card__header"
|
|
364
|
+
}, Ee = { class: "lumal-cockpit-card__title" }, De = [
|
|
365
|
+
"id",
|
|
366
|
+
"role",
|
|
367
|
+
"aria-labelledby",
|
|
368
|
+
"tabindex"
|
|
369
|
+
], Q = /* @__PURE__ */ h({
|
|
370
|
+
__name: "LumalCockpitCard",
|
|
371
|
+
props: {
|
|
372
|
+
title: {},
|
|
373
|
+
widget: {},
|
|
374
|
+
tabs: { default: () => [] },
|
|
375
|
+
activeTabId: {}
|
|
376
|
+
},
|
|
377
|
+
emits: ["update:activeTabId"],
|
|
378
|
+
setup(e, { emit: t }) {
|
|
379
|
+
let n = e, r = t, i = N(), a = /* @__PURE__ */ new Map(), c = s(() => n.tabs.length > 1), f = s(() => n.tabs[0]), m = s(() => {
|
|
380
|
+
let e = n.activeTabId;
|
|
381
|
+
return n.tabs.some((t) => t.id === e) ? e : n.tabs[0]?.id;
|
|
382
|
+
}), h = s(() => n.widget ?? f.value?.widget), g = s(() => n.title ?? n.widget?.title ?? f.value?.title ?? h.value?.title ?? h.value?.type), _ = `${i}-tabpanel`;
|
|
383
|
+
function v(e) {
|
|
384
|
+
return `${i}-tab-${e}`;
|
|
385
|
+
}
|
|
386
|
+
function x(e, t) {
|
|
387
|
+
t instanceof HTMLButtonElement ? a.set(e, t) : a.delete(e);
|
|
388
|
+
}
|
|
389
|
+
function S(e) {
|
|
390
|
+
e !== m.value && r("update:activeTabId", e);
|
|
391
|
+
}
|
|
392
|
+
function C(e, t) {
|
|
393
|
+
if (!n.tabs.length) return;
|
|
394
|
+
let r = {
|
|
395
|
+
ArrowRight: (t + 1) % n.tabs.length,
|
|
396
|
+
ArrowDown: (t + 1) % n.tabs.length,
|
|
397
|
+
ArrowLeft: (t - 1 + n.tabs.length) % n.tabs.length,
|
|
398
|
+
ArrowUp: (t - 1 + n.tabs.length) % n.tabs.length,
|
|
399
|
+
Home: 0,
|
|
400
|
+
End: n.tabs.length - 1
|
|
401
|
+
}[e.key], i = n.tabs[r];
|
|
402
|
+
i && (e.preventDefault(), S(i.id), y(() => a.get(i.id)?.focus()));
|
|
403
|
+
}
|
|
404
|
+
return I(() => [n.activeTabId, n.tabs.map((e) => e.id).join(",")], () => {
|
|
405
|
+
let e = m.value;
|
|
406
|
+
c.value && e && e !== n.activeTabId && r("update:activeTabId", e);
|
|
407
|
+
}, { immediate: !0 }), (t, n) => (w(), u("section", { class: b(["lumal-cockpit-card", { "is-tabs": c.value }]) }, [c.value ? (w(), u("header", Se, [d("div", Ce, [(w(!0), u(o, null, D(e.tabs, (e, n) => (w(), u("button", {
|
|
408
|
+
id: v(n),
|
|
409
|
+
key: e.id,
|
|
410
|
+
ref_for: !0,
|
|
411
|
+
ref: (t) => x(e.id, t),
|
|
412
|
+
type: "button",
|
|
413
|
+
role: "tab",
|
|
414
|
+
class: b(["lumal-cockpit-card__tab", { "is-active": e.id === m.value }]),
|
|
415
|
+
"aria-controls": _,
|
|
416
|
+
"aria-selected": e.id === m.value,
|
|
417
|
+
tabindex: e.id === m.value ? 0 : -1,
|
|
418
|
+
onClick: (t) => S(e.id),
|
|
419
|
+
onKeydown: (e) => C(e, n)
|
|
420
|
+
}, [O(t.$slots, "tab", {
|
|
421
|
+
tab: e,
|
|
422
|
+
active: e.id === m.value
|
|
423
|
+
}, () => [p(A(e.title), 1)])], 42, we))), 128))])])) : g.value || t.$slots.title ? (w(), u("header", Te, [d("div", Ee, [O(t.$slots, "title", {
|
|
424
|
+
title: g.value,
|
|
425
|
+
widget: h.value
|
|
426
|
+
}, () => [p(A(g.value), 1)])])])) : l("", !0), d("div", {
|
|
427
|
+
id: c.value ? _ : void 0,
|
|
428
|
+
class: "lumal-cockpit-card__body",
|
|
429
|
+
role: c.value ? "tabpanel" : void 0,
|
|
430
|
+
"aria-labelledby": c.value ? v(Math.max(0, e.tabs.findIndex((e) => e.id === m.value))) : void 0,
|
|
431
|
+
tabindex: c.value ? 0 : void 0
|
|
432
|
+
}, [O(t.$slots, "default", { activeTabId: m.value })], 8, De)], 2));
|
|
433
|
+
}
|
|
434
|
+
}), Oe = [
|
|
435
|
+
"data-mode",
|
|
436
|
+
"data-cockpit-theme",
|
|
437
|
+
"data-viewport-mode"
|
|
438
|
+
], ke = {
|
|
439
|
+
key: 0,
|
|
440
|
+
class: "lumal-cockpit__auto-refresh"
|
|
441
|
+
}, Ae = { class: "lumal-cockpit__auto-refresh-control" }, je = /* @__PURE__ */ h({
|
|
442
|
+
__name: "LumalCockpit",
|
|
443
|
+
props: /*@__PURE__*/ v({
|
|
444
|
+
config: {},
|
|
445
|
+
registry: {},
|
|
446
|
+
baseWidth: { default: 1920 },
|
|
447
|
+
baseHeight: { default: 1080 },
|
|
448
|
+
cachePages: {
|
|
449
|
+
type: Boolean,
|
|
450
|
+
default: !0
|
|
451
|
+
},
|
|
452
|
+
renderMode: { default: "runtime" },
|
|
453
|
+
viewportMode: { default: "scale" },
|
|
454
|
+
messageBus: {},
|
|
455
|
+
cardComponent: {},
|
|
456
|
+
autoRefresh: {
|
|
457
|
+
type: Boolean,
|
|
458
|
+
default: !1
|
|
459
|
+
},
|
|
460
|
+
autoRefreshIntervalMs: { default: H }
|
|
461
|
+
}, {
|
|
462
|
+
activeLayoutId: {},
|
|
463
|
+
activeLayoutIdModifiers: {},
|
|
464
|
+
themeMode: { default: "dark" },
|
|
465
|
+
themeModeModifiers: {},
|
|
466
|
+
autoRefreshEnabled: {
|
|
467
|
+
type: Boolean,
|
|
468
|
+
default: !1
|
|
469
|
+
},
|
|
470
|
+
autoRefreshEnabledModifiers: {}
|
|
471
|
+
}),
|
|
472
|
+
emits: /*@__PURE__*/ v([
|
|
473
|
+
"configure",
|
|
474
|
+
"configError",
|
|
475
|
+
"nodeSelect"
|
|
476
|
+
], [
|
|
477
|
+
"update:activeLayoutId",
|
|
478
|
+
"update:themeMode",
|
|
479
|
+
"update:autoRefreshEnabled"
|
|
480
|
+
]),
|
|
481
|
+
setup(t, { expose: r, emit: i }) {
|
|
482
|
+
let a = t, c = i, f = P(t, "activeLayoutId"), p = P(t, "themeMode"), h = P(t, "autoRefreshEnabled"), _ = te(), v = s(() => {
|
|
483
|
+
try {
|
|
484
|
+
return {
|
|
485
|
+
config: e(a.config),
|
|
486
|
+
error: null
|
|
487
|
+
};
|
|
488
|
+
} catch (e) {
|
|
489
|
+
return {
|
|
490
|
+
config: null,
|
|
491
|
+
error: e
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
}), y = s(() => v.value.config);
|
|
495
|
+
I(() => v.value.error, (e) => {
|
|
496
|
+
e && c("configError", e);
|
|
497
|
+
}, { immediate: !0 });
|
|
498
|
+
let b = a.messageBus ?? n();
|
|
499
|
+
ee(G, {
|
|
500
|
+
cockpitId: a.config.id,
|
|
501
|
+
mode: a.renderMode,
|
|
502
|
+
registry: a.registry,
|
|
503
|
+
messages: b,
|
|
504
|
+
cachePages: a.cachePages,
|
|
505
|
+
slots: _,
|
|
506
|
+
get cardComponent() {
|
|
507
|
+
return a.cardComponent ?? Q;
|
|
508
|
+
}
|
|
509
|
+
});
|
|
510
|
+
let S = W({
|
|
511
|
+
config: () => y.value ?? a.config,
|
|
512
|
+
activeLayoutId: f
|
|
513
|
+
}), C = s(() => {
|
|
514
|
+
let e = S.activeLayout.value;
|
|
515
|
+
if (e) return {
|
|
516
|
+
cockpitId: y.value?.id ?? a.config.id,
|
|
517
|
+
layoutId: e.id,
|
|
518
|
+
instanceId: `${e.id}:center`,
|
|
519
|
+
mode: a.renderMode,
|
|
520
|
+
messages: b
|
|
521
|
+
};
|
|
522
|
+
}), T = E(!1);
|
|
523
|
+
I([() => a.autoRefresh, h], ([e, t]) => {
|
|
524
|
+
T.value = !!(e && t);
|
|
525
|
+
}, { immediate: !0 });
|
|
526
|
+
let D = s(() => {
|
|
527
|
+
let e = Math.round(a.autoRefreshIntervalMs / 6e4);
|
|
528
|
+
return e >= 1 ? `${e} 分钟` : `${Math.round(a.autoRefreshIntervalMs / 1e3)} 秒`;
|
|
529
|
+
}), { refreshNow: k } = U({
|
|
530
|
+
messages: b,
|
|
531
|
+
sourceId: () => y.value?.id ?? a.config.id,
|
|
532
|
+
intervalMs: () => a.autoRefreshIntervalMs,
|
|
533
|
+
enabled: T
|
|
534
|
+
}), A = E(null);
|
|
535
|
+
async function j() {
|
|
536
|
+
A.value?.requestFullscreen && await A.value.requestFullscreen();
|
|
537
|
+
}
|
|
538
|
+
async function N() {
|
|
539
|
+
document.fullscreenElement && await document.exitFullscreen();
|
|
540
|
+
}
|
|
541
|
+
function F() {
|
|
542
|
+
p.value = p.value === "dark" ? "light" : "dark";
|
|
543
|
+
}
|
|
544
|
+
r({
|
|
545
|
+
enterFullscreen: j,
|
|
546
|
+
exitFullscreen: N,
|
|
547
|
+
messages: b,
|
|
548
|
+
toggleTheme: F,
|
|
549
|
+
refreshNow: k
|
|
550
|
+
});
|
|
551
|
+
let R = s(() => !!y.value?.layouts.length);
|
|
552
|
+
function z() {
|
|
553
|
+
c("configure");
|
|
554
|
+
}
|
|
555
|
+
function B(e) {
|
|
556
|
+
if (a.renderMode !== "design") return;
|
|
557
|
+
let t = (e.target instanceof Element ? e.target : null)?.closest("[data-cockpit-node]");
|
|
558
|
+
if (!t || !A.value?.contains(t)) return;
|
|
559
|
+
let n = t.dataset.cockpitNode, r = t.dataset.cockpitNodeId;
|
|
560
|
+
!n || !r || c("nodeSelect", {
|
|
561
|
+
kind: n,
|
|
562
|
+
id: r,
|
|
563
|
+
side: t.dataset.cockpitSide
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
return (e, n) => (w(), u("div", {
|
|
567
|
+
ref_key: "rootRef",
|
|
568
|
+
ref: A,
|
|
569
|
+
class: "lumal-cockpit",
|
|
570
|
+
"data-mode": t.renderMode,
|
|
571
|
+
"data-cockpit-theme": p.value,
|
|
572
|
+
"data-viewport-mode": t.viewportMode,
|
|
573
|
+
onClickCapture: B
|
|
574
|
+
}, [v.value.error ? O(e.$slots, "error", {
|
|
575
|
+
key: 0,
|
|
576
|
+
error: v.value.error
|
|
577
|
+
}, () => [n[1] ||= d("div", {
|
|
578
|
+
class: "lumal-cockpit__error",
|
|
579
|
+
role: "alert"
|
|
580
|
+
}, " 配置加载失败 ", -1)]) : R.value ? M(S).activeLayout.value && C.value ? (w(), u(o, { key: 2 }, [m(Z, {
|
|
581
|
+
title: y.value.title,
|
|
582
|
+
"base-width": t.baseWidth,
|
|
583
|
+
"base-height": t.baseHeight,
|
|
584
|
+
"viewport-mode": t.viewportMode,
|
|
585
|
+
layout: M(S).activeLayout.value,
|
|
586
|
+
"center-context": C.value
|
|
587
|
+
}, {
|
|
588
|
+
"header-prefix": L(() => [O(e.$slots, "header-prefix")]),
|
|
589
|
+
"header-title": L((t) => [O(e.$slots, "header-title", x(g(t)))]),
|
|
590
|
+
"header-actions": L(() => [t.autoRefresh ? (w(), u("div", ke, [m(M(re), { content: h.value ? `关闭自动刷新(每 ${D.value})` : `开启自动刷新(每 ${D.value})` }, {
|
|
591
|
+
default: L(() => [d("label", Ae, [n[3] ||= d("span", null, "自动刷新", -1), m(M(ne), {
|
|
592
|
+
modelValue: h.value,
|
|
593
|
+
"onUpdate:modelValue": n[0] ||= (e) => h.value = e,
|
|
594
|
+
size: "small",
|
|
595
|
+
"data-action": "cockpit-auto-refresh",
|
|
596
|
+
"aria-label": `全局自动刷新,间隔 ${D.value}`
|
|
597
|
+
}, null, 8, ["modelValue", "aria-label"])])]),
|
|
598
|
+
_: 1
|
|
599
|
+
}, 8, ["content"])])) : l("", !0), O(e.$slots, "header-actions")]),
|
|
600
|
+
center: L((t) => [O(e.$slots, "center", x(g(t)))]),
|
|
601
|
+
left: L((t) => [O(e.$slots, "left", x(g(t)))]),
|
|
602
|
+
right: L((t) => [O(e.$slots, "right", x(g(t)))]),
|
|
603
|
+
_: 3
|
|
604
|
+
}, 8, [
|
|
605
|
+
"title",
|
|
606
|
+
"base-width",
|
|
607
|
+
"base-height",
|
|
608
|
+
"viewport-mode",
|
|
609
|
+
"layout",
|
|
610
|
+
"center-context"
|
|
611
|
+
]), O(e.$slots, "configure-trigger", { configure: z })], 64)) : l("", !0) : O(e.$slots, "empty", { key: 1 }, () => [n[2] ||= d("div", {
|
|
612
|
+
class: "lumal-cockpit__empty",
|
|
613
|
+
role: "status"
|
|
614
|
+
}, " 空驾驶舱 ", -1)])], 40, Oe));
|
|
615
|
+
}
|
|
616
|
+
});
|
|
617
|
+
//#endregion
|
|
618
|
+
//#region src/runtime/index.ts
|
|
619
|
+
function $(e, t) {
|
|
620
|
+
let n = e;
|
|
621
|
+
return n.install = function(n) {
|
|
622
|
+
n.component(t, e);
|
|
623
|
+
}, n;
|
|
624
|
+
}
|
|
625
|
+
var Me = $(je, "LumalCockpit"), Ne = $(Q, "LumalCockpitCard");
|
|
626
|
+
//#endregion
|
|
627
|
+
export { J as a, K as c, U as d, V as f, Y as i, W as l, Ne as n, q as o, Z as r, G as s, Me as t, H as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./resolveComponent-BF1aCxAk.cjs");let t=require("vue"),n=require("element-plus"),r=require("@lumal/icons-vue");var i=`cockpit:refresh`,a=300*1e3;function o(e){let n=e.enabled??(0,t.ref)(e.defaultEnabled??!1),r;function a(n=`manual`){let r={reason:n,at:Date.now()};e.messages.publish({topic:i,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(()=>{a(`interval`)},n)}return(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),{enabled:n,refreshNow:a}}function s(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 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.computed)(()=>({cockpitId:o.cockpitId,layoutId:a.layoutId,instanceId:a.widget.id,mode:o.mode,messages:o.messages}));e.v(m.value),(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:m.value},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},[o.has(n.id)?(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:a}},{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:i,emit:a}){let l=r,u=a,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.computed)(()=>{try{return{config:e.i(l.config),error:null}}catch(e){return{config:null,error:e}}}),g=(0,t.computed)(()=>h.value.config);(0,t.watch)(()=>h.value.error,e=>{e&&u(`configError`,e)},{immediate:!0});let _=l.messageBus??e.r();(0,t.provide)(c,{cockpitId:l.config.id,mode:l.renderMode,registry:l.registry,messages:_,cachePages:l.cachePages,slots:m,get cardComponent(){return l.cardComponent??z}});let v=s({config:()=>g.value??l.config,activeLayoutId:d}),y=(0,t.computed)(()=>{let e=v.activeLayout.value;if(e)return{cockpitId:g.value?.id??l.config.id,layoutId:e.id,instanceId:`${e.id}:center`,mode:l.renderMode,messages:_}}),b=(0,t.ref)(!1);(0,t.watch)([()=>l.autoRefresh,p],([e,t])=>{b.value=!!(e&&t)},{immediate:!0});let x=(0,t.computed)(()=>{let e=Math.round(l.autoRefreshIntervalMs/6e4);return e>=1?`${e} 分钟`:`${Math.round(l.autoRefreshIntervalMs/1e3)} 秒`}),{refreshNow:S}=o({messages:_,sourceId:()=>g.value?.id??l.config.id,intervalMs:()=>l.autoRefreshIntervalMs,enabled:b}),C=(0,t.ref)(null);async function w(){C.value?.requestFullscreen&&await C.value.requestFullscreen()}async function T(){document.fullscreenElement&&await document.exitFullscreen()}function E(){f.value=f.value===`dark`?`light`:`dark`}i({enterFullscreen:w,exitFullscreen:T,messages:_,toggleTheme:E,refreshNow:S});let D=(0,t.computed)(()=>!!g.value?.layouts.length);function O(){u(`configure`)}function k(e){if(l.renderMode!==`design`)return;let t=(e.target instanceof Element?e.target:null)?.closest(`[data-cockpit-node]`);if(!t||!C.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:C,class:`lumal-cockpit`,"data-mode":r.renderMode,"data-cockpit-theme":f.value,"data-viewport-mode":r.viewportMode,onClickCapture:k},[h.value.error?(0,t.renderSlot)(e.$slots,`error`,{key:0,error:h.value.error},()=>[i[1]||=(0,t.createElementVNode)(`div`,{class:`lumal-cockpit__error`,role:`alert`},` 配置加载失败 `,-1)]):D.value?(0,t.unref)(v).activeLayout.value&&y.value?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:2},[(0,t.createVNode)(M,{title:g.value.title,"base-width":r.baseWidth,"base-height":r.baseHeight,"viewport-mode":r.viewportMode,layout:(0,t.unref)(v).activeLayout.value,"center-context":y.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?`关闭自动刷新(每 ${x.value})`:`开启自动刷新(每 ${x.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":`全局自动刷新,间隔 ${x.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:O})],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 o}}),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 s}}),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 a}});
|
package/dist/runtime.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./resolveComponent-BF1aCxAk.cjs"),t=require("./runtime-wzWMTWrS.cjs");exports.LumalCockpit=t.t,exports.LumalCockpitCanvas=t.r,exports.LumalCockpitCard=t.n,exports.LumalCockpitContainer=t.a,exports.LumalCockpitRegion=t.i,exports.LumalCockpitWidgetHost=t.o,exports.cockpitRuntimeEnvKey=t.s,exports.resolveCockpitComponent=e.t,exports.useCockpitRuntimeEnv=t.c;
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { t as e } from "./resolveComponent-QbJRsdxR.js";
|
|
2
|
+
import { a as t, c as n, i as r, n as i, o as a, r as o, s, t as c } from "./runtime-CXiih7DE.js";
|
|
3
|
+
export { c as LumalCockpit, o as LumalCockpitCanvas, i as LumalCockpitCard, t as LumalCockpitContainer, r as LumalCockpitRegion, a as LumalCockpitWidgetHost, s as cockpitRuntimeEnvKey, e as resolveCockpitComponent, n as useCockpitRuntimeEnv };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { computeCanvasScale, useCanvasScale, } from './useCanvasScale';
|
|
2
|
+
export type { CanvasScaleResult, UseCanvasScaleOptions, } from './useCanvasScale';
|
|
3
|
+
export { DEFAULT_COCKPIT_AUTO_REFRESH_INTERVAL_MS, useCockpitAutoRefresh, } from './useCockpitAutoRefresh';
|
|
4
|
+
export type { UseCockpitAutoRefreshOptions, UseCockpitAutoRefreshReturn, } from './useCockpitAutoRefresh';
|
|
5
|
+
export { useCockpit, } from './useCockpit';
|
|
6
|
+
export type { UseCockpitOptions, UseCockpitReturn, } from './useCockpit';
|
|
7
|
+
export { cockpitContextKey, provideCockpitContext, useCockpitContext, } from './useCockpitContext';
|
|
8
|
+
export { useCockpitRefresh, } from './useCockpitRefresh';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|