system-canvas 0.2.13 → 0.2.15

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/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type { CanvasColor, NodeType, Side, EndShape, EdgeStyle, BackgroundStyle, CanvasNode, CanvasEdge, CanvasData, CanvasThemeHint, CategoryDefinition, PresetColor, GridConfig, RefIndicatorConfig, NodeTheme, EdgeTheme, GroupTheme, BreadcrumbTheme, LanesTheme, CanvasLane, CanvasTheme, ContextMenuTheme, ResolvedNode, AnchorPoint, ViewportState, BreadcrumbEntry, BoundingBox, ContextMenuEvent, CanvasSelection, NodeContextMenuItem, NodeContextMenuConfig, NodeContextMenuMatchContext, NodeContextMenuSelectContext, NodeUpdate, EdgeUpdate, NodeMenuOption, NodeAction, NodeActionGroup, SlotPosition, CategorySlots, SlotSpec, ColorSlot, ProgressSlot, CountSlot, TextSlot, LinearGradientFill, DotSlot, PillSlot, IconSlot, IconPathSpec, IconPathData, CustomSlot, NodeAccessor, SlotContext, SlotRect, RollupResult, EditableField, EditableFieldKind, RevealPlacement, CategoryReveals, RevealSpec, BaseReveal, TextReveal, ListReveal, RevealListRow, MetricsReveal, RevealMetricBlock, CustomReveal, RevealContext, RevealsTheme, } from './types.js';
2
2
  export { darkTheme, midnightTheme, lightTheme, blueprintTheme, warmTheme, roadmapTheme, resolveTheme, resolveColor, resolveNode, } from './themes/index.js';
3
- export { computeAnchorPoint, inferSide, computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups, computeBoundingBox, fitToBounds, fitBoundsIntoRect, canvasRectToScreenRect, screenToCanvas, canvasToScreen, } from './rendering/index.js';
3
+ export { computeAnchorPoint, inferSide, computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups, computeSelfLoopPath, computeBoundingBox, fitToBounds, fitBoundsIntoRect, canvasRectToScreenRect, screenToCanvas, canvasToScreen, } from './rendering/index.js';
4
4
  export type { Rect } from './rendering/index.js';
5
5
  export { findLaneAt, snapToLane, evenLanes, lanesExtent } from './lanes.js';
6
6
  export { resolveActionPatch, buildDefaultColorActions, getNodeActions, getNodeActionsForNode, buildDefaultToolbar, filterActionsForNode, } from './actions.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
@@ -1,7 +1,7 @@
1
1
  // Themes
2
2
  export { darkTheme, midnightTheme, lightTheme, blueprintTheme, warmTheme, roadmapTheme, resolveTheme, resolveColor, resolveNode, } from './themes/index.js';
3
3
  // Rendering utilities
4
- export { computeAnchorPoint, inferSide, computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups, computeBoundingBox, fitToBounds, fitBoundsIntoRect, canvasRectToScreenRect, screenToCanvas, canvasToScreen, } from './rendering/index.js';
4
+ export { computeAnchorPoint, inferSide, computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups, computeSelfLoopPath, computeBoundingBox, fitToBounds, fitBoundsIntoRect, canvasRectToScreenRect, screenToCanvas, canvasToScreen, } from './rendering/index.js';
5
5
  // Lane helpers
6
6
  export { findLaneAt, snapToLane, evenLanes, lanesExtent } from './lanes.js';
