@plait/draw 0.1.0-next.6 → 0.1.0-next.8

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.
Files changed (41) hide show
  1. package/esm2022/constants/geometry.mjs +4 -3
  2. package/esm2022/generators/geometry-shape.generator.mjs +23 -0
  3. package/esm2022/generators/line-active.generator.mjs +36 -0
  4. package/esm2022/generators/line.generator.mjs +22 -0
  5. package/esm2022/geometry.component.mjs +13 -11
  6. package/esm2022/interfaces/geometry.mjs +5 -2
  7. package/esm2022/interfaces/line.mjs +9 -1
  8. package/esm2022/line.component.mjs +3 -3
  9. package/esm2022/plugins/with-draw-fragment.mjs +5 -10
  10. package/esm2022/plugins/with-draw-hotkey.mjs +7 -3
  11. package/esm2022/plugins/with-draw.mjs +3 -3
  12. package/esm2022/plugins/with-geometry-create.mjs +5 -6
  13. package/esm2022/plugins/with-geometry-resize.mjs +5 -5
  14. package/esm2022/plugins/with-line-bound-reaction.mjs +5 -7
  15. package/esm2022/plugins/with-line-create.mjs +4 -4
  16. package/esm2022/plugins/with-line-text.mjs +3 -3
  17. package/esm2022/public-api.mjs +2 -1
  18. package/esm2022/transforms/index.mjs +4 -3
  19. package/esm2022/transforms/line.mjs +8 -1
  20. package/esm2022/utils/geometry.mjs +8 -8
  21. package/esm2022/utils/line-arrow.mjs +89 -0
  22. package/esm2022/utils/line.mjs +51 -46
  23. package/fesm2022/plait-draw.mjs +196 -109
  24. package/fesm2022/plait-draw.mjs.map +1 -1
  25. package/geometry.component.d.ts +5 -5
  26. package/interfaces/geometry.d.ts +1 -0
  27. package/interfaces/line.d.ts +8 -1
  28. package/line.component.d.ts +2 -2
  29. package/package.json +1 -1
  30. package/public-api.d.ts +1 -0
  31. package/transforms/index.d.ts +1 -0
  32. package/transforms/line.d.ts +2 -1
  33. package/utils/geometry.d.ts +1 -1
  34. package/utils/line-arrow.d.ts +4 -0
  35. package/utils/line.d.ts +3 -3
  36. package/esm2022/generator/geometry-shape.generator.mjs +0 -22
  37. package/esm2022/generator/line-active.generator.mjs +0 -36
  38. package/esm2022/generator/line.generator.mjs +0 -43
  39. /package/{generator → generators}/geometry-shape.generator.d.ts +0 -0
  40. /package/{generator → generators}/line-active.generator.d.ts +0 -0
  41. /package/{generator → generators}/line.generator.d.ts +0 -0
