@plait/draw 0.1.0-next.5 → 0.1.0-next.7

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/generators/geometry-shape.generator.mjs +22 -0
  2. package/esm2022/generators/line-active.generator.mjs +36 -0
  3. package/esm2022/generators/line.generator.mjs +45 -0
  4. package/esm2022/geometry.component.mjs +7 -5
  5. package/esm2022/interfaces/element.mjs +6 -0
  6. package/esm2022/interfaces/geometry.mjs +1 -1
  7. package/esm2022/interfaces/index.mjs +2 -1
  8. package/esm2022/interfaces/line.mjs +1 -1
  9. package/esm2022/line.component.mjs +3 -3
  10. package/esm2022/plugins/with-draw-fragment.mjs +5 -10
  11. package/esm2022/plugins/with-draw-hotkey.mjs +7 -3
  12. package/esm2022/plugins/with-draw.mjs +4 -4
  13. package/esm2022/plugins/with-geometry-create.mjs +2 -2
  14. package/esm2022/plugins/with-line-bound-reaction.mjs +2 -2
  15. package/esm2022/plugins/with-line-create.mjs +2 -2
  16. package/esm2022/plugins/with-line-text.mjs +3 -3
  17. package/esm2022/utils/geometry.mjs +2 -2
  18. package/esm2022/utils/index.mjs +2 -1
  19. package/esm2022/utils/line.mjs +18 -13
  20. package/esm2022/utils/style/index.mjs +2 -0
  21. package/esm2022/utils/style/stroke.mjs +21 -0
  22. package/fesm2022/plait-draw.mjs +43 -25
  23. package/fesm2022/plait-draw.mjs.map +1 -1
  24. package/geometry.component.d.ts +1 -1
  25. package/interfaces/element.d.ts +4 -0
  26. package/interfaces/geometry.d.ts +1 -1
  27. package/interfaces/index.d.ts +1 -0
  28. package/interfaces/line.d.ts +1 -1
  29. package/line.component.d.ts +2 -2
  30. package/package.json +1 -1
  31. package/utils/index.d.ts +1 -0
  32. package/utils/line.d.ts +3 -1
  33. package/utils/style/index.d.ts +1 -0
  34. package/utils/{geometry-style → style}/stroke.d.ts +2 -1
  35. package/esm2022/generator/geometry-shape.generator.mjs +0 -22
  36. package/esm2022/generator/line-active.generator.mjs +0 -36
  37. package/esm2022/generator/line.generator.mjs +0 -43
  38. package/esm2022/utils/geometry-style/stroke.mjs +0 -17
  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
