@coral-viz/viz 0.2.5 → 0.2.6

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 (88) hide show
  1. package/README.md +8 -2
  2. package/dist/compatibility/CompatibilityEdge.d.ts +5 -1
  3. package/dist/compatibility/CompatibilityEdge.d.ts.map +1 -1
  4. package/dist/compatibility/CompatibilityEdge.js +21 -3
  5. package/dist/compatibility/CompatibilityEdge.js.map +1 -1
  6. package/dist/compatibility/EndpointMarkerDefinitions.d.ts +10 -0
  7. package/dist/compatibility/EndpointMarkerDefinitions.d.ts.map +1 -0
  8. package/dist/compatibility/EndpointMarkerDefinitions.js +25 -0
  9. package/dist/compatibility/EndpointMarkerDefinitions.js.map +1 -0
  10. package/dist/compatibility/effectivePorts.d.ts +17 -0
  11. package/dist/compatibility/effectivePorts.d.ts.map +1 -0
  12. package/dist/compatibility/effectivePorts.js +31 -0
  13. package/dist/compatibility/effectivePorts.js.map +1 -0
  14. package/dist/compatibility/index.d.ts +1 -0
  15. package/dist/compatibility/index.d.ts.map +1 -1
  16. package/dist/compatibility/index.js +1 -0
  17. package/dist/compatibility/index.js.map +1 -1
  18. package/dist/compatibility/useEdgeCompatibility.d.ts.map +1 -1
  19. package/dist/compatibility/useEdgeCompatibility.js +10 -2
  20. package/dist/compatibility/useEdgeCompatibility.js.map +1 -1
  21. package/dist/compatibility/validateConnection.d.ts.map +1 -1
  22. package/dist/compatibility/validateConnection.js +22 -28
  23. package/dist/compatibility/validateConnection.js.map +1 -1
  24. package/dist/components/SequenceDiagram.d.ts +26 -0
  25. package/dist/components/SequenceDiagram.d.ts.map +1 -0
  26. package/dist/components/SequenceDiagram.js +68 -0
  27. package/dist/components/SequenceDiagram.js.map +1 -0
  28. package/dist/components/ShapeRenderer.d.ts +3 -1
  29. package/dist/components/ShapeRenderer.d.ts.map +1 -1
  30. package/dist/components/ShapeRenderer.js +5 -29
  31. package/dist/components/ShapeRenderer.js.map +1 -1
  32. package/dist/components/SymbolNode.d.ts +3 -0
  33. package/dist/components/SymbolNode.d.ts.map +1 -1
  34. package/dist/components/SymbolNode.js +46 -86
  35. package/dist/components/SymbolNode.js.map +1 -1
  36. package/dist/components/index.d.ts +1 -0
  37. package/dist/components/index.d.ts.map +1 -1
  38. package/dist/components/index.js +1 -0
  39. package/dist/components/index.js.map +1 -1
  40. package/dist/editor/CoralEditor.d.ts +1 -1
  41. package/dist/editor/CoralEditor.d.ts.map +1 -1
  42. package/dist/editor/CoralEditor.js +13 -4
  43. package/dist/editor/CoralEditor.js.map +1 -1
  44. package/dist/editor/FileControls.d.ts +16 -1
  45. package/dist/editor/FileControls.d.ts.map +1 -1
  46. package/dist/editor/FileControls.js +21 -6
  47. package/dist/editor/FileControls.js.map +1 -1
  48. package/dist/editor/converter.d.ts +7 -2
  49. package/dist/editor/converter.d.ts.map +1 -1
  50. package/dist/editor/converter.js +16 -17
  51. package/dist/editor/converter.js.map +1 -1
  52. package/dist/file/deserialize.d.ts +2 -1
  53. package/dist/file/deserialize.d.ts.map +1 -1
  54. package/dist/file/deserialize.js +2 -2
  55. package/dist/file/deserialize.js.map +1 -1
  56. package/dist/file/index.d.ts +2 -1
  57. package/dist/file/index.d.ts.map +1 -1
  58. package/dist/file/index.js +2 -1
  59. package/dist/file/index.js.map +1 -1
  60. package/dist/file/migrate.d.ts +18 -1
  61. package/dist/file/migrate.d.ts.map +1 -1
  62. package/dist/file/migrate.js +105 -16
  63. package/dist/file/migrate.js.map +1 -1
  64. package/dist/file/portMaterialization.d.ts +19 -0
  65. package/dist/file/portMaterialization.d.ts.map +1 -0
  66. package/dist/file/portMaterialization.js +105 -0
  67. package/dist/file/portMaterialization.js.map +1 -0
  68. package/dist/file/serialize.d.ts.map +1 -1
  69. package/dist/file/serialize.js +6 -2
  70. package/dist/file/serialize.js.map +1 -1
  71. package/dist/index.d.ts +5 -5
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +5 -5
  74. package/dist/index.js.map +1 -1
  75. package/dist/properties/NodePropertiesPanel.d.ts +1 -1
  76. package/dist/properties/NodePropertiesPanel.d.ts.map +1 -1
  77. package/dist/properties/NodePropertiesPanel.js +154 -3
  78. package/dist/properties/NodePropertiesPanel.js.map +1 -1
  79. package/dist/text-editor/TextEditor.d.ts +11 -0
  80. package/dist/text-editor/TextEditor.d.ts.map +1 -1
  81. package/dist/text-editor/TextEditor.js +45 -21
  82. package/dist/text-editor/TextEditor.js.map +1 -1
  83. package/dist/text-editor/hooks/useBidirectionalSync.d.ts +3 -2
  84. package/dist/text-editor/hooks/useBidirectionalSync.d.ts.map +1 -1
  85. package/dist/text-editor/hooks/useBidirectionalSync.js.map +1 -1
  86. package/dist/types.d.ts +2 -0
  87. package/dist/types.d.ts.map +1 -1
  88. package/package.json +8 -7
