@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.
- package/package.json +41 -0
- package/src/index.d.ts +87 -0
- package/src/index.js +547 -0
- package/src/index.js.map +1 -0
- package/src/lib/dashboard-kit/dashboard.d.ts +345 -0
- package/src/lib/dashboard-kit/dashboard.js +594 -0
- package/src/lib/dashboard-kit/dashboard.js.map +1 -0
- package/src/lib/dashboard-kit/grid-binder.d.ts +277 -0
- package/src/lib/dashboard-kit/grid-binder.js +1635 -0
- package/src/lib/dashboard-kit/grid-binder.js.map +1 -0
- package/src/lib/dashboard-kit/grid-mapping.d.ts +141 -0
- package/src/lib/dashboard-kit/grid-mapping.js +176 -0
- package/src/lib/dashboard-kit/grid-mapping.js.map +1 -0
- package/src/lib/dashboard-kit/index.d.ts +5 -0
- package/src/lib/dashboard-kit/index.js +33 -0
- package/src/lib/dashboard-kit/index.js.map +1 -0
- package/src/lib/dashboard-kit/styles.d.ts +25 -0
- package/src/lib/dashboard-kit/styles.js +203 -0
- package/src/lib/dashboard-kit/styles.js.map +1 -0
- package/src/lib/dashboard-kit/widgets.d.ts +112 -0
- package/src/lib/dashboard-kit/widgets.js +389 -0
- package/src/lib/dashboard-kit/widgets.js.map +1 -0
- package/src/lib/diagram-kit/card.d.ts +75 -0
- package/src/lib/diagram-kit/card.js +209 -0
- package/src/lib/diagram-kit/card.js.map +1 -0
- package/src/lib/diagram-kit/editing.d.ts +54 -0
- package/src/lib/diagram-kit/editing.js +289 -0
- package/src/lib/diagram-kit/editing.js.map +1 -0
- package/src/lib/diagram-kit/er.d.ts +73 -0
- package/src/lib/diagram-kit/er.js +163 -0
- package/src/lib/diagram-kit/er.js.map +1 -0
- package/src/lib/diagram-kit/handles.d.ts +181 -0
- package/src/lib/diagram-kit/handles.js +325 -0
- package/src/lib/diagram-kit/handles.js.map +1 -0
- package/src/lib/diagram-kit/index.d.ts +8 -0
- package/src/lib/diagram-kit/index.js +38 -0
- package/src/lib/diagram-kit/index.js.map +1 -0
- package/src/lib/diagram-kit/rows.d.ts +53 -0
- package/src/lib/diagram-kit/rows.js +147 -0
- package/src/lib/diagram-kit/rows.js.map +1 -0
- package/src/lib/diagram-kit/styles.d.ts +18 -0
- package/src/lib/diagram-kit/styles.js +114 -0
- package/src/lib/diagram-kit/styles.js.map +1 -0
- package/src/lib/diagram-kit/uml.d.ts +59 -0
- package/src/lib/diagram-kit/uml.js +138 -0
- package/src/lib/diagram-kit/uml.js.map +1 -0
- package/src/lib/diagram-kit/update.d.ts +133 -0
- package/src/lib/diagram-kit/update.js +251 -0
- package/src/lib/diagram-kit/update.js.map +1 -0
- package/src/lib/grafloria-flow-element.d.ts +48 -0
- package/src/lib/grafloria-flow-element.js +271 -0
- package/src/lib/grafloria-flow-element.js.map +1 -0
- package/src/lib/grafloria.d.ts +61 -0
- package/src/lib/grafloria.js +72 -0
- package/src/lib/grafloria.js.map +1 -0
- package/src/lib/load.d.ts +72 -0
- package/src/lib/load.js +255 -0
- package/src/lib/load.js.map +1 -0
- package/src/lib/node-type-registry.d.ts +39 -0
- package/src/lib/node-type-registry.js +50 -0
- package/src/lib/node-type-registry.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handles.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/diagram-kit/handles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { erDiagram, erRowCenterY, ER_ROW_H, ER_HEAD_H, type ErColumn, type ErEntitySpec, type ErRelationshipSpec, type ErCardinality, type ErSide, type ErDiagramOptions, } from './er';
|
|
2
|
+
export { umlDiagram, type UmlClassSpec, type UmlRelationshipSpec, type UmlRelationKind, type UmlSide, type UmlDiagramOptions, } from './uml';
|
|
3
|
+
export { ensureDiagramKitStyles, DIAGRAM_KIT_STYLE_ID } from './styles';
|
|
4
|
+
export { bindRowInteractions, type RowRef, type RowInteractionsHandle } from './rows';
|
|
5
|
+
export { updateEntity, updateClass, addColumnAt, removeColumnAt, renameColumnAt, type ErEntityDelta, type UmlClassDelta, } from './update';
|
|
6
|
+
export { bindCardEditing, type CardEditingHandle } from './editing';
|
|
7
|
+
export { matchColumns, rowIndexFromY } from './card';
|
|
8
|
+
export { erTable, umlClass, erTables, umlClasses, CardHandle, ErTable, ErField, ErColumnList, UmlClass, UmlMemberList, type HandleApi, } from './handles';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UmlMemberList = exports.UmlClass = exports.ErColumnList = exports.ErField = exports.ErTable = exports.CardHandle = exports.umlClasses = exports.erTables = exports.umlClass = exports.erTable = exports.rowIndexFromY = exports.matchColumns = exports.bindCardEditing = exports.renameColumnAt = exports.removeColumnAt = exports.addColumnAt = exports.updateClass = exports.updateEntity = exports.bindRowInteractions = exports.DIAGRAM_KIT_STYLE_ID = exports.ensureDiagramKitStyles = exports.umlDiagram = exports.ER_HEAD_H = exports.ER_ROW_H = exports.erRowCenterY = exports.erDiagram = void 0;
|
|
4
|
+
var er_1 = require("./er");
|
|
5
|
+
Object.defineProperty(exports, "erDiagram", { enumerable: true, get: function () { return er_1.erDiagram; } });
|
|
6
|
+
Object.defineProperty(exports, "erRowCenterY", { enumerable: true, get: function () { return er_1.erRowCenterY; } });
|
|
7
|
+
Object.defineProperty(exports, "ER_ROW_H", { enumerable: true, get: function () { return er_1.ER_ROW_H; } });
|
|
8
|
+
Object.defineProperty(exports, "ER_HEAD_H", { enumerable: true, get: function () { return er_1.ER_HEAD_H; } });
|
|
9
|
+
var uml_1 = require("./uml");
|
|
10
|
+
Object.defineProperty(exports, "umlDiagram", { enumerable: true, get: function () { return uml_1.umlDiagram; } });
|
|
11
|
+
var styles_1 = require("./styles");
|
|
12
|
+
Object.defineProperty(exports, "ensureDiagramKitStyles", { enumerable: true, get: function () { return styles_1.ensureDiagramKitStyles; } });
|
|
13
|
+
Object.defineProperty(exports, "DIAGRAM_KIT_STYLE_ID", { enumerable: true, get: function () { return styles_1.DIAGRAM_KIT_STYLE_ID; } });
|
|
14
|
+
var rows_1 = require("./rows");
|
|
15
|
+
Object.defineProperty(exports, "bindRowInteractions", { enumerable: true, get: function () { return rows_1.bindRowInteractions; } });
|
|
16
|
+
var update_1 = require("./update");
|
|
17
|
+
Object.defineProperty(exports, "updateEntity", { enumerable: true, get: function () { return update_1.updateEntity; } });
|
|
18
|
+
Object.defineProperty(exports, "updateClass", { enumerable: true, get: function () { return update_1.updateClass; } });
|
|
19
|
+
Object.defineProperty(exports, "addColumnAt", { enumerable: true, get: function () { return update_1.addColumnAt; } });
|
|
20
|
+
Object.defineProperty(exports, "removeColumnAt", { enumerable: true, get: function () { return update_1.removeColumnAt; } });
|
|
21
|
+
Object.defineProperty(exports, "renameColumnAt", { enumerable: true, get: function () { return update_1.renameColumnAt; } });
|
|
22
|
+
var editing_1 = require("./editing");
|
|
23
|
+
Object.defineProperty(exports, "bindCardEditing", { enumerable: true, get: function () { return editing_1.bindCardEditing; } });
|
|
24
|
+
var card_1 = require("./card");
|
|
25
|
+
Object.defineProperty(exports, "matchColumns", { enumerable: true, get: function () { return card_1.matchColumns; } });
|
|
26
|
+
Object.defineProperty(exports, "rowIndexFromY", { enumerable: true, get: function () { return card_1.rowIndexFromY; } });
|
|
27
|
+
var handles_1 = require("./handles");
|
|
28
|
+
Object.defineProperty(exports, "erTable", { enumerable: true, get: function () { return handles_1.erTable; } });
|
|
29
|
+
Object.defineProperty(exports, "umlClass", { enumerable: true, get: function () { return handles_1.umlClass; } });
|
|
30
|
+
Object.defineProperty(exports, "erTables", { enumerable: true, get: function () { return handles_1.erTables; } });
|
|
31
|
+
Object.defineProperty(exports, "umlClasses", { enumerable: true, get: function () { return handles_1.umlClasses; } });
|
|
32
|
+
Object.defineProperty(exports, "CardHandle", { enumerable: true, get: function () { return handles_1.CardHandle; } });
|
|
33
|
+
Object.defineProperty(exports, "ErTable", { enumerable: true, get: function () { return handles_1.ErTable; } });
|
|
34
|
+
Object.defineProperty(exports, "ErField", { enumerable: true, get: function () { return handles_1.ErField; } });
|
|
35
|
+
Object.defineProperty(exports, "ErColumnList", { enumerable: true, get: function () { return handles_1.ErColumnList; } });
|
|
36
|
+
Object.defineProperty(exports, "UmlClass", { enumerable: true, get: function () { return handles_1.UmlClass; } });
|
|
37
|
+
Object.defineProperty(exports, "UmlMemberList", { enumerable: true, get: function () { return handles_1.UmlMemberList; } });
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/diagram-kit/index.ts"],"names":[],"mappings":";;;AAAA,2BAWc;AAVZ,+FAAA,SAAS,OAAA;AACT,kGAAA,YAAY,OAAA;AACZ,8FAAA,QAAQ,OAAA;AACR,+FAAA,SAAS,OAAA;AAQX,6BAOe;AANb,iGAAA,UAAU,OAAA;AAOZ,mCAAwE;AAA/D,gHAAA,sBAAsB,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AACrD,+BAAsF;AAA7E,2GAAA,mBAAmB,OAAA;AAC5B,mCAQkB;AAPhB,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AACX,qGAAA,WAAW,OAAA;AACX,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AAIhB,qCAAoE;AAA3D,0GAAA,eAAe,OAAA;AACxB,+BAAqD;AAA5C,oGAAA,YAAY,OAAA;AAAE,qGAAA,aAAa,OAAA;AACpC,qCAYmB;AAXjB,kGAAA,OAAO,OAAA;AACP,mGAAA,QAAQ,OAAA;AACR,mGAAA,QAAQ,OAAA;AACR,qGAAA,UAAU,OAAA;AACV,qGAAA,UAAU,OAAA;AACV,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,uGAAA,YAAY,OAAA;AACZ,mGAAA,QAAQ,OAAA;AACR,wGAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row interactions — "select a column / field" on kit cards (P1 of the
|
|
3
|
+
* ER/UML editing track).
|
|
4
|
+
*
|
|
5
|
+
* Kit cards are `interactive: true` (their rows are real DOM targets — the
|
|
6
|
+
* binder's node click/drag resolution is geometric, so dragging and selecting
|
|
7
|
+
* the TABLE keeps working; proven live before this was built). This module is
|
|
8
|
+
* the runtime the kit's `finalize(api)` binds once per diagram:
|
|
9
|
+
*
|
|
10
|
+
* - click a row → it becomes THE selected row (one per diagram), painted with
|
|
11
|
+
* `.axk-row-selected`; click again or click anywhere else → deselected;
|
|
12
|
+
* - every row click dispatches `axk:row-click` on the container, and every
|
|
13
|
+
* selection CHANGE dispatches `axk:row-select` — both bubbling
|
|
14
|
+
* CustomEvents, matching the element package's "DOM events out" contract;
|
|
15
|
+
* - the selected row survives card re-renders: the renderer keys the
|
|
16
|
+
* foreignObject by content hash, so an html edit swaps the subtree and
|
|
17
|
+
* drops the class — a MutationObserver re-applies it by (nodeId, rowIndex);
|
|
18
|
+
* - selection is EPHEMERAL view state, exactly like node selection: never
|
|
19
|
+
* serialized, never in the op log, not undoable.
|
|
20
|
+
*
|
|
21
|
+
* Row identity: `rowIndex` is the position among the card's rows (ER columns,
|
|
22
|
+
* or UML members across both compartments); `name` resolves from the spec the
|
|
23
|
+
* kit stored in node metadata (`kitEntity` / `kitClass`), falling back to the
|
|
24
|
+
* row's text.
|
|
25
|
+
*/
|
|
26
|
+
export interface RowRef {
|
|
27
|
+
nodeId: string;
|
|
28
|
+
rowIndex: number;
|
|
29
|
+
/** Column name (ER) or member text (UML). */
|
|
30
|
+
name?: string;
|
|
31
|
+
kind: 'er' | 'uml';
|
|
32
|
+
/** UML only: which compartment the member sits in. */
|
|
33
|
+
section?: 'attributes' | 'methods';
|
|
34
|
+
}
|
|
35
|
+
export interface RowInteractionsHandle {
|
|
36
|
+
getSelected(): RowRef | null;
|
|
37
|
+
/** Programmatic selection (null clears). Fires axk:row-select like a click. */
|
|
38
|
+
select(ref: {
|
|
39
|
+
nodeId: string;
|
|
40
|
+
rowIndex: number;
|
|
41
|
+
} | null): void;
|
|
42
|
+
dispose(): void;
|
|
43
|
+
}
|
|
44
|
+
interface KitApi {
|
|
45
|
+
container: HTMLElement;
|
|
46
|
+
getModel(): {
|
|
47
|
+
getNode(id: string): {
|
|
48
|
+
getMetadata?(key: string): unknown;
|
|
49
|
+
} | undefined;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export declare function bindRowInteractions(api: KitApi): RowInteractionsHandle;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Row interactions — "select a column / field" on kit cards (P1 of the
|
|
4
|
+
* ER/UML editing track).
|
|
5
|
+
*
|
|
6
|
+
* Kit cards are `interactive: true` (their rows are real DOM targets — the
|
|
7
|
+
* binder's node click/drag resolution is geometric, so dragging and selecting
|
|
8
|
+
* the TABLE keeps working; proven live before this was built). This module is
|
|
9
|
+
* the runtime the kit's `finalize(api)` binds once per diagram:
|
|
10
|
+
*
|
|
11
|
+
* - click a row → it becomes THE selected row (one per diagram), painted with
|
|
12
|
+
* `.axk-row-selected`; click again or click anywhere else → deselected;
|
|
13
|
+
* - every row click dispatches `axk:row-click` on the container, and every
|
|
14
|
+
* selection CHANGE dispatches `axk:row-select` — both bubbling
|
|
15
|
+
* CustomEvents, matching the element package's "DOM events out" contract;
|
|
16
|
+
* - the selected row survives card re-renders: the renderer keys the
|
|
17
|
+
* foreignObject by content hash, so an html edit swaps the subtree and
|
|
18
|
+
* drops the class — a MutationObserver re-applies it by (nodeId, rowIndex);
|
|
19
|
+
* - selection is EPHEMERAL view state, exactly like node selection: never
|
|
20
|
+
* serialized, never in the op log, not undoable.
|
|
21
|
+
*
|
|
22
|
+
* Row identity: `rowIndex` is the position among the card's rows (ER columns,
|
|
23
|
+
* or UML members across both compartments); `name` resolves from the spec the
|
|
24
|
+
* kit stored in node metadata (`kitEntity` / `kitClass`), falling back to the
|
|
25
|
+
* row's text.
|
|
26
|
+
*/
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.bindRowInteractions = bindRowInteractions;
|
|
29
|
+
const ROW_SELECTOR = '.axk-row, .axk-member';
|
|
30
|
+
const SELECTED_CLASS = 'axk-row-selected';
|
|
31
|
+
/** One binding per container — rebinding disposes the previous one. */
|
|
32
|
+
const bindings = new WeakMap();
|
|
33
|
+
function rowsOfNode(container, nodeId) {
|
|
34
|
+
const esc = (window.CSS && CSS.escape) ? CSS.escape(nodeId) : nodeId.replace(/"/g, '\\"');
|
|
35
|
+
const group = container.querySelector(`[data-node-id="${esc}"]`);
|
|
36
|
+
return group ? Array.from(group.querySelectorAll(ROW_SELECTOR)) : [];
|
|
37
|
+
}
|
|
38
|
+
function resolveRef(container, api, rowEl) {
|
|
39
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
40
|
+
const group = rowEl.closest('[data-node-id]');
|
|
41
|
+
if (!group)
|
|
42
|
+
return null;
|
|
43
|
+
const nodeId = group.getAttribute('data-node-id');
|
|
44
|
+
const rows = Array.from(group.querySelectorAll(ROW_SELECTOR));
|
|
45
|
+
const rowIndex = rows.indexOf(rowEl);
|
|
46
|
+
if (rowIndex === -1)
|
|
47
|
+
return null;
|
|
48
|
+
const kind = rowEl.classList.contains('axk-member') ? 'uml' : 'er';
|
|
49
|
+
const node = (_c = (_a = api.getModel) === null || _a === void 0 ? void 0 : (_b = _a.call(api)).getNode) === null || _c === void 0 ? void 0 : _c.call(_b, nodeId);
|
|
50
|
+
const meta = (key) => { var _a; return (_a = node === null || node === void 0 ? void 0 : node.getMetadata) === null || _a === void 0 ? void 0 : _a.call(node, key); };
|
|
51
|
+
if (kind === 'er') {
|
|
52
|
+
const entity = meta('kitEntity');
|
|
53
|
+
const name = (_h = (_f = (_e = (_d = entity === null || entity === void 0 ? void 0 : entity.columns) === null || _d === void 0 ? void 0 : _d[rowIndex]) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : (_g = rowEl.querySelector('.axk-col')) === null || _g === void 0 ? void 0 : _g.textContent) !== null && _h !== void 0 ? _h : undefined;
|
|
54
|
+
return { nodeId, rowIndex, name: name !== null && name !== void 0 ? name : undefined, kind };
|
|
55
|
+
}
|
|
56
|
+
const cls = meta('kitClass');
|
|
57
|
+
const attrCount = (_k = (_j = cls === null || cls === void 0 ? void 0 : cls.attributes) === null || _j === void 0 ? void 0 : _j.length) !== null && _k !== void 0 ? _k : countFirstCompartment(rowEl);
|
|
58
|
+
const section = rowIndex < attrCount ? 'attributes' : 'methods';
|
|
59
|
+
const name = (_q = (_o = (section === 'attributes' ? (_l = cls === null || cls === void 0 ? void 0 : cls.attributes) === null || _l === void 0 ? void 0 : _l[rowIndex] : (_m = cls === null || cls === void 0 ? void 0 : cls.methods) === null || _m === void 0 ? void 0 : _m[rowIndex - attrCount])) !== null && _o !== void 0 ? _o : (_p = rowEl.textContent) === null || _p === void 0 ? void 0 : _p.trim()) !== null && _q !== void 0 ? _q : undefined;
|
|
60
|
+
return { nodeId, rowIndex, name, kind, section };
|
|
61
|
+
}
|
|
62
|
+
/** Without spec metadata, the first compartment's member count splits sections. */
|
|
63
|
+
function countFirstCompartment(rowEl) {
|
|
64
|
+
const card = rowEl.closest('.axk-uml');
|
|
65
|
+
const firstComp = card === null || card === void 0 ? void 0 : card.querySelector('.axk-uml-comp');
|
|
66
|
+
return firstComp ? firstComp.querySelectorAll('.axk-member').length : Number.MAX_SAFE_INTEGER;
|
|
67
|
+
}
|
|
68
|
+
function bindRowInteractions(api) {
|
|
69
|
+
var _a;
|
|
70
|
+
const container = api.container;
|
|
71
|
+
(_a = bindings.get(container)) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
72
|
+
let selected = null;
|
|
73
|
+
const paint = () => {
|
|
74
|
+
var _a;
|
|
75
|
+
for (const el of Array.from(container.querySelectorAll(`.${SELECTED_CLASS}`))) {
|
|
76
|
+
el.classList.remove(SELECTED_CLASS);
|
|
77
|
+
}
|
|
78
|
+
if (selected)
|
|
79
|
+
(_a = rowsOfNode(container, selected.nodeId)[selected.rowIndex]) === null || _a === void 0 ? void 0 : _a.classList.add(SELECTED_CLASS);
|
|
80
|
+
};
|
|
81
|
+
const emitSelect = () => {
|
|
82
|
+
container.dispatchEvent(new CustomEvent('axk:row-select', { bubbles: true, detail: { selected } }));
|
|
83
|
+
};
|
|
84
|
+
const setSelected = (next) => {
|
|
85
|
+
const same = (next === null && selected === null) ||
|
|
86
|
+
(next !== null && selected !== null && next.nodeId === selected.nodeId && next.rowIndex === selected.rowIndex);
|
|
87
|
+
if (same)
|
|
88
|
+
return;
|
|
89
|
+
selected = next;
|
|
90
|
+
paint();
|
|
91
|
+
emitSelect();
|
|
92
|
+
};
|
|
93
|
+
const onClick = (event) => {
|
|
94
|
+
var _a;
|
|
95
|
+
const target = event.target instanceof Element ? event.target : null;
|
|
96
|
+
const rowEl = (_a = target === null || target === void 0 ? void 0 : target.closest) === null || _a === void 0 ? void 0 : _a.call(target, ROW_SELECTOR);
|
|
97
|
+
if (!rowEl || !container.contains(rowEl)) {
|
|
98
|
+
setSelected(null);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const ref = resolveRef(container, api, rowEl);
|
|
102
|
+
if (!ref)
|
|
103
|
+
return;
|
|
104
|
+
container.dispatchEvent(new CustomEvent('axk:row-click', { bubbles: true, detail: Object.assign({}, ref) }));
|
|
105
|
+
const isReclick = selected && selected.nodeId === ref.nodeId && selected.rowIndex === ref.rowIndex;
|
|
106
|
+
setSelected(isReclick ? null : ref);
|
|
107
|
+
};
|
|
108
|
+
// Card re-renders replace the foreignObject subtree (content-hash keyed) and
|
|
109
|
+
// lose the class — re-apply whenever the selected row's paint went missing.
|
|
110
|
+
const observer = new MutationObserver(() => {
|
|
111
|
+
if (!selected)
|
|
112
|
+
return;
|
|
113
|
+
const el = rowsOfNode(container, selected.nodeId)[selected.rowIndex];
|
|
114
|
+
if (el && !el.classList.contains(SELECTED_CLASS))
|
|
115
|
+
paint();
|
|
116
|
+
else if (!el) {
|
|
117
|
+
// The row (or its node) is gone — the selection dies with it.
|
|
118
|
+
setSelected(null);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
container.addEventListener('click', onClick);
|
|
122
|
+
observer.observe(container, { childList: true, subtree: true });
|
|
123
|
+
const handle = {
|
|
124
|
+
getSelected: () => (selected ? Object.assign({}, selected) : null),
|
|
125
|
+
select: (ref) => {
|
|
126
|
+
if (ref === null) {
|
|
127
|
+
setSelected(null);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const el = rowsOfNode(container, ref.nodeId)[ref.rowIndex];
|
|
131
|
+
if (!el)
|
|
132
|
+
return;
|
|
133
|
+
const resolved = resolveRef(container, api, el);
|
|
134
|
+
if (resolved)
|
|
135
|
+
setSelected(resolved);
|
|
136
|
+
},
|
|
137
|
+
dispose: () => {
|
|
138
|
+
container.removeEventListener('click', onClick);
|
|
139
|
+
observer.disconnect();
|
|
140
|
+
if (bindings.get(container) === handle)
|
|
141
|
+
bindings.delete(container);
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
bindings.set(container, handle);
|
|
145
|
+
return handle;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rows.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/diagram-kit/rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagram-kit stylesheet — injected once, on first use of any kit builder.
|
|
3
|
+
*
|
|
4
|
+
* Everything is prefixed `axk-` and the selection overrides are scoped with
|
|
5
|
+
* `:has(...)` to kit cards only, so embedding the kit can never restyle a
|
|
6
|
+
* host's own nodes. The rules encode the lessons the diagrams/* demos learned
|
|
7
|
+
* the hard way:
|
|
8
|
+
* - the card fills the node and draws the ONLY border (the node's own rect is
|
|
9
|
+
* hidden by the builders, and suppressed again on selection because the
|
|
10
|
+
* theme paints `.selected` with an accent stroke that overrides inline
|
|
11
|
+
* transparency);
|
|
12
|
+
* - the default `.selection-highlight` outline (a dashed rect a few px
|
|
13
|
+
* OUTSIDE the node) reads as a second floating box around a bordered card —
|
|
14
|
+
* the kit hides it and rings the card itself instead.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DIAGRAM_KIT_STYLE_ID = "grafloria-diagram-kit-styles";
|
|
17
|
+
/** Inject the kit stylesheet once. Safe to call repeatedly and in SSR. */
|
|
18
|
+
export declare function ensureDiagramKitStyles(doc?: Document | undefined): void;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Diagram-kit stylesheet — injected once, on first use of any kit builder.
|
|
4
|
+
*
|
|
5
|
+
* Everything is prefixed `axk-` and the selection overrides are scoped with
|
|
6
|
+
* `:has(...)` to kit cards only, so embedding the kit can never restyle a
|
|
7
|
+
* host's own nodes. The rules encode the lessons the diagrams/* demos learned
|
|
8
|
+
* the hard way:
|
|
9
|
+
* - the card fills the node and draws the ONLY border (the node's own rect is
|
|
10
|
+
* hidden by the builders, and suppressed again on selection because the
|
|
11
|
+
* theme paints `.selected` with an accent stroke that overrides inline
|
|
12
|
+
* transparency);
|
|
13
|
+
* - the default `.selection-highlight` outline (a dashed rect a few px
|
|
14
|
+
* OUTSIDE the node) reads as a second floating box around a bordered card —
|
|
15
|
+
* the kit hides it and rings the card itself instead.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.DIAGRAM_KIT_STYLE_ID = void 0;
|
|
19
|
+
exports.ensureDiagramKitStyles = ensureDiagramKitStyles;
|
|
20
|
+
exports.DIAGRAM_KIT_STYLE_ID = 'grafloria-diagram-kit-styles';
|
|
21
|
+
const CSS = `
|
|
22
|
+
/* ===== ER entity (table) cards ===== */
|
|
23
|
+
.axk-entity { font: 12px/1.5 system-ui, sans-serif; border: 1px solid #64748b;
|
|
24
|
+
border-radius: 6px; overflow: hidden; background: #fff;
|
|
25
|
+
width: 100%; height: 100%; box-sizing: border-box;
|
|
26
|
+
display: flex; flex-direction: column; }
|
|
27
|
+
.axk-entity-body { flex: 1; min-height: 0; overflow-y: hidden; }
|
|
28
|
+
.axk-entity-body.axk-scroll { overflow-y: auto; scrollbar-width: thin; }
|
|
29
|
+
.axk-entity-head { background: #334155; color: #fff; font-weight: 600;
|
|
30
|
+
letter-spacing: .3px; padding: 5px 10px; text-transform: uppercase; font-size: 11px; }
|
|
31
|
+
.axk-row { display: flex; align-items: center; gap: 8px; padding: 3px 10px;
|
|
32
|
+
border-top: 1px solid #e2e8f0; }
|
|
33
|
+
.axk-key { width: 22px; font-size: 9px; font-weight: 700; color: #b45309; }
|
|
34
|
+
.axk-key.axk-fk { color: #6d28d9; }
|
|
35
|
+
.axk-col { flex: 1; color: #0f172a; }
|
|
36
|
+
.axk-ty { color: #64748b; font-size: 11px; }
|
|
37
|
+
.axk-row.axk-pk .axk-col { font-weight: 600; }
|
|
38
|
+
|
|
39
|
+
/* ===== UML class cards ===== */
|
|
40
|
+
.axk-uml { font: 12px/1.5 system-ui, sans-serif; border: 1px solid #475569;
|
|
41
|
+
border-radius: 4px; overflow: hidden; background: #fff;
|
|
42
|
+
width: 100%; height: 100%; box-sizing: border-box;
|
|
43
|
+
display: flex; flex-direction: column; }
|
|
44
|
+
.axk-uml-body { flex: 1; min-height: 0; overflow-y: hidden; }
|
|
45
|
+
.axk-uml-body.axk-scroll { overflow-y: auto; scrollbar-width: thin; }
|
|
46
|
+
.axk-uml-name { text-align: center; font-weight: 700; padding: 5px 10px;
|
|
47
|
+
background: #eef2ff; color: #1e1b4b; }
|
|
48
|
+
.axk-uml-name.axk-abstract { font-style: italic; }
|
|
49
|
+
.axk-uml-stereo { display: block; font-size: 10px; font-weight: 500; opacity: .8; }
|
|
50
|
+
.axk-uml-comp { border-top: 1px solid #475569; padding: 3px 0; }
|
|
51
|
+
.axk-uml-comp.axk-empty { min-height: 8px; }
|
|
52
|
+
.axk-member { padding: 1px 10px; font: 11px/1.5 ui-monospace, Menlo, monospace;
|
|
53
|
+
color: #0f172a; white-space: nowrap; }
|
|
54
|
+
|
|
55
|
+
/* ===== Row interactivity (cards are interactive; drag stays geometric) ===== */
|
|
56
|
+
.axk-entity, .axk-uml { user-select: none; -webkit-user-select: none; }
|
|
57
|
+
.axk-row:hover { background: rgba(37, 99, 235, .07); }
|
|
58
|
+
.axk-member:hover { background: rgba(79, 70, 229, .07); }
|
|
59
|
+
.axk-row-selected, .axk-row-selected:hover { background: rgba(37, 99, 235, .16);
|
|
60
|
+
box-shadow: inset 2px 0 0 #2563eb; }
|
|
61
|
+
.axk-member.axk-row-selected, .axk-member.axk-row-selected:hover {
|
|
62
|
+
background: rgba(79, 70, 229, .16); box-shadow: inset 2px 0 0 #4f46e5; }
|
|
63
|
+
|
|
64
|
+
/* ===== Selection: ring the CARD, never a detached rectangle ===== */
|
|
65
|
+
g.node-group:has(.axk-entity) .selection-highlight,
|
|
66
|
+
g.node-group:has(.axk-uml) .selection-highlight { display: none; }
|
|
67
|
+
g.node-group[data-selected="true"] .axk-entity {
|
|
68
|
+
border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37, 99, 235, .45); }
|
|
69
|
+
g.node-group[data-selected="true"] .axk-uml {
|
|
70
|
+
border-color: #4f46e5; box-shadow: 0 0 0 2px rgba(79, 70, 229, .45); }
|
|
71
|
+
g.node-group[data-selected="true"]:has(.axk-entity) rect.diagram-node,
|
|
72
|
+
g.node-group[data-selected="true"]:has(.axk-uml) rect.diagram-node {
|
|
73
|
+
stroke: transparent !important; fill: none !important; }
|
|
74
|
+
|
|
75
|
+
/* ===== In-canvas editing chrome (only present when editable) ===== */
|
|
76
|
+
.axk-col-del { width: 14px; text-align: center; color: #94a3b8; cursor: pointer;
|
|
77
|
+
font-weight: 700; opacity: 0; transition: opacity .1s; flex: 0 0 auto; }
|
|
78
|
+
.axk-row:hover .axk-col-del, .axk-member:hover .axk-col-del { opacity: 1; }
|
|
79
|
+
.axk-col-del:hover { color: #dc2626; }
|
|
80
|
+
/* Only editable members (which wrap their text in .axk-mtext) go flex — a
|
|
81
|
+
read-only member stays a plain text div, so its golden never shifts. */
|
|
82
|
+
.axk-member:has(.axk-mtext) { display: flex; align-items: center; }
|
|
83
|
+
.axk-member .axk-mtext { flex: 1; }
|
|
84
|
+
.axk-entity-add, .axk-uml-add { padding: 3px 10px; font-size: 11px; font-weight: 600;
|
|
85
|
+
color: #2563eb; cursor: pointer; border-top: 1px dashed #cbd5e1; user-select: none; }
|
|
86
|
+
.axk-uml-add { color: #4f46e5; border-top: 1px dashed #c7d2fe; text-align: left; }
|
|
87
|
+
.axk-entity-add:hover, .axk-uml-add:hover { background: rgba(37, 99, 235, .08); }
|
|
88
|
+
.axk-edit-input { font: 12px/1.4 system-ui, sans-serif; box-sizing: border-box;
|
|
89
|
+
border: 1px solid #2563eb; border-radius: 3px; padding: 1px 6px; margin: 0;
|
|
90
|
+
background: #fff; color: #0f172a; outline: none; box-shadow: 0 1px 4px rgba(0,0,0,.2); }
|
|
91
|
+
|
|
92
|
+
/* ===== Dark mode ===== */
|
|
93
|
+
@media (prefers-color-scheme: dark) {
|
|
94
|
+
.axk-entity { background: #1e293b; border-color: #475569; }
|
|
95
|
+
.axk-row { border-top-color: #334155; }
|
|
96
|
+
.axk-col { color: #e2e8f0; }
|
|
97
|
+
.axk-uml { background: #1e293b; border-color: #64748b; }
|
|
98
|
+
.axk-uml-name { background: #312e81; color: #e0e7ff; }
|
|
99
|
+
.axk-uml-comp { border-top-color: #64748b; }
|
|
100
|
+
.axk-member { color: #e2e8f0; }
|
|
101
|
+
}
|
|
102
|
+
`;
|
|
103
|
+
/** Inject the kit stylesheet once. Safe to call repeatedly and in SSR. */
|
|
104
|
+
function ensureDiagramKitStyles(doc = typeof document !== 'undefined' ? document : undefined) {
|
|
105
|
+
if (!doc)
|
|
106
|
+
return;
|
|
107
|
+
if (doc.getElementById(exports.DIAGRAM_KIT_STYLE_ID))
|
|
108
|
+
return;
|
|
109
|
+
const style = doc.createElement('style');
|
|
110
|
+
style.id = exports.DIAGRAM_KIT_STYLE_ID;
|
|
111
|
+
style.textContent = CSS;
|
|
112
|
+
doc.head.appendChild(style);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/diagram-kit/styles.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAwFH,wDAOC;AA7FY,QAAA,oBAAoB,GAAG,8BAA8B,CAAC;AAEnE,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFX,CAAC;AAEF,0EAA0E;AAC1E,SAAgB,sBAAsB,CAAC,MAA4B,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;IACvH,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,GAAG,CAAC,cAAc,CAAC,4BAAoB,CAAC;QAAE,OAAO;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,4BAAoB,CAAC;IAChC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;IACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface UmlClassSpec {
|
|
2
|
+
id: string;
|
|
3
|
+
/** Displayed name. Defaults to the id. */
|
|
4
|
+
name?: string;
|
|
5
|
+
/** Renders as «stereotype» above the name (e.g. 'interface', 'abstract', 'enum'). */
|
|
6
|
+
stereotype?: string;
|
|
7
|
+
/** Italicises the name (also set automatically for stereotype 'abstract'/'interface'). */
|
|
8
|
+
abstract?: boolean;
|
|
9
|
+
attributes?: string[];
|
|
10
|
+
methods?: string[];
|
|
11
|
+
position?: {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
};
|
|
15
|
+
width?: number;
|
|
16
|
+
/** Fixed card height — smaller than the content makes the compartments scroll. */
|
|
17
|
+
height?: number;
|
|
18
|
+
}
|
|
19
|
+
export type UmlRelationKind = 'inheritance' | 'realization' | 'association' | 'directed-association' | 'aggregation' | 'composition' | 'dependency';
|
|
20
|
+
export type UmlSide = 'left' | 'right' | 'top' | 'bottom';
|
|
21
|
+
export interface UmlRelationshipSpec {
|
|
22
|
+
from: string;
|
|
23
|
+
to: string;
|
|
24
|
+
/** Default 'association'. */
|
|
25
|
+
kind?: UmlRelationKind;
|
|
26
|
+
label?: string;
|
|
27
|
+
/** Multiplicity / role chips at the [from, to] ends (e.g. ['0..*', '1']). */
|
|
28
|
+
multiplicity?: [string, string];
|
|
29
|
+
fromSide?: UmlSide;
|
|
30
|
+
toSide?: UmlSide;
|
|
31
|
+
id?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface UmlDiagramOptions {
|
|
34
|
+
classes: UmlClassSpec[];
|
|
35
|
+
relationships?: UmlRelationshipSpec[];
|
|
36
|
+
/**
|
|
37
|
+
* Members are selectable by default: click one to select it (painted with
|
|
38
|
+
* .axk-row-selected; axk:row-click / axk:row-select CustomEvents fire on the
|
|
39
|
+
* container). Set false to opt out.
|
|
40
|
+
*/
|
|
41
|
+
rowSelection?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* In-canvas editing (opt-in, default false). When true: double-click the
|
|
44
|
+
* class name to rename it, double-click a member to rename it, an "add"
|
|
45
|
+
* affordance per compartment and a per-member delete control — all routed
|
|
46
|
+
* through {@link updateClass} as one undoable step.
|
|
47
|
+
*/
|
|
48
|
+
editable?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build a render() spec for a UML class diagram. Call `spec.finalize(api)`
|
|
52
|
+
* after render() — multiplicity chips are positioned labels, which only the
|
|
53
|
+
* live model's `link.addLabel` can express.
|
|
54
|
+
*/
|
|
55
|
+
export declare function umlDiagram(options: UmlDiagramOptions): {
|
|
56
|
+
nodes: Array<Record<string, unknown>>;
|
|
57
|
+
edges: Array<Record<string, unknown>>;
|
|
58
|
+
finalize: (api: unknown) => void;
|
|
59
|
+
};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.umlDiagram = umlDiagram;
|
|
4
|
+
/**
|
|
5
|
+
* UML class-diagram kit — typed builders for the full relationship vocabulary.
|
|
6
|
+
*
|
|
7
|
+
* The packaged form of demos/diagrams/class-uml.html + uml-relationships.html:
|
|
8
|
+
* three-compartment class cards («stereotype», name, attributes, methods) and
|
|
9
|
+
* every standard relationship with its real notation:
|
|
10
|
+
*
|
|
11
|
+
* inheritance ── solid, hollow triangle at the parent
|
|
12
|
+
* realization ┄┄ dashed, hollow triangle at the interface
|
|
13
|
+
* association ── plain line (multiplicity chips optional)
|
|
14
|
+
* directed-association ── open arrow at the target
|
|
15
|
+
* aggregation ── hollow diamond at the whole (source)
|
|
16
|
+
* composition ── FILLED diamond at the whole (source)
|
|
17
|
+
* dependency ┄┄ dashed, open arrow («uses»)
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* const spec = umlDiagram({
|
|
21
|
+
* classes: [{ id: 'Shape', abstract: true, attributes: ['# x: float'], methods: ['+ area(): float'] }],
|
|
22
|
+
* relationships: [{ from: 'Circle', to: 'Shape', kind: 'inheritance' }],
|
|
23
|
+
* });
|
|
24
|
+
* const api = render(spec, container);
|
|
25
|
+
* spec.finalize(api); // attaches multiplicity chips (needs the live model)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
const styles_1 = require("./styles");
|
|
29
|
+
const rows_1 = require("./rows");
|
|
30
|
+
const card_1 = require("./card");
|
|
31
|
+
const editing_1 = require("./editing");
|
|
32
|
+
const DEFAULT_WIDTH = 200;
|
|
33
|
+
const STROKE = '#475569';
|
|
34
|
+
const DASH = '6,4';
|
|
35
|
+
/**
|
|
36
|
+
* The notation table. Every kind sets arrowHead EXPLICITLY — a plain line must
|
|
37
|
+
* carry `arrowHead: none`, or the renderer paints its default arrow (the
|
|
38
|
+
* stray-arrowhead bug the demos hit live).
|
|
39
|
+
*/
|
|
40
|
+
function edgeStyleFor(kind) {
|
|
41
|
+
const none = { type: 'none', size: 0, filled: false };
|
|
42
|
+
switch (kind) {
|
|
43
|
+
case 'inheritance':
|
|
44
|
+
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: { type: 'generalization', size: 16, filled: false }, arrowTail: none };
|
|
45
|
+
case 'realization':
|
|
46
|
+
return { stroke: STROKE, strokeWidth: 1.5, strokeDasharray: DASH, arrowHead: { type: 'generalization', size: 16, filled: false }, arrowTail: none };
|
|
47
|
+
case 'association':
|
|
48
|
+
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: none, arrowTail: none };
|
|
49
|
+
case 'directed-association':
|
|
50
|
+
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: { type: 'open-arrow', size: 12, filled: false }, arrowTail: none };
|
|
51
|
+
case 'aggregation':
|
|
52
|
+
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: none, arrowTail: { type: 'hollow-diamond', size: 14, filled: false } };
|
|
53
|
+
case 'composition':
|
|
54
|
+
return { stroke: STROKE, strokeWidth: 1.5, arrowHead: none, arrowTail: { type: 'filled-diamond', size: 14, filled: true } };
|
|
55
|
+
case 'dependency':
|
|
56
|
+
return { stroke: STROKE, strokeWidth: 1.5, strokeDasharray: DASH, arrowHead: { type: 'open-arrow', size: 12, filled: false }, arrowTail: none };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Multiplicity chip, positioned near an edge end. */
|
|
60
|
+
const chip = (text, slot) => ({
|
|
61
|
+
text,
|
|
62
|
+
slot,
|
|
63
|
+
offset: { x: 0, y: -7 },
|
|
64
|
+
style: { fontSize: 11, fontWeight: '600', color: '#0f172a', background: '#ffffffdd', padding: 1, borderRadius: 2 },
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Build a render() spec for a UML class diagram. Call `spec.finalize(api)`
|
|
68
|
+
* after render() — multiplicity chips are positioned labels, which only the
|
|
69
|
+
* live model's `link.addLabel` can express.
|
|
70
|
+
*/
|
|
71
|
+
function umlDiagram(options) {
|
|
72
|
+
var _a;
|
|
73
|
+
(0, styles_1.ensureDiagramKitStyles)();
|
|
74
|
+
const editable = options.editable === true;
|
|
75
|
+
const nodes = options.classes.map((cls, i) => {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
return {
|
|
78
|
+
id: cls.id,
|
|
79
|
+
position: (_a = cls.position) !== null && _a !== void 0 ? _a : { x: 80 + (i % 3) * 320, y: 60 + Math.floor(i / 3) * 260 },
|
|
80
|
+
size: { width: (_b = cls.width) !== null && _b !== void 0 ? _b : DEFAULT_WIDTH, height: (0, card_1.classAutoHeight)(cls, editable) },
|
|
81
|
+
// interactive: members are real DOM targets (hover, row selection, inline
|
|
82
|
+
// editing); node drag/select stay geometric in the binder.
|
|
83
|
+
metadata: Object.assign({ html: { content: (0, card_1.classCardContent)(cls, editable), interactive: true }, kitClass: cls, kitEditable: editable }, (options.rowSelection === false ? { kitRowSelection: false } : {})),
|
|
84
|
+
shape: { type: 'rect', fill: 'none', stroke: 'none' },
|
|
85
|
+
style: { fill: 'transparent', stroke: 'transparent', strokeWidth: 0 },
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
const rels = (_a = options.relationships) !== null && _a !== void 0 ? _a : [];
|
|
89
|
+
const edges = rels.map((rel, i) => {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
return (Object.assign(Object.assign(Object.assign({ id: (_a = rel.id) !== null && _a !== void 0 ? _a : `uml-rel-${i + 1}`, source: rel.from, target: rel.to, label: rel.label, type: 'orthogonal' }, (rel.fromSide ? { sourceHandle: rel.fromSide } : {})), (rel.toSide ? { targetHandle: rel.toSide } : {})), { style: edgeStyleFor((_b = rel.kind) !== null && _b !== void 0 ? _b : 'association') }));
|
|
92
|
+
});
|
|
93
|
+
// finalize is idempotent per api: render() auto-runs it, and a demo may also
|
|
94
|
+
// call it — chips must not be added twice.
|
|
95
|
+
const finalized = new WeakSet();
|
|
96
|
+
const finalize = (api) => {
|
|
97
|
+
var _a, _b, _c, _d, _e, _f;
|
|
98
|
+
const a0 = api;
|
|
99
|
+
// Own card ring only — suppress the node resize handles on the live model
|
|
100
|
+
// (the render-input path does not honour a spec-level `behavior`).
|
|
101
|
+
const m0 = (_a = a0 === null || a0 === void 0 ? void 0 : a0.getModel) === null || _a === void 0 ? void 0 : _a.call(a0);
|
|
102
|
+
if (m0)
|
|
103
|
+
for (const cls of options.classes)
|
|
104
|
+
(_d = (_c = (_b = m0.getNode) === null || _b === void 0 ? void 0 : _b.call(m0, cls.id)) === null || _c === void 0 ? void 0 : _c.setBehavior) === null || _d === void 0 ? void 0 : _d.call(_c, { resizable: false });
|
|
105
|
+
if (options.rowSelection !== false) {
|
|
106
|
+
const a = api;
|
|
107
|
+
// bindRowInteractions disposes any prior binding for the container, so it
|
|
108
|
+
// is safe to run twice.
|
|
109
|
+
if (a === null || a === void 0 ? void 0 : a.container)
|
|
110
|
+
(0, rows_1.bindRowInteractions)(a);
|
|
111
|
+
}
|
|
112
|
+
if (editable && (a0 === null || a0 === void 0 ? void 0 : a0.container))
|
|
113
|
+
(0, editing_1.bindCardEditing)(a0);
|
|
114
|
+
if (api && typeof api === 'object') {
|
|
115
|
+
if (finalized.has(api))
|
|
116
|
+
return;
|
|
117
|
+
finalized.add(api);
|
|
118
|
+
}
|
|
119
|
+
const model = (_e = api === null || api === void 0 ? void 0 : api.getModel) === null || _e === void 0 ? void 0 : _e.call(api);
|
|
120
|
+
if (!model)
|
|
121
|
+
return;
|
|
122
|
+
let added = false;
|
|
123
|
+
rels.forEach((rel, i) => {
|
|
124
|
+
if (!rel.multiplicity)
|
|
125
|
+
return;
|
|
126
|
+
const link = model.getLink(edges[i].id);
|
|
127
|
+
if (!link)
|
|
128
|
+
return;
|
|
129
|
+
link.addLabel(chip(rel.multiplicity[0], 'start'));
|
|
130
|
+
link.addLabel(chip(rel.multiplicity[1], 'end'));
|
|
131
|
+
added = true;
|
|
132
|
+
});
|
|
133
|
+
if (added)
|
|
134
|
+
(_f = api === null || api === void 0 ? void 0 : api.renderNow) === null || _f === void 0 ? void 0 : _f.call(api);
|
|
135
|
+
};
|
|
136
|
+
return { nodes, edges, finalize };
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=uml.js.map
|