@ngroznykh/papirus 0.5.1 → 0.5.3

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.
@@ -23,7 +23,7 @@ export declare const DEFAULT_SELECTION_COLOR = "#3b82f6";
23
23
  export declare const DEFAULT_HOVER_COLOR = "#6366f1";
24
24
  /** Minimum distance (world units) to start a drag */
25
25
  export declare const DRAG_START_THRESHOLD = 3;
26
- /** Screen tolerance for alignment guides when dragging */
26
+ /** Screen tolerance for alignment guides when dragging (default when not overridden by enableInteractions options) */
27
27
  export declare const ALIGNMENT_SCREEN_TOLERANCE = 8;
28
28
  /** Max distance (world units) for control point to be considered orthogonal to endpoint */
29
29
  export declare const EDITABLE_POLYLINE_ORTHOGONAL_TOLERANCE = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,QAAc,CAAC;AAGvC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/C,CAAC;AAGF,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAG9C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAGtC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAG5C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,kGAAkG;AAClG,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAGhD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAG7C,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,0DAA0D;AAC1D,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAG5C,2FAA2F;AAC3F,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,sFAAsF;AACtF,eAAO,MAAM,iCAAiC,KAAK,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,QAAc,CAAC;AAGvC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/C,CAAC;AAGF,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAG9C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAGtC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAG5C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,kGAAkG;AAClG,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAGhD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAG7C,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,sHAAsH;AACtH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAG5C,2FAA2F;AAC3F,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,sFAAsF;AACtF,eAAO,MAAM,iCAAiC,KAAK,CAAC"}
@@ -17,6 +17,8 @@ export interface DragManagerOptions {
17
17
  snapToGrid?: boolean;
18
18
  gridSize?: number;
19
19
  alignToNodes?: boolean;
20
+ /** Screen distance (px) for alignment guides; when set, overrides ALIGNMENT_SCREEN_TOLERANCE. */
21
+ alignmentScreenTolerance?: number;
20
22
  }
21
23
  /**
22
24
  * Manages node dragging
@@ -27,6 +29,7 @@ export declare class DragManager extends EventEmitter<DragEvents> {
27
29
  private snapToGrid;
28
30
  private gridSize;
29
31
  private alignToNodes;
32
+ private alignmentScreenTolerance;
30
33
  private isDragging;
31
34
  private draggedNodes;
32
35
  private dragStartPoint;
@@ -1 +1 @@
1
- {"version":3,"file":"DragManager.d.ts","sourceRoot":"","sources":["../../src/core/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,SAAS,CAAC;AAW7C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC,UAAU,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAU;IAE9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,kBAAkB,CAGtB;IACJ,oGAAoG;IACpG,OAAO,CAAC,mCAAmC,CAAqB;IAChE,kEAAkE;IAClE,OAAO,CAAC,qCAAqC,CAA8B;IAC3E,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,OAAO,EAAE,kBAAkB;IASvC;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,qBAAqB,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IA0B1D;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAOxD;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IA8F3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAoF3C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IA6BzC;;OAEG;IACH,UAAU,IAAI,IAAI;IAwBlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,+BAA+B;IAoEvC,OAAO,CAAC,yBAAyB;IA6BjC;;;OAGG;IACH,OAAO,CAAC,wCAAwC;IAiBhD,OAAO,CAAC,qBAAqB;IAuI7B,OAAO,CAAC,gBAAgB;CAczB"}
1
+ {"version":3,"file":"DragManager.d.ts","sourceRoot":"","sources":["../../src/core/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,SAAS,CAAC;AAW7C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iGAAiG;IACjG,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC,UAAU,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,wBAAwB,CAAS;IAEzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,kBAAkB,CAGtB;IACJ,oGAAoG;IACpG,OAAO,CAAC,mCAAmC,CAAqB;IAChE,kEAAkE;IAClE,OAAO,CAAC,qCAAqC,CAA8B;IAC3E,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,OAAO,EAAE,kBAAkB;IAWvC;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,qBAAqB,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IA0B1D;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAOxD;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IA8F3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAoF3C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IA6BzC;;OAEG;IACH,UAAU,IAAI,IAAI;IAwBlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,+BAA+B;IAoEvC,OAAO,CAAC,yBAAyB;IA6BjC;;;OAGG;IACH,OAAO,CAAC,wCAAwC;IAiBhD,OAAO,CAAC,qBAAqB;IAuI7B,OAAO,CAAC,gBAAgB;CAczB"}
@@ -24,6 +24,8 @@ export interface InteractionManagerOptions {
24
24
  snapToGrid?: boolean;
25
25
  gridSize?: number;
26
26
  alignToNodes?: boolean;
27
+ /** Screen distance (px) within which alignment guides snap when dragging. Overrides default from constants. */
28
+ alignmentScreenTolerance?: number;
27
29
  /** When true, edges can be attached anywhere on the shape outline (not just ports) */
