@ngroznykh/papirus 0.2.0 → 0.3.1

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.
@@ -19,6 +19,7 @@ export interface NodeOptions {
19
19
  ports?: PortOptions[];
20
20
  showPortsAlways?: boolean;
21
21
  anchorPoints?: AnchorPointsConfig;
22
+ resizeHandlesEnabled?: boolean;
22
23
  }
23
24
  export type ResizeHandle = 'nw' | 'ne' | 'se' | 'sw';
24
25
  export type AnchorId = `${'top' | 'right' | 'bottom' | 'left'}:${number}`;
@@ -44,6 +45,7 @@ export declare abstract class Node extends Element {
44
45
  protected _anchorPoints: Required<AnchorPointsConfig>;
45
46
  protected _defaultSize: Size;
46
47
  protected _labelPlacement: LabelPlacement;
48
+ protected _resizeHandlesEnabled: boolean;
47
49
  protected constructor(options: NodeOptions);
48
50
  /**
49
51
  * Node style
@@ -94,6 +96,8 @@ export declare abstract class Node extends Element {
94
96
  */
95
97
  get showPortsAlways(): boolean;
96
98
  set showPortsAlways(value: boolean);
99
+ get resizeHandlesEnabled(): boolean;
100
+ set resizeHandlesEnabled(value: boolean);
97
101
  /**
98
102
  * Anchor points configuration (per side)
99
103
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/elements/Node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/elements/Node.ts"],"names":[],"mappings":"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"}
@@ -18,8 +18,8 @@ export declare class TextLabel {
18
18
  private _localStyle;
19
19
  private _maxWidth?;
20
20
  private _autoMaxWidth?;
21
- private readonly _padding;
22
- private readonly _margin;
21
+ private _padding;
22
+ private _margin;
23
23
  private _lines;
24
24
  private _measuredWidth;
25
25
  private _measuredHeight;
@@ -55,10 +55,12 @@ export declare class TextLabel {
55
55
  * Label padding
56
56
  */
57
57
  get padding(): number;
58
+ set padding(value: number);
58
59
  /**
59
60
  * Label margin
60
61
  */
61
62
  get margin(): number;
63
+ set margin(value: number);
62
64
  applyStyleManager(styleManager: StyleManager): void;
63
65
  setOnChange(handler?: () => void): void;
64
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TextLabel.d.ts","sourceRoot":"","sources":["../../src/elements/TextLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAaD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAQ;gBAEjB,OAAO,EAAE,gBAAgB;IAWrC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAOrB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,EAMzB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOvC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAQrC;IAED;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAShD;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAWnD,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,wBAAwB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAsCzE;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA0C3D;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAoB3D,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,QAAQ;CA2BjB"}
1
+ {"version":3,"file":"TextLabel.d.ts","sourceRoot":"","sources":["../../src/elements/TextLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAaD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAQ;gBAEjB,OAAO,EAAE,gBAAgB;IAWrC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAOrB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,EAMzB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAOvC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAQrC;IAED;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAShD;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAQxB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAQvB;IAED,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAWnD,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,wBAAwB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAsCzE;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA0C3D;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAoB3D,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,QAAQ;CA2BjB"}
@@ -2,17 +2,21 @@ import { Node, NodeOptions } from '../Node';
2
2
  import { Point } from '../../types';
3
3
  export interface CustomShapeNodeOptions extends NodeOptions {
4
4
  path: Path2D | ((width: number, height: number) => Path2D);
5
+ shapeType?: string;
5
6
  }
6
7
  /**
7
8
  * Node with custom Path2D shape
8
9
  */
9
10
  export declare class CustomShapeNode extends Node {
10
11
  private _pathFactory;
12
+ private _shapeType?;
11
13
  private _cachedPath;
12
14
  private _cachedWidth;
13
15
  private _cachedHeight;
14
16
  constructor(options: CustomShapeNodeOptions);
15
17
  get typeName(): string;
18
+ get shapeType(): string | undefined;
19
+ set shapeType(value: string | undefined);
16
20
  /**
17
21
  * Set a new path factory
18
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CustomShapeNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/CustomShapeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CAC5D;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,IAAI;IACvC,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;gBAEd,OAAO,EAAE,sBAAsB;IAW3C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAMxE;;OAEG;IACH,OAAO,IAAI,MAAM;IAaR,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAyBvC,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAe5C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACc,MAAM,UAAU,MAAM,KAAG,MAAM;IAehD;;OAEG;2BACoB,MAAM,UAAU,MAAM,KAAG,MAAM;IAatD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;IAgBjD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;CAalD,CAAC"}
1
+ {"version":3,"file":"CustomShapeNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/CustomShapeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,IAAI;IACvC,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;gBAEd,OAAO,EAAE,sBAAsB;IAY3C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAKtC;IAED;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAMxE;;OAEG;IACH,OAAO,IAAI,MAAM;IAaR,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAyBvC,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAe5C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACc,MAAM,UAAU,MAAM,KAAG,MAAM;IAehD;;OAEG;2BACoB,MAAM,UAAU,MAAM,KAAG,MAAM;IAatD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;IAgBjD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;CAalD,CAAC"}
package/dist/papirus.js CHANGED
@@ -1993,12 +1993,30 @@ class TextLabel {
1993
1993
  get padding() {
1994
1994
  return this._padding;
1995
1995
  }
1996
+ set padding(value) {
1997
+ const next = Number.isFinite(value) ? Math.max(0, value) : this._padding;
1998
+ if (this._padding !== next) {
1999
+ this._padding = next;
2000
+ this._lines = [];
2001
+ this._measureDirty = true;
2002
+ this._onChange?.();
2003
+ }
2004
+ }
1996
2005
  /**
1997
2006
  * Label margin
1998
2007
  */
1999
2008
  get margin() {
2000
2009
  return this._margin;
2001
2010
  }
2011
+ set margin(value) {
2012
+ const next = Number.isFinite(value) ? Math.max(0, value) : this._margin;
2013
+ if (this._margin !== next) {
2014
+ this._margin = next;
2015
+ this._lines = [];
2016
+ this._measureDirty = true;
2017
+ this._onChange?.();
2018
+ }
2019
+ }
2002
2020
  applyStyleManager(styleManager) {
2003
2021
  const baseStyle = styleManager.getTextStyle(this._styleClass);
2004
2022
  const mergedStyle = { ...baseStyle, ...this._localStyle };
@@ -6134,6 +6152,7 @@ class Node extends Element {
6134
6152
  this._showPortsAlways = options.showPortsAlways ?? false;
6135
6153
  this._anchorPoints = this.normalizeAnchorPoints(options.anchorPoints);
6136
6154
  this._labelPlacement = options.labelPlacement ?? "auto";
6155
+ this._resizeHandlesEnabled = options.resizeHandlesEnabled ?? true;
6137
6156
  if (options.label !== void 0) {
6138
6157
  if (typeof options.label === "string") {
6139
6158
  this._label = new TextLabel({ text: options.label, onChange: () => this.markDirty() });
@@ -6295,6 +6314,15 @@ class Node extends Element {
6295
6314
  this.markDirty();
6296
6315
  }
6297
6316
  }
6317
+ get resizeHandlesEnabled() {
6318
+ return this._resizeHandlesEnabled;
6319
+ }
6320
+ set resizeHandlesEnabled(value) {
6321
+ if (this._resizeHandlesEnabled !== value) {
6322
+ this._resizeHandlesEnabled = value;
6323
+ this.markDirty();
6324
+ }
6325
+ }
6298
6326
  /**
6299
6327
  * Anchor points configuration (per side)
6300
6328
  */
@@ -6481,7 +6509,7 @@ class Node extends Element {
6481
6509
  * Render resize handles when selected
6482
6510
  */
6483
6511
  renderResizeHandles(ctx) {
6484
- if (this._state !== "selected") {
6512
+ if (this._state !== "selected" || !this._resizeHandlesEnabled) {
6485
6513
  return;
6486
6514
  }
6487
6515
  const bounds = this.getBounds();
@@ -7271,10 +7299,20 @@ class CustomShapeNode extends Node {
7271
7299
  } else {
7272
7300
  this._pathFactory = options.path;
7273
7301
  }
7302
+ this._shapeType = options.shapeType;
7274
7303
  }
7275
7304
  get typeName() {
7276
7305
  return "custom";
7277
7306
  }
7307
+ get shapeType() {
7308
+ return this._shapeType;
7309
+ }
7310
+ set shapeType(value) {
7311
+ if (this._shapeType !== value) {
7312
+ this._shapeType = value;
7313
+ this.markDirty();
7314
+ }
7315
+ }
7278
7316
  /**
7279
7317
  * Set a new path factory
7280
7318
  */
@@ -8066,6 +8104,7 @@ class SvgExporter {
8066
8104
  const padding = options.padding ?? 20;
8067
8105
  const includeBackground = options.includeBackground ?? true;
8068
8106
  const backgroundColor = options.backgroundColor ?? "#ffffff";
8107
+ const edgeLabelOffset = options.edgeLabelOffset ?? 0;
8069
8108
  const bounds = getContentBounds({
8070
8109
  nodes: this.renderer.nodes.values(),
8071
8110
  edges: this.renderer.edges.values(),
@@ -8085,10 +8124,17 @@ class SvgExporter {
8085
8124
  this.renderer.nodes.values()
8086
8125
  );
8087
8126
  const parts = [];
8127
+ const markerDefs = /* @__PURE__ */ new Map();
8128
+ const renderedEdges = [];
8088
8129
  parts.push(
8089
8130
  `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">`
8090
8131
  );
8091
- parts.push(this.arrowDefs());
8132
+ for (const edge of this.renderer.edges.values()) {
8133
+ if (edge.visible) {
8134
+ renderedEdges.push(this.renderEdge(edge, markerDefs, edgeLabelOffset));
8135
+ }
8136
+ }
8137
+ parts.push(this.buildDefs(markerDefs));
8092
8138
  if (includeBackground) {
8093
8139
  parts.push(`<rect width="100%" height="100%" fill="${backgroundColor}"/>`);
8094
8140
  }
@@ -8098,11 +8144,7 @@ class SvgExporter {
8098
8144
  parts.push(this.renderGroup(group));
8099
8145
  }
8100
8146
  }
8101
- for (const edge of this.renderer.edges.values()) {
8102
- if (edge.visible) {
8103
- parts.push(this.renderEdge(edge));
8104
- }
8105
- }
8147
+ parts.push(...renderedEdges);
8106
8148
  for (const node of this.renderer.nodes.values()) {
8107
8149
  if (node.visible) {
8108
8150
  parts.push(this.renderNode(node));
@@ -8180,7 +8222,7 @@ class SvgExporter {
8180
8222
  label
8181
8223
  ].join("");
8182
8224
  }
8183
- renderEdge(edge) {
8225
+ renderEdge(edge, markerDefs, edgeLabelOffset) {
8184
8226
  const path = edge.path;
8185
8227
  if (path.length < 2) {
8186
8228
  return "";
@@ -8193,11 +8235,59 @@ class SvgExporter {
8193
8235
  const dash = dashValues ? ` stroke-dasharray="${dashValues.join(" ")}"` : "";
8194
8236
  const dashOffset = style.lineDashOffset !== void 0 ? ` stroke-dashoffset="${style.lineDashOffset}"` : "";
8195
8237
  const d = this.buildPath(edge);
8196
- const markerEnd = edge.arrowType === "none" ? "" : ` marker-end="url(#arrow)"`;
8197
- const markerStart = edge.arrowType === "double" ? ` marker-start="url(#arrow)"` : "";
8198
- const label = edge.label ? this.renderTextLabel(edge.label.text, this.getPathMidpoint(edge), edge.label.style) : "";
8238
+ const startMarkerConfig = this.resolveMarkerConfig(edge, "start");
8239
+ const endMarkerConfig = this.resolveMarkerConfig(edge, "end");
8240
+ const markerStart = startMarkerConfig ? ` marker-start="url(#${this.ensureMarkerDef(markerDefs, startMarkerConfig, "start", stroke)})"` : "";
8241
+ const markerEnd = endMarkerConfig ? ` marker-end="url(#${this.ensureMarkerDef(markerDefs, endMarkerConfig, "end", stroke)})"` : "";
8242
+ const label = edge.label ? this.renderTextLabel(edge.label.text, this.getEdgeLabelPoint(edge, edgeLabelOffset), edge.label.style) : "";
8199
8243
  return `<path d="${d}" fill="none" stroke="${stroke}" stroke-width="${strokeWidth}" opacity="${opacity}" color="${stroke}"${dash}${dashOffset}${markerStart}${markerEnd}/>${label}`;
8200
8244
  }
8245
+ resolveMarkerConfig(edge, side) {
8246
+ const marker = side === "start" ? edge.startMarker : edge.endMarker;
8247
+ if (marker && marker.type !== "none") {
8248
+ return marker;
8249
+ }
8250
+ if (side === "end") {
8251
+ return edge.arrowType === "none" ? null : { type: "arrow" };
8252
+ }
8253
+ return edge.arrowType === "double" ? { type: "arrow" } : null;
8254
+ }
8255
+ ensureMarkerDef(markerDefs, marker, side, stroke) {
8256
+ const size = marker.size ?? 12;
8257
+ const markerStroke = marker.strokeColor ?? stroke;
8258
+ const markerFill = marker.fillColor ?? markerStroke;
8259
+ const fillOpacity = marker.fillOpacity ?? 1;
8260
+ const markerId = this.buildMarkerId(side, marker.type, size, markerFill, markerStroke, fillOpacity);
8261
+ if (!markerDefs.has(markerId)) {
8262
+ const refX = marker.type === "circle" ? 5 : 10;
8263
+ markerDefs.set(
8264
+ markerId,
8265
+ [
8266
+ `<marker id="${markerId}" viewBox="0 0 10 10" refX="${refX}" refY="5" markerWidth="${size}" markerHeight="${size}" orient="auto-start-reverse" markerUnits="userSpaceOnUse">`,
8267
+ this.renderMarkerShape(marker, markerFill, markerStroke, fillOpacity),
8268
+ `</marker>`
8269
+ ].join("")
8270
+ );
8271
+ }
8272
+ return markerId;
8273
+ }
8274
+ buildMarkerId(side, type, size, fill, stroke, fillOpacity) {
8275
+ const token = `${side}-${type}-${size}-${fill}-${stroke}-${fillOpacity}`.toLowerCase().replace(/[^a-z0-9_-]+/g, "-");
8276
+ return `marker-${token}`;
8277
+ }
8278
+ renderMarkerShape(marker, fill, stroke, fillOpacity) {
8279
+ switch (marker.type) {
8280
+ case "open":
8281
+ return `<path d="M 10 0 L 0 5 L 10 10" fill="none" stroke="${stroke}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`;
8282
+ case "diamond":
8283
+ return `<path d="M 10 5 L 5 0 L 0 5 L 5 10 z" fill="${fill}" fill-opacity="${fillOpacity}" stroke="${stroke}" stroke-width="1"/>`;
8284
+ case "circle":
8285
+ return `<circle cx="5" cy="5" r="4" fill="${fill}" fill-opacity="${fillOpacity}" stroke="${stroke}" stroke-width="1"/>`;
8286
+ case "arrow":
8287
+ default:
8288
+ return `<path d="M 0 0 L 10 5 L 0 10 z" fill="${fill}" fill-opacity="${fillOpacity}" stroke="${stroke}" stroke-width="1"/>`;
8289
+ }
8290
+ }
8201
8291
  buildPath(edge) {
8202
8292
  const path = edge.path;
8203
8293
  if (edge.type === "bezier" && path.length >= 4) {
@@ -8246,6 +8336,13 @@ class SvgExporter {
8246
8336
  }
8247
8337
  return path[0];
8248
8338
  }
8339
+ getEdgeLabelPoint(edge, edgeLabelOffset) {
8340
+ const midpoint = this.getPathMidpoint(edge);
8341
+ return {
8342
+ x: midpoint.x,
8343
+ y: midpoint.y + edgeLabelOffset
8344
+ };
8345
+ }
8249
8346
  renderTextLabel(text, point, style = {}) {
8250
8347
  const fill = style.color ?? "#000000";
8251
8348
  const fontSize = style.fontSize ?? 14;
@@ -8257,14 +8354,11 @@ class SvgExporter {
8257
8354
  text
8258
8355
  )}</text>`;
8259
8356
  }
8260
- arrowDefs() {
8261
- return [
8262
- "<defs>",
8263
- '<marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">',
8264
- '<path d="M 0 0 L 10 5 L 0 10 z" fill="currentColor"/>',
8265
- "</marker>",
8266
- "</defs>"
8267
- ].join("");
8357
+ buildDefs(markerDefs) {
8358
+ if (markerDefs.size === 0) {
8359
+ return "<defs></defs>";
8360
+ }
8361
+ return `<defs>${Array.from(markerDefs.values()).join("")}</defs>`;
8268
8362
  }
8269
8363
  createEmptySvg(width, height, backgroundColor, includeBackground) {
8270
8364
  return [