@plait/draw 0.63.0 → 0.64.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.
Files changed (57) hide show
  1. package/arrow-line.component.d.ts +3 -3
  2. package/constants/pointer.d.ts +3 -2
  3. package/esm2022/arrow-line.component.mjs +6 -5
  4. package/esm2022/constants/pointer.mjs +5 -2
  5. package/esm2022/generators/arrow-line.generator.mjs +3 -3
  6. package/esm2022/generators/index.mjs +2 -2
  7. package/esm2022/generators/line-active.generator.mjs +81 -0
  8. package/esm2022/generators/vector-line-generator.mjs +13 -0
  9. package/esm2022/interfaces/index.mjs +8 -5
  10. package/esm2022/interfaces/line.mjs +2 -0
  11. package/esm2022/interfaces/vector-line.mjs +5 -1
  12. package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +3 -3
  13. package/esm2022/plugins/with-arrow-line-resize.mjs +9 -9
  14. package/esm2022/plugins/with-draw-fragment.mjs +7 -5
  15. package/esm2022/plugins/with-draw.mjs +17 -2
  16. package/esm2022/plugins/with-vector-line-resize.mjs +61 -0
  17. package/esm2022/plugins/with-vector-pen-create.mjs +124 -0
  18. package/esm2022/public-api.mjs +2 -1
  19. package/esm2022/transforms/index.mjs +3 -1
  20. package/esm2022/transforms/vector-line.mjs +13 -0
  21. package/esm2022/utils/arrow-line/arrow-line-basic.mjs +5 -58
  22. package/esm2022/utils/common.mjs +5 -1
  23. package/esm2022/utils/hit.mjs +24 -4
  24. package/esm2022/utils/index.mjs +3 -1
  25. package/esm2022/utils/line.mjs +64 -0
  26. package/esm2022/utils/position/arrow-line.mjs +3 -50
  27. package/esm2022/utils/position/line.mjs +51 -0
  28. package/esm2022/utils/selected.mjs +5 -1
  29. package/esm2022/utils/vector-line.mjs +75 -0
  30. package/esm2022/vector-line.component.mjs +50 -0
  31. package/fesm2022/plait-draw.mjs +510 -146
  32. package/fesm2022/plait-draw.mjs.map +1 -1
  33. package/generators/arrow-line.generator.d.ts +3 -5
  34. package/generators/index.d.ts +1 -1
  35. package/generators/line-active.generator.d.ts +13 -0
  36. package/generators/vector-line-generator.d.ts +6 -0
  37. package/interfaces/index.d.ts +3 -0
  38. package/interfaces/line.d.ts +3 -0
  39. package/interfaces/vector-line.d.ts +10 -1
  40. package/package.json +1 -1
  41. package/plugins/with-vector-line-resize.d.ts +2 -0
  42. package/plugins/with-vector-pen-create.d.ts +2 -0
  43. package/public-api.d.ts +1 -0
  44. package/styles/styles.scss +2 -2
  45. package/transforms/index.d.ts +1 -0
  46. package/transforms/vector-line.d.ts +3 -0
  47. package/utils/arrow-line/arrow-line-basic.d.ts +0 -1
  48. package/utils/hit.d.ts +3 -2
  49. package/utils/index.d.ts +2 -0
  50. package/utils/line.d.ts +3 -0
  51. package/utils/position/arrow-line.d.ts +0 -13
  52. package/utils/position/line.d.ts +15 -0
  53. package/utils/selected.d.ts +2 -1
  54. package/utils/vector-line.d.ts +7 -0
  55. package/vector-line.component.d.ts +14 -0
  56. package/esm2022/generators/arrow-line-active.generator.mjs +0 -81
  57. package/generators/arrow-line-active.generator.d.ts +0 -13
@@ -1,8 +1,6 @@
1
1
  import { PlaitArrowLine } from '../interfaces';
2
2
  import { Generator } from '@plait/common';
