@plait/draw 0.63.0 → 0.64.0
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.
- package/arrow-line.component.d.ts +3 -3
- package/constants/pointer.d.ts +3 -2
- package/esm2022/arrow-line.component.mjs +6 -5
- package/esm2022/constants/pointer.mjs +5 -2
- package/esm2022/generators/arrow-line.generator.mjs +3 -3
- package/esm2022/generators/index.mjs +2 -2
- package/esm2022/generators/line-active.generator.mjs +81 -0
- package/esm2022/generators/vector-line-generator.mjs +13 -0
- package/esm2022/interfaces/index.mjs +8 -5
- package/esm2022/interfaces/line.mjs +2 -0
- package/esm2022/interfaces/vector-line.mjs +5 -1
- package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +3 -3
- package/esm2022/plugins/with-arrow-line-resize.mjs +9 -9
- package/esm2022/plugins/with-draw-fragment.mjs +7 -5
- package/esm2022/plugins/with-draw.mjs +17 -2
- package/esm2022/plugins/with-vector-line-resize.mjs +61 -0
- package/esm2022/plugins/with-vector-pen-create.mjs +124 -0
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/transforms/index.mjs +3 -1
- package/esm2022/transforms/vector-line.mjs +13 -0
- package/esm2022/utils/arrow-line/arrow-line-basic.mjs +5 -58
- package/esm2022/utils/common.mjs +5 -1
- package/esm2022/utils/hit.mjs +12 -1
- package/esm2022/utils/index.mjs +3 -1
- package/esm2022/utils/line.mjs +64 -0
- package/esm2022/utils/position/arrow-line.mjs +3 -50
- package/esm2022/utils/position/line.mjs +51 -0
- package/esm2022/utils/selected.mjs +5 -1
- package/esm2022/utils/vector-line.mjs +75 -0
- package/esm2022/vector-line.component.mjs +50 -0
- package/fesm2022/plait-draw.mjs +500 -145
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/arrow-line.generator.d.ts +3 -5
- package/generators/index.d.ts +1 -1
- package/generators/line-active.generator.d.ts +13 -0
- package/generators/vector-line-generator.d.ts +6 -0
- package/interfaces/index.d.ts +3 -0
- package/interfaces/line.d.ts +3 -0
- package/interfaces/vector-line.d.ts +10 -1
- package/package.json +1 -1
- package/plugins/with-vector-line-resize.d.ts +2 -0
- package/plugins/with-vector-pen-create.d.ts +2 -0
- package/public-api.d.ts +1 -0
- package/styles/styles.scss +2 -2
- package/transforms/index.d.ts +2 -1
- package/transforms/vector-line.d.ts +3 -0
- package/utils/arrow-line/arrow-line-basic.d.ts +0 -1
- package/utils/clipboard.d.ts +1 -1
- package/utils/geometry.d.ts +17 -17
- package/utils/hit.d.ts +3 -2
- package/utils/index.d.ts +2 -0
- package/utils/line.d.ts +3 -0
- package/utils/position/arrow-line.d.ts +0 -13
- package/utils/position/line.d.ts +15 -0
- package/utils/selected.d.ts +2 -1
- package/utils/shape.d.ts +1 -1
- package/utils/vector-line.d.ts +7 -0
- package/vector-line.component.d.ts +14 -0
- package/esm2022/generators/arrow-line-active.generator.mjs +0 -81
- 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
|
|
4
|
-
|
|
5
|
-
|
|
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
|
}
|
package/generators/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './geometry-shape.generator';
|
|
2
|
-
export * from './
|
|
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
|
+
}
|
package/interfaces/index.d.ts
CHANGED
|
@@ -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;
|
|
@@ -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
package/public-api.d.ts
CHANGED
package/styles/styles.scss
CHANGED
|
@@ -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
|
}
|
package/transforms/index.d.ts
CHANGED
|
@@ -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;
|
|
@@ -20,5 +21,5 @@ export declare const DrawTransforms: {
|
|
|
20
21
|
removeSwimlaneColumn: (board: import("@plait/core").PlaitBoard, swimlane: import("@plait/draw").PlaitSwimlane, index: number, count?: number) => void;
|
|
21
22
|
updateSwimlaneCount: (board: import("@plait/core").PlaitBoard, swimlane: import("@plait/draw").PlaitSwimlane, count: number) => void;
|
|
22
23
|
setTableFill: (board: import("@plait/core").PlaitBoard, element: import("@plait/draw").PlaitBaseTable, fill: string, path: import("@plait/core").Path) => void;
|
|
23
|
-
insertDrawByVector: (board: import("@plait/core").PlaitBoard, point: import("@plait/core").Point, shape: import("@plait/draw").
|
|
24
|
+
insertDrawByVector: (board: import("@plait/core").PlaitBoard, point: import("@plait/core").Point, shape: import("@plait/draw").SwimlaneDrawSymbols | import("@plait/draw").GeometryShapes, vector: import("@plait/core").Vector) => import("@plait/draw").PlaitCommonGeometry | import("@plait/draw").PlaitSwimlane | null;
|
|
24
25
|
};
|
|
@@ -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/clipboard.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlaitBoard, Point } from '@plait/core';
|
|
2
2
|
import { PlaitArrowLine, PlaitDrawElement, PlaitGeometry, PlaitShapeElement } from '../interfaces';
|
|
3
3
|
import { PlaitTable } from '../interfaces/table';
|
|
4
|
-
export declare const buildClipboardData: (board: PlaitBoard, elements: PlaitDrawElement[], startPoint: Point) => (PlaitGeometry | import("../interfaces").PlaitBaseTable |
|
|
4
|
+
export declare const buildClipboardData: (board: PlaitBoard, elements: PlaitDrawElement[], startPoint: Point) => (PlaitArrowLine | PlaitGeometry | import("../interfaces").PlaitBaseTable | import("../interfaces").PlaitVectorLine)[];
|
|
5
5
|
export declare const insertClipboardData: (board: PlaitBoard, elements: PlaitDrawElement[], startPoint: Point) => void;
|
|
6
6
|
export declare const insertClipboardTableData: (board: PlaitBoard, elements: PlaitTable[], startPoint: Point, lines: PlaitArrowLine[]) => void;
|
|
7
7
|
export declare const updateBoundArrowLinesId: (element: PlaitShapeElement, lines: PlaitArrowLine[], newId: string) => void;
|
package/utils/geometry.d.ts
CHANGED
|
@@ -67,6 +67,9 @@ export declare const getDefaultUMLProperty: (shape: UMLSymbols) => {
|
|
|
67
67
|
} | {
|
|
68
68
|
width: number;
|
|
69
69
|
height: number;
|
|
70
|
+
} | {
|
|
71
|
+
width: number;
|
|
72
|
+
height: number;
|
|
70
73
|
} | {
|
|
71
74
|
width: number;
|
|
72
75
|
height: number;
|
|
@@ -78,12 +81,25 @@ export declare const getDefaultUMLProperty: (shape: UMLSymbols) => {
|
|
|
78
81
|
} | {
|
|
79
82
|
width: number;
|
|
80
83
|
height: number;
|
|
84
|
+
texts: {
|
|
85
|
+
key: import("../interfaces").MultipleTextGeometryCommonTextKeys;
|
|
86
|
+
text: string;
|
|
87
|
+
align: Alignment;
|
|
88
|
+
}[];
|
|
81
89
|
} | {
|
|
82
90
|
width: number;
|
|
83
91
|
height: number;
|
|
92
|
+
texts: {
|
|
93
|
+
text: string;
|
|
94
|
+
align: Alignment;
|
|
95
|
+
}[];
|
|
84
96
|
} | {
|
|
85
97
|
width: number;
|
|
86
98
|
height: number;
|
|
99
|
+
texts: {
|
|
100
|
+
text: string;
|
|
101
|
+
align: Alignment;
|
|
102
|
+
}[];
|
|
87
103
|
} | {
|
|
88
104
|
width: number;
|
|
89
105
|
height: number;
|
|
@@ -102,27 +118,11 @@ export declare const getDefaultUMLProperty: (shape: UMLSymbols) => {
|
|
|
102
118
|
} | {
|
|
103
119
|
width: number;
|
|
104
120
|
height: number;
|
|
105
|
-
texts: {
|
|
106
|
-
key: import("../interfaces").MultipleTextGeometryCommonTextKeys;
|
|
107
|
-
text: string;
|
|
108
|
-
align: Alignment;
|
|
109
|
-
}[];
|
|
110
|
-
} | {
|
|
111
|
-
width: number;
|
|
112
|
-
height: number;
|
|
113
|
-
texts: {
|
|
114
|
-
text: string;
|
|
115
|
-
align: Alignment;
|
|
116
|
-
}[];
|
|
117
121
|
} | {
|
|
118
122
|
width: number;
|
|
119
123
|
height: number;
|
|
120
|
-
texts: {
|
|
121
|
-
text: string;
|
|
122
|
-
align: Alignment;
|
|
123
|
-
}[];
|
|
124
124
|
};
|
|
125
|
-
export declare const createDefaultFlowchart: (point: Point) => (
|
|
125
|
+
export declare const createDefaultFlowchart: (point: Point) => (import("../interfaces").PlaitArrowLine | PlaitGeometry)[];
|
|
126
126
|
export declare const getAutoCompletePoints: (element: PlaitShapeElement) => [Point, Point, Point, Point];
|
|
127
127
|
export declare const getHitIndexOfAutoCompletePoint: (movingPoint: Point, points: Point[]) => number;
|
|
128
128
|
export declare const getDrawDefaultStrokeColor: (theme: ThemeColorMode) => string;
|
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[]) =>
|
|
13
|
+
export declare const getFirstTextOrLineElement: (elements: PlaitDrawElement[]) => PlaitArrowLine | PlaitGeometry | import("../interfaces/image").PlaitImage | import("../interfaces").PlaitBaseTable | 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
package/utils/line.d.ts
ADDED
|
@@ -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;
|
package/utils/selected.d.ts
CHANGED
|
@@ -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;
|
package/utils/shape.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { PlaitShapeElement, TableSymbols } from '../interfaces';
|
|
2
|
-
export declare const getElementShape: (value: PlaitShapeElement) => import("../interfaces").GeometryShapes |
|
|
2
|
+
export declare const getElementShape: (value: PlaitShapeElement) => TableSymbols.table | import("../interfaces").GeometryShapes | import("../interfaces").SwimlaneSymbols;
|
|
@@ -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
|
-
}
|