@grafloria/element 0.1.0

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.
Files changed (61) hide show
  1. package/package.json +41 -0
  2. package/src/index.d.ts +87 -0
  3. package/src/index.js +547 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/dashboard-kit/dashboard.d.ts +345 -0
  6. package/src/lib/dashboard-kit/dashboard.js +594 -0
  7. package/src/lib/dashboard-kit/dashboard.js.map +1 -0
  8. package/src/lib/dashboard-kit/grid-binder.d.ts +277 -0
  9. package/src/lib/dashboard-kit/grid-binder.js +1635 -0
  10. package/src/lib/dashboard-kit/grid-binder.js.map +1 -0
  11. package/src/lib/dashboard-kit/grid-mapping.d.ts +141 -0
  12. package/src/lib/dashboard-kit/grid-mapping.js +176 -0
  13. package/src/lib/dashboard-kit/grid-mapping.js.map +1 -0
  14. package/src/lib/dashboard-kit/index.d.ts +5 -0
  15. package/src/lib/dashboard-kit/index.js +33 -0
  16. package/src/lib/dashboard-kit/index.js.map +1 -0
  17. package/src/lib/dashboard-kit/styles.d.ts +25 -0
  18. package/src/lib/dashboard-kit/styles.js +203 -0
  19. package/src/lib/dashboard-kit/styles.js.map +1 -0
  20. package/src/lib/dashboard-kit/widgets.d.ts +112 -0
  21. package/src/lib/dashboard-kit/widgets.js +389 -0
  22. package/src/lib/dashboard-kit/widgets.js.map +1 -0
  23. package/src/lib/diagram-kit/card.d.ts +75 -0
  24. package/src/lib/diagram-kit/card.js +209 -0
  25. package/src/lib/diagram-kit/card.js.map +1 -0
  26. package/src/lib/diagram-kit/editing.d.ts +54 -0
  27. package/src/lib/diagram-kit/editing.js +289 -0
  28. package/src/lib/diagram-kit/editing.js.map +1 -0
  29. package/src/lib/diagram-kit/er.d.ts +73 -0
  30. package/src/lib/diagram-kit/er.js +163 -0
  31. package/src/lib/diagram-kit/er.js.map +1 -0
  32. package/src/lib/diagram-kit/handles.d.ts +181 -0
  33. package/src/lib/diagram-kit/handles.js +325 -0
  34. package/src/lib/diagram-kit/handles.js.map +1 -0
  35. package/src/lib/diagram-kit/index.d.ts +8 -0
  36. package/src/lib/diagram-kit/index.js +38 -0
  37. package/src/lib/diagram-kit/index.js.map +1 -0
  38. package/src/lib/diagram-kit/rows.d.ts +53 -0
  39. package/src/lib/diagram-kit/rows.js +147 -0
  40. package/src/lib/diagram-kit/rows.js.map +1 -0
  41. package/src/lib/diagram-kit/styles.d.ts +18 -0
  42. package/src/lib/diagram-kit/styles.js +114 -0
  43. package/src/lib/diagram-kit/styles.js.map +1 -0
  44. package/src/lib/diagram-kit/uml.d.ts +59 -0
  45. package/src/lib/diagram-kit/uml.js +138 -0
  46. package/src/lib/diagram-kit/uml.js.map +1 -0
  47. package/src/lib/diagram-kit/update.d.ts +133 -0
  48. package/src/lib/diagram-kit/update.js +251 -0
  49. package/src/lib/diagram-kit/update.js.map +1 -0
  50. package/src/lib/grafloria-flow-element.d.ts +48 -0
  51. package/src/lib/grafloria-flow-element.js +271 -0
  52. package/src/lib/grafloria-flow-element.js.map +1 -0
  53. package/src/lib/grafloria.d.ts +61 -0
  54. package/src/lib/grafloria.js +72 -0
  55. package/src/lib/grafloria.js.map +1 -0
  56. package/src/lib/load.d.ts +72 -0
  57. package/src/lib/load.js +255 -0
  58. package/src/lib/load.js.map +1 -0
  59. package/src/lib/node-type-registry.d.ts +39 -0
  60. package/src/lib/node-type-registry.js +50 -0
  61. package/src/lib/node-type-registry.js.map +1 -0