3
- export interface ShapeData {
4
- }
5
- export declare class ArrowLineShapeGenerator extends Generator<PlaitArrowLine, ShapeData> {
6
- canDraw(element: PlaitArrowLine, data: ShapeData): boolean;
7
- draw(element: PlaitArrowLine, data: ShapeData): SVGGElement;
3
+ export declare class ArrowLineShapeGenerator extends Generator<PlaitArrowLine> {
4
+ canDraw(element: PlaitArrowLine): boolean;
5
+ draw(element: PlaitArrowLine): SVGGElement;
8
6
  }
@@ -1,5 +1,5 @@
1
1
  export * from './geometry-shape.generator';
2
- export * from './arrow-line-active.generator';
2
+ export * from './line-active.generator';
3
3
  export * from './arrow-line-auto-complete.generator';
4
4
  export * from './single-text.generator';
5
5
  export * from './text.generator';
@@ -0,0 +1,13 @@
1
+ import { Point } from '@plait/core';
2
+ import { Generator } from '@plait/common';
3
+ import { PlaitLine } from '../interfaces/line';
4
+ export interface ActiveData {
5
+ selected: boolean;
6
+ linePoints: Point[];
7
+ }
8
+ export declare class LineActiveGenerator extends Generator<PlaitLine, ActiveData> {
9
+ onlySelectedCurrentLine: boolean;
10
+ canDraw(element: PlaitLine, data: ActiveData): boolean;
11
+ draw(element: PlaitLine, data: ActiveData): SVGGElement;
12
+ needUpdate(): boolean;
13
+ }
@@ -0,0 +1,6 @@
1
+ import { PlaitVectorLine } from '../interfaces';
2
+ import { Generator } from '@plait/common';
3
+ export declare class VectorLineShapeGenerator extends Generator<PlaitVectorLine> {
4
+ canDraw(element: PlaitVectorLine): boolean;
5
+ draw(element: PlaitVectorLine): SVGGElement;
6
+ }
@@ -5,6 +5,7 @@ import { PlaitSwimlane, SwimlaneSymbols } from './swimlane';
5
5
  import { PlaitBaseTable, PlaitTable, TableSymbols } from './table';
6
6
  import { PlaitText } from './text';
7
7
  import { PlaitVectorLine } from './vector-line';
8
+ import { PlaitLine } from './line';
8
9
  export * from './arrow-line';
9
10
  export * from './geometry';
10
11
  export * from './text';
@@ -19,6 +20,8 @@ export type DrawShapes = GeometryShapes | TableSymbols | SwimlaneSymbols;
19
20
  export declare const PlaitDrawElement: {
20
21
  isGeometry: (value: any) => value is PlaitGeometry;
21
22
  isArrowLine: (value: any) => value is PlaitArrowLine;
23
+ isVectorLine: (value: any) => value is PlaitVectorLine;
24
+ isLine: (value: any) => value is PlaitLine;
22
25
  isText: (value: any) => value is PlaitText;
23
26
  isImage: (value: any) => value is PlaitImage;
24
27
  isTable: (value: any) => value is PlaitTable;
@@ -0,0 +1,3 @@
1
+ import { PlaitArrowLine } from './arrow-line';
2
+ import { PlaitVectorLine } from './vector-line';
3
+ export type PlaitLine = PlaitArrowLine | PlaitVectorLine;
@@ -1,9 +1,18 @@
1
- import { PlaitElement, Point } from '@plait/core';
1
+ import { Path, PlaitElement, Point } from '@plait/core';
2
2
  import { StrokeStyle } from './element';
3
+ export declare enum VectorPenPointerType {
4
+ vectorPen = "vectorPen"
5
+ }
3
6
  export declare enum VectorLineShape {
4
7
  straight = "straight",
5
8
  curve = "curve"
6
9
  }
10
+ export interface VectorPenRef {
11
+ start?: Point;
12
+ element?: PlaitVectorLine;
13
+ path?: Path;
14
+ shape: VectorLineShape;
15
+ }
7
16
  export interface PlaitVectorLine extends PlaitElement {
8
17
  type: 'vector-line';
9
18
  shape: VectorLineShape;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plait/draw",
3
- "version": "0.63.0",
3
+ "version": "0.64.1",
4
4
  "peerDependencies": {},
5
5
  "dependencies": {
6
6
  "tslib": "^2.3.0"
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withVectorLineResize: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withVectorPenCreateByDraw: (board: PlaitBoard) => PlaitBoard;
package/public-api.d.ts CHANGED
@@ -5,5 +5,6 @@ export * from './constants';
5
5
  export * from './utils';
6
6
  export * from './geometry.component';
7
7
  export * from './arrow-line.component';
8
+ export * from './vector-line.component';
8
9
  export * from './transforms';
9
10
  export * from './generators/index';
@@ -4,7 +4,7 @@
4
4
  cursor: default;
5
5
  }
6
6
  }
7
- &:not(.pointer-text):not(.pointer-selection):not(.pointer-hand) {
7
+ &:not(.pointer-text):not(.pointer-selection):not(.pointer-hand):not(.pointer-vectorPen) {
8
8
  .board-host-svg {
9
9
  cursor: crosshair;
10
10
  }
@@ -12,7 +12,7 @@
12
12
  &.draw-line-resizing .element-active-host .line-handle {
13
13
  display: none;
14
14
  }
15
- &.line-text-resizing ,
15
+ &.line-text-resizing,
16
16
  &.line-text-resizing .slate-editable-container {
17
17
  cursor: move;
18
18
  }
@@ -10,6 +10,7 @@ export declare const DrawTransforms: {
10
10
  removeArrowLineText: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitArrowLine, index: number) => void;
11
11
  setArrowLineMark: (board: import("@plait/core").PlaitBoard, handleKey: import("@plait/draw").ArrowLineHandleKey, marker: import("@plait/draw").ArrowLineMarkerType) => void;
12
12
  setArrowLineShape: (board: import("@plait/core").PlaitBoard, newProperties: Partial<import("@plait/draw").PlaitArrowLine>) => void;
13
+ setVectorLineShape: (board: import("@plait/core").PlaitBoard, newProperties: Partial<import("@plait/draw").PlaitVectorLine>) => void;
13
14
  insertImage: (board: import("@plait/core").PlaitBoard, imageItem: import("@plait/common").CommonImageItem, startPoint?: import("@plait/core").Point | undefined) => void;
14
15
  connectArrowLineToDraw: (board: import("@plait/core").PlaitBoard, lineElement: import("@plait/draw").PlaitArrowLine, handle: import("@plait/draw").ArrowLineHandleKey, geometryElement: import("@plait/draw").PlaitShapeElement) => void;
15
16
  switchGeometryShape: (board: import("@plait/core").PlaitBoard, shape: import("@plait/draw").GeometryShapes) => void;
@@ -0,0 +1,3 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { PlaitVectorLine } from '../interfaces';
3
+ export declare const setVectorLineShape: (board: PlaitBoard, newProperties: Partial<PlaitVectorLine>) => void;
@@ -3,7 +3,6 @@ import { ArrowLineHandle, ArrowLineShape, ArrowLineText, PlaitArrowLine, PlaitSh
3
3
  export declare const createArrowLineElement: (shape: ArrowLineShape, points: [Point, Point], source: ArrowLineHandle, target: ArrowLineHandle, texts?: ArrowLineText[], options?: Pick<PlaitArrowLine, 'strokeColor' | 'strokeWidth'>) => PlaitArrowLine;
4
4
  export declare const getArrowLinePoints: (board: PlaitBoard, element: PlaitArrowLine) => Point[];
5
5
  export declare const getCurvePoints: (board: PlaitBoard, element: PlaitArrowLine) => Point[];
6
- export declare function getMiddlePoints(board: PlaitBoard, element: PlaitArrowLine): Point[];
7
6
  export declare const drawArrowLine: (board: PlaitBoard, element: PlaitArrowLine) => SVGGElement;
8
7
  export declare const getHitConnection: (board: PlaitBoard, point: Point, hitElement: PlaitShapeElement) => Point;
9
8
  export declare const getHitConnectorPoint: (point: Point, hitElement: PlaitShapeElement) => Point | undefined;
package/utils/hit.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import { PlaitElement, RectangleClient, Selection, PlaitBoard, Point } from '@plait/core';
2
- import { PlaitArrowLine, PlaitCommonGeometry, PlaitDrawElement, PlaitGeometry, PlaitShapeElement } from '../interfaces';
2
+ import { PlaitArrowLine, PlaitCommonGeometry, PlaitDrawElement, PlaitGeometry, PlaitShapeElement, PlaitVectorLine } from '../interfaces';
3
3
  export declare const isTextExceedingBounds: (geometry: PlaitGeometry) => boolean;
4
4
  export declare const isHitArrowLineText: (board: PlaitBoard, element: PlaitArrowLine, point: Point) => boolean;
5
5
  export declare const isHitPolyLine: (pathPoints: Point[], point: Point) => boolean;
6
6
  export declare const isHitArrowLine: (board: PlaitBoard, element: PlaitArrowLine, point: Point) => boolean;
7
+ export declare const isHitVectorLine: (board: PlaitBoard, element: PlaitVectorLine, point: Point) => boolean;
7
8
  export declare const isRectangleHitElementText: (element: PlaitCommonGeometry, rectangle: RectangleClient) => boolean;
8
9
  export declare const isHitElementText: (element: PlaitCommonGeometry, point: Point) => boolean;
9
10
  export declare const isRectangleHitDrawElement: (board: PlaitBoard, element: PlaitElement, selection: Selection) => boolean | null;
10
11
  export declare const getDrawHitElement: (board: PlaitBoard, elements: PlaitDrawElement[]) => PlaitElement;
11
12
  export declare const getFirstFilledDrawElement: (board: PlaitBoard, elements: PlaitDrawElement[]) => PlaitGeometry | null;
12
- export declare const getFirstTextOrLineElement: (elements: PlaitDrawElement[]) => PlaitGeometry | import("../interfaces").PlaitBaseTable | import("../interfaces/image").PlaitImage | PlaitArrowLine | import("../interfaces").PlaitVectorLine | null;
13
+ export declare const getFirstTextOrLineElement: (elements: PlaitDrawElement[]) => PlaitGeometry | import("../interfaces").PlaitBaseTable | import("../interfaces/image").PlaitImage | PlaitArrowLine | PlaitVectorLine | null;
13
14
  export declare const isHitDrawElement: (board: PlaitBoard, element: PlaitElement, point: Point) => boolean | null;
14
15
  export declare const isHitEdgeOfShape: (board: PlaitBoard, element: PlaitShapeElement, point: Point, hitDistanceBuffer: number) => boolean;
15
16
  export declare const isInsideOfShape: (board: PlaitBoard, element: PlaitShapeElement, point: Point, hitDistanceBuffer: number) => boolean;
package/utils/index.d.ts CHANGED
@@ -11,3 +11,5 @@ export * from './snap-resizing';
11
11
  export * from './table';
12
12
  export * from './table-selected';
13
13
  export * from './swimlane';
14
+ export * from './line';
15
+ export * from './vector-line';
@@ -0,0 +1,3 @@
1
+ import { PlaitBoard, Point } from '@plait/core';
2
+ import { PlaitLine } from '../interfaces/line';
3
+ export declare function getMiddlePoints(board: PlaitBoard, element: PlaitLine): Point[];
@@ -1,16 +1,3 @@
1
1
  import { PlaitBoard, Point } from '@plait/core';
2
2
  import { PlaitArrowLine } from '../../interfaces';
3
- export declare enum ArrowLineResizeHandle {
4
- 'source' = "source",
5
- 'target' = "target",
6
- 'addHandle' = "addHandle"
7
- }
8
- export declare const getHitArrowLineResizeHandleRef: (board: PlaitBoard, element: PlaitArrowLine, point: Point) => {
9
- handle: ArrowLineResizeHandle;
10
- handleIndex: number;
11
- } | {
12
- handleIndex: number;
13
- handle?: undefined;
14
- } | undefined;
15
- export declare function getHitPointIndex(points: Point[], movingPoint: Point): number;
16
3
  export declare const getHitArrowLineTextIndex: (board: PlaitBoard, element: PlaitArrowLine, point: Point) => number;
@@ -0,0 +1,15 @@
1
+ import { PlaitBoard, Point } from '@plait/core';
2
+ import { PlaitLine } from '../../interfaces/line';
3
+ export declare enum LineResizeHandle {
4
+ 'source' = "source",
5
+ 'target' = "target",
6
+ 'addHandle' = "addHandle"
7
+ }
8
+ export declare const getHitLineResizeHandleRef: (board: PlaitBoard, element: PlaitLine, point: Point) => {
9
+ handle: LineResizeHandle;
10
+ handleIndex: number;
11
+ } | {
12
+ handleIndex: number;
13
+ handle?: undefined;
14
+ } | undefined;
15
+ export declare function getHitPointIndex(points: Point[], movingPoint: Point): number;
@@ -1,9 +1,10 @@
1
1
  import { PlaitBoard, PlaitElement } from '@plait/core';
2
- import { PlaitArrowLine, PlaitDrawElement, PlaitGeometry, PlaitSwimlane } from '../interfaces';
2
+ import { PlaitArrowLine, PlaitDrawElement, PlaitGeometry, PlaitSwimlane, PlaitVectorLine } from '../interfaces';
3
3
  import { PlaitImage } from '../interfaces/image';
4
4
  export declare const getSelectedDrawElements: (board: PlaitBoard, elements?: PlaitElement[]) => PlaitDrawElement[];
5
5
  export declare const getSelectedGeometryElements: (board: PlaitBoard) => PlaitGeometry[];
6
6
  export declare const getSelectedArrowLineElements: (board: PlaitBoard) => PlaitArrowLine[];
7
+ export declare const getSelectedVectorLineElements: (board: PlaitBoard) => PlaitVectorLine[];
7
8
  export declare const getSelectedImageElements: (board: PlaitBoard) => PlaitImage[];
8
9
  export declare const isSingleSelectSwimlane: (board: PlaitBoard) => boolean;
9
10
  export declare const getSelectedSwimlane: (board: PlaitBoard) => PlaitSwimlane;
@@ -0,0 +1,7 @@
1
+ import { PlaitBoard, Point } from '@plait/core';
2
+ import { PlaitVectorLine, VectorLineShape } from '../interfaces';
3
+ export declare const isClosedVectorLine: (vectorLine: PlaitVectorLine) => boolean;
4
+ export declare const getVectorLinePoints: (board: PlaitBoard, element: PlaitVectorLine) => Point[] | null;
5
+ export declare const createVectorLineElement: (shape: VectorLineShape, points: Point[], options?: Pick<PlaitVectorLine, 'strokeColor' | 'strokeWidth' | 'fill'>) => PlaitVectorLine;
6
+ export declare const vectorLineCreating: (board: PlaitBoard, lineShape: VectorLineShape, points: Point[], movingPoint: Point, lineShapeG: SVGGElement) => PlaitVectorLine;
7
+ export declare const drawVectorLine: (board: PlaitBoard, element: PlaitVectorLine) => SVGGElement;
@@ -0,0 +1,14 @@
1
+ import { PlaitBoard, PlaitPluginElementContext, OnContextChanged } from '@plait/core';
2
+ import { PlaitVectorLine } from './interfaces';
3
+ import { LineActiveGenerator } from './generators/line-active.generator';
4
+ import { CommonElementFlavour } from '@plait/common';
5
+ import { VectorLineShapeGenerator } from './generators/vector-line-generator';
6
+ export declare class VectorLineComponent extends CommonElementFlavour<PlaitVectorLine, PlaitBoard> implements OnContextChanged<PlaitVectorLine, PlaitBoard> {
7
+ shapeGenerator: VectorLineShapeGenerator;
8
+ activeGenerator: LineActiveGenerator;
9
+ constructor();
10
+ initializeGenerator(): void;
11
+ initialize(): void;
12
+ onContextChanged(value: PlaitPluginElementContext<PlaitVectorLine, PlaitBoard>, previous: PlaitPluginElementContext<PlaitVectorLine, PlaitBoard>): void;
13
+ destroy(): void;
14
+ }
@@ -1,81 +0,0 @@
1
- import { PlaitBoard, createG, drawRectangle, getSelectedElements } from '@plait/core';
2
- import { ArrowLineShape, PlaitArrowLine } from '../interfaces';
3
- import { Generator, PRIMARY_COLOR, drawFillPrimaryHandle, drawPrimaryHandle } from '@plait/common';
4
- import { getMiddlePoints } from '../utils/arrow-line/arrow-line-basic';
5
- import { getNextRenderPoints } from '../utils/arrow-line/elbow';
6
- import { isUpdatedHandleIndex } from '../utils/arrow-line';
7
- import { getHitPointIndex } from '../utils/position/arrow-line';
8
- import { DefaultDrawActiveStyle } from '../constants';
9
- export class ArrowLineActiveGenerator extends Generator {
10
- constructor() {
11
- super(...arguments);
12
- this.onlySelectedCurrentLine = false;
13
- }
14
- canDraw(element, data) {
15
- if (data.selected) {
16
- return true;
17
- }
18
- else {
19
- return false;
20
- }
21
- }
22
- draw(element, data) {
23
- const activeG = createG();
24
- const selectedElements = getSelectedElements(this.board);
25
- this.onlySelectedCurrentLine = selectedElements.length === 1;
26
- if (this.onlySelectedCurrentLine) {
27
- activeG.classList.add('active');
28
- activeG.classList.add('line-handle');
29
- const points = PlaitArrowLine.getPoints(this.board, element);
30
- let updatePoints = [...points];
31
- let elbowNextRenderPoints = [];
32
- if (element.shape === ArrowLineShape.elbow) {
33
- updatePoints = points.slice(0, 1).concat(points.slice(-1));
34
- elbowNextRenderPoints = getNextRenderPoints(this.board, element, data.linePoints);
35
- }
36
- updatePoints.forEach(point => {
37
- const updateHandle = drawPrimaryHandle(this.board, point);
38
- activeG.appendChild(updateHandle);
39
- });
40
- const middlePoints = getMiddlePoints(this.board, element);
41
- if (!PlaitBoard.hasBeenTextEditing(this.board)) {
42
- for (let i = 0; i < middlePoints.length; i++) {
43
- const point = middlePoints[i];
44
- if (element.shape === ArrowLineShape.elbow && elbowNextRenderPoints.length) {
45
- const handleIndex = getHitPointIndex(middlePoints, point);
46
- const isUpdateHandleIndex = isUpdatedHandleIndex(this.board, element, [...points], elbowNextRenderPoints, handleIndex);
47
- if (isUpdateHandleIndex) {
48
- const updateHandle = drawPrimaryHandle(this.board, point);
49
- activeG.appendChild(updateHandle);
50
- continue;
51
- }
52
- }
53
- const circle = drawFillPrimaryHandle(this.board, point);
54
- activeG.appendChild(circle);
55
- }
56
- }
57
- }
58
- else {
59
- const activeRectangle = this.board.getRectangle(element);
60
- if (activeRectangle) {
61
- let opacity = '0.5';
62
- if (activeRectangle.height === 0 || activeRectangle.width === 0) {
63
- opacity = '0.8';
64
- }
65
- const strokeG = drawRectangle(this.board, activeRectangle, {
66
- stroke: PRIMARY_COLOR,
67
- strokeWidth: DefaultDrawActiveStyle.selectionStrokeWidth
68
- });
69
- strokeG.style.opacity = opacity;
70
- activeG.appendChild(strokeG);
71
- }
72
- }
73
- return activeG;
74
- }
75
- needUpdate() {
76
- const selectedElements = getSelectedElements(this.board);
77
- const onlySelectedCurrentLine = selectedElements.length === 1;
78
- return onlySelectedCurrentLine !== this.onlySelectedCurrentLine;
79
- }
80
- }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9hcnJvdy1saW5lLWFjdGl2ZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPdEQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFNBQXFDO0lBQW5GOztRQUNJLDRCQUF1QixHQUFHLEtBQUssQ0FBQztJQTBFcEMsQ0FBQztJQXhFRyxPQUFPLENBQUMsT0FBdUIsRUFBRSxJQUFnQjtRQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQXVCLEVBQUUsSUFBZ0I7UUFDMUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFD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QixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZUFBZSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDOUQsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsQ0FBQztnQkFDRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUU7b0JBQ3ZELE1BQU0sRUFBRSxhQUFhO29CQUNyQixXQUFXLEVBQUUsc0JBQXNCLENBQUMsb0JBQW9CO2lCQUMzRCxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVU7UUFDTixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDOUQsT0FBTyx1QkFBdUIsS0FBSyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDcEUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGNyZWF0ZUcsIGRyYXdSZWN0YW5nbGUsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBcnJvd0xpbmVTaGFwZSwgUGxhaXRBcnJvd0xpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlbmVyYXRvciwgUFJJTUFSWV9DT0xPUiwgZHJhd0ZpbGxQcmltYXJ5SGFuZGxlLCBkcmF3UHJpbWFyeUhhbmRsZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0TWlkZGxlUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvYXJyb3ctbGluZS9hcnJvdy1saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldE5leHRSZW5kZXJQb2ludHMgfSBmcm9tICcuLi91dGlscy9hcnJvdy1saW5lL2VsYm93JztcbmltcG9ydCB7IGlzVXBkYXRlZEhhbmRsZUluZGV4IH0gZnJvbSAnLi4vdXRpbHMvYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBnZXRIaXRQb2ludEluZGV4IH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBEZWZhdWx0RHJhd0FjdGl2ZVN0eWxlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVEYXRhIHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBsaW5lUG9pbnRzOiBQb2ludFtdO1xufVxuXG5leHBvcnQgY2xhc3MgQXJyb3dMaW5lQWN0aXZlR2VuZXJhdG9yIGV4dGVuZHMgR2VuZXJhdG9yPFBsYWl0QXJyb3dMaW5lLCBBY3RpdmVEYXRhPiB7XG4gICAgb25seVNlbGVjdGVkQ3VycmVudExpbmUgPSBmYWxzZTtcblxuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhdyhlbGVtZW50OiBQbGFpdEFycm93TGluZSwgZGF0YTogQWN0aXZlRGF0YSk6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgY29uc3QgYWN0aXZlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMub25seVNlbGVjdGVkQ3VycmVudExpbmUgPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgaWYgKHRoaXMub25seVNlbGVjdGVkQ3VycmVudExpbmUpIHtcbiAgICAgICAgICAgIGFjdGl2ZUcuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgICAgICAgICBhY3RpdmVHLmNsYXNzTGlzdC5hZGQoJ2xpbmUtaGFuZGxlJyk7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBQbGFpdEFycm93TGluZS5nZXRQb2ludHModGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgdXBkYXRlUG9pbnRzID0gWy4uLnBvaW50c107XG4gICAgICAgICAgICBsZXQgZWxib3dOZXh0UmVuZGVyUG9pbnRzOiBQb2ludFtdID0gW107XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gQXJyb3dMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb2ludHMgPSBwb2ludHMuc2xpY2UoMCwgMSkuY29uY2F0KHBvaW50cy5zbGljZSgtMSkpO1xuICAgICAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyA9IGdldE5leHRSZW5kZXJQb2ludHModGhpcy5ib2FyZCwgZWxlbWVudCwgZGF0YS5saW5lUG9pbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVIYW5kbGUgPSBkcmF3UHJpbWFyeUhhbmRsZSh0aGlzLmJvYXJkLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZCh1cGRhdGVIYW5kbGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBtaWRkbGVQb2ludHMgPSBnZXRNaWRkbGVQb2ludHModGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaWRkbGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBtaWRkbGVQb2ludHNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnNoYXBlID09PSBBcnJvd0xpbmVTaGFwZS5lbGJvdyAmJiBlbGJvd05leHRSZW5kZXJQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IGdldEhpdFBvaW50SW5kZXgobWlkZGxlUG9pbnRzLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1VwZGF0ZUhhbmRsZUluZGV4ID0gaXNVcGRhdGVkSGFuZGxlSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsuLi5wb2ludHNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1VwZGF0ZUhhbmRsZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlSGFuZGxlID0gZHJhd1ByaW1hcnlIYW5kbGUodGhpcy5ib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUcuYXBwZW5kQ2hpbGQodXBkYXRlSGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaXJjbGUgPSBkcmF3RmlsbFByaW1hcnlIYW5kbGUodGhpcy5ib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKGNpcmNsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gdGhpcy5ib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoYWN0aXZlUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9wYWNpdHkgPSAnMC41JztcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlUmVjdGFuZ2xlLmhlaWdodCA9PT0gMCB8fCBhY3RpdmVSZWN0YW5nbGUud2lkdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSA9ICcwLjgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzdHJva2VHID0gZHJhd1JlY3RhbmdsZSh0aGlzLmJvYXJkLCBhY3RpdmVSZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdERyYXdBY3RpdmVTdHlsZS5zZWxlY3Rpb25TdHJva2VXaWR0aFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHN0cm9rZUcuc3R5bGUub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgICAgICAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZChzdHJva2VHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWN0aXZlRztcbiAgICB9XG5cbiAgICBuZWVkVXBkYXRlKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgY29uc3Qgb25seVNlbGVjdGVkQ3VycmVudExpbmUgPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgcmV0dXJuIG9ubHlTZWxlY3RlZEN1cnJlbnRMaW5lICE9PSB0aGlzLm9ubHlTZWxlY3RlZEN1cnJlbnRMaW5lO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,13 +0,0 @@
1
- import { Point } from '@plait/core';
2
- import { PlaitArrowLine } from '../interfaces';
3
- import { Generator } from '@plait/common';
4
- export interface ActiveData {
5
- selected: boolean;
6
- linePoints: Point[];
7
- }
8
- export declare class ArrowLineActiveGenerator extends Generator<PlaitArrowLine, ActiveData> {
9
- onlySelectedCurrentLine: boolean;
10
- canDraw(element: PlaitArrowLine, data: ActiveData): boolean;
11
- draw(element: PlaitArrowLine, data: ActiveData): SVGGElement;
12
- needUpdate(): boolean;
13
- }