7
7
  // Action helpers
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4EA,SAAS;AACT,OAAO,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAA;AAG7B,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE3E,iBAAiB;AACjB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAErB,iCAAiC;AACjC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AAEzB,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,wBAAwB;AACxB,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,GAC1B,MAAM,YAAY,CAAA;AAGnB,wEAAwE;AACxE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAA;AAErB,wEAAwE;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEjD,0EAA0E;AAC1E,uEAAuE;AACvE,kBAAkB;AAClB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAElB,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,UAAU,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,UAAU,EACV,UAAU,GACX,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE9D,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEpF,+BAA+B;AAC/B,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,YAAY,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,UAAU;IACrB,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,QAAQ;CACT,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4EA,SAAS;AACT,OAAO,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAA;AAG7B,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE3E,iBAAiB;AACjB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAErB,iCAAiC;AACjC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AAEzB,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,wBAAwB;AACxB,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,GAC1B,MAAM,YAAY,CAAA;AAGnB,wEAAwE;AACxE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAA;AAErB,wEAAwE;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEjD,0EAA0E;AAC1E,uEAAuE;AACvE,kBAAkB;AAClB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAElB,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,UAAU,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,UAAU,EACV,UAAU,GACX,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE9D,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEpF,+BAA+B;AAC/B,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,YAAY,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,UAAU;IACrB,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,QAAQ;CACT,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { CanvasEdge, ResolvedNode, EdgeStyle, AnchorPoint } from '../types.js';
1
+ import type { CanvasEdge, ResolvedNode, EdgeStyle, AnchorPoint, Side } from '../types.js';
2
2
  /**
3
3
  * Build a map from edge id to parallel group info.
4
4
  * Edges sharing the same node pair (A->B and B->A treated as the same pair)
@@ -8,6 +8,12 @@ export declare function buildParallelEdgeGroups(edges: CanvasEdge[]): Map<string
8
8
  index: number;
9
9
  total: number;
10
10
  }>;
11
+ /**
12
+ * Compute a looping arc path for a self-referencing edge (fromNode === toNode).
13
+ * The loop exits from `exitSide` and re-enters the adjacent clockwise side.
14
+ * Arc radius scales with the node's larger dimension.
15
+ */
16
+ export declare function computeSelfLoopPath(node: ResolvedNode, exitSide?: Side): string;
11
17
  /**
12
18
  * Compute the SVG path `d` attribute for an edge between two nodes.
13
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"edge-routing.d.ts","sourceRoot":"","sources":["../../src/rendering/edge-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,aAAa,CAAA;AAGpB;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAY/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE,SAAoB,EAC3B,aAAa,SAAI,EACjB,aAAa,SAAI,GAChB,MAAM,CAoBR;AAkGD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY,GACnB,WAAW,CA8Bb"}
1
+ {"version":3,"file":"edge-routing.d.ts","sourceRoot":"","sources":["../../src/rendering/edge-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EACX,IAAI,EACL,MAAM,aAAa,CAAA;AAGpB;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAY/C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,GAAE,IAAY,GAAG,MAAM,CAgBtF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE,SAAoB,EAC3B,aAAa,SAAI,EACjB,aAAa,SAAI,GAChB,MAAM,CAyBR;AAkGD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,YAAY,GACnB,WAAW,CA2Db"}
@@ -18,10 +18,32 @@ export function buildParallelEdgeGroups(edges) {
18
18
  }
19
19
  return result;
20
20
  }
21
+ /**
22
+ * Compute a looping arc path for a self-referencing edge (fromNode === toNode).
23
+ * The loop exits from `exitSide` and re-enters the adjacent clockwise side.
24
+ * Arc radius scales with the node's larger dimension.
25
+ */
26
+ export function computeSelfLoopPath(node, exitSide = 'top') {
27
+ const r = Math.max(node.width, node.height) * 0.8;
28
+ const from = computeAnchorPoint(node, exitSide);
29
+ const toSide = exitSide === 'top' ? 'right'
30
+ : exitSide === 'right' ? 'bottom'
31
+ : exitSide === 'bottom' ? 'left'
32
+ : 'top';
33
+ const to = computeAnchorPoint(node, toSide);
34
+ // Control points arc outward from the node proportionally to r
35
+ const cp1 = controlPointOffset(from, exitSide, r);
36
+ const cp2 = controlPointOffset(to, toSide, r);
37
+ return `M ${from.x} ${from.y} C ${cp1.x} ${cp1.y}, ${cp2.x} ${cp2.y}, ${to.x} ${to.y}`;
38
+ }
21
39
  /**
22
40
  * Compute the SVG path `d` attribute for an edge between two nodes.
23
41
  */
