@ngroznykh/papirus 0.6.3 → 0.6.4

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.
@@ -8,6 +8,12 @@ export interface CompositeNodeOptions extends NodeOptions {
8
8
  shapeType?: CompositeShapeType;
9
9
  cornerRadius?: number;
10
10
  pathFactory?: (width: number, height: number) => Path2D;
11
+ /**
12
+ * SVG path string for export. Required for correct SVG export of custom shapes.
13
+ * Path coordinates are in local space (0,0 = top-left, width×height = node bounds).
14
+ * If omitted, SVG export falls back to a rectangle.
15
+ */
16
+ svgPath?: string | ((width: number, height: number) => string);
11
17
  autoSize?: boolean;
12
18
  minWidth?: number;
13
19
  minHeight?: number;
@@ -21,6 +27,7 @@ export declare class CompositeNode extends Node {
21
27
  private _shapeType;
22
28
  private _cornerRadius;
23
29
  private _pathFactory?;
30
+ private _svgPathFactory;
24
31
  private _autoSize;
25
32
  private _minWidth;
26
33
  private _minHeight;
@@ -29,6 +36,10 @@ export declare class CompositeNode extends Node {
29
36
  get content(): CContainer;
30
37
  get shapeType(): CompositeShapeType;
31
38
  get cornerRadius(): number;
39
+ /**
40
+ * Get SVG path string for export. Returns null if svgPath was not provided.
41
+ */
42
+ getSvgPath(): string | null;
32
43
  get autoSize(): boolean;
33
44
  set autoSize(value: boolean);
34
45
  get minWidth(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeNode.d.ts","sourceRoot":"","sources":["../../../src/elements/composite/CompositeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,IAAI;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAA4C;IACjE,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,oBAAoB;IAczC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,OAAO,IAAI,UAAU,CAExB;IAED,IAAI,SAAS,IAAI,kBAAkB,CAElC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAK1B;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAKhD;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI;IAKzD,OAAO,CAAC,gBAAgB;IAMf,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAWvC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,cAAc;IAUtB,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IA4B3C,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,aAAa;cAyBF,cAAc,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IAWtE,OAAO,CAAC,aAAa;IAyBZ,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAmCxD;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAGvD"}
1
+ {"version":3,"file":"CompositeNode.d.ts","sourceRoot":"","sources":["../../../src/elements/composite/CompositeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACxD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,IAAI;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAA4C;IACjE,OAAO,CAAC,eAAe,CAA4D;IACnF,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,oBAAoB;IAsBzC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,OAAO,IAAI,UAAU,CAExB;IAED,IAAI,SAAS,IAAI,kBAAkB,CAElC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAO3B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAK1B;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAKhD;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI;IAKzD,OAAO,CAAC,gBAAgB;IAMf,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAWvC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,cAAc;IAUtB,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IA4B3C,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,aAAa;cAyBF,cAAc,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IAWtE,OAAO,CAAC,aAAa;IAyBZ,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAmCxD;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAGvD"}
package/dist/papirus.js CHANGED
@@ -11335,10 +11335,15 @@ function deserializeCComponent(data) {
11335
11335
  var CompositeNode = class extends Node {
11336
11336
  constructor(options) {
11337
11337
  super(options);
11338
+ this._svgPathFactory = null;
11338
11339
  this._content = options.content;
11339
11340
  this._shapeType = options.shapeType ?? "rectangle";
11340
11341
  this._cornerRadius = options.cornerRadius ?? 0;
11341
11342
  this._pathFactory = options.pathFactory;
11343
+ if (options.svgPath !== void 0) if (typeof options.svgPath === "string") {
11344
+ const staticSvg = options.svgPath;
11345
+ this._svgPathFactory = () => staticSvg;
11346
+ } else this._svgPathFactory = options.svgPath;
11342
11347
  this._autoSize = options.autoSize ?? false;
11343
11348
  this._minWidth = options.minWidth ?? 0;
11344
11349
  this._minHeight = options.minHeight ?? 0;
@@ -11356,6 +11361,13 @@ var CompositeNode = class extends Node {
11356
11361
  get cornerRadius() {
11357
11362
  return this._cornerRadius;
11358
11363
  }
11364
+ /**
11365
+ * Get SVG path string for export. Returns null if svgPath was not provided.
11366
+ */
11367
+ getSvgPath() {
11368
+ if (this._svgPathFactory === null) return null;
11369
+ return this._svgPathFactory(this._width, this._height);
11370
+ }
11359
11371
  get autoSize() {
11360
11372
  return this._autoSize;
11361
11373
  }
@@ -12575,6 +12587,15 @@ var SvgExporter = class {
12575
12587
  ].join(" ")}"`;
12576
12588
  break;
12577
12589
  }
12590
+ case "custom": {
12591
+ const svgPath = cn.getSvgPath();
12592
+ if (svgPath) shape = `<path d="${this.escapeAttribute(svgPath)}" transform="translate(${bounds.x}, ${bounds.y})"`;
12593
+ else {
12594
+ const radius = cn.cornerRadius;
12595
+ shape = `<rect x="${bounds.x}" y="${bounds.y}" width="${bounds.width}" height="${bounds.height}" rx="${radius}" ry="${radius}"`;
12596
+ }
12597
+ break;
12598
+ }
12578
12599
  default: {
12579
12600
  const radius = cn.cornerRadius;
12580
12601
  shape = `<rect x="${bounds.x}" y="${bounds.y}" width="${bounds.width}" height="${bounds.height}" rx="${radius}" ry="${radius}"`;