@@ -2,7 +2,7 @@ import { ChangeDetectorRef, OnDestroy, OnInit, ViewContainerRef } from '@angular
2
2
  import { PlaitBoard, PlaitPluginElementComponent, 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
7
  import { ActiveGenerator } from '@plait/common';
8
8
  import * as i0 from "@angular/core";
@@ -0,0 +1,4 @@
1
+ export declare enum StrokeStyle {
2
+ solid = "solid",
3
+ dashed = "dashed"
4
+ }
@@ -1,7 +1,7 @@
1
1
  import { PlaitBoard, PlaitElement, Point, RectangleClient } from '@plait/core';
2
2
  import { Options } from 'roughjs/bin/core';
3
- import { StrokeStyle } from './line';
4
3
  import { ParagraphElement } from '@plait/text';
4
+ import { StrokeStyle } from './element';
5
5
  export declare enum GeometryShape {
6
6
  rectangle = "rectangle",
7
7
  ellipse = "ellipse",
@@ -4,6 +4,7 @@ import { PlaitText } from './text';
4
4
  export * from './line';
5
5
  export * from './geometry';
6
6
  export * from './text';
7
+ export * from './element';
7
8
  export type PlaitDrawElement = PlaitGeometry | PlaitLine;
8
9
  export declare const PlaitDrawElement: {
9
10
  isGeometry: (value: any) => value is PlaitGeometry;
@@ -1,6 +1,7 @@
1
1
  import { PlaitElement, Point } from '@plait/core';
2
2
  import { Element } from 'slate';
3
3
  import { PlaitGeometry } from './geometry';
4
+ import { StrokeStyle } from './element';
4
5
  export declare enum LineMarkerType {
5
6
  arrow = "arrow",
6
7
  none = "none"
@@ -33,7 +34,6 @@ export interface PlaitLine extends PlaitElement {
33
34
  strokeStyle?: StrokeStyle;
34
35
  opacity: number;
35
36
  }
36
- export type StrokeStyle = 'solid' | 'dashed';
37
37
  export interface PlaitStraightLine extends PlaitLine {
38
38
  shape: LineShape.straight;
39
39
  }
@@ -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.5",
3
+ "version": "0.1.0-next.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.0.0",
6
6
  "@angular/core": "^16.0.0"
package/utils/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './line';
2
2
  export * from './geometry';
3
3
  export * from './selected';
4
+ export * from './style';
package/utils/line.d.ts CHANGED
@@ -2,11 +2,13 @@ import { Point, PlaitBoard, RectangleClient } from '@plait/core';
2
2
  import { LineHandle, LineShape, PlaitGeometry, PlaitLine } from '../interfaces';
3
3
  import { Options } from 'roughjs/bin/core';
4
4
  export declare const createLineElement: (shape: LineShape, points: [Point, Point], source: LineHandle, target: LineHandle, options?: Pick<PlaitLine, 'strokeColor' | 'strokeWidth'>) => PlaitLine;
5
+ export declare const getLinePoints: (board: PlaitBoard, element: PlaitLine) => Point[];
6
+ export declare const getStraightPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
5
7
  export declare const getElbowPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
6
8
  export declare const isHitPolyLine: (pathPoints: Point[], point: Point, strokeWidth: number, expand?: number) => boolean;
7
9
  export declare const getHitLineTextIndex: (board: PlaitBoard, element: PlaitLine, point: Point) => number;
8
10
  export declare const isHitLineText: (board: PlaitBoard, element: PlaitLine, point: Point) => boolean;
9
- export declare const drawElbowLine: (board: PlaitBoard, element: PlaitLine) => SVGGElement;
11
+ export declare const drawLine: (board: PlaitBoard, element: PlaitLine) => SVGGElement;
10
12
  export declare const drawLineArrow: (element: PlaitLine, points: Point[], options: Options) => SVGGElement | null;
11
13
  export declare const getSourcePoint: (board: PlaitBoard, element: PlaitLine) => Point;
12
14
  export declare const getTargetPoint: (board: PlaitBoard, element: PlaitLine) => Point;
@@ -0,0 +1 @@
1
+ export * from './stroke';
@@ -1,5 +1,6 @@
1
- import { PlaitGeometry, PlaitLine } from '../../interfaces';
1
+ import { PlaitGeometry, PlaitLine, StrokeStyle } from '../../interfaces';
2
2
  export declare const getStrokeWidthByElement: (element: PlaitGeometry | PlaitLine) => number;
3
3
  export declare const getStrokeColorByElement: (element: PlaitGeometry | PlaitLine) => string;
4
4
  export declare const getFillByElement: (element: PlaitGeometry | PlaitLine) => any;
5
5
  export declare const getLineDashByElement: (element: PlaitGeometry | PlaitLine) => number[] | undefined;
6
+ export declare const getStrokeStyleByElement: (element: PlaitGeometry | PlaitLine) => StrokeStyle;
@@ -1,22 +0,0 @@
1
- import { GeometryShape } from '../interfaces';
2
- import { getRectangleByPoints, Generator } from '@plait/common';
3
- import { getFillByElement, getLineDashByElement, getStrokeColorByElement, getStrokeWidthByElement } from '../utils/geometry-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnktc2hhcGUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9yL2dlb21ldHJ5LXNoYXBlLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFNBQW1DO0lBQzNFLE9BQU8sQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDNUMsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxLQUFLLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRTtZQUM5QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN2SCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeVNoYXBlLCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeVBvaW50cywgR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRGaWxsQnlFbGVtZW50LCBnZXRMaW5lRGFzaEJ5RWxlbWVudCwgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQsIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvZ2VvbWV0cnktc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IGRyYXdHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge31cblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5U2hhcGVHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeSwgU2hhcGVEYXRhPiB7XG4gICAgY2FuRHJhdyhlbGVtZW50OiBQbGFpdEdlb21ldHJ5LCBkYXRhOiBTaGFwZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmFzZURyYXcoZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgZGF0YTogU2hhcGVEYXRhKSB7XG4gICAgICAgIGNvbnN0IG91dGVyUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGVsZW1lbnQuc2hhcGU7XG4gICAgICAgIGlmIChzaGFwZSA9PT0gR2VvbWV0cnlTaGFwZS50ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBnZXRTdHJva2VDb2xvckJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHN0cm9rZUxpbmVEYXNoID0gZ2V0TGluZURhc2hCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBkcmF3R2VvbWV0cnkodGhpcy5ib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIHNoYXBlLCB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBmaWxsLCBzdHJva2VMaW5lRGFzaCB9KTtcbiAgICB9XG59XG4iXX0=
@@ -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==
@@ -1,17 +0,0 @@
1
- import { DefaultGeometryStyle } from '../../constants';
2
- export const getStrokeWidthByElement = (element) => {
3
- const strokeWidth = element.strokeWidth || DefaultGeometryStyle.strokeWidth;
4
- return strokeWidth;
5
- };
6
- export const getStrokeColorByElement = (element) => {
7
- const strokeColor = element.strokeColor || DefaultGeometryStyle.strokeColor;
8
- return strokeColor;
9
- };
10
- export const getFillByElement = (element) => {
11
- const fill = element.fill || DefaultGeometryStyle.fill;
12
- return fill;
13
- };
14
- export const getLineDashByElement = (element) => {
15
- return element.strokeStyle === 'dashed' ? [8, 8 + getStrokeWidthByElement(element)] : undefined;
16
- };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Ryb2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvZ2VvbWV0cnktc3R5bGUvc3Ryb2tlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBa0MsRUFBRSxFQUFFO0lBQzFFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksb0JBQW9CLENBQUMsV0FBVyxDQUFDO0lBQzVFLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBa0MsRUFBRSxFQUFFO0lBQzFFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksb0JBQW9CLENBQUMsV0FBVyxDQUFDO0lBQzVFLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBa0MsRUFBRSxFQUFFO0lBQ25FLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBa0MsRUFBRSxFQUFFO0lBQ3ZFLE9BQU8sT0FBTyxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDcEcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGVmYXVsdEdlb21ldHJ5U3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSB8IFBsYWl0TGluZSkgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZWxlbWVudC5zdHJva2VXaWR0aCB8fCBEZWZhdWx0R2VvbWV0cnlTdHlsZS5zdHJva2VXaWR0aDtcbiAgICByZXR1cm4gc3Ryb2tlV2lkdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSB8IFBsYWl0TGluZSkgPT4ge1xuICAgIGNvbnN0IHN0cm9rZUNvbG9yID0gZWxlbWVudC5zdHJva2VDb2xvciB8fCBEZWZhdWx0R2VvbWV0cnlTdHlsZS5zdHJva2VDb2xvcjtcbiAgICByZXR1cm4gc3Ryb2tlQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsbEJ5RWxlbWVudCA9IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5IHwgUGxhaXRMaW5lKSA9PiB7XG4gICAgY29uc3QgZmlsbCA9IGVsZW1lbnQuZmlsbCB8fCBEZWZhdWx0R2VvbWV0cnlTdHlsZS5maWxsO1xuICAgIHJldHVybiBmaWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVEYXNoQnlFbGVtZW50ID0gKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkgfCBQbGFpdExpbmUpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gJ2Rhc2hlZCcgPyBbOCwgOCArIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpXSA6IHVuZGVmaW5lZDtcbn07XG4iXX0=
File without changes