@@ -0,0 +1,594 @@
1
+ "use strict";
2
+ /**
3
+ * `dashboard({ views, widgets })` — the DATA-FIRST dashboard authoring API.
4
+ *
5
+ * The exact shape `erDiagram()` / `umlDiagram()` have for ER and UML: you
6
+ * describe WHAT the dashboard is, `render()` runs the returned `finalize(api)`
7
+ * automatically, and every interactive part (the pack grid, drag/resize with
8
+ * live push and a truthful placeholder, fit/grow, float, pin, undoable
9
+ * commands) wires itself.
10
+ *
11
+ * Before this, a developer got `bindDashboardGrid()` — a gesture BINDER one
12
+ * layer down — and had to hand-assemble everything above it: a GroupModel per
13
+ * view, a NodeModel per widget, `useHTMLLayer` / `widgetKind` metadata, grid
14
+ * cells, membership, then the bind. The demo page needed ~143 lines just to
15
+ * build its boards. That was the missing authoring layer; this is it:
16
+ *
17
+ * ```js
18
+ * const SPEC = dashboard({
19
+ * columns: 12,
20
+ * sizing: 'fit',
21
+ * views: [{
22
+ * id: 'overview', name: 'Overview',
23
+ * widgets: [
24
+ * { id: 'rev', kind: 'kpi', span: 3, rows: 1, data: {…} },
25
+ * { id: 'trend', kind: 'line', span: 8, rows: 2, data: {…} },
26
+ * { id: 'mix', kind: 'donut', span: 4, rows: 2, pinned: true },
27
+ * ],
28
+ * }],
29
+ * renderWidget: (widget, host) => { … }, // optional: your charts
30
+ * });
31
+ * render(SPEC, host);
32
+ * ```
33
+ *
34
+ * WHAT IT DELIBERATELY DOES NOT DO: pick a charting library. `renderWidget` is
35
+ * the seam — the kit hands you the widget and a raw HTML host (the renderer's
36
+ * custom-node path, which unlike `metadata.html` is not sanitised, so real
37
+ * `<svg>`/`<canvas>` is fine). Omit it and `defaultWidgetRenderer` (widgets.ts)
38
+ * draws the declared `kind` from your own `data` with hand-rolled inline SVG —
39
+ * kpi / line / bar / donut / funnel / table, no dependency, no sample dataset —
40
+ * falling back to a titled frame for kinds it does not know, so a layout is
41
+ * testable before any chart exists.
42
+ *
43
+ * Cells are the truth and live in the existing `GridItemConfig`, so save/load
44
+ * round-trips with no extra work — same as every other kit.
45
+ */
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.createDashboardHandle = createDashboardHandle;
48
+ exports.dashboard = dashboard;
49
+ const tslib_1 = require("tslib");
50
+ const engine_1 = require("@grafloria/engine");
51
+ const grid_binder_1 = require("./grid-binder");
52
+ const grid_mapping_1 = require("./grid-mapping");
53
+ const styles_1 = require("./styles");
54
+ const widgets_1 = require("./widgets");
55
+ /**
56
+ * Add a widget node AND its board membership as ONE undoable step.
57
+ *
58
+ * A `BatchCommand([AddNodeCommand, AddToGroupCommand])` cannot express this:
59
+ * the manager validates the whole batch up front, and
60
+ * `AddToGroupCommand.canExecute` pre-gates on the node ALREADY being in the
61
+ * diagram — which it is not until the first command runs. Sequencing two
62
+ * commands works but costs two undo steps, so an interactive "add widget"
63
+ * would need two Ctrl-Z. This composite does both in its own execute(), and
64
+ * unwinds both in undo().
65
+ */
66
+ class AddWidgetCommand extends engine_1.Command {
67
+ constructor(node, groupId) {
68
+ super('Add widget');
69
+ this.node = node;
70
+ this.groupId = groupId;
71
+ }
72
+ execute(context) {
73
+ var _a;
74
+ const diagram = context.diagram;
75
+ if (!diagram)
76
+ return;
77
+ diagram.addNode(this.node);
78
+ (_a = diagram.getGroup(this.groupId)) === null || _a === void 0 ? void 0 : _a.addMember(this.node.id);
79
+ }
80
+ undo(context) {
81
+ var _a;
82
+ const diagram = context.diagram;
83
+ if (!diagram)
84
+ return;
85
+ (_a = diagram.getGroup(this.groupId)) === null || _a === void 0 ? void 0 : _a.removeMember(this.node.id);
86
+ diagram.removeNode(this.node.id);
87
+ }
88
+ serialize() {
89
+ return {
90
+ id: this.id,
91
+ name: this.name,
92
+ timestamp: this.timestamp,
93
+ data: { nodeId: this.node.id, groupId: this.groupId },
94
+ };
95
+ }
96
+ }
97
+ const DEFAULTS = { columns: 12, gap: 8, rowHeight: 130, width: 1180, height: 660 };
98
+ const OFFSCREEN_X = -20000;
99
+ let autoId = 0;
100
+ /** The node a widget spec becomes — one place, so addWidget() and the initial
101
+ * spec build can never drift apart on metadata. */
102
+ function buildWidgetNode(w, rowHeight) {
103
+ var _a, _b, _c, _d, _e, _f;
104
+ const node = new engine_1.NodeModel({
105
+ id: w.id,
106
+ type: 'widget',
107
+ position: { x: 0, y: 0 },
108
+ size: { width: 120, height: rowHeight, depth: 0 },
109
+ });
110
+ node.setMetadata('useHTMLLayer', true);
111
+ node.setMetadata('widgetKind', (_a = w.kind) !== null && _a !== void 0 ? _a : 'widget');
112
+ node.setMetadata('widgetSpec', (_b = w.data) !== null && _b !== void 0 ? _b : {});
113
+ // The TITLE was the one authored field that never reached the node — so a
114
+ // document-level reload rebuilt every card with `titleOf()` falling through to
115
+ // the kind, and a board of "Revenue vs target" / "Top reps by revenue" came
116
+ // back as "line" / "table". Only written when authored, so an untitled widget
117
+ // serialises exactly as it always did.
118
+ if (w.title !== undefined)
119
+ node.setMetadata('widgetTitle', w.title);
120
+ node.setMetadata('columnSpan', (_c = w.span) !== null && _c !== void 0 ? _c : 3);
121
+ node.setMetadata('rowSpan', (_d = w.rows) !== null && _d !== void 0 ? _d : 1);
122
+ if (w.x !== undefined && w.y !== undefined) {
123
+ node.setGridItem({
124
+ columnStart: w.x + 1,
125
+ columnEnd: w.x + 1 + ((_e = w.span) !== null && _e !== void 0 ? _e : 3),
126
+ rowStart: w.y + 1,
127
+ rowEnd: w.y + 1 + ((_f = w.rows) !== null && _f !== void 0 ? _f : 1),
128
+ });
129
+ }
130
+ // A dashboard widget is not a wiring endpoint: no ports, no hover glyphs.
131
+ node.setBehavior({ connectable: false });
132
+ for (const p of [...node.getPorts().values()])
133
+ node.removePort(p.id);
134
+ return node;
135
+ }
136
+ /** Flow widgets that declared no cell: left-to-right, wrapping at `columns`. */
137
+ function assignCells(widgets, columns) {
138
+ var _a, _b;
139
+ let x = 0;
140
+ let y = 0;
141
+ let rowMax = 0;
142
+ for (const w of widgets) {
143
+ const span = Math.max(1, Math.min(columns, (_a = w.span) !== null && _a !== void 0 ? _a : 3));
144
+ const rows = Math.max(1, (_b = w.rows) !== null && _b !== void 0 ? _b : 1);
145
+ if (w.x === undefined || w.y === undefined) {
146
+ if (x + span > columns) {
147
+ x = 0;
148
+ y += rowMax || 1;
149
+ rowMax = 0;
150
+ }
151
+ w.x = x;
152
+ w.y = y;
153
+ x += span;
154
+ rowMax = Math.max(rowMax, rows);
155
+ }
156
+ w.span = span;
157
+ w.rows = rows;
158
+ }
159
+ }
160
+ /**
161
+ * Build THE `DashboardHandle` — the one and only implementation, shared by
162
+ * `dashboard()` and `fromDocument()`. Reads/writes the mutable `ctx.active` /
163
+ * `ctx.apiRef` cells so the caller's finalize can wire the API in afterwards.
164
+ */
165
+ function createDashboardHandle(ctx) {
166
+ const { views, groups, binders, specById, viewOfWidget } = ctx;
167
+ const hostOf = (id) => ctx.hosts.get(id);
168
+ const execCommand = (cmd) => {
169
+ var _a, _b, _c, _d;
170
+ try {
171
+ const r = (_c = (_b = (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.getEngine) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.commandManager.execute(cmd);
172
+ // Fire-and-forget like the binder's own commits, but never leave an
173
+ // unhandled rejection: a refused command is a no-op, not a crash.
174
+ (_d = r === null || r === void 0 ? void 0 : r.catch) === null || _d === void 0 ? void 0 : _d.call(r, () => undefined);
175
+ }
176
+ catch (_e) {
177
+ /* a refused command must not break the caller */
178
+ }
179
+ };
180
+ const handle = {
181
+ get views() {
182
+ return views.map((v) => v.id);
183
+ },
184
+ get activeView() {
185
+ return ctx.active;
186
+ },
187
+ showView(id) {
188
+ var _a, _b, _c, _d, _e, _f;
189
+ if (!groups.has(id))
190
+ return;
191
+ ctx.active = id;
192
+ for (const [vid, g] of groups) {
193
+ const x = vid === id ? 0 : OFFSCREEN_X;
194
+ const s = (_a = g.size) !== null && _a !== void 0 ? _a : { width: ctx.boardW, height: ctx.boardH };
195
+ if (g.position.x !== x)
196
+ g.setFrame({ x, y: 0, width: s.width, height: s.height });
197
+ }
198
+ (_b = binders.get(id)) === null || _b === void 0 ? void 0 : _b.sync();
199
+ (_c = ctx.apiRef) === null || _c === void 0 ? void 0 : _c.renderNow();
200
+ const g = groups.get(id);
201
+ const gs = (_d = g.size) !== null && _d !== void 0 ? _d : { width: ctx.boardW, height: ctx.boardH };
202
+ (_f = (_e = ctx.apiRef) === null || _e === void 0 ? void 0 : _e.viewport) === null || _f === void 0 ? void 0 : _f.fitToBounds({ x: g.position.x, y: g.position.y, width: gs.width, height: gs.height }, 26, { maxZoom: 1 });
203
+ },
204
+ widget(id) {
205
+ return makeWidgetHandle(id);
206
+ },
207
+ widgetsOf(viewId) {
208
+ var _a;
209
+ const v = views.find((x) => x.id === (viewId !== null && viewId !== void 0 ? viewId : ctx.active));
210
+ return ((_a = v === null || v === void 0 ? void 0 : v.widgets) !== null && _a !== void 0 ? _a : []).map((w) => makeWidgetHandle(w.id)).filter(Boolean);
211
+ },
212
+ setSizing(mode) {
213
+ var _a;
214
+ for (const b of binders.values())
215
+ b.setSizing(mode);
216
+ (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.renderNow();
217
+ },
218
+ getSizing: () => { var _a, _b, _c; return (_b = (_a = binders.get(ctx.active)) === null || _a === void 0 ? void 0 : _a.getSizing()) !== null && _b !== void 0 ? _b : ((_c = ctx.optionsBase.sizing) !== null && _c !== void 0 ? _c : 'fit'); },
219
+ setFloat(on) {
220
+ var _a;
221
+ for (const b of binders.values())
222
+ b.setFloat(on);
223
+ (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.renderNow();
224
+ },
225
+ getFloat: () => { var _a, _b, _c; return (_b = (_a = binders.get(ctx.active)) === null || _a === void 0 ? void 0 : _a.getFloat()) !== null && _b !== void 0 ? _b : ((_c = ctx.optionsBase.float) !== null && _c !== void 0 ? _c : false); },
226
+ setColumns(n, layout, viewId) {
227
+ var _a;
228
+ const targets = viewId ? [binders.get(viewId)] : [...binders.values()];
229
+ for (const b of targets)
230
+ b === null || b === void 0 ? void 0 : b.setColumns(n, layout);
231
+ (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.renderNow();
232
+ },
233
+ getColumns: (viewId) => { var _a, _b; return (_b = (_a = binders.get(viewId !== null && viewId !== void 0 ? viewId : ctx.active)) === null || _a === void 0 ? void 0 : _a.getColumns()) !== null && _b !== void 0 ? _b : ctx.columns; },
234
+ setRtl(on) {
235
+ var _a;
236
+ for (const b of binders.values())
237
+ b.setRtl(on);
238
+ (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.renderNow();
239
+ },
240
+ getRtl: () => { var _a, _b, _c; return (_b = (_a = binders.get(ctx.active)) === null || _a === void 0 ? void 0 : _a.getRtl()) !== null && _b !== void 0 ? _b : ((_c = ctx.optionsBase.rtl) !== null && _c !== void 0 ? _c : false); },
241
+ addWidget(spec, viewId) {
242
+ var _a, _b, _c, _d, _e;
243
+ const vid = viewId !== null && viewId !== void 0 ? viewId : ctx.active;
244
+ const v = views.find((x) => x.id === vid);
245
+ const model = (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.getModel();
246
+ const group = groups.get(vid);
247
+ if (!v || !model || !group)
248
+ return undefined;
249
+ const w = Object.assign(Object.assign({}, spec), { id: spec.id || `w-${++autoId}`, span: (_b = spec.span) !== null && _b !== void 0 ? _b : 3, rows: (_c = spec.rows) !== null && _c !== void 0 ? _c : 1 });
250
+ // REGISTER FIRST: a custom node mounts exactly once, and the painter
251
+ // returns early for an id the spec does not know — so the widget must be
252
+ // known before the node reaches the model, or it paints blank forever.
253
+ v.widgets.push(w);
254
+ specById.set(w.id, w);
255
+ viewOfWidget.set(w.id, vid);
256
+ const existing = model.getNode(w.id);
257
+ const node = existing !== null && existing !== void 0 ? existing : buildWidgetNode(w, ctx.rowHeight);
258
+ if (w.pinned)
259
+ node.setState({ locked: true });
260
+ // ONE undoable step (see AddWidgetCommand for why this cannot be a batch).
261
+ execCommand(existing ? new engine_1.AddToGroupCommand(group.id, w.id) : new AddWidgetCommand(node, group.id));
262
+ (_d = binders.get(vid)) === null || _d === void 0 ? void 0 : _d.sync();
263
+ (_e = ctx.apiRef) === null || _e === void 0 ? void 0 : _e.renderNow();
264
+ return makeWidgetHandle(w.id);
265
+ },
266
+ refresh() {
267
+ var _a;
268
+ for (const b of binders.values())
269
+ b.sync();
270
+ (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.renderNow();
271
+ },
272
+ fit(viewId) {
273
+ var _a, _b, _c;
274
+ const g = groups.get(viewId !== null && viewId !== void 0 ? viewId : ctx.active);
275
+ if (!g)
276
+ return;
277
+ const gs = (_a = g.size) !== null && _a !== void 0 ? _a : { width: ctx.boardW, height: ctx.boardH };
278
+ (_c = (_b = ctx.apiRef) === null || _b === void 0 ? void 0 : _b.viewport) === null || _c === void 0 ? void 0 : _c.fitToBounds({ x: g.position.x, y: g.position.y, width: gs.width, height: gs.height }, 26, { maxZoom: 1 });
279
+ },
280
+ metrics(viewId) {
281
+ var _a;
282
+ return (_a = binders.get(viewId !== null && viewId !== void 0 ? viewId : ctx.active)) === null || _a === void 0 ? void 0 : _a.metrics();
283
+ },
284
+ binderOf(viewId) {
285
+ return binders.get(viewId !== null && viewId !== void 0 ? viewId : ctx.active);
286
+ },
287
+ exportIds(viewId) {
288
+ var _a, _b;
289
+ const id = viewId !== null && viewId !== void 0 ? viewId : ctx.active;
290
+ const ids = new Set();
291
+ // A view with no group is a view that was never finalized — an empty set
292
+ // is the honest answer, and scoping an export to nothing is a visible
293
+ // failure rather than a silently enormous document.
294
+ if (!groups.has(id))
295
+ return ids;
296
+ ids.add(id);
297
+ // Read the SPEC, not the group's member Set: membership is maintained by
298
+ // commands and an in-flight drag can have a widget momentarily reparented.
299
+ // The spec is what the view IS.
300
+ for (const w of (_b = (_a = views.find((v) => v.id === id)) === null || _a === void 0 ? void 0 : _a.widgets) !== null && _b !== void 0 ? _b : [])
301
+ ids.add(w.id);
302
+ return ids;
303
+ },
304
+ toJSON() {
305
+ // SAVING ON A PHONE SAVES THE DESKTOP LAYOUT. The binder serialises from
306
+ // the engine's LARGEST cached column count (gridstack's `save()`), so a
307
+ // board currently squeezed to 1 column still writes out the 12-column
308
+ // layout its user authored — and the view's `columns` is that count, so
309
+ // feeding this straight back into dashboard() rebuilds the wide board.
310
+ const savedViews = views.map((v) => {
311
+ var _a;
312
+ const saved = (_a = binders.get(v.id)) === null || _a === void 0 ? void 0 : _a.saveLayout();
313
+ return Object.assign(Object.assign(Object.assign({}, v), (saved ? { columns: saved.columns } : {})), { widgets: v.widgets.map((w) => {
314
+ var _a, _b;
315
+ const cell = (_a = saved === null || saved === void 0 ? void 0 : saved.cells.get(w.id)) !== null && _a !== void 0 ? _a : (_b = binders.get(v.id)) === null || _b === void 0 ? void 0 : _b.cellOf(w.id);
316
+ return cell ? Object.assign(Object.assign({}, w), { x: cell.x, y: cell.y, span: cell.w, rows: cell.h }) : Object.assign({}, w);
317
+ }) });
318
+ });
319
+ // Board options come off the LIVE board wherever the handle can see it —
320
+ // `sizing` and `float` are the two a user changes from the toolbar, and
321
+ // reading them from the authored literal would restore the board they
322
+ // started with rather than the one they are looking at.
323
+ return Object.assign(Object.assign({}, ctx.optionsBase), { renderWidget: undefined, onLayoutChange: undefined, columns: ctx.columns, gap: ctx.gap, rowHeight: ctx.rowHeight, sizing: handle.getSizing(), float: handle.getFloat(), rtl: handle.getRtl(), views: savedViews });
324
+ },
325
+ dispose() {
326
+ var _a, _b;
327
+ for (const b of binders.values())
328
+ b.dispose();
329
+ binders.clear();
330
+ // The groups finalize() created are ours to clean up — leaving them
331
+ // behind made a rebuild stack a second set of boards on the first.
332
+ const model = (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.getModel();
333
+ for (const id of groups.keys())
334
+ (_b = model === null || model === void 0 ? void 0 : model.removeGroup) === null || _b === void 0 ? void 0 : _b.call(model, id);
335
+ groups.clear();
336
+ ctx.hosts.clear();
337
+ },
338
+ };
339
+ function makeWidgetHandle(id) {
340
+ const spec = specById.get(id);
341
+ const viewId = viewOfWidget.get(id);
342
+ if (!spec || !viewId)
343
+ return undefined;
344
+ const binder = () => binders.get(viewId);
345
+ const node = () => { var _a; return (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.getModel().getNode(id); };
346
+ return {
347
+ id,
348
+ viewId,
349
+ get node() {
350
+ return node();
351
+ },
352
+ get spec() {
353
+ return spec;
354
+ },
355
+ get cell() {
356
+ var _a;
357
+ return (_a = binder()) === null || _a === void 0 ? void 0 : _a.cellOf(id);
358
+ },
359
+ get rect() {
360
+ var _a;
361
+ return (_a = binder()) === null || _a === void 0 ? void 0 : _a.cellRectOf(id);
362
+ },
363
+ get pinned() {
364
+ var _a, _b;
365
+ return ((_b = (_a = node()) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.locked) === true;
366
+ },
367
+ resize(span, rows) {
368
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
369
+ var _a, _b;
370
+ return (_b = (yield ((_a = binder()) === null || _a === void 0 ? void 0 : _a.resizeTo(id, span, rows)))) !== null && _b !== void 0 ? _b : false;
371
+ });
372
+ },
373
+ moveTo(x, y) {
374
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
375
+ var _a, _b;
376
+ return (_b = (yield ((_a = binder()) === null || _a === void 0 ? void 0 : _a.moveTo(id, x, y)))) !== null && _b !== void 0 ? _b : false;
377
+ });
378
+ },
379
+ pin(on) {
380
+ var _a, _b, _c;
381
+ const n = node();
382
+ if (!n)
383
+ return;
384
+ n.setState({ locked: on !== null && on !== void 0 ? on : !(((_a = n.state) === null || _a === void 0 ? void 0 : _a.locked) === true) });
385
+ // Re-sync so the ENGINE's locked flag (never pushed, drags refused)
386
+ // and the hidden corner handle take effect on this frame, not the next
387
+ // gesture.
388
+ (_b = binder()) === null || _b === void 0 ? void 0 : _b.sync();
389
+ (_c = ctx.apiRef) === null || _c === void 0 ? void 0 : _c.renderNow();
390
+ },
391
+ bringToFront() {
392
+ var _a;
393
+ execCommand(new engine_1.BringNodeToFrontCommand(id));
394
+ (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.renderNow();
395
+ },
396
+ sendToBack() {
397
+ var _a;
398
+ execCommand(new engine_1.SendNodeToBackCommand(id));
399
+ (_a = ctx.apiRef) === null || _a === void 0 ? void 0 : _a.renderNow();
400
+ },
401
+ update(patch) {
402
+ if (patch.data !== undefined)
403
+ spec.data = patch.data;
404
+ if (patch.title !== undefined)
405
+ spec.title = patch.title;
406
+ if (patch.kind !== undefined)
407
+ spec.kind = patch.kind;
408
+ const host = hostOf(id);
409
+ if (host)
410
+ ctx.renderWidget(spec, host);
411
+ },
412
+ remove(displaced) {
413
+ var _a, _b;
414
+ const n = node();
415
+ const group = groups.get(viewId);
416
+ const b = binder();
417
+ if (!n || !group || !b)
418
+ return;
419
+ // ONE undoable step, survivors' re-pack folded in — the same atomic
420
+ // shape the kit's own drag-out-to-remove uses. A gesture that ALREADY
421
+ // computed the survivors passes them in: after a drag-out the tile is
422
+ // gone from the engine, so planRemoval() would return [] and the
423
+ // survivors' cells would never commit.
424
+ const survivors = (_a = displaced) !== null && _a !== void 0 ? _a : b.planRemoval(id);
425
+ const cmds = [...survivors, new engine_1.RemoveFromGroupCommand(group.id, id), new engine_1.RemoveNodeCommand(id)];
426
+ void execCommand(new engine_1.BatchCommand('Remove widget', cmds));
427
+ const v = views.find((x) => x.id === viewId);
428
+ if (v)
429
+ v.widgets = v.widgets.filter((w) => w.id !== id);
430
+ specById.delete(id);
431
+ viewOfWidget.delete(id);
432
+ b.sync();
433
+ (_b = ctx.apiRef) === null || _b === void 0 ? void 0 : _b.renderNow();
434
+ },
435
+ repaint() {
436
+ const host = hostOf(id);
437
+ if (host)
438
+ ctx.renderWidget(spec, host);
439
+ },
440
+ // (hosts are captured in renderCustomNode, so repaint works for every
441
+ // widget the renderer has mounted — including after a rebuild.)
442
+ };
443
+ }
444
+ return handle;
445
+ }
446
+ function dashboard(options) {
447
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
448
+ (0, styles_1.ensureDashboardKitStyles)();
449
+ const columns = (_a = options.columns) !== null && _a !== void 0 ? _a : DEFAULTS.columns;
450
+ const gap = (_b = options.gap) !== null && _b !== void 0 ? _b : DEFAULTS.gap;
451
+ const rowHeight = (_c = options.rowHeight) !== null && _c !== void 0 ? _c : DEFAULTS.rowHeight;
452
+ const boardW = (_d = options.width) !== null && _d !== void 0 ? _d : DEFAULTS.width;
453
+ const boardH = (_e = options.height) !== null && _e !== void 0 ? _e : DEFAULTS.height;
454
+ const views = options.views
455
+ ? options.views.map((v) => (Object.assign(Object.assign({}, v), { widgets: v.widgets.map((w) => (Object.assign({}, w))) })))
456
+ : [{ id: 'main', widgets: ((_f = options.widgets) !== null && _f !== void 0 ? _f : []).map((w) => (Object.assign({}, w))) }];
457
+ for (const v of views)
458
+ assignCells(v.widgets, (_g = v.columns) !== null && _g !== void 0 ? _g : columns);
459
+ // -- the render spec: one custom-HTML node per widget ----------------------
460
+ const nodes = [];
461
+ const specById = new Map();
462
+ const viewOfWidget = new Map();
463
+ for (const v of views) {
464
+ for (const w of v.widgets) {
465
+ specById.set(w.id, w);
466
+ viewOfWidget.set(w.id, v.id);
467
+ nodes.push({
468
+ id: w.id,
469
+ type: 'widget',
470
+ position: { x: 0, y: 0 },
471
+ size: { width: 100, height: rowHeight },
472
+ custom: true,
473
+ metadata: Object.assign(Object.assign({ useHTMLLayer: true, widgetKind: (_h = w.kind) !== null && _h !== void 0 ? _h : 'widget', widgetSpec: (_j = w.data) !== null && _j !== void 0 ? _j : {} }, (w.title !== undefined ? { widgetTitle: w.title } : {})), { columnSpan: w.span, rowSpan: w.rows, gridItem: { columnStart: w.x + 1, columnEnd: w.x + 1 + w.span, rowStart: w.y + 1, rowEnd: w.y + 1 + w.rows } }),
474
+ });
475
+ }
476
+ }
477
+ // No renderWidget → the built-in renderers draw the declared `kind` from the
478
+ // developer's own `data` (widgets.ts), unknown kinds landing on the titled
479
+ // frame they always did.
480
+ const renderWidget = (_k = options.renderWidget) !== null && _k !== void 0 ? _k : widgets_1.defaultWidgetRenderer;
481
+ // -- runtime: ONE shared handle over a boxed context -----------------------
482
+ // The two MUTABLE cells the handle used to close over as free `let`s —
483
+ // `active` (showView reassigns it) and `apiRef` (finalize sets it) — are boxed
484
+ // on `ctx`, so the SAME builder that fromDocument() calls reads and writes
485
+ // them. Everything else is the stable state; the handle is identical to what
486
+ // was inline here, moved verbatim into createDashboardHandle().
487
+ const ctx = {
488
+ views,
489
+ groups: new Map(),
490
+ binders: new Map(),
491
+ specById,
492
+ viewOfWidget,
493
+ hosts: new Map(),
494
+ renderWidget,
495
+ columns,
496
+ gap,
497
+ rowHeight,
498
+ boardW,
499
+ boardH,
500
+ optionsBase: options,
501
+ active: (_m = (_l = views[0]) === null || _l === void 0 ? void 0 : _l.id) !== null && _m !== void 0 ? _m : 'main',
502
+ apiRef: null,
503
+ };
504
+ const { binders, groups } = ctx;
505
+ const handle = createDashboardHandle(ctx);
506
+ return {
507
+ nodes,
508
+ edges: [],
509
+ renderCustomNode: (node, host) => {
510
+ const n = node;
511
+ const spec = specById.get(n.id);
512
+ if (!spec)
513
+ return;
514
+ ctx.hosts.set(n.id, host);
515
+ renderWidget(spec, host);
516
+ },
517
+ get handle() {
518
+ return handle;
519
+ },
520
+ finalize: (api) => {
521
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
522
+ const a = api;
523
+ if (!a)
524
+ return;
525
+ ctx.apiRef = a;
526
+ const model = a.getModel();
527
+ for (const v of views) {
528
+ // One board per view; the group is a pure LAYOUT CONTAINER, so its
529
+ // chrome is suppressed (frameChrome) exactly as a dashboard needs.
530
+ const g = new engine_1.GroupModel({ id: v.id, name: (_a = v.name) !== null && _a !== void 0 ? _a : v.id });
531
+ model.addGroup(g);
532
+ g.setMetadata('frameChrome', 'none');
533
+ // THE BOARD'S GEOMETRY, PERSISTED. Cells alone do not describe a board:
534
+ // the column count, gap and sizing mode are what turn them into pixels,
535
+ // and they live only in the `dashboard()` call. Without them a reloaded
536
+ // document could paint the widgets but never rebind the grid — the
537
+ // reload would be a picture of a dashboard rather than a dashboard.
538
+ // Serializable values only: the binder's callbacks belong to the app.
539
+ g.setMetadata('dashboardBoard', {
540
+ columns: (_b = v.columns) !== null && _b !== void 0 ? _b : columns,
541
+ gap,
542
+ padding: gap,
543
+ sizing: (_c = options.sizing) !== null && _c !== void 0 ? _c : 'fit',
544
+ baseRowHeight: rowHeight,
545
+ designHeight: (_d = v.height) !== null && _d !== void 0 ? _d : boardH,
546
+ float: (_e = options.float) !== null && _e !== void 0 ? _e : false,
547
+ rtl: (_f = options.rtl) !== null && _f !== void 0 ? _f : false,
548
+ });
549
+ g.size = { width: (_g = v.width) !== null && _g !== void 0 ? _g : boardW, height: (_h = v.height) !== null && _h !== void 0 ? _h : boardH, depth: 0 };
550
+ g.position = { x: v.id === ctx.active ? 0 : OFFSCREEN_X, y: 0 };
551
+ groups.set(v.id, g);
552
+ for (const w of v.widgets) {
553
+ const n = model.getNode(w.id);
554
+ if (!n)
555
+ continue;
556
+ // DECLARED CELLS ARE AUTHORITATIVE. `metadata.gridItem` on the node
557
+ // SPEC is inert — the model's GridItemConfig is a real field
558
+ // (`setGridItem`), and it is the only thing the binder reads. Without
559
+ // this write the board silently auto-positioned instead, which
560
+ // matched the declaration only while flow order happened to agree,
561
+ // and made toJSON() → dashboard() NOT round-trip (a saved layout
562
+ // rebuilt back into its declaration order rather than its cells).
563
+ if (w.x !== undefined && w.y !== undefined) {
564
+ n.setGridItem((0, grid_mapping_1.gridItemFromCell)({ x: w.x, y: w.y, w: (_j = w.span) !== null && _j !== void 0 ? _j : 3, h: (_k = w.rows) !== null && _k !== void 0 ? _k : 1 }));
565
+ }
566
+ if (w.pinned)
567
+ n.setState({ locked: true });
568
+ // A dashboard widget is not a wiring endpoint. This MUST happen here
569
+ // rather than on the node spec: the render-input path IGNORES a
570
+ // spec-level `behavior` (the same trap erDiagram documents for
571
+ // `resizable`), so a DECLARED widget shipped connectable with four
572
+ // default ports and sprouted glyphs on hover — while addWidget()'s
573
+ // directly-built nodes were already correct. One path being right is
574
+ // exactly what hid it, and why the tooth now covers both.
575
+ n.setBehavior({ connectable: false });
576
+ for (const p of [...n.getPorts().values()])
577
+ n.removePort(p.id);
578
+ g.addMember(w.id);
579
+ }
580
+ binders.set(v.id, (0, grid_binder_1.bindDashboardGrid)(a, g, Object.assign(Object.assign(Object.assign({ columns: (_l = v.columns) !== null && _l !== void 0 ? _l : columns, gap, padding: gap, sizing: (_m = options.sizing) !== null && _m !== void 0 ? _m : 'fit', baseRowHeight: rowHeight, designHeight: (_o = v.height) !== null && _o !== void 0 ? _o : boardH, float: (_p = options.float) !== null && _p !== void 0 ? _p : false, rtl: (_q = options.rtl) !== null && _q !== void 0 ? _q : false }, (options.responsive ? { responsive: options.responsive } : {})), ((_r = options.binder) !== null && _r !== void 0 ? _r : {})), { onGesture: (e) => {
581
+ var _a, _b;
582
+ if (e.type === 'commit' && options.onLayoutChange) {
583
+ const snapshot = handle.toJSON().views.find((x) => x.id === v.id);
584
+ if (snapshot)
585
+ options.onLayoutChange(v.id, snapshot.widgets);
586
+ }
587
+ (_b = (_a = options.binder) === null || _a === void 0 ? void 0 : _a.onGesture) === null || _b === void 0 ? void 0 : _b.call(_a, e);
588
+ } })));
589
+ }
590
+ handle.showView(ctx.active);
591
+ },
592
+ };
593
+ }
594
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/dashboard-kit/dashboard.ts"],"names":[],"mappings":"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"}