28
30
  attachToOutline?: boolean;
29
31
  /** When true, disable editing interactions and keep navigation/selection only */
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionManager.d.ts","sourceRoot":"","sources":["../../src/core/InteractionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InteractionManager.d.ts","sourceRoot":"","sources":["../../src/core/InteractionManager.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export interface EdgeSnapshot {
22
22
  label?: LabelSnapshot;
23
23
  labelOffset: number;
24
24
  labelBackground?: EdgeLabelBackground;
25
+ labelLineGap: boolean;
25
26
  startMarker?: ArrowMarkerConfig;
26
27
  endMarker?: ArrowMarkerConfig;
27
28
  arrowType: ArrowType;
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/core/history/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/core/history/commands.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export interface EdgeOptions {
18
18
  labelOffset?: number;
19
19
  labelBackground?: EdgeLabelBackground;
20
20
  lockAnchors?: boolean;
21
+ labelLineGap?: boolean;
21
22
  }
22
23
  export type { PathStrategy };
23
24
  /**
@@ -34,6 +35,7 @@ export declare class Edge extends Element {
34
35
  private _label?;
35
36
  private _labelOffset;
36
37
  private _labelBackground?;
38
+ private _labelLineGap;
37
39
  private _path;
38
40
  private _pathStrategy;
39
41
  private _autoUpdateEndpoints;
@@ -85,6 +87,11 @@ export declare class Edge extends Element {
85
87
  */
86
88
  get labelBackground(): EdgeLabelBackground | undefined;
87
89
  set labelBackground(value: EdgeLabelBackground | undefined);
90
+ /**
91
+ * Whether to create a gap in the edge line under the label.
92
+ */
93
+ get labelLineGap(): boolean;
94
+ set labelLineGap(value: boolean);
88
95
  /**
89
96
  * Control points for custom paths.
90
97
  * For bezier format: [cp1, cp2, end, cp1, cp2, end, ...]
@@ -1 +1 @@
1
- {"version":3,"file":"Edge.d.ts","sourceRoot":"","sources":["../../src/elements/Edge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Edge.d.ts","sourceRoot":"","sources":["../../src/elements/Edge.ts"],"names":[],"mappings":"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"}
package/dist/papirus.js CHANGED
@@ -337,6 +337,66 @@ function rectUnion(a, b) {
337
337
  const bottom = Math.max(a.y + a.height, b.y + b.height);
338
338
  return { x, y, width: right - x, height: bottom - y };
339
339
  }
340
+ function segmentRectIntersections(segStart, segEnd, rect) {
341
+ const results = [];
342
+ const rectRight = rect.x + rect.width;
343
+ const rectBottom = rect.y + rect.height;
344
+ const edges = [
345
+ // Top
346
+ [
347
+ { x: rect.x, y: rect.y },
348
+ { x: rectRight, y: rect.y }
349
+ ],
350
+ // Right
351
+ [
352
+ { x: rectRight, y: rect.y },
353
+ { x: rectRight, y: rectBottom }
354
+ ],
355
+ // Bottom
356
+ [
357
+ { x: rectRight, y: rectBottom },
358
+ { x: rect.x, y: rectBottom }
359
+ ],
360
+ // Left
361
+ [
362
+ { x: rect.x, y: rectBottom },
363
+ { x: rect.x, y: rect.y }
364
+ ]
365
+ ];
366
+ const cross = (a, b) => a.x * b.y - a.y * b.x;
367
+ const r = { x: segEnd.x - segStart.x, y: segEnd.y - segStart.y };
368
+ const epsilon = 1e-9;
369
+ for (const [q0, q1] of edges) {
370
+ const s = { x: q1.x - q0.x, y: q1.y - q0.y };
371
+ const denom = cross(r, s);
372
+ if (Math.abs(denom) < epsilon) {
373
+ continue;
374
+ }
375
+ const q0MinusP0 = { x: q0.x - segStart.x, y: q0.y - segStart.y };
376
+ const t = cross(q0MinusP0, s) / denom;
377
+ const u = cross(q0MinusP0, r) / denom;
378
+ if (t < -epsilon || t > 1 + epsilon || u < -epsilon || u > 1 + epsilon) {
379
+ continue;
380
+ }
381
+ const clampedT = Math.max(0, Math.min(1, t));
382
+ const point = {
383
+ x: segStart.x + clampedT * r.x,
384
+ y: segStart.y + clampedT * r.y
385
+ };
386
+ let exists = false;
387
+ for (const existing of results) {
388
+ if (Math.abs(existing.point.x - point.x) < 1e-6 && Math.abs(existing.point.y - point.y) < 1e-6) {
389
+ exists = true;
390
+ break;
391
+ }
392
+ }
393
+ if (!exists) {
394
+ results.push({ t: clampedT, point });
395
+ }
396
+ }
397
+ results.sort((a, b) => a.t - b.t);
398
+ return results;
399
+ }
340
400
  function pointInEllipse(point, center, radiusX, radiusY) {
341
401
  const dx = point.x - center.x;
342
402
  const dy = point.y - center.y;
@@ -703,6 +763,7 @@ class DragManager extends EventEmitter {
703
763
  this.snapToGrid = options.snapToGrid ?? false;
704
764
  this.gridSize = options.gridSize ?? 20;
705
765
  this.alignToNodes = options.alignToNodes ?? true;
766
+ this.alignmentScreenTolerance = options.alignmentScreenTolerance ?? ALIGNMENT_SCREEN_TOLERANCE;
706
767
  }
707
768
  /**
708
769
  * Check if currently dragging
@@ -1078,7 +1139,7 @@ class DragManager extends EventEmitter {
1078
1139
  if (!draggedBounds) {
1079
1140
  return totalDelta;
1080
1141
  }
1081
- const tolerance = ALIGNMENT_SCREEN_TOLERANCE / Math.max(this.renderer.zoom, 1e-4);
1142
+ const tolerance = this.alignmentScreenTolerance / Math.max(this.renderer.zoom, 1e-4);
1082
1143
  const draggedIds = new Set(this.draggedNodes.map((node) => node.id));
1083
1144
  const searchPadding = tolerance * 2;
1084
1145
  const searchBounds = {
@@ -2984,6 +3045,7 @@ const createEdgeSnapshot = (edge) => {
2984
3045
  label: snapshotLabel(edge.label),
2985
3046
  labelOffset: edge.labelOffset,
2986
3047
  labelBackground: cloneValue(edge.labelBackground),
3048
+ labelLineGap: edge.labelLineGap,
2987
3049
  startMarker: cloneValue(edge.startMarker),
2988
3050
  endMarker: cloneValue(edge.endMarker),
2989
3051
  arrowType: edge.arrowType,
@@ -3117,6 +3179,7 @@ class ChangeEdgePropertiesCommand {
3117
3179
  edge.endMarker = cloneValue(this.after.endMarker);
3118
3180
  edge.labelOffset = this.after.labelOffset;
3119
3181
  edge.labelBackground = cloneValue(this.after.labelBackground);
3182
+ edge.labelLineGap = this.after.labelLineGap;
3120
3183
  edge.style = cloneValue(this.after.style ?? {});
3121
3184
  edge.styleClass = this.after.styleClass;
3122
3185
  edge.label = applyLabelSnapshot(edge.label, this.after.label);
@@ -3133,6 +3196,7 @@ class ChangeEdgePropertiesCommand {
3133
3196
  edge.endMarker = cloneValue(this.before.endMarker);
3134
3197
  edge.labelOffset = this.before.labelOffset;
3135
3198
  edge.labelBackground = cloneValue(this.before.labelBackground);
3199
+ edge.labelLineGap = this.before.labelLineGap;
3136
3200
  edge.style = cloneValue(this.before.style ?? {});
3137
3201
  edge.styleClass = this.before.styleClass;
3138
3202
  edge.label = applyLabelSnapshot(edge.label, this.before.label);
@@ -4136,6 +4200,7 @@ class Edge extends Element {
4136
4200
  this._lockAnchors = options.lockAnchors ?? true;
4137
4201
  this._labelOffset = options.labelOffset ?? 0;
4138
4202
  this._labelBackground = options.labelBackground;
4203
+ this._labelLineGap = options.labelLineGap ?? false;
4139
4204
  if (options.label !== void 0) {
4140
4205
  if (typeof options.label === "string") {
4141
4206
  this._label = new TextLabel({
@@ -4237,6 +4302,18 @@ class Edge extends Element {
4237
4302
  this._labelBackground = value;
4238
4303
  this.markDirty();
4239
4304
  }
4305
+ /**
4306
+ * Whether to create a gap in the edge line under the label.
4307
+ */
4308
+ get labelLineGap() {
4309
+ return this._labelLineGap;
4310
+ }
4311
+ set labelLineGap(value) {
4312
+ if (this._labelLineGap !== value) {
4313
+ this._labelLineGap = value;
4314
+ this.markDirty();
4315
+ }
4316
+ }
4240
4317
  /**
4241
4318
  * Control points for custom paths.
4242
4319
  * For bezier format: [cp1, cp2, end, cp1, cp2, end, ...]
@@ -4516,34 +4593,203 @@ class Edge extends Element {
4516
4593
  if (path.length < 2) return;
4517
4594
  const startOffset = this._startMarker && this._startMarker.type !== "none" ? this.getMarkerLength(this._startMarker) : 0;
4518
4595
  const endOffset = this._endMarker && this._endMarker.type !== "none" ? this.getMarkerLength(this._endMarker) : 0;
4519
- const start = path[0];
4520
- const startNext = path[1];
4521
- const startAngle = Math.atan2(startNext.y - start.y, startNext.x - start.x);
4522
- const shortenedStart = {
4523
- x: start.x + startOffset * Math.cos(startAngle),
4524
- y: start.y + startOffset * Math.sin(startAngle)
4596
+ const buildPolyline = () => {
4597
+ if (this._type === "bezier" && path.length >= 4) {
4598
+ const samples = [];
4599
+ const steps = 20;
4600
+ for (let i = 1; i + 2 < path.length; i += 3) {
4601
+ const p0 = path[i - 1];
4602
+ const p1 = path[i];
4603
+ const p2 = path[i + 1];
4604
+ const p3 = path[i + 2];
4605
+ for (let s = 0; s <= steps; s++) {
4606
+ const t = s / steps;
4607
+ if (samples.length > 0 && t === 0) {
4608
+ continue;
4609
+ }
4610
+ samples.push(bezierPoint(p0, p1, p2, p3, t));
4611
+ }
4612
+ }
4613
+ return samples;
4614
+ }
4615
+ return path.map((p) => ({ ...p }));
4525
4616
  };
4526
- const end = path[path.length - 1];
4527
- const endPrev = path[path.length - 2];
4528
- const endAngle = Math.atan2(end.y - endPrev.y, end.x - endPrev.x);
4529
- const shortenedEnd = {
4530
- x: end.x - endOffset * Math.cos(endAngle),
4531
- y: end.y - endOffset * Math.sin(endAngle)
4617
+ const shortenPolyline = (points, start, end) => {
4618
+ if (points.length < 2) {
4619
+ return points;
4620
+ }
4621
+ const totalLength = () => {
4622
+ let len = 0;
4623
+ for (let i = 1; i < points.length; i++) {
4624
+ len += distance(points[i - 1], points[i]);
4625
+ }
4626
+ return len;
4627
+ };
4628
+ let pts = points;
4629
+ let remainingStart = Math.max(0, start);
4630
+ let remainingEnd = Math.max(0, end);
4631
+ const total = totalLength();
4632
+ if (remainingStart + remainingEnd >= total) {
4633
+ const mid = points[0];
4634
+ return [mid];
4635
+ }
4636
+ if (remainingStart > 0) {
4637
+ const newPoints = [];
4638
+ let accumulated = 0;
4639
+ for (let i = 0; i < pts.length - 1; i++) {
4640
+ const p0 = pts[i];
4641
+ const p1 = pts[i + 1];
4642
+ const segLen = distance(p0, p1);
4643
+ if (accumulated + segLen >= remainingStart) {
4644
+ const t = (remainingStart - accumulated) / segLen;
4645
+ const newStart = {
4646
+ x: p0.x + (p1.x - p0.x) * t,
4647
+ y: p0.y + (p1.y - p0.y) * t
4648
+ };
4649
+ newPoints.push(newStart);
4650
+ for (let j = i + 1; j < pts.length; j++) {
4651
+ newPoints.push({ ...pts[j] });
4652
+ }
4653
+ pts = newPoints;
4654
+ break;
4655
+ }
4656
+ accumulated += segLen;
4657
+ }
4658
+ }
4659
+ if (remainingEnd > 0 && pts.length > 1) {
4660
+ const newPoints = [];
4661
+ let accumulated = 0;
4662
+ for (let i = pts.length - 1; i > 0; i--) {
4663
+ const p0 = pts[i - 1];
4664
+ const p1 = pts[i];
4665
+ const segLen = distance(p0, p1);
4666
+ if (accumulated + segLen >= remainingEnd) {
4667
+ const t = (remainingEnd - accumulated) / segLen;
4668
+ const newEnd = {
4669
+ x: p1.x + (p0.x - p1.x) * t,
4670
+ y: p1.y + (p0.y - p1.y) * t
4671
+ };
4672
+ newPoints.push(newEnd);
4673
+ for (let j = i - 1; j >= 0; j--) {
4674
+ newPoints.push({ ...pts[j] });
4675
+ }
4676
+ pts = newPoints.reverse();
4677
+ break;
4678
+ }
4679
+ accumulated += segLen;
4680
+ }
4681
+ }
4682
+ return pts;
4683
+ };
4684
+ const shouldCreateGap = this._label !== void 0 && this._labelLineGap;
4685
+ if (!shouldCreateGap) {
4686
+ const start = path[0];
4687
+ const startNext = path[1];
4688
+ const startAngle = Math.atan2(startNext.y - start.y, startNext.x - start.x);
4689
+ const shortenedStart = {
4690
+ x: start.x + startOffset * Math.cos(startAngle),
4691
+ y: start.y + startOffset * Math.sin(startAngle)
4692
+ };
4693
+ const end = path[path.length - 1];
4694
+ const endPrev = path[path.length - 2];
4695
+ const endAngle = Math.atan2(end.y - endPrev.y, end.x - endPrev.x);
4696
+ const shortenedEnd = {
4697
+ x: end.x - endOffset * Math.cos(endAngle),
4698
+ y: end.y - endOffset * Math.sin(endAngle)
4699
+ };
4700
+ ctx.beginPath();
4701
+ ctx.moveTo(shortenedStart.x, shortenedStart.y);
4702
+ if (this._type === "bezier" && path.length >= 4) {
4703
+ for (let i = 1; i + 2 < path.length; i += 3) {
4704
+ const cp1 = path[i];
4705
+ const cp2 = path[i + 1];
4706
+ const segmentEnd = i + 2 === path.length - 1 ? shortenedEnd : path[i + 2];
4707
+ ctx.bezierCurveTo(cp1.x, cp1.y, cp2.x, cp2.y, segmentEnd.x, segmentEnd.y);
4708
+ }
4709
+ } else {
4710
+ for (let i = 1; i < path.length - 1; i++) {
4711
+ ctx.lineTo(path[i].x, path[i].y);
4712
+ }
4713
+ ctx.lineTo(shortenedEnd.x, shortenedEnd.y);
4714
+ }
4715
+ ctx.stroke();
4716
+ return;
4717
+ }
4718
+ let polyline = buildPolyline();
4719
+ polyline = shortenPolyline(polyline, startOffset, endOffset);
4720
+ if (polyline.length < 2) {
4721
+ return;
4722
+ }
4723
+ this._label.measure(ctx);
4724
+ const labelCenter = this.getLabelPosition();
4725
+ if (!labelCenter) {
4726
+ return;
4727
+ }
4728
+ const labelWidth = this._label.measuredWidth;
4729
+ const labelHeight = this._label.measuredHeight;
4730
+ const labelRect = {
4731
+ x: labelCenter.x - labelWidth / 2,
4732
+ y: labelCenter.y - labelHeight / 2,
4733
+ width: labelWidth,
4734
+ height: labelHeight
4532
4735
  };
4736
+ const segmentIntersections = [];
4737
+ for (let i = 0; i < polyline.length - 1; i++) {
4738
+ const p0 = polyline[i];
4739
+ const p1 = polyline[i + 1];
4740
+ const intersections = segmentRectIntersections(p0, p1, labelRect);
4741
+ for (const inter of intersections) {
4742
+ segmentIntersections.push({
4743
+ segIndex: i,
4744
+ t: inter.t,
4745
+ point: inter.point
4746
+ });
4747
+ }
4748
+ }
4749
+ if (segmentIntersections.length < 2) {
4750
+ ctx.beginPath();
4751
+ ctx.moveTo(polyline[0].x, polyline[0].y);
4752
+ for (let i = 1; i < polyline.length; i++) {
4753
+ ctx.lineTo(polyline[i].x, polyline[i].y);
4754
+ }
4755
+ ctx.stroke();
4756
+ return;
4757
+ }
4758
+ segmentIntersections.sort((a, b) => {
4759
+ if (a.segIndex === b.segIndex) {
4760
+ return a.t - b.t;
4761
+ }
4762
+ return a.segIndex - b.segIndex;
4763
+ });
4533
4764
  ctx.beginPath();
4534
- ctx.moveTo(shortenedStart.x, shortenedStart.y);
4535
- if (this._type === "bezier" && path.length >= 4) {
4536
- for (let i = 1; i + 2 < path.length; i += 3) {
4537
- const cp1 = path[i];
4538
- const cp2 = path[i + 1];
4539
- const end2 = i + 2 === path.length - 1 ? shortenedEnd : path[i + 2];
4540
- ctx.bezierCurveTo(cp1.x, cp1.y, cp2.x, cp2.y, end2.x, end2.y);
4765
+ ctx.moveTo(polyline[0].x, polyline[0].y);
4766
+ let entered = false;
4767
+ let exited = false;
4768
+ for (let i = 0; i < polyline.length - 1; i++) {
4769
+ const p1 = polyline[i + 1];
4770
+ const currentIntersections = segmentIntersections.filter((it) => it.segIndex === i);
4771
+ if (!entered && currentIntersections.length > 0) {
4772
+ const first = currentIntersections[0];
4773
+ ctx.lineTo(first.point.x, first.point.y);
4774
+ entered = true;
4775
+ const maybeExit = currentIntersections.length > 1 ? currentIntersections[1] : void 0;
4776
+ if (maybeExit) {
4777
+ ctx.moveTo(maybeExit.point.x, maybeExit.point.y);
4778
+ exited = true;
4779
+ ctx.lineTo(p1.x, p1.y);
4780
+ }
4781
+ continue;
4541
4782
  }
4542
- } else {
4543
- for (let i = 1; i < path.length - 1; i++) {
4544
- ctx.lineTo(path[i].x, path[i].y);
4783
+ if (entered && !exited && currentIntersections.length > 0) {
4784
+ const lastOnSegment = currentIntersections[currentIntersections.length - 1];
4785
+ ctx.moveTo(lastOnSegment.point.x, lastOnSegment.point.y);
4786
+ exited = true;
4787
+ ctx.lineTo(p1.x, p1.y);
4788
+ continue;
4789
+ }
4790
+ if (!entered || exited) {
4791
+ ctx.lineTo(p1.x, p1.y);
4545
4792
  }
4546
- ctx.lineTo(shortenedEnd.x, shortenedEnd.y);
4547
4793
  }
4548
4794
  ctx.stroke();
4549
4795
  }
@@ -5021,7 +5267,8 @@ class InteractionManager {
5021
5267
  selectionManager: this.selectionManager,
5022
5268
  snapToGrid: options.snapToGrid ?? this.renderer.snapToGrid,
5023
5269
  gridSize: options.gridSize ?? 20,
5024
- alignToNodes: options.alignToNodes ?? true
5270
+ alignToNodes: options.alignToNodes ?? true,
5271
+ alignmentScreenTolerance: options.alignmentScreenTolerance
5025
5272
  });
5026
5273
  this.resizeManager = new ResizeManager({
5027
5274
  renderer: this.renderer,
@@ -5770,6 +6017,7 @@ class InteractionManager {
5770
6017
  labelStyleClass: edge.label?.styleClass,
5771
6018
  labelOffset: edge.labelOffset !== 0 ? edge.labelOffset : void 0,
5772
6019
  labelBackground: edge.labelBackground,
6020
+ labelLineGap: edge.labelLineGap ? true : void 0,
5773
6021
  data: Object.keys(edge.data).length > 0 ? edge.data : void 0
5774
6022
  });
5775
6023
  }
@@ -10572,6 +10820,7 @@ class Serializer {
10572
10820
  labelStyleClass: edge.label?.styleClass,
10573
10821
  labelOffset: edge.labelOffset !== 0 ? edge.labelOffset : void 0,
10574
10822
  labelBackground: edge.labelBackground,
10823
+ labelLineGap: edge.labelLineGap ? true : void 0,
10575
10824
  data: Object.keys(edge.data).length > 0 ? edge.data : void 0
10576
10825
  };
10577
10826
  }
@@ -12047,6 +12296,7 @@ export {
12047
12296
  resetIdCounter,
12048
12297
  resetPortIdCounter,
12049
12298
  rotatePoint,
12299
+ segmentRectIntersections,
12050
12300
  snapPointToGrid,
12051
12301
  snapToGrid
12052
12302
  };