24
42
  export function computeEdgePath(edge, fromNode, toNode, style = 'bezier', parallelIndex = 0, parallelTotal = 1) {
43
+ // Self-referencing edge: render as a loop arc
44
+ if (fromNode.id === toNode.id) {
45
+ return computeSelfLoopPath(fromNode, edge.fromSide ?? 'top');
46
+ }
25
47
  // Determine connection sides
26
48
  const inferred = inferSide(fromNode, toNode);
27
49
  const fromSide = edge.fromSide ?? inferred.fromSide;
@@ -117,6 +139,30 @@ function controlPointOffset(point, side, offset) {
117
139
  * Compute the midpoint of an edge path (for label placement).
118
140
  */
119
141
  export function computeEdgeMidpoint(edge, fromNode, toNode) {
142
+ // Self-referencing edge: evaluate the loop bezier at t=0.5 (arc tip)
143
+ if (fromNode.id === toNode.id) {
144
+ const exitSide = edge.fromSide ?? 'top';
145
+ const r = Math.max(fromNode.width, fromNode.height) * 0.8;
146
+ const from = computeAnchorPoint(fromNode, exitSide);
147
+ const toSide = exitSide === 'top' ? 'right'
148
+ : exitSide === 'right' ? 'bottom'
149
+ : exitSide === 'bottom' ? 'left'
150
+ : 'top';
151
+ const to = computeAnchorPoint(fromNode, toSide);
152
+ const cp1 = controlPointOffset(from, exitSide, r);
153
+ const cp2 = controlPointOffset(to, toSide, r);
154
+ const t = 0.5;
155
+ const mt = 1 - t;
156
+ const x = mt * mt * mt * from.x +
157
+ 3 * mt * mt * t * cp1.x +
158
+ 3 * mt * t * t * cp2.x +
159
+ t * t * t * to.x;
160
+ const y = mt * mt * mt * from.y +
161
+ 3 * mt * mt * t * cp1.y +
162
+ 3 * mt * t * t * cp2.y +
163
+ t * t * t * to.y;
164
+ return { x, y };
165
+ }
120
166
  const inferred = inferSide(fromNode, toNode);
121
167
  const fromSide = edge.fromSide ?? inferred.fromSide;
122
168
  const toSide = edge.toSide ?? inferred.toSide;
@@ -1 +1 @@
1
- {"version":3,"file":"edge-routing.js","sourceRoot":"","sources":["../../src/rendering/edge-routing.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAElE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4C,CAAA;IAClE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAgB,EAChB,QAAsB,EACtB,MAAoB,EACpB,QAAmB,QAAQ,EAC3B,aAAa,GAAG,CAAC,EACjB,aAAa,GAAG,CAAC;IAEjB,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAA;IAE7C,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE7C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;IAE1C,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACtC,KAAK,YAAY;YACf,OAAO,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC1D,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;IACtF,CAAC;AACH,CAAC;AAED,wCAAwC;AACxC,SAAS,mBAAmB,CAAC,IAAiB,EAAE,EAAe;IAC7D,OAAO,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;AAClD,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,IAAiB,EACjB,EAAe,EACf,QAAgB,EAChB,MAAc,EACd,aAAa,GAAG,CAAC,EACjB,aAAa,GAAG,CAAC;IAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,CAAC,CAAA;IAEvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAElD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,wDAAwD;QACxD,MAAM,YAAY,GAAG,CAAC,aAAa,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;QACnE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACxB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAC7C,gDAAgD;QAChD,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAA;QACvB,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,CAAA;QACtB,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,YAAY,CAAA;QAC7B,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,YAAY,CAAA;QAC7B,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,YAAY,CAAA;QAC7B,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,YAAY,CAAA;IAC/B,CAAC;IAED,OAAO,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;AACxF,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,IAAiB,EACjB,EAAe,EACf,QAAgB,EAChB,MAAc;IAEd,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEhC,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,CAAA;IACpE,MAAM,cAAc,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,CAAA;IAE9D,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;QACvC,sCAAsC;QACtC,OAAO,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACxF,CAAC;SAAM,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,oCAAoC;QACpC,OAAO,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACxF,CAAC;SAAM,IAAI,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,wCAAwC;QACxC,OAAO,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACtE,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,OAAO,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,KAAkB,EAClB,IAAY,EACZ,MAAc;IAEd,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAA;QAC5C,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAA;QAC5C,KAAK,MAAM;YACT,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAA;QAC5C,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAA;QAC5C;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAgB,EAChB,QAAsB,EACtB,MAAoB;IAEpB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAA;IAE7C,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE7C,6DAA6D;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,CAAC,CAAA;IAEvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAElD,wBAAwB;IACxB,MAAM,CAAC,GAAG,GAAG,CAAA;IACb,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;IAChB,MAAM,CAAC,GACL,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACvB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACtB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAClB,MAAM,CAAC,GACL,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACvB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACtB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAElB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"edge-routing.js","sourceRoot":"","sources":["../../src/rendering/edge-routing.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { computeAnchorPoint, inferSide } from './anchor-points.js';
2
- export { computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups } from './edge-routing.js';
2
+ export { computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups, computeSelfLoopPath } from './edge-routing.js';
3
3
  export { computeBoundingBox, fitToBounds, fitBoundsIntoRect, canvasRectToScreenRect, screenToCanvas, canvasToScreen, } from './viewport-math.js';
4
4
  export type { Rect } from './viewport-math.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACtH,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  export { computeAnchorPoint, inferSide } from './anchor-points.js';
2
- export { computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups } from './edge-routing.js';
2
+ export { computeEdgePath, computeEdgeMidpoint, buildParallelEdgeGroups, computeSelfLoopPath } from './edge-routing.js';
3
3
  export { computeBoundingBox, fitToBounds, fitBoundsIntoRect, canvasRectToScreenRect, screenToCanvas, canvasToScreen, } from './viewport-math.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACtH,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-canvas",
3
- "version": "0.2.13",
3
+ "version": "0.2.15",
4
4
  "description": "Interactive, zoomable SVG diagrams from JSON Canvas documents. Pure TypeScript core with types, themes, edge routing, and viewport math.",
5
5
  "license": "MIT",
6
6
  "repository": {