@@ -1,18 +1,18 @@
1
1
  import { ChangeDetectorRef, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
2
- import { PlaitBoard, PlaitPluginElementComponent, PlaitPluginElementContext, OnContextChanged } from '@plait/core';
2
+ import { PlaitBoard, PlaitPluginElementContext, OnContextChanged } from '@plait/core';
3
3
  import { Subject } from 'rxjs';
4
4
  import { PlaitGeometry } from './interfaces/geometry';
5
- import { GeometryShapeGenerator } from './generator/geometry-shape.generator';
5
+ import { GeometryShapeGenerator } from './generators/geometry-shape.generator';
6
6
  import { TextManage } from '@plait/text';
7
- import { ActiveGenerator } from '@plait/common';
7
+ import { ActiveGenerator, CommonPluginElement } from '@plait/common';
8
8
  import * as i0 from "@angular/core";
9
- export declare class GeometryComponent extends PlaitPluginElementComponent<PlaitGeometry, PlaitBoard> implements OnInit, OnDestroy, OnContextChanged<PlaitGeometry, PlaitBoard> {
9
+ export declare class GeometryComponent extends CommonPluginElement<PlaitGeometry, PlaitBoard> implements OnInit, OnDestroy, OnContextChanged<PlaitGeometry, PlaitBoard> {
10
10
  private viewContainerRef;
11
11
  protected cdr: ChangeDetectorRef;
12
12
  destroy$: Subject<void>;
13
13
  activeGenerator: ActiveGenerator<PlaitGeometry>;
14
14
  shapeGenerator: GeometryShapeGenerator;
15
- textManage: TextManage;
15
+ get textManage(): TextManage;
16
16
  constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef);
17
17
  initializeGenerator(): void;
18
18
  ngOnInit(): void;
@@ -34,6 +34,7 @@ export interface PlaitDiamond extends PlaitGeometry {
34
34
  }
35
35
  export declare const PlaitGeometry: {
36
36
  getTextEditor(element: PlaitGeometry): import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor;
37
+ getTextManage(element: PlaitGeometry): import("@plait/text").TextManage;
37
38
  };
38
39
  export interface ShapeEngine {
39
40
  isHit: (rectangle: RectangleClient, point: Point) => boolean;
@@ -4,13 +4,20 @@ import { PlaitGeometry } from './geometry';
4
4
  import { StrokeStyle } from './element';
5
5
  export declare enum LineMarkerType {
6
6
  arrow = "arrow",
7
- none = "none"
7
+ none = "none",
8
+ openTriangle = "open-triangle",
9
+ solidTriangle = "solid-triangle",
10
+ sharpArrow = "sharp-arrow"
8
11
  }
9
12
  export declare enum LineShape {
10
13
  straight = "straight",
11
14
  curve = "curve",
12
15
  elbow = "elbow"
13
16
  }
17
+ export declare enum LineHandleKey {
18
+ source = "source",
19
+ target = "target"
20
+ }
14
21
  export interface LineText {
15
22
  text: Element;
16
23
  position: number;
@@ -3,8 +3,8 @@ import { PlaitBoard, PlaitPluginElementComponent, PlaitPluginElementContext, OnC
3
3
  import { Subject } from 'rxjs';
4
4
  import { LineText, PlaitGeometry, PlaitLine } from './interfaces';
5
5
  import { TextManage } from '@plait/text';
6
- import { LineShapeGenerator } from './generator/line.generator';
7
- import { LineActiveGenerator } from './generator/line-active.generator';
6
+ import { LineShapeGenerator } from './generators/line.generator';
7
+ import { LineActiveGenerator } from './generators/line-active.generator';
8
8
  import * as i0 from "@angular/core";
9
9
  interface BoundedElements {
10
10
  source?: PlaitGeometry;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plait/draw",
3
- "version": "0.1.0-next.6",
3
+ "version": "0.1.0-next.8",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.0.0",
6
6
  "@angular/core": "^16.0.0"
package/public-api.d.ts CHANGED
@@ -4,3 +4,4 @@ export * from './constants';
4
4
  export * from './utils';
5
5
  export * from './geometry.component';
6
6
  export * from './line.component';
7
+ export * from './transforms';
@@ -7,4 +7,5 @@ export declare const DrawTransforms: {
7
7
  resizeLine: (board: import("@plait/core").PlaitBoard, options: Partial<import("@plait/draw").PlaitLine>, path: import("@plait/core").Path) => void;
8
8
  setLineTexts: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitLine, texts: import("@plait/draw").LineText[]) => void;
9
9
  removeLineText: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitLine, index: number) => void;
10
+ setLineMark: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitLine, handleKey: import("@plait/draw").LineHandleKey, marker: import("@plait/draw").LineMarkerType) => void;
10
11
  };
@@ -1,5 +1,6 @@
1
1
  import { Path, PlaitBoard } from '@plait/core';
2
- import { LineText, PlaitLine } from '../interfaces';
2
+ import { LineHandleKey, LineMarkerType, LineText, PlaitLine } from '../interfaces';
3
3
  export declare const resizeLine: (board: PlaitBoard, options: Partial<PlaitLine>, path: Path) => void;
4
4
  export declare const setLineTexts: (board: PlaitBoard, element: PlaitLine, texts: LineText[]) => void;
5
5
  export declare const removeLineText: (board: PlaitBoard, element: PlaitLine, index: number) => void;
6
+ export declare const setLineMark: (board: PlaitBoard, element: PlaitLine, handleKey: LineHandleKey, marker: LineMarkerType) => void;
@@ -12,5 +12,5 @@ export declare const getTextRectangle: (element: PlaitGeometry) => {
12
12
  };
13
13
  export declare const drawBoundMask: (board: PlaitBoard, element: PlaitGeometry) => SVGGElement;
14
14
  export declare const drawGeometry: (board: PlaitBoard, outerRectangle: RectangleClient, shape: GeometryShape, options: Options) => SVGGElement;
15
- export declare const getNearestPoint: (element: PlaitGeometry, point: Point, offset?: number) => Point;
15
+ export declare const getNearestPoint: (element: PlaitGeometry, point: Point, inflateDelta?: number) => Point;
16
16
  export declare const getCenterPointsOnPolygon: (points: Point[]) => Point[];
@@ -0,0 +1,4 @@
1
+ import { Point } from '@plait/core';
2
+ import { PlaitLine } from '../interfaces';
3
+ import { Options } from 'roughjs/bin/core';
4
+ export declare const drawLineArrow: (element: PlaitLine, points: Point[], options: Options) => SVGGElement | null;
package/utils/line.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { Point, PlaitBoard, RectangleClient } from '@plait/core';
2
2
  import { LineHandle, LineShape, PlaitGeometry, PlaitLine } from '../interfaces';
3
- import { Options } from 'roughjs/bin/core';
4
3
  export declare const createLineElement: (shape: LineShape, points: [Point, Point], source: LineHandle, target: LineHandle, options?: Pick<PlaitLine, 'strokeColor' | 'strokeWidth'>) => PlaitLine;
4
+ export declare const getLinePoints: (board: PlaitBoard, element: PlaitLine) => Point[];
5
+ export declare const getStraightPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
5
6
  export declare const getElbowPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
6
7
  export declare const isHitPolyLine: (pathPoints: Point[], point: Point, strokeWidth: number, expand?: number) => boolean;
7
8
  export declare const getHitLineTextIndex: (board: PlaitBoard, element: PlaitLine, point: Point) => number;
8
9
  export declare const isHitLineText: (board: PlaitBoard, element: PlaitLine, point: Point) => boolean;
9
- export declare const drawElbowLine: (board: PlaitBoard, element: PlaitLine) => SVGGElement;
10
- export declare const drawLineArrow: (element: PlaitLine, points: Point[], options: Options) => SVGGElement | null;
10
+ export declare const drawLine: (board: PlaitBoard, element: PlaitLine) => SVGGElement;
11
11
  export declare const getSourcePoint: (board: PlaitBoard, element: PlaitLine) => Point;
12
12
  export declare const getTargetPoint: (board: PlaitBoard, element: PlaitLine) => Point;
13
13
  export declare const getConnectionPoint: (geometry: PlaitGeometry, connection: Point, offset: number) => Point;
@@ -1,22 +0,0 @@
1
- import { GeometryShape } from '../interfaces';
2
- import { getRectangleByPoints, Generator } from '@plait/common';
3
- import { getFillByElement, getLineDashByElement, getStrokeColorByElement, getStrokeWidthByElement } from '../utils/style/stroke';
4
- import { drawGeometry } from '../utils';
5
- export class GeometryShapeGenerator extends Generator {
6
- canDraw(element, data) {
7
- return true;
8
- }
9
- baseDraw(element, data) {
10
- const outerRectangle = getRectangleByPoints(element.points);
11
- const shape = element.shape;
12
- if (shape === GeometryShape.text) {
13
- return;
14
- }
15
- const strokeWidth = getStrokeWidthByElement(element);
16
- const strokeColor = getStrokeColorByElement(element);
17
- const fill = getFillByElement(element);
18
- const strokeLineDash = getLineDashByElement(element);
19
- return drawGeometry(this.board, outerRectangle, shape, { stroke: strokeColor, strokeWidth, fill, strokeLineDash });
20
- }
21
- }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnktc2hhcGUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9yL2dlb21ldHJ5LXNoYXBlLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFNBQW1DO0lBQzNFLE9BQU8sQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDNUMsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxLQUFLLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRTtZQUM5QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN2SCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeVNoYXBlLCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeVBvaW50cywgR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRGaWxsQnlFbGVtZW50LCBnZXRMaW5lRGFzaEJ5RWxlbWVudCwgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQsIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IGRyYXdHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge31cblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5U2hhcGVHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeSwgU2hhcGVEYXRhPiB7XG4gICAgY2FuRHJhdyhlbGVtZW50OiBQbGFpdEdlb21ldHJ5LCBkYXRhOiBTaGFwZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmFzZURyYXcoZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgZGF0YTogU2hhcGVEYXRhKSB7XG4gICAgICAgIGNvbnN0IG91dGVyUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGVsZW1lbnQuc2hhcGU7XG4gICAgICAgIGlmIChzaGFwZSA9PT0gR2VvbWV0cnlTaGFwZS50ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBnZXRTdHJva2VDb2xvckJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHN0cm9rZUxpbmVEYXNoID0gZ2V0TGluZURhc2hCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBkcmF3R2VvbWV0cnkodGhpcy5ib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIHNoYXBlLCB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBmaWxsLCBzdHJva2VMaW5lRGFzaCB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { PlaitBoard, createG, drawCircle } from '@plait/core';
2
- import { Generator, RESIZE_HANDLE_DIAMETER } from '@plait/common';
3
- import { getSourcePoint, getTargetPoint } from '../utils';
4
- export class LineActiveGenerator extends Generator {
5
- canDraw(element, data) {
6
- if (data.selected) {
7
- return true;
8
- }
9
- else {
10
- return false;
11
- }
12
- }
13
- baseDraw(element, data) {
14
- const activeG = createG();
15
- activeG.classList.add('active');
16
- activeG.classList.add('line-handle');
17
- const sourcePoint = getSourcePoint(this.board, element);
18
- const targetPoint = getTargetPoint(this.board, element);
19
- const sourceCircle = drawCircle(PlaitBoard.getRoughSVG(this.board), sourcePoint, RESIZE_HANDLE_DIAMETER, {
20
- stroke: '#999999',
21
- strokeWidth: 1,
22
- fill: '#FFF',
23
- fillStyle: 'solid'
24
- });
25
- const targetCircle = drawCircle(PlaitBoard.getRoughSVG(this.board), targetPoint, RESIZE_HANDLE_DIAMETER, {
26
- stroke: '#999999',
27
- strokeWidth: 1,
28
- fill: '#FFF',
29
- fillStyle: 'solid'
30
- });
31
- activeG.appendChild(targetCircle);
32
- activeG.appendChild(sourceCircle);
33
- return activeG;
34
- }
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9yL2xpbmUtYWN0aXZlLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU0xRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsU0FBZ0M7SUFDckUsT0FBTyxDQUFDLE9BQWtCLEVBQUUsSUFBZ0I7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWtCLEVBQUUsSUFBZ0I7UUFDekMsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNyRyxNQUFNLEVBQUUsU0FBUztZQUNqQixXQUFXLEVBQUUsQ0FBQztZQUNkLElBQUksRUFBRSxNQUFNO1lBQ1osU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNyRyxNQUFNLEVBQUUsU0FBUztZQUNqQixXQUFXLEVBQUUsQ0FBQztZQUNkLElBQUksRUFBRSxNQUFNO1lBQ1osU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIGNyZWF0ZUcsIGRyYXdDaXJjbGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlbmVyYXRvciwgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0U291cmNlUG9pbnQsIGdldFRhcmdldFBvaW50IH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZURhdGEge1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTGluZUFjdGl2ZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIEFjdGl2ZURhdGE+IHtcbiAgICBjYW5EcmF3KGVsZW1lbnQ6IFBsYWl0TGluZSwgZGF0YTogQWN0aXZlRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZGF0YS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiYXNlRHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBTVkdHRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGFjdGl2ZUcuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgICAgIGFjdGl2ZUcuY2xhc3NMaXN0LmFkZCgnbGluZS1oYW5kbGUnKTtcbiAgICAgICAgY29uc3Qgc291cmNlUG9pbnQgPSBnZXRTb3VyY2VQb2ludCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSBnZXRUYXJnZXRQb2ludCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc291cmNlQ2lyY2xlID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLCBzb3VyY2VQb2ludCwgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiwge1xuICAgICAgICAgICAgc3Ryb2tlOiAnIzk5OTk5OScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q2lyY2xlID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLCB0YXJnZXRQb2ludCwgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiwge1xuICAgICAgICAgICAgc3Ryb2tlOiAnIzk5OTk5OScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZCh0YXJnZXRDaXJjbGUpO1xuICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKHNvdXJjZUNpcmNsZSk7XG4gICAgICAgIHJldHVybiBhY3RpdmVHO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,43 +0,0 @@
1
- import { LineShape } from '../interfaces';
2
- import { Generator, getRectangleByPoints } from '@plait/common';
3
- import { drawElbowLine, getElbowPoints, getLineTextRectangle } from '../utils';
4
- import { RectangleClient, createMask, createRect } from '@plait/core';
5
- export class LineShapeGenerator extends Generator {
6
- canDraw(element, data) {
7
- return true;
8
- }
9
- baseDraw(element, data) {
10
- const shape = element.shape;
11
- let lineG;
12
- switch (shape) {
13
- case LineShape.elbow:
14
- lineG = drawElbowLine(this.board, element);
15
- drawMask(this.board, lineG, element);
16
- break;
17
- default:
18
- break;
19
- }
20
- return lineG;
21
- }
22
- }
23
- function drawMask(board, g, element) {
24
- const mask = createMask();
25
- mask.setAttribute('id', element.id);
26
- const points = getElbowPoints(board, element);
27
- let rectangle = getRectangleByPoints(points);
28
- rectangle = RectangleClient.getOutlineRectangle(rectangle, -3);
29
- const maskRect = createRect(rectangle, {
30
- fill: 'white'
31
- });
32
- mask.appendChild(maskRect);
33
- const texts = element.texts;
34
- texts.forEach((text, index) => {
35
- const textRectangle = getLineTextRectangle(board, element, index);
36
- const rect = createRect(textRectangle, {
37
- fill: 'black'
38
- });
39
- mask.appendChild(rect);
40
- });
41
- g.appendChild(mask);
42
- }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3IvbGluZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9FLE9BQU8sRUFBYyxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlsRixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBK0I7SUFDbkUsT0FBTyxDQUFDLE9BQWtCLEVBQUUsSUFBZTtRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWtCLEVBQUUsSUFBZTtRQUN4QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBOEIsQ0FBQztRQUNuQyxRQUFRLEtBQUssRUFBRTtZQUNYLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ2hCLEtBQUssR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0MsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTTtTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBaUIsRUFBRSxDQUFhLEVBQUUsT0FBa0I7SUFDbEUsTUFBTSxJQUFJLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsSUFBSSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsU0FBUyxHQUFHLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFO1FBQ25DLElBQUksRUFBRSxPQUFPO0tBQ2hCLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFCLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEUsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxJQUFJLEVBQUUsT0FBTztTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlbmVyYXRvciwgZ2V0UmVjdGFuZ2xlQnlQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGRyYXdFbGJvd0xpbmUsIGdldEVsYm93UG9pbnRzLCBnZXRMaW5lVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgY3JlYXRlTWFzaywgY3JlYXRlUmVjdCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge31cblxuZXhwb3J0IGNsYXNzIExpbmVTaGFwZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIFNoYXBlRGF0YT4ge1xuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBTaGFwZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmFzZURyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBTaGFwZURhdGEpIHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBlbGVtZW50LnNoYXBlO1xuICAgICAgICBsZXQgbGluZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgICAgICAgICBjYXNlIExpbmVTaGFwZS5lbGJvdzpcbiAgICAgICAgICAgICAgICBsaW5lRyA9IGRyYXdFbGJvd0xpbmUodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZHJhd01hc2sodGhpcy5ib2FyZCwgbGluZUcsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGluZUc7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmF3TWFzayhib2FyZDogUGxhaXRCb2FyZCwgZzogU1ZHRWxlbWVudCwgZWxlbWVudDogUGxhaXRMaW5lKSB7XG4gICAgY29uc3QgbWFzayA9IGNyZWF0ZU1hc2soKTtcbiAgICBtYXNrLnNldEF0dHJpYnV0ZSgnaWQnLCBlbGVtZW50LmlkKTtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG4gICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldE91dGxpbmVSZWN0YW5nbGUocmVjdGFuZ2xlLCAtMyk7XG4gICAgY29uc3QgbWFza1JlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSwge1xuICAgICAgICBmaWxsOiAnd2hpdGUnXG4gICAgfSk7XG4gICAgbWFzay5hcHBlbmRDaGlsZChtYXNrUmVjdCk7XG5cbiAgICBjb25zdCB0ZXh0cyA9IGVsZW1lbnQudGV4dHM7XG4gICAgdGV4dHMuZm9yRWFjaCgodGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dFJlY3RhbmdsZSA9IGdldExpbmVUZXh0UmVjdGFuZ2xlKGJvYXJkLCBlbGVtZW50LCBpbmRleCk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBjcmVhdGVSZWN0KHRleHRSZWN0YW5nbGUsIHtcbiAgICAgICAgICAgIGZpbGw6ICdibGFjaydcbiAgICAgICAgfSk7XG4gICAgICAgIG1hc2suYXBwZW5kQ2hpbGQocmVjdCk7XG4gICAgfSk7XG4gICAgZy5hcHBlbmRDaGlsZChtYXNrKTtcbn1cbiJdfQ==
File without changes