system-canvas-react 0.2.12 → 0.2.14

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.
@@ -14,11 +14,16 @@ interface EdgeRendererProps {
14
14
  editingId?: string | null;
15
15
  /** Node ids that are dimmed (search/category filter). Edges connected to dimmed nodes render as dotted lines. */
16
16
  dimmedNodeIds?: Set<string>;
17
+ /** Parallel group info per edge id for auto-offsetting overlapping edges. */
18
+ parallelGroups?: Map<string, {
19
+ index: number;
20
+ total: number;
21
+ }>;
17
22
  }
18
23
  /**
19
24
  * Renders all edges. Edges are drawn before nodes in the SVG so they
20
25
  * appear behind node rectangles (painter's model).
21
26
  */
22
- export declare function EdgeRenderer({ edges, nodeMap, theme, defaultEdgeStyle, onClick, onDoubleClick, onContextMenu, selectedId, editingId, dimmedNodeIds, }: EdgeRendererProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function EdgeRenderer({ edges, nodeMap, theme, defaultEdgeStyle, onClick, onDoubleClick, onContextMenu, selectedId, editingId, dimmedNodeIds, parallelGroups, }: EdgeRendererProps): import("react/jsx-runtime").JSX.Element;
23
28
  export {};
24
29
  //# sourceMappingURL=EdgeRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeRenderer.d.ts","sourceRoot":"","sources":["../../src/components/EdgeRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACV,MAAM,eAAe,CAAA;AAQtB,UAAU,iBAAiB;IACzB,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAClC,KAAK,EAAE,WAAW,CAAA;IAClB,gBAAgB,EAAE,SAAS,CAAA;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAC5D,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IACnE,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAClE,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,iHAAiH;IACjH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC5B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,GACd,EAAE,iBAAiB,2CAgJnB"}
1
+ {"version":3,"file":"EdgeRenderer.d.ts","sourceRoot":"","sources":["../../src/components/EdgeRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACV,MAAM,eAAe,CAAA;AAQtB,UAAU,iBAAiB;IACzB,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAClC,KAAK,EAAE,WAAW,CAAA;IAClB,gBAAgB,EAAE,SAAS,CAAA;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAC5D,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IACnE,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAClE,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,iHAAiH;IACjH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,GACf,EAAE,iBAAiB,2CAmJnB"}
@@ -4,7 +4,7 @@ import { computeEdgePath, computeEdgeMidpoint, resolveColor, measureTextWidth, }
4
4
  * Renders all edges. Edges are drawn before nodes in the SVG so they
5
5
  * appear behind node rectangles (painter's model).
6
6
  */
7
- export function EdgeRenderer({ edges, nodeMap, theme, defaultEdgeStyle, onClick, onDoubleClick, onContextMenu, selectedId, editingId, dimmedNodeIds, }) {
7
+ export function EdgeRenderer({ edges, nodeMap, theme, defaultEdgeStyle, onClick, onDoubleClick, onContextMenu, selectedId, editingId, dimmedNodeIds, parallelGroups, }) {
8
8
  return (_jsxs(_Fragment, { children: [_jsx("defs", { children: _jsx("marker", { id: "system-canvas-arrowhead", markerWidth: theme.edge.arrowSize, markerHeight: theme.edge.arrowSize * 0.7, refX: theme.edge.arrowSize - 1, refY: theme.edge.arrowSize * 0.35, orient: "auto", markerUnits: "userSpaceOnUse", children: _jsx("polygon", { points: `0 0, ${theme.edge.arrowSize} ${theme.edge.arrowSize * 0.35}, 0 ${theme.edge.arrowSize * 0.7}`, fill: "context-stroke" }) }) }), [...edges]
9
9
  .map((edge, i) => ({ edge, i }))
10
10
  .sort((a, b) => {
@@ -23,7 +23,10 @@ export function EdgeRenderer({ edges, nodeMap, theme, defaultEdgeStyle, onClick,
23
23
  const toNode = nodeMap.get(edge.toNode);
24
24
  if (!fromNode || !toNode)
25
25
  return null;
26
- const pathD = computeEdgePath(edge, fromNode, toNode, defaultEdgeStyle);
26
+ const parallelInfo = parallelGroups?.get(edge.id);
27
+ const parallelIndex = parallelInfo?.index ?? 0;
28
+ const parallelTotal = parallelInfo?.total ?? 1;
29
+ const pathD = computeEdgePath(edge, fromNode, toNode, defaultEdgeStyle, parallelIndex, parallelTotal);
27
30
  const midpoint = computeEdgeMidpoint(edge, fromNode, toNode);
28
31
  const isSelected = selectedId === edge.id;
29
32
  const isEditing = editingId === edge.id;
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeRenderer.js","sourceRoot":"","sources":["../../src/components/EdgeRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EdgeRenderer.js","sourceRoot":"","sources":["../../src/components/EdgeRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/components/Viewport.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/components/Viewport.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState, forwardRef, } from 'react';
3
- import { computeEdgeMidpoint, screenToCanvas } from 'system-canvas';
3
+ import { computeEdgeMidpoint, screenToCanvas, buildParallelEdgeGroups } from 'system-canvas';
4
4
  import { useViewport } from '../hooks/useViewport.js';
5
5
  import { NodeRenderer } from './NodeRenderer.js';
6
6
  import { EdgeRenderer } from './EdgeRenderer.js';
@@ -115,6 +115,7 @@ export const Viewport = forwardRef(function Viewport({ nodes, edges, nodeMap, th
115
115
  return d ? { ...n, x: d.x, y: d.y } : n;
116
116
  });
117
117
  }, [nodes, dragOverrides, resizeOverrides]);
118
+ const parallelGroups = useMemo(() => buildParallelEdgeGroups(edges), [edges]);
118
119
  const renderNodeMap = useMemo(() => {
119
120
  const hasDrag = dragOverrides && dragOverrides.size > 0;
120
121
  const hasResize = resizeOverrides && resizeOverrides.size > 0;
@@ -322,7 +323,7 @@ export const Viewport = forwardRef(function Viewport({ nodes, edges, nodeMap, th
322
323
  WebkitUserSelect: 'none',
323
324
  MozUserSelect: 'none',
324
325
  msUserSelect: 'none',
325
- }, onClick: onCanvasClick, onContextMenu: onCanvasContextMenu, onPointerMove: handleSvgPointerMove, onPointerLeave: handleSvgPointerLeave, children: [_jsx("defs", { children: _jsx("pattern", { id: "system-canvas-grid", width: theme.grid.size, height: theme.grid.size, patternUnits: "userSpaceOnUse", children: _jsx("path", { d: `M ${theme.grid.size} 0 L 0 0 0 ${theme.grid.size}`, fill: "none", stroke: theme.grid.color, strokeWidth: theme.grid.strokeWidth }) }) }), _jsx("rect", { x: "-50000", y: "-50000", width: "100000", height: "100000", fill: "url(#system-canvas-grid)" }), _jsxs("g", { ref: groupRef, children: [_jsx(LanesBackground, { columns: columns, rows: rows, theme: theme }), _jsx(NodeRenderer, { nodes: renderNodes, theme: theme, onClick: onNodeClick, onDoubleClick: onNodeDoubleClick, onContextMenu: onNodeContextMenu, onNavigate: onNodeNavigate, onPointerDown: onNodePointerDown, selectedIds: selectedIds, editingId: editingId, canvases: canvases, only: "groups", dimmedNodeIds: dimmedNodeIds, highlightedNodeIds: highlightedNodeIds }), _jsx(EdgeRenderer, { edges: edges, nodeMap: renderNodeMap, theme: theme, defaultEdgeStyle: edgeStyle, onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, selectedId: selectedEdgeId, editingId: editingEdgeId, dimmedNodeIds: dimmedNodeIds }), _jsx(NodeRenderer, { nodes: renderNodes, theme: theme, onClick: onNodeClick, onDoubleClick: onNodeDoubleClick, onContextMenu: onNodeContextMenu, onNavigate: onNodeNavigate, onPointerDown: onNodePointerDown, selectedIds: selectedIds, editingId: editingId, onResizeHandlePointerDown: onResizeHandlePointerDown, canvases: canvases, only: "non-groups", dimmedNodeIds: dimmedNodeIds, highlightedNodeIds: highlightedNodeIds }), _jsx(RevealsLayer, { nodes: renderNodes, theme: theme, canvases: canvases, getViewport: getViewport }), pendingTargetNode && (_jsx("rect", { className: "system-canvas-drop-target", x: pendingTargetNode.x - 4, y: pendingTargetNode.y - 4, width: pendingTargetNode.width + 8, height: pendingTargetNode.height + 8, rx: pendingTargetNode.resolvedCornerRadius + 4, fill: "none", stroke: theme.node.labelColor, strokeWidth: 2, opacity: 0.85, pointerEvents: "none" })), dropTargetNode && (_jsx("rect", { className: "system-canvas-drop-target system-canvas-node-drop-target", x: dropTargetNode.x - 4, y: dropTargetNode.y - 4, width: dropTargetNode.width + 8, height: dropTargetNode.height + 8, rx: dropTargetNode.resolvedCornerRadius + 4, fill: "none", stroke: theme.node.labelColor, strokeWidth: 2, strokeDasharray: "6 4", opacity: 0.9, pointerEvents: "none" })), selectedIds && selectedIds.size > 0 &&
326
+ }, onClick: onCanvasClick, onContextMenu: onCanvasContextMenu, onPointerMove: handleSvgPointerMove, onPointerLeave: handleSvgPointerLeave, children: [_jsx("defs", { children: _jsx("pattern", { id: "system-canvas-grid", width: theme.grid.size, height: theme.grid.size, patternUnits: "userSpaceOnUse", children: _jsx("path", { d: `M ${theme.grid.size} 0 L 0 0 0 ${theme.grid.size}`, fill: "none", stroke: theme.grid.color, strokeWidth: theme.grid.strokeWidth }) }) }), _jsx("rect", { x: "-50000", y: "-50000", width: "100000", height: "100000", fill: "url(#system-canvas-grid)" }), _jsxs("g", { ref: groupRef, children: [_jsx(LanesBackground, { columns: columns, rows: rows, theme: theme }), _jsx(NodeRenderer, { nodes: renderNodes, theme: theme, onClick: onNodeClick, onDoubleClick: onNodeDoubleClick, onContextMenu: onNodeContextMenu, onNavigate: onNodeNavigate, onPointerDown: onNodePointerDown, selectedIds: selectedIds, editingId: editingId, canvases: canvases, only: "groups", dimmedNodeIds: dimmedNodeIds, highlightedNodeIds: highlightedNodeIds }), _jsx(EdgeRenderer, { edges: edges, nodeMap: renderNodeMap, theme: theme, defaultEdgeStyle: edgeStyle, onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, selectedId: selectedEdgeId, editingId: editingEdgeId, dimmedNodeIds: dimmedNodeIds, parallelGroups: parallelGroups }), _jsx(NodeRenderer, { nodes: renderNodes, theme: theme, onClick: onNodeClick, onDoubleClick: onNodeDoubleClick, onContextMenu: onNodeContextMenu, onNavigate: onNodeNavigate, onPointerDown: onNodePointerDown, selectedIds: selectedIds, editingId: editingId, onResizeHandlePointerDown: onResizeHandlePointerDown, canvases: canvases, only: "non-groups", dimmedNodeIds: dimmedNodeIds, highlightedNodeIds: highlightedNodeIds }), _jsx(RevealsLayer, { nodes: renderNodes, theme: theme, canvases: canvases, getViewport: getViewport }), pendingTargetNode && (_jsx("rect", { className: "system-canvas-drop-target", x: pendingTargetNode.x - 4, y: pendingTargetNode.y - 4, width: pendingTargetNode.width + 8, height: pendingTargetNode.height + 8, rx: pendingTargetNode.resolvedCornerRadius + 4, fill: "none", stroke: theme.node.labelColor, strokeWidth: 2, opacity: 0.85, pointerEvents: "none" })), dropTargetNode && (_jsx("rect", { className: "system-canvas-drop-target system-canvas-node-drop-target", x: dropTargetNode.x - 4, y: dropTargetNode.y - 4, width: dropTargetNode.width + 8, height: dropTargetNode.height + 8, rx: dropTargetNode.resolvedCornerRadius + 4, fill: "none", stroke: theme.node.labelColor, strokeWidth: 2, strokeDasharray: "6 4", opacity: 0.9, pointerEvents: "none" })), selectedIds && selectedIds.size > 0 &&
326
327
  Array.from(selectedIds).map((id) => {
327
328
  const node = renderNodeMap.get(id);
328
329
  if (!node)
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.js","sourceRoot":"","sources":["../../src/components/Viewport.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Viewport.js","sourceRoot":"","sources":["../../src/components/Viewport.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parallelEdges.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallelEdges.test.d.ts","sourceRoot":"","sources":["../../../src/hooks/__tests__/parallelEdges.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,86 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildParallelEdgeGroups, computeEdgePath } from 'system-canvas';
3
+ // ---------------------------------------------------------------------------
4
+ // Helpers
5
+ // ---------------------------------------------------------------------------
6
+ function edge(id, fromNode, toNode) {
7
+ return { id, fromNode, toNode, fromEnd: 'none', toEnd: 'arrow' };
8
+ }
9
+ function node(id) {
10
+ return {
11
+ id,
12
+ type: 'text',
13
+ x: id === 'A' ? 0 : 300,
14
+ y: 0,
15
+ width: 100,
16
+ height: 60,
17
+ text: id,
18
+ resolvedFill: '#fff',
19
+ resolvedStroke: '#000',
20
+ resolvedCornerRadius: 0,
21
+ isNavigable: false,
22
+ resolvedIcon: null,
23
+ };
24
+ }
25
+ // ---------------------------------------------------------------------------
26
+ // buildParallelEdgeGroups
27
+ // ---------------------------------------------------------------------------
28
+ describe('buildParallelEdgeGroups', () => {
29
+ it('treats A->B and B->A as the same group with total: 2', () => {
30
+ const edges = [edge('e1', 'A', 'B'), edge('e2', 'B', 'A')];
31
+ const groups = buildParallelEdgeGroups(edges);
32
+ expect(groups.get('e1')?.total).toBe(2);
33
+ expect(groups.get('e2')?.total).toBe(2);
34
+ });
35
+ it('assigns different indices to edges in the same group', () => {
36
+ const edges = [edge('e1', 'A', 'B'), edge('e2', 'B', 'A')];
37
+ const groups = buildParallelEdgeGroups(edges);
38
+ const indices = new Set([groups.get('e1')?.index, groups.get('e2')?.index]);
39
+ expect(indices).toEqual(new Set([0, 1]));
40
+ });
41
+ it('single edge gets total: 1 and index: 0', () => {
42
+ const edges = [edge('e1', 'A', 'B')];
43
+ const groups = buildParallelEdgeGroups(edges);
44
+ expect(groups.get('e1')).toEqual({ index: 0, total: 1 });
45
+ });
46
+ it('three parallel edges fan out with indices 0, 1, 2', () => {
47
+ const edges = [edge('e1', 'A', 'B'), edge('e2', 'A', 'B'), edge('e3', 'B', 'A')];
48
+ const groups = buildParallelEdgeGroups(edges);
49
+ expect(groups.get('e1')?.total).toBe(3);
50
+ expect(groups.get('e2')?.total).toBe(3);
51
+ expect(groups.get('e3')?.total).toBe(3);
52
+ const indices = [groups.get('e1')?.index, groups.get('e2')?.index, groups.get('e3')?.index];
53
+ expect(indices.sort()).toEqual([0, 1, 2]);
54
+ });
55
+ it('unrelated edges are in separate groups', () => {
56
+ const edges = [edge('e1', 'A', 'B'), edge('e2', 'C', 'D')];
57
+ const groups = buildParallelEdgeGroups(edges);
58
+ expect(groups.get('e1')).toEqual({ index: 0, total: 1 });
59
+ expect(groups.get('e2')).toEqual({ index: 0, total: 1 });
60
+ });
61
+ });
62
+ // ---------------------------------------------------------------------------
63
+ // computeEdgePath — parallel offset
64
+ // ---------------------------------------------------------------------------
65
+ describe('computeEdgePath parallel offset', () => {
66
+ const nodeA = node('A');
67
+ const nodeB = node('B');
68
+ const e = edge('e1', 'A', 'B');
69
+ it('produces different paths for parallelIndex=0 vs parallelIndex=1', () => {
70
+ const path0 = computeEdgePath(e, nodeA, nodeB, 'bezier', 0, 2);
71
+ const path1 = computeEdgePath(e, nodeA, nodeB, 'bezier', 1, 2);
72
+ expect(path0).not.toBe(path1);
73
+ });
74
+ it('produces same path when parallelTotal=1 regardless of index', () => {
75
+ const pathA = computeEdgePath(e, nodeA, nodeB, 'bezier', 0, 1);
76
+ const pathB = computeEdgePath(e, nodeA, nodeB, 'bezier', 0, 1);
77
+ expect(pathA).toBe(pathB);
78
+ });
79
+ it('center index in a 3-edge group matches single-edge path', () => {
80
+ // Index 1 of 3 has zero lateral shift (symmetric center)
81
+ const single = computeEdgePath(e, nodeA, nodeB, 'bezier', 0, 1);
82
+ const center = computeEdgePath(e, nodeA, nodeB, 'bezier', 1, 3);
83
+ expect(center).toBe(single);
84
+ });
85
+ });
86
+ //# sourceMappingURL=parallelEdges.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallelEdges.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/parallelEdges.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=selfLoop.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selfLoop.test.d.ts","sourceRoot":"","sources":["../../../src/hooks/__tests__/selfLoop.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { computeSelfLoopPath, computeEdgePath, computeEdgeMidpoint } from 'system-canvas';
3
+ function makeNode(overrides = {}) {
4
+ return {
5
+ id: 'n1',
6
+ type: 'text',
7
+ x: 100,
8
+ y: 100,
9
+ width: 200,
10
+ height: 100,
11
+ text: 'Node',
12
+ resolvedFill: '#fff',
13
+ resolvedStroke: '#000',
14
+ ...overrides,
15
+ };
16
+ }
17
+ function makeEdge(overrides = {}) {
18
+ return {
19
+ id: 'e1',
20
+ fromNode: 'n1',
21
+ toNode: 'n1',
22
+ ...overrides,
23
+ };
24
+ }
25
+ describe('computeSelfLoopPath', () => {
26
+ it('returns a non-empty SVG d string starting with M', () => {
27
+ const node = makeNode();
28
+ const path = computeSelfLoopPath(node);
29
+ expect(path).toBeTruthy();
30
+ expect(path.trimStart()).toMatch(/^M /);
31
+ });
32
+ it('contains a cubic bezier segment (C command)', () => {
33
+ const node = makeNode();
34
+ const path = computeSelfLoopPath(node);
35
+ expect(path).toContain(' C ');
36
+ });
37
+ it('scales loop size with node dimensions', () => {
38
+ const small = makeNode({ width: 100, height: 50 });
39
+ const large = makeNode({ width: 400, height: 200 });
40
+ const smallPath = computeSelfLoopPath(small);
41
+ const largePath = computeSelfLoopPath(large);
42
+ // cp1y is the 5th token in the path string (after "M x y C cp1x")
43
+ const getCP1Y = (d) => parseFloat(d.split(' ')[4]);
44
+ expect(Math.abs(getCP1Y(largePath))).toBeGreaterThan(Math.abs(getCP1Y(smallPath)));
45
+ });
46
+ it('respects the exitSide parameter', () => {
47
+ const node = makeNode();
48
+ const topPath = computeSelfLoopPath(node, 'top');
49
+ const rightPath = computeSelfLoopPath(node, 'right');
50
+ expect(topPath).not.toBe(rightPath);
51
+ });
52
+ });
53
+ describe('computeEdgePath with self-loop', () => {
54
+ it('returns same result as computeSelfLoopPath when fromNode === toNode', () => {
55
+ const node = makeNode();
56
+ const edge = makeEdge();
57
+ expect(computeEdgePath(edge, node, node)).toBe(computeSelfLoopPath(node, 'top'));
58
+ });
59
+ it('uses edge.fromSide to control loop exit direction', () => {
60
+ const node = makeNode();
61
+ const edgeTop = makeEdge({ fromSide: 'top' });
62
+ const edgeRight = makeEdge({ fromSide: 'right' });
63
+ expect(computeEdgePath(edgeTop, node, node)).toBe(computeSelfLoopPath(node, 'top'));
64
+ expect(computeEdgePath(edgeRight, node, node)).toBe(computeSelfLoopPath(node, 'right'));
65
+ });
66
+ it('does not regress on normal edges (fromNode !== toNode)', () => {
67
+ const from = makeNode({ id: 'a', x: 0, y: 0 });
68
+ const to = makeNode({ id: 'b', x: 400, y: 0 });
69
+ const edge = { id: 'e2', fromNode: 'a', toNode: 'b' };
70
+ const path = computeEdgePath(edge, from, to);
71
+ expect(path).toMatch(/^M /);
72
+ expect(path).not.toContain('NaN');
73
+ });
74
+ });
75
+ describe('computeEdgeMidpoint with self-loop', () => {
76
+ it('returns a point outside the node bounding box (the arc tip)', () => {
77
+ const node = makeNode({ x: 100, y: 100, width: 200, height: 100 });
78
+ const edge = makeEdge();
79
+ const mid = computeEdgeMidpoint(edge, node, node);
80
+ const outsideBox = mid.x < node.x ||
81
+ mid.x > node.x + node.width ||
82
+ mid.y < node.y ||
83
+ mid.y > node.y + node.height;
84
+ expect(outsideBox).toBe(true);
85
+ });
86
+ it('returns a valid finite numeric point', () => {
87
+ const node = makeNode();
88
+ const edge = makeEdge();
89
+ const mid = computeEdgeMidpoint(edge, node, node);
90
+ expect(Number.isFinite(mid.x)).toBe(true);
91
+ expect(Number.isFinite(mid.y)).toBe(true);
92
+ });
93
+ });
94
+ //# sourceMappingURL=selfLoop.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selfLoop.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/selfLoop.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-canvas-react",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,7 +35,7 @@
35
35
  "d3-selection": "^3.0.0",
36
36
  "d3-transition": "^3.0.0",
37
37
  "d3-zoom": "^3.0.0",
38
- "system-canvas": "^0.2.12"
38
+ "system-canvas": "^0.2.14"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "react": "^18.0.0 || ^19.0.0",