@@ -0,0 +1,19 @@
1
+ import type { GraphIR, GraphNode } from '../types.js';
2
+ import type { GraphIR2To3MigrationChange } from '@graph-ir/core';
3
+ export type GraphPort = NonNullable<GraphNode['ports']>[number];
4
+ /** Resolve the complete implicit port set supplied for a node by its notation symbol. */
5
+ export type PortResolver = (node: GraphNode, graph: GraphIR) => readonly GraphPort[] | undefined;
6
+ export interface PortMaterializationResult {
7
+ graph: GraphIR;
8
+ changes: GraphIR2To3MigrationChange[];
9
+ }
10
+ /**
11
+ * Make implicit symbol ports portable at validation/persistence boundaries.
12
+ * A node with authored `ports` remains authoritative. When any referenced
13
+ * implicit port resolves, the symbol's complete port set is written so the
14
+ * node keeps every handle when a GraphIR consumer reads it.
15
+ */
16
+ export declare function materializeReferencedPorts(graph: GraphIR, resolvePorts?: PortResolver): PortMaterializationResult;
17
+ /** Remove a persisted symbol-port set from the editor's source projection. */
18
+ export declare function stripResolvedPorts(graph: GraphIR, resolvePorts?: PortResolver): PortMaterializationResult;
19
+ //# sourceMappingURL=portMaterialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portMaterialization.d.ts","sourceRoot":"","sources":["../../src/file/portMaterialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,SAAS,SAAS,EAAE,GAAG,SAAS,CAAC;AAEjG,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC;AAiDD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,yBAAyB,CAyBjH;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,yBAAyB,CAuBzG"}
@@ -0,0 +1,105 @@
1
+ function clonePort(port) {
2
+ return {
3
+ ...port,
4
+ ...(port.properties ? { properties: { ...port.properties } } : {}),
5
+ };
6
+ }
7
+ function deepEqual(left, right) {
8
+ if (Object.is(left, right))
9
+ return true;
10
+ if (Array.isArray(left) || Array.isArray(right)) {
11
+ return Array.isArray(left) && Array.isArray(right) && left.length === right.length
12
+ && left.every((value, index) => deepEqual(value, right[index]));
13
+ }
14
+ if (!left || !right || typeof left !== 'object' || typeof right !== 'object')
15
+ return false;
16
+ const leftRecord = left;
17
+ const rightRecord = right;
18
+ const leftKeys = Object.keys(leftRecord).sort();
19
+ const rightKeys = Object.keys(rightRecord).sort();
20
+ return leftKeys.length === rightKeys.length
21
+ && leftKeys.every((key, index) => key === rightKeys[index] && deepEqual(leftRecord[key], rightRecord[key]));
22
+ }
23
+ function samePortSet(left, right) {
24
+ if (left.length !== right.length)
25
+ return false;
26
+ const rightById = new Map(right.map((port) => [port.id, port]));
27
+ return rightById.size === right.length
28
+ && left.every((port) => {
29
+ const candidate = rightById.get(port.id);
30
+ return candidate !== undefined && deepEqual(port, candidate);
31
+ });
32
+ }
33
+ function referencedPorts(graph) {
34
+ const result = new Map();
35
+ const add = (nodeId, portId) => {
36
+ if (!portId)
37
+ return;
38
+ const ports = result.get(nodeId) ?? new Set();
39
+ ports.add(portId);
40
+ result.set(nodeId, ports);
41
+ };
42
+ for (const edge of graph.edges) {
43
+ add(edge.source, edge.sourcePort);
44
+ add(edge.target, edge.targetPort);
45
+ }
46
+ return result;
47
+ }
48
+ /**
49
+ * Make implicit symbol ports portable at validation/persistence boundaries.
50
+ * A node with authored `ports` remains authoritative. When any referenced
51
+ * implicit port resolves, the symbol's complete port set is written so the
52
+ * node keeps every handle when a GraphIR consumer reads it.
53
+ */
54
+ export function materializeReferencedPorts(graph, resolvePorts) {
55
+ if (!resolvePorts)
56
+ return { graph, changes: [] };
57
+ const referenced = referencedPorts(graph);
58
+ const changes = [];
59
+ const visit = (nodes, path) => nodes.map((node, index) => {
60
+ const nodePath = `${path}/${index}`;
61
+ const children = node.children ? visit(node.children, `${nodePath}/children`) : node.children;
62
+ if (node.ports !== undefined)
63
+ return children === node.children ? node : { ...node, children };
64
+ const required = referenced.get(node.id);
65
+ if (!required?.size)
66
+ return children === node.children ? node : { ...node, children };
67
+ const resolved = resolvePorts(node, graph);
68
+ if (!resolved?.length || ![...required].some((portId) => resolved.some((port) => port.id === portId))) {
69
+ return children === node.children ? node : { ...node, children };
70
+ }
71
+ changes.push({
72
+ code: 'MATERIALIZE_SYMBOL_PORTS',
73
+ path: `${nodePath}/ports`,
74
+ message: `Materialized ${resolved.length} notation-symbol ports for node "${node.id}"`,
75
+ });
76
+ return { ...node, ...(children ? { children } : {}), ports: resolved.map(clonePort) };
77
+ });
78
+ const nodes = visit(graph.nodes, '/nodes');
79
+ return changes.length > 0 ? { graph: { ...graph, nodes }, changes } : { graph, changes };
80
+ }
81
+ /** Remove a persisted symbol-port set from the editor's source projection. */
82
+ export function stripResolvedPorts(graph, resolvePorts) {
83
+ if (!resolvePorts)
84
+ return { graph, changes: [] };
85
+ const changes = [];
86
+ const visit = (nodes, path) => nodes.map((node, index) => {
87
+ const nodePath = `${path}/${index}`;
88
+ const children = node.children ? visit(node.children, `${nodePath}/children`) : node.children;
89
+ const resolved = node.ports === undefined ? undefined : resolvePorts(node, graph);
90
+ if (node.ports === undefined || !resolved || !samePortSet(node.ports, resolved)) {
91
+ return children === node.children ? node : { ...node, children };
92
+ }
93
+ const withoutPorts = { ...node };
94
+ delete withoutPorts.ports;
95
+ changes.push({
96
+ code: 'STRIP_SYMBOL_PORTS',
97
+ path: `${nodePath}/ports`,
98
+ message: `Restored ${resolved.length} notation-symbol ports for node "${node.id}" to implicit form`,
99
+ });
100
+ return { ...withoutPorts, ...(children ? { children } : {}) };
101
+ });
102
+ const nodes = visit(graph.nodes, '/nodes');
103
+ return changes.length > 0 ? { graph: { ...graph, nodes }, changes } : { graph, changes };
104
+ }
105
+ //# sourceMappingURL=portMaterialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portMaterialization.js","sourceRoot":"","sources":["../../src/file/portMaterialization.ts"],"names":[],"mappings":"AAaA,SAAS,SAAS,CAAC,IAAe;IAChC,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,KAAc;IAC9C,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;eAC7E,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3F,MAAM,UAAU,GAAG,IAA+B,CAAC;IACnD,MAAM,WAAW,GAAG,KAAgC,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;WACtC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChH,CAAC;AAED,SAAS,WAAW,CAAC,IAA0B,EAAE,KAA2B;IAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;WACjC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,MAA0B,EAAE,EAAE;QACzD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAc,EAAE,YAA2B;IACpF,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAiC,EAAE,CAAC;IAEjD,MAAM,KAAK,GAAG,CAAC,KAAkB,EAAE,IAAY,EAAe,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9F,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC/F,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,IAAI;YAAE,OAAO,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;QACtF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC;YACtG,OAAO,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,GAAG,QAAQ,QAAQ;YACzB,OAAO,EAAE,gBAAgB,QAAQ,CAAC,MAAM,oCAAoC,IAAI,CAAC,EAAE,GAAG;SACvF,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3F,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,YAA2B;IAC5E,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjD,MAAM,OAAO,GAAiC,EAAE,CAAC;IAEjD,MAAM,KAAK,GAAG,CAAC,KAAkB,EAAE,IAAY,EAAe,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChF,OAAO,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC,KAAK,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,GAAG,QAAQ,QAAQ;YACzB,OAAO,EAAE,YAAY,QAAQ,CAAC,MAAM,oCAAoC,IAAI,CAAC,EAAE,oBAAoB;SACpG,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAe,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/file/serialize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAiC,MAAM,aAAa,CAAC;AACvF,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAKjB,MAAM,aAAa,CAAC;AAwBrB;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,CAyC5E;AAyED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAAE,EAClB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GACnF,aAAa,CAkHf"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/file/serialize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAiC,MAAM,aAAa,CAAC;AACvF,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAKjB,MAAM,aAAa,CAAC;AAwBrB;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,CAyC5E;AAyED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAAE,EAClB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,GACnF,aAAa,CAwHf"}
@@ -58,7 +58,7 @@ export function createDocument(options) {
58
58
  dslType: options.content?.dslType,
59
59
  text: options.content?.text,
60
60
  graphIR: options.content?.graphIR ?? {
61
- version: '2.0.0',
61
+ version: '3.0.0',
62
62
  id: 'untitled',
63
63
  nodes: [],
64
64
  edges: [],
@@ -147,6 +147,10 @@ function extractNodePositions(nodes) {
147
147
  * @returns CoralDocument
148
148
  */
149
149
  export function serialize(nodes, edges, options, waypointMap) {
150
+ if (options.graphIR && options.graphIR.version !== '3.0.0') {
151
+ throw new Error(`Coral serialization requires GraphIR 3.0.0; migrate GraphIR ${String(options.graphIR.version)} ` +
152
+ 'through the named migration APIs before saving.');
153
+ }
150
154
  const now = new Date().toISOString();
151
155
  const flatNodes = nodes.map(nodeToGraphNode);
152
156
  const nodeIds = new Set(flatNodes.map((node) => node.id));
@@ -170,7 +174,7 @@ export function serialize(nodes, edges, options, waypointMap) {
170
174
  };
171
175
  const graphIR = {
172
176
  ...options.graphIR,
173
- version: '2.0.0',
177
+ version: options.graphIR?.version ?? '3.0.0',
174
178
  id: options.graphIR?.id ?? options.name.toLowerCase().replace(/\s+/g, '-'),
175
179
  name: options.graphIR?.name ?? options.name,
176
180
  // A supplied canonical graph owns authored Exact positions. React Flow
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/file/serialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/file/serialize.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,18 +6,18 @@ export { LayoutControls, type LayoutControlsProps } from './editor/index.js';
6
6
  export { FileControls, type FileControlsProps } from './editor/index.js';
7
7
  export { TextEditor, SplitEditor, useBidirectionalSync, type TextEditorProps, type SplitEditorProps, type SyntaxLanguage, type EditorTheme, type EditorSourcePosition, type EditorSourceRange, type EditorDiagnostic, type EditorDecoration, type EditorAnalysisOwner, type SplitLayout, type PrimaryPane, type SyncState, type SyncActions, type SyncOptions, type ParseFunction, type PrintFunction, type SyncParseResult, type SyncParseError, type ParseResult, type ParseError, type ChangeSource, } from './text-editor/index.js';
8
8
  export { convertGraphToFlow, convertNode, convertEdge, flattenNodes, convertFlowToGraphNodes, convertFlowToGraphEdges, } from './editor/index.js';
9
- export { ServiceNode, DatabaseNode, ExternalApiNode, ActorNode, ModuleNode, GroupNode, nodeTypes, ShapeRenderer, SymbolNode, type ShapeRendererProps, type SymbolNodeData, DiagramFontFaces, type DiagramFontFacesProps, EditProvider, useEditContext, useIsEditing, type EditProviderProps, type OnLabelEditCallback, } from './components/index.js';
9
+ export { ServiceNode, DatabaseNode, ExternalApiNode, ActorNode, ModuleNode, GroupNode, nodeTypes, ShapeRenderer, SymbolNode, type ShapeRendererProps, type SymbolNodeData, SequenceDiagram, type SequenceDiagramProps, type SequenceSelection, type SequenceSelectionKind, DiagramFontFaces, type DiagramFontFacesProps, EditProvider, useEditContext, useIsEditing, type EditProviderProps, type OnLabelEditCallback, } from './components/index.js';
10
10
  export { layoutGraph, layoutFlowNodes, layoutFlowNodesWithEdges, extractEdgeSections, getElk, type LayoutFlowResult, type ElkEdgeRouting, } from './layout/index.js';
11
11
  export { useLayoutHistory, type PositionSnapshot, type UndoRedoResult, type UseLayoutHistoryOptions, type UseLayoutHistoryResult, } from './layout/index.js';
12
12
  export { useAxisConstrain, type UseAxisConstrainResult, } from './layout/index.js';
13
13
  export { diffGraphs, resolvePositions, incrementalLayout, } from './layout/index.js';
14
14
  export { useDiagramState, type ParsedGraph, type DiagramNode, type DiagramEdge, type UseDiagramStateOptions, type UseDiagramStateResult, } from './layout/index.js';
15
15
  export { shapeRegistry, getShape, getAllShapes, } from '@coral-viz/render';
16
- export { symbolRegistry, getSymbol, getSymbolsByTag, getSymbolsForNotation, getAllSymbols, getAllLibraries, flowchartSymbols, bpmnSymbols, erdSymbols, codeSymbols, architectureSymbols, aimlSymbols, dataEngineeringSymbols, sketchSymbols, } from '@coral-viz/render';
17
- export { notationRegistry, getNotation, getAllNotations, validateDiagram, flowchartNotation, bpmnNotation, erdNotation, codeNotation, architectureNotation, aimlNotation, dataEngineeringNotation, sketchNotation, } from '@coral-viz/render';
18
- export { CURRENT_SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, createDocument, serialize, deserialize, validateDocument, migrateDocument, needsMigration, getMigrationSteps, type CoralDocument, type DocumentMetadata, type DocumentContent, type DocumentSettings, type LayoutDirection, type LayoutSettings, type LayoutSpacing, type ViewState, type NodePosition, type DslType, type CreateDocumentOptions, type SerializeOptions, type DeserializeResult, type ValidationResult as FileValidationResult, type FontSettings, type DiagramFontSettings, type FontFamilyPreset, type FontSizePreset, DEFAULT_FONT_SETTINGS, DEFAULT_DIAGRAM_FONT_SETTINGS, FONT_FAMILY_PRESETS, FONT_SIZE_PRESETS, getFontFamilyPreset, getFontSizePreset, normalizeDiagramFontSettings, type EdgeRouting, type LayoutAlgorithm, type LayoutPresetId, type LayoutPreset, type UserPreferences, type LLMProviderPreference, type SpeechRecognitionMode, type SettingsPanelState, DEFAULT_USER_PREFERENCES, normalizeLlmMaxRetries, DEFAULT_LAYOUT_SETTINGS, LAYOUT_PRESETS, getLayoutPreset, resolveNotationLayout, type LayoutProfileOverrides, type LayoutProfileDiagnostic, type ResolvedLayoutProfile, } from './file/index.js';
16
+ export { symbolRegistry, getSymbol, getSymbolsByTag, getSymbolsForNotation, getAllSymbols, getAllLibraries, flowchartSymbols, bpmnSymbols, erdSymbols, codeSymbols, architectureSymbols, aimlSymbols, dataEngineeringSymbols, sketchSymbols, umlSymbols, } from '@coral-viz/render';
17
+ export { notationRegistry, getNotation, getAllNotations, validateDiagram, flowchartNotation, bpmnNotation, erdNotation, codeNotation, architectureNotation, aimlNotation, dataEngineeringNotation, sketchNotation, umlClassNotation, } from '@coral-viz/render';
18
+ export { CURRENT_SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, createDocument, serialize, deserialize, validateDocument, migrateDocument, migrateDocumentWithDiagnostics, type DocumentMigrationResult, type DocumentMigrationOptions, materializeReferencedPorts, stripResolvedPorts, type GraphPort, type PortResolver, type PortMaterializationResult, needsMigration, getMigrationSteps, type CoralDocument, type DocumentMetadata, type DocumentContent, type DocumentSettings, type LayoutDirection, type LayoutSettings, type LayoutSpacing, type ViewState, type NodePosition, type DslType, type CreateDocumentOptions, type SerializeOptions, type DeserializeResult, type ValidationResult as FileValidationResult, type FontSettings, type DiagramFontSettings, type FontFamilyPreset, type FontSizePreset, DEFAULT_FONT_SETTINGS, DEFAULT_DIAGRAM_FONT_SETTINGS, FONT_FAMILY_PRESETS, FONT_SIZE_PRESETS, getFontFamilyPreset, getFontSizePreset, normalizeDiagramFontSettings, type EdgeRouting, type LayoutAlgorithm, type LayoutPresetId, type LayoutPreset, type UserPreferences, type LLMProviderPreference, type SpeechRecognitionMode, type SettingsPanelState, DEFAULT_USER_PREFERENCES, normalizeLlmMaxRetries, DEFAULT_LAYOUT_SETTINGS, LAYOUT_PRESETS, getLayoutPreset, resolveNotationLayout, type LayoutProfileOverrides, type LayoutProfileDiagnostic, type ResolvedLayoutProfile, } from './file/index.js';
19
19
  export { useSettings, type UseSettingsOptions, type UseSettingsResult, LayoutSettingsForm, type LayoutSettingsFormProps, SettingsPanel, type SettingsPanelProps, type SettingsPanelTheme, FontSettingsForm, type FontSettingsFormProps, } from './settings/index.js';
20
- export { validateConnection, checkPortDirection, checkMaxConnections, getEdgeCompatibility, useEdgeCompatibility, IncompatibilityTooltip, CompatibilityEdge, getEdgeStyleForStatus, buildRoutedPath, type UseEdgeCompatibilityOptions, type UseEdgeCompatibilityResult, type IncompatibilityTooltipProps, type CompatibilityEdgeProps, type CompatibilityEdgeData, } from './compatibility/index.js';
20
+ export { validateConnection, checkPortDirection, checkMaxConnections, getEdgeCompatibility, useEdgeCompatibility, IncompatibilityTooltip, CompatibilityEdge, getEdgeStyleForStatus, buildRoutedPath, EndpointMarkerDefinitions, type EndpointMarkerDefinitionsProps, type UseEdgeCompatibilityOptions, type UseEdgeCompatibilityResult, type IncompatibilityTooltipProps, type CompatibilityEdgeProps, type CompatibilityEdgeData, } from './compatibility/index.js';
21
21
  export { NodePropertiesPanel, type NodePropertiesPanelProps, type PropertyChange, detectPropertyType, isEditableProperty, parsePropertyValue, extractPropertyFields, type PropertyType, type PropertyValue, type PropertyFieldMeta, } from './properties/index.js';
22
22
  export { createWaypoint, addWaypointToEdge, removeWaypointFromEdge, moveWaypoint, insertWaypointAtPosition, routeWithWaypoints, useWaypointManager, type EdgeWaypoint, type RoutedPath, type UseWaypointManagerOptions, type UseWaypointManagerResult, } from './waypoints/index.js';
23
23
  export type { GraphIR, GraphNode, GraphEdge, Position, Dimensions, EdgeStyle, LayoutOptions, CoralNode, CoralEdge, CoralNodeData, CoralEdgeData, FontAwareCoralNodeData, FontAwareCoralEdgeData, CoralNodeViewMetadata, CoralEdgeViewMetadata, DimensionSource, CoralNodeProps, EditorState, EditorCallbacks, EditorConfig, PortAnchor, ShapeParameter, ShapeDefinition, SymbolPort, SymbolVariant, SymbolDefinition, SymbolLibrary, NotationEdgeStyle, ConnectionConstraints, ConnectionRule, ValidationRule, FlowPoint, NotationValidation, NotationDefinition, ShapeRegistry, SymbolRegistry, NotationRegistry, ValidationResult, PositionSource, PositionedNode, GraphDiff, PositionResolution, DiffableNode, DiffableGraph, IncompatibilityReason, ConnectionValidation, ConnectionInfo, NodeConnectionInfo, EdgeCompatibilityStatus, EdgeCompatibility, HandleDragState, ConnectionValidationContext, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ export { convertGraphToFlow, convertNode, convertEdge, flattenNodes, convertFlow
12
12
  // Components
13
13
  export { ServiceNode, DatabaseNode, ExternalApiNode, ActorNode, ModuleNode, GroupNode, nodeTypes,
14
14
  // New symbol-aware components
15
- ShapeRenderer, SymbolNode, DiagramFontFaces,
15
+ ShapeRenderer, SymbolNode, SequenceDiagram, DiagramFontFaces,
16
16
  // Edit context for inline label editing
17
17
  EditProvider, useEditContext, useIsEditing, } from './components/index.js';
18
18
  // Layout
@@ -25,14 +25,14 @@ export { diffGraphs, resolvePositions, incrementalLayout, } from './layout/index
25
25
  export { useDiagramState, } from './layout/index.js';
26
26
  // Shapes, Symbols, Notations (Three-Layer Architecture)
27
27
  export { shapeRegistry, getShape, getAllShapes, } from '@coral-viz/render';
28
- export { symbolRegistry, getSymbol, getSymbolsByTag, getSymbolsForNotation, getAllSymbols, getAllLibraries, flowchartSymbols, bpmnSymbols, erdSymbols, codeSymbols, architectureSymbols, aimlSymbols, dataEngineeringSymbols, sketchSymbols, } from '@coral-viz/render';
29
- export { notationRegistry, getNotation, getAllNotations, validateDiagram, flowchartNotation, bpmnNotation, erdNotation, codeNotation, architectureNotation, aimlNotation, dataEngineeringNotation, sketchNotation, } from '@coral-viz/render';
28
+ export { symbolRegistry, getSymbol, getSymbolsByTag, getSymbolsForNotation, getAllSymbols, getAllLibraries, flowchartSymbols, bpmnSymbols, erdSymbols, codeSymbols, architectureSymbols, aimlSymbols, dataEngineeringSymbols, sketchSymbols, umlSymbols, } from '@coral-viz/render';
29
+ export { notationRegistry, getNotation, getAllNotations, validateDiagram, flowchartNotation, bpmnNotation, erdNotation, codeNotation, architectureNotation, aimlNotation, dataEngineeringNotation, sketchNotation, umlClassNotation, } from '@coral-viz/render';
30
30
  // File Format (CORAL-REQ-008)
31
- export { CURRENT_SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, createDocument, serialize, deserialize, validateDocument, migrateDocument, needsMigration, getMigrationSteps, DEFAULT_FONT_SETTINGS, DEFAULT_DIAGRAM_FONT_SETTINGS, FONT_FAMILY_PRESETS, FONT_SIZE_PRESETS, getFontFamilyPreset, getFontSizePreset, normalizeDiagramFontSettings, DEFAULT_USER_PREFERENCES, normalizeLlmMaxRetries, DEFAULT_LAYOUT_SETTINGS, LAYOUT_PRESETS, getLayoutPreset, resolveNotationLayout, } from './file/index.js';
31
+ export { CURRENT_SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, createDocument, serialize, deserialize, validateDocument, migrateDocument, migrateDocumentWithDiagnostics, materializeReferencedPorts, stripResolvedPorts, needsMigration, getMigrationSteps, DEFAULT_FONT_SETTINGS, DEFAULT_DIAGRAM_FONT_SETTINGS, FONT_FAMILY_PRESETS, FONT_SIZE_PRESETS, getFontFamilyPreset, getFontSizePreset, normalizeDiagramFontSettings, DEFAULT_USER_PREFERENCES, normalizeLlmMaxRetries, DEFAULT_LAYOUT_SETTINGS, LAYOUT_PRESETS, getLayoutPreset, resolveNotationLayout, } from './file/index.js';
32
32
  // Settings (CORAL-REQ-009)
33
33
  export { useSettings, LayoutSettingsForm, SettingsPanel, FontSettingsForm, } from './settings/index.js';
34
34
  // Compatibility (CORAL-REQ-010)
35
- export { validateConnection, checkPortDirection, checkMaxConnections, getEdgeCompatibility, useEdgeCompatibility, IncompatibilityTooltip, CompatibilityEdge, getEdgeStyleForStatus, buildRoutedPath, } from './compatibility/index.js';
35
+ export { validateConnection, checkPortDirection, checkMaxConnections, getEdgeCompatibility, useEdgeCompatibility, IncompatibilityTooltip, CompatibilityEdge, getEdgeStyleForStatus, buildRoutedPath, EndpointMarkerDefinitions, } from './compatibility/index.js';
36
36
  // Properties Panel
37
37
  export { NodePropertiesPanel,
38
38
  // Utilities
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ import { type PropertyValue } from './propertyUtils.js';
13
13
  */
14
14
  export interface PropertyChange {
15
15
  nodeId: string;
16
- field: 'label' | 'description' | 'property';
16
+ field: 'label' | 'description' | 'property' | 'classifier';
17
17
  propertyKey?: string;
18
18
  oldValue: unknown;
19
19
  newValue: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"NodePropertiesPanel.d.ts","sourceRoot":"","sources":["../../src/properties/NodePropertiesPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAM5B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,sDAAsD;IACtD,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAE/B,yCAAyC;IACzC,gBAAgB,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAEnD,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAE5E,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzD,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA4ID,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,QAAgB,EAChB,KAAW,EACX,UAAiB,EACjB,YAAmB,EACnB,kBAAyB,EACzB,qBAA4B,GAC7B,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CA6W/C"}
1
+ {"version":3,"file":"NodePropertiesPanel.d.ts","sourceRoot":"","sources":["../../src/properties/NodePropertiesPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AAQjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAM5B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,UAAU,GAAG,YAAY,CAAC;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,sDAAsD;IACtD,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAE/B,yCAAyC;IACzC,gBAAgB,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAEnD,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAE5E,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzD,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA+LD,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,QAAgB,EAChB,KAAW,EACX,UAAiB,EACjB,YAAmB,EACnB,kBAAyB,EACzB,qBAA4B,GAC7B,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAgiB/C"}
@@ -7,6 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  * and custom properties with type-appropriate input controls.
8
8
  */
9
9
  import { useState, useCallback, useEffect, useMemo, useRef } from 'react';
10
+ import { formatUmlMember, parseCoralUmlMember, } from '@coral-viz/language';
10
11
  import { extractPropertyFields, } from './propertyUtils.js';
11
12
  // ============================================================================
12
13
  // Styles
@@ -95,6 +96,40 @@ function PropertyInput({ meta, onChange, disabled }) {
95
96
  // String (default): text input
96
97
  return (_jsx("input", { type: "text", "aria-label": `Property ${meta.key}`, value: draft, onChange: (e) => setDraft(e.target.value), onBlur: commitDraft, onKeyDown: handleDraftKey, disabled: disabled, style: inputStyles }));
97
98
  }
99
+ function ClassifierMemberInput({ member, compartment, ordinal, disabled, onCommit, }) {
100
+ const canonical = useMemo(() => formatUmlMember(member, `${member.kind}-${ordinal}`), [member, ordinal]);
101
+ const [draft, setDraft] = useState(canonical);
102
+ const [error, setError] = useState();
103
+ const skipBlur = useRef(false);
104
+ useEffect(() => { setDraft(canonical); setError(undefined); }, [canonical]);
105
+ const commit = () => {
106
+ if (skipBlur.current) {
107
+ skipBlur.current = false;
108
+ return;
109
+ }
110
+ const parsed = parseCoralUmlMember(draft.trim(), compartment, ordinal);
111
+ if (!parsed.value) {
112
+ setError(parsed.error ?? 'Invalid UML member');
113
+ return;
114
+ }
115
+ const conflict = onCommit(parsed.value);
116
+ if (conflict) {
117
+ setError(conflict);
118
+ return;
119
+ }
120
+ setError(undefined);
121
+ };
122
+ return (_jsxs("div", { style: { flex: 1 }, children: [_jsx("input", { type: "text", "aria-label": `${compartment} ${ordinal} member`, value: draft, onChange: (event) => { setDraft(event.target.value); setError(undefined); }, onBlur: commit, onKeyDown: (event) => {
123
+ if (event.key === 'Enter')
124
+ event.currentTarget.blur();
125
+ if (event.key === 'Escape') {
126
+ skipBlur.current = true;
127
+ setDraft(canonical);
128
+ setError(undefined);
129
+ event.currentTarget.blur();
130
+ }
131
+ }, "aria-invalid": error ? true : undefined, disabled: disabled, style: inputStyles }), error && _jsx("div", { role: "alert", style: { color: '#b91c1c', fontSize: '11px' }, children: error })] }));
132
+ }
98
133
  // ============================================================================
99
134
  // NodePropertiesPanel Component
100
135
  // ============================================================================
@@ -103,28 +138,126 @@ export function NodePropertiesPanel({ selectedNode, onPropertyChange, onAddPrope
103
138
  const [newPropertyValue, setNewPropertyValue] = useState('');
104
139
  const [newPropertyType, setNewPropertyType] = useState('string');
105
140
  const [labelDraft, setLabelDraft] = useState(selectedNode?.data.label ?? '');
141
+ const [labelError, setLabelError] = useState();
106
142
  const [descriptionDraft, setDescriptionDraft] = useState(selectedNode?.data.description ?? '');
107
143
  const cancelledBlur = useRef(null);
108
144
  useEffect(() => {
109
145
  setLabelDraft(selectedNode?.data.label ?? '');
146
+ setLabelError(undefined);
110
147
  setDescriptionDraft(selectedNode?.data.description ?? '');
111
148
  }, [selectedNode?.id, selectedNode?.data.label, selectedNode?.data.description]);
112
149
  // Extract custom properties
113
150
  const customProperties = useMemo(() => extractPropertyFields(selectedNode?.data?.properties), [selectedNode?.data?.properties]);
151
+ const classifier = selectedNode?.data.canonical?.classifier;
152
+ const updateClassifier = useCallback((next) => {
153
+ if (!selectedNode || !classifier)
154
+ return;
155
+ onPropertyChange({
156
+ nodeId: selectedNode.id,
157
+ field: 'classifier',
158
+ oldValue: classifier,
159
+ newValue: next,
160
+ });
161
+ }, [classifier, onPropertyChange, selectedNode]);
162
+ const changeClassifierKind = useCallback((kind) => {
163
+ if (!classifier || kind === classifier.kind)
164
+ return;
165
+ const incompatible = classifier.compartments.some((part) => kind === 'enum'
166
+ ? part.kind === 'attributes'
167
+ : part.kind === 'literals')
168
+ || kind === 'interface' && Boolean(classifier.modifiers?.includes('static'))
169
+ || kind === 'enum' && Boolean(classifier.modifiers?.length);
170
+ if (incompatible)
171
+ return;
172
+ const members = classifier.compartments.filter((part) => part.kind !== 'name');
173
+ updateClassifier({
174
+ ...classifier,
175
+ kind,
176
+ compartments: [
177
+ { id: 'name', kind: 'name' },
178
+ ...members,
179
+ ...(kind === 'enum' && !members.some((part) => part.kind === 'literals')
180
+ ? [{ id: 'literals', kind: 'literals', items: [] }]
181
+ : !members.length ? [{ id: 'attributes', kind: 'attributes', items: [] }] : []),
182
+ ],
183
+ });
184
+ }, [classifier, updateClassifier]);
185
+ const changeClassifierModifier = useCallback((modifier, checked) => {
186
+ if (!classifier)
187
+ return;
188
+ const modifiers = (classifier.modifiers ?? []).filter((value) => value !== modifier);
189
+ if (checked)
190
+ modifiers.push(modifier);
191
+ modifiers.sort((left, right) => ['abstract', 'static'].indexOf(left) - ['abstract', 'static'].indexOf(right));
192
+ updateClassifier({ ...classifier, ...(modifiers.length ? { modifiers } : { modifiers: undefined }) });
193
+ }, [classifier, updateClassifier]);
194
+ const replaceCompartment = useCallback((next) => {
195
+ if (!classifier)
196
+ return;
197
+ updateClassifier({
198
+ ...classifier,
199
+ compartments: classifier.compartments.map((part) => part.id === next.id ? next : part),
200
+ });
201
+ }, [classifier, updateClassifier]);
202
+ const replaceClassifierMember = useCallback((part, index, member) => {
203
+ if (!classifier)
204
+ return 'No classifier is selected';
205
+ const collision = classifier.compartments.some((candidate) => candidate.id === member.id
206
+ || ('items' in candidate && candidate.items.some((item, candidateIndex) => item.id === member.id && !(candidate.id === part.id && candidateIndex === index))));
207
+ if (!member.id || collision)
208
+ return member.id
209
+ ? `Classifier identity "${member.id}" is already used`
210
+ : 'Classifier member id must not be empty';
211
+ replaceCompartment({
212
+ ...part,
213
+ items: part.items.map((candidate, itemIndex) => itemIndex === index ? member : candidate),
214
+ });
215
+ return undefined;
216
+ }, [classifier, replaceCompartment]);
217
+ const addClassifierMember = useCallback((kind) => {
218
+ if (!classifier)
219
+ return;
220
+ const existing = classifier.compartments.find((part) => part.kind === kind);
221
+ const prefix = kind === 'attributes' ? 'attribute' : kind === 'operations' ? 'operation' : 'literal';
222
+ const used = new Set(classifier.compartments.flatMap((part) => [
223
+ part.id, ...('items' in part ? part.items.map((item) => item.id) : []),
224
+ ]));
225
+ let ordinal = 1;
226
+ while (used.has(`${prefix}-${ordinal}`))
227
+ ordinal++;
228
+ const item = kind === 'attributes'
229
+ ? { id: `attribute-${ordinal}`, kind: 'attribute', name: `attribute${ordinal}` }
230
+ : kind === 'operations'
231
+ ? { id: `operation-${ordinal}`, kind: 'operation', name: `operation${ordinal}`, parameters: [] }
232
+ : { id: `literal-${ordinal}`, kind: 'literal', name: `VALUE_${ordinal}` };
233
+ if (existing && 'items' in existing) {
234
+ replaceCompartment({ ...existing, items: [...existing.items, item] });
235
+ return;
236
+ }
237
+ updateClassifier({
238
+ ...classifier,
239
+ compartments: [...classifier.compartments, { id: kind, kind, items: [item] }],
240
+ });
241
+ }, [classifier, replaceCompartment, updateClassifier]);
114
242
  // Handle label change
115
243
  const handleLabelChange = useCallback((e) => {
116
244
  setLabelDraft(e.target.value);
245
+ setLabelError(undefined);
117
246
  }, []);
118
247
  const commitLabel = useCallback(() => {
119
248
  if (!selectedNode || cancelledBlur.current === 'label') {
120
249
  cancelledBlur.current = null;
121
250
  return;
122
251
  }
252
+ if (classifier && !labelDraft.trim()) {
253
+ setLabelError('UML classifier names must not be empty');
254
+ return;
255
+ }
123
256
  if (labelDraft !== selectedNode.data.label)
124
257
  onPropertyChange({
125
258
  nodeId: selectedNode.id, field: 'label', oldValue: selectedNode.data.label, newValue: labelDraft,
126
259
  });
127
- }, [labelDraft, onPropertyChange, selectedNode]);
260
+ }, [classifier, labelDraft, onPropertyChange, selectedNode]);
128
261
  // Handle description change
129
262
  const handleDescriptionChange = useCallback((e) => {
130
263
  setDescriptionDraft(e.target.value);
@@ -209,7 +342,7 @@ export function NodePropertiesPanel({ selectedNode, onPropertyChange, onAddPrope
209
342
  onEditSessionCancel?.('label');
210
343
  event.currentTarget.blur();
211
344
  }
212
- }, disabled: disabled, style: inputStyles })] }), _jsxs("div", { style: formGroupStyles, children: [_jsx("label", { style: labelStyles, children: "Description" }), _jsx("textarea", { "aria-label": "Node description", value: descriptionDraft, onChange: handleDescriptionChange, onFocus: () => onEditSessionStart?.('description'), onBlur: () => { commitDescription(); onEditSessionEnd?.('description'); }, onKeyDown: (event) => {
345
+ }, disabled: disabled, "aria-invalid": labelError ? true : undefined, style: inputStyles }), labelError && _jsx("div", { role: "alert", style: { color: '#b91c1c', fontSize: '11px' }, children: labelError })] }), _jsxs("div", { style: formGroupStyles, children: [_jsx("label", { style: labelStyles, children: "Description" }), _jsx("textarea", { "aria-label": "Node description", value: descriptionDraft, onChange: handleDescriptionChange, onFocus: () => onEditSessionStart?.('description'), onBlur: () => { commitDescription(); onEditSessionEnd?.('description'); }, onKeyDown: (event) => {
213
346
  if (event.key === 'Escape') {
214
347
  cancelledBlur.current = 'description';
215
348
  setDescriptionDraft(selectedNode.data.description ?? '');
@@ -220,7 +353,25 @@ export function NodePropertiesPanel({ selectedNode, onPropertyChange, onAddPrope
220
353
  ...inputStyles,
221
354
  resize: 'vertical',
222
355
  minHeight: '60px',
223
- } })] }), _jsx("div", { style: sectionHeaderStyles, children: "Custom Properties" }), customProperties.length === 0 ? (_jsx("div", { style: {
356
+ } })] }), classifier && (_jsxs("div", { "data-coral-classifier-editor": true, children: [_jsx("div", { style: sectionHeaderStyles, children: "UML Classifier" }), _jsxs("div", { style: formGroupStyles, children: [_jsx("label", { style: labelStyles, children: "Kind" }), _jsx("select", { "aria-label": "Classifier kind", value: classifier.kind, onChange: (event) => changeClassifierKind(event.target.value), disabled: disabled, style: inputStyles, children: ['class', 'interface', 'enum'].map((kind) => {
357
+ const incompatible = classifier.compartments.some((part) => kind === 'enum'
358
+ ? part.kind === 'attributes'
359
+ : part.kind === 'literals')
360
+ || kind === 'interface' && Boolean(classifier.modifiers?.includes('static'))
361
+ || kind === 'enum' && Boolean(classifier.modifiers?.length);
362
+ return _jsx("option", { value: kind, disabled: incompatible, children: kind }, kind);
363
+ }) }), _jsx("div", { style: { color: '#666', fontSize: '11px' }, children: "Kind choices that would discard compartments or modifiers are disabled." })] }), _jsx("div", { style: { ...formGroupStyles, display: 'flex', gap: '12px' }, children: ['abstract', 'static'].map((modifier) => (_jsxs("label", { style: { ...labelStyles, display: 'flex', gap: '4px' }, children: [_jsx("input", { type: "checkbox", "aria-label": `Classifier ${modifier}`, checked: classifier.modifiers?.includes(modifier) ?? false, onChange: (event) => changeClassifierModifier(modifier, event.target.checked), disabled: disabled || classifier.kind === 'enum'
364
+ || (modifier === 'static' && classifier.kind === 'interface') }), modifier] }, modifier))) }), classifier.compartments.filter((part) => part.kind !== 'name').map((part) => (_jsxs("div", { style: formGroupStyles, children: [_jsx("label", { style: labelStyles, children: part.kind }), part.items.map((item, index) => (_jsxs("div", { style: { display: 'flex', gap: '4px', marginBottom: '4px' }, children: [_jsx(ClassifierMemberInput, { member: item, compartment: part.kind, ordinal: index + 1, disabled: disabled, onCommit: (member) => replaceClassifierMember(part, index, member) }), _jsx("button", { type: "button", "aria-label": `Move ${item.name} up`, disabled: disabled || index === 0, onClick: () => {
365
+ const items = [...part.items];
366
+ [items[index - 1], items[index]] = [items[index], items[index - 1]];
367
+ replaceCompartment({ ...part, items });
368
+ }, children: "\u2191" }), _jsx("button", { type: "button", "aria-label": `Move ${item.name} down`, disabled: disabled || index === part.items.length - 1, onClick: () => {
369
+ const items = [...part.items];
370
+ [items[index], items[index + 1]] = [items[index + 1], items[index]];
371
+ replaceCompartment({ ...part, items });
372
+ }, children: "\u2193" }), _jsx("button", { type: "button", "aria-label": `Remove ${item.name}`, disabled: disabled, onClick: () => replaceCompartment({
373
+ ...part, items: part.items.filter((_, itemIndex) => itemIndex !== index),
374
+ }), children: "\u00D7" })] }, item.id))), _jsxs("button", { type: "button", disabled: disabled, onClick: () => addClassifierMember(part.kind), children: ["Add ", part.kind === 'literals' ? 'literal' : part.kind === 'operations' ? 'operation' : 'attribute'] })] }, part.id))), !classifier.compartments.some((part) => part.kind === 'operations') && (_jsx("button", { type: "button", disabled: disabled, onClick: () => addClassifierMember('operations'), children: "Add operation" })), classifier.kind !== 'enum' && !classifier.compartments.some((part) => part.kind === 'attributes') && (_jsx("button", { type: "button", disabled: disabled, onClick: () => addClassifierMember('attributes'), children: "Add attribute" }))] })), _jsx("div", { style: sectionHeaderStyles, children: "Custom Properties" }), customProperties.length === 0 ? (_jsx("div", { style: {
224
375
  fontSize: '12px',
225
376
  color: '#999',
226
377
  fontStyle: 'italic',