@plait/draw 0.34.0 → 0.36.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/constants/line.d.ts +4 -0
- package/esm2022/constants/line.mjs +5 -1
- package/esm2022/generators/line-active.generator.mjs +10 -7
- package/esm2022/generators/line-auto-complete.generator.mjs +45 -0
- package/esm2022/geometry.component.mjs +20 -10
- package/esm2022/interfaces/element.mjs +2 -1
- package/esm2022/interfaces/index.mjs +2 -2
- package/esm2022/line.component.mjs +10 -15
- package/esm2022/plugins/with-draw-hotkey.mjs +5 -4
- package/esm2022/plugins/with-draw.mjs +4 -4
- package/esm2022/plugins/with-geometry-create.mjs +14 -8
- package/esm2022/plugins/with-line-auto-complete-reaction.mjs +35 -0
- package/esm2022/plugins/with-line-auto-complete.mjs +60 -0
- package/esm2022/plugins/with-line-bound-reaction.mjs +5 -1
- package/esm2022/plugins/with-line-create.mjs +2 -2
- package/esm2022/plugins/with-line-resize.mjs +2 -2
- package/esm2022/plugins/with-line-text.mjs +29 -27
- package/esm2022/transforms/index.mjs +2 -2
- package/esm2022/transforms/property.mjs +15 -0
- package/esm2022/utils/geometry.mjs +6 -3
- package/esm2022/utils/index.mjs +2 -1
- package/esm2022/utils/line-arrow.mjs +10 -6
- package/esm2022/utils/line.mjs +12 -5
- package/esm2022/utils/memorize.mjs +75 -0
- package/fesm2022/plait-draw.mjs +201 -110
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/line-active.generator.d.ts +0 -1
- package/generators/{auto-complete.generator.d.ts → line-auto-complete.generator.d.ts} +1 -1
- package/geometry.component.d.ts +2 -2
- package/interfaces/element.d.ts +1 -0
- package/interfaces/index.d.ts +1 -1
- package/line.component.d.ts +0 -1
- package/package.json +1 -1
- package/plugins/with-line-auto-complete-reaction.d.ts +2 -0
- package/plugins/with-line-auto-complete.d.ts +7 -0
- package/styles/styles.scss +1 -2
- package/transforms/{common.d.ts → property.d.ts} +1 -2
- package/utils/geometry.d.ts +6 -1
- package/utils/index.d.ts +1 -0
- package/utils/memorize.d.ts +19 -0
- package/utils/position/geometry.d.ts +1 -1
- package/esm2022/generators/auto-complete.generator.mjs +0 -44
- package/esm2022/plugins/with-auto-complete-reaction.mjs +0 -35
- package/esm2022/plugins/with-auto-complete.mjs +0 -61
- package/esm2022/transforms/common.mjs +0 -33
- package/plugins/with-auto-complete-reaction.d.ts +0 -2
- package/plugins/with-auto-complete.d.ts +0 -7
|
@@ -5,7 +5,6 @@ export interface ActiveData {
|
|
|
5
5
|
selected: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare class LineActiveGenerator extends Generator<PlaitLine, ActiveData> {
|
|
8
|
-
hasResizeHandle: boolean;
|
|
9
8
|
canDraw(element: PlaitLine, data: ActiveData): boolean;
|
|
10
9
|
draw(element: PlaitLine, data: ActiveData): SVGGElement;
|
|
11
10
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlaitBoard } from '@plait/core';
|
|
2
2
|
import { PlaitGeometry } from '../interfaces';
|
|
3
3
|
import { ActiveGeneratorExtraData, Generator } from '@plait/common';
|
|
4
|
-
export declare class
|
|
4
|
+
export declare class LineAutoCompleteGenerator extends Generator<PlaitGeometry, ActiveGeneratorExtraData> {
|
|
5
5
|
board: PlaitBoard;
|
|
6
6
|
autoCompleteG: SVGGElement;
|
|
7
7
|
hoverElement: SVGGElement | null;
|
package/geometry.component.d.ts
CHANGED
|
@@ -5,14 +5,14 @@ import { PlaitGeometry } from './interfaces/geometry';
|
|
|
5
5
|
import { GeometryShapeGenerator } from './generators/geometry-shape.generator';
|
|
6
6
|
import { TextManage } from '@plait/text';
|
|
7
7
|
import { ActiveGenerator, CommonPluginElement } from '@plait/common';
|
|
8
|
-
import {
|
|
8
|
+
import { LineAutoCompleteGenerator } from './generators/line-auto-complete.generator';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class GeometryComponent extends CommonPluginElement<PlaitGeometry, PlaitBoard> implements OnInit, OnDestroy, OnContextChanged<PlaitGeometry, PlaitBoard> {
|
|
11
11
|
private viewContainerRef;
|
|
12
12
|
protected cdr: ChangeDetectorRef;
|
|
13
13
|
destroy$: Subject<void>;
|
|
14
14
|
activeGenerator: ActiveGenerator<PlaitGeometry>;
|
|
15
|
-
|
|
15
|
+
lineAutoCompleteGenerator: LineAutoCompleteGenerator;
|
|
16
16
|
shapeGenerator: GeometryShapeGenerator;
|
|
17
17
|
get textManage(): TextManage;
|
|
18
18
|
constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef);
|
package/interfaces/element.d.ts
CHANGED
package/interfaces/index.d.ts
CHANGED
|
@@ -15,6 +15,6 @@ export declare const PlaitDrawElement: {
|
|
|
15
15
|
isImage: (value: any) => value is PlaitImage;
|
|
16
16
|
isDrawElement: (value: any) => value is PlaitDrawElement;
|
|
17
17
|
isShape: (value: any) => boolean;
|
|
18
|
-
|
|
18
|
+
isBasicShape: (value: any) => boolean;
|
|
19
19
|
isFlowchart: (value: any) => boolean;
|
|
20
20
|
};
|
package/line.component.d.ts
CHANGED
|
@@ -23,7 +23,6 @@ export declare class LineComponent extends PlaitPluginElementComponent<PlaitLine
|
|
|
23
23
|
ngOnInit(): void;
|
|
24
24
|
getBoundedElements(): BoundedElements;
|
|
25
25
|
onContextChanged(value: PlaitPluginElementContext<PlaitLine, PlaitBoard>, previous: PlaitPluginElementContext<PlaitLine, PlaitBoard>): void;
|
|
26
|
-
hasResizeHandle(): boolean;
|
|
27
26
|
initializeTextManages(): void;
|
|
28
27
|
destroyTextManages(): void;
|
|
29
28
|
drawText(): void;
|
package/package.json
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PlaitBoard } from '@plait/core';
|
|
2
|
+
import { PlaitLine } from '../interfaces';
|
|
3
|
+
export interface LineAutoCompleteOptions {
|
|
4
|
+
afterComplete: (element: PlaitLine) => {};
|
|
5
|
+
}
|
|
6
|
+
export declare const withLineAutoCompletePluginKey = "plait-line-auto-complete-plugin-key";
|
|
7
|
+
export declare const withLineAutoComplete: (board: PlaitBoard) => PlaitBoard;
|
package/styles/styles.scss
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { PlaitBoard
|
|
1
|
+
import { PlaitBoard } from '@plait/core';
|
|
2
2
|
export declare const setStrokeColor: (board: PlaitBoard, strokeColor: string) => void;
|
|
3
3
|
export declare const setStrokeWidth: (board: PlaitBoard, strokeWidth: number) => void;
|
|
4
4
|
export declare const setFillColor: (board: PlaitBoard, fill: string) => void;
|
|
5
5
|
export declare const setStrokeStyle: (board: PlaitBoard, strokeStyle: string) => void;
|
|
6
|
-
export declare const getMemorizeKey: (element: PlaitElement) => string;
|
package/utils/geometry.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { PlaitBoard, Point, RectangleClient, ThemeColorMode } from '@plait/core';
|
|
2
2
|
import { GeometryShapes, PlaitGeometry, FlowchartSymbols } from '../interfaces/geometry';
|
|
3
|
+
import { Alignment, CustomText } from '@plait/text';
|
|
3
4
|
import { Element } from 'slate';
|
|
4
5
|
import { Options } from 'roughjs/bin/core';
|
|
5
|
-
export
|
|
6
|
+
export type GeometryStyleOptions = Pick<PlaitGeometry, 'fill' | 'strokeColor' | 'strokeWidth'>;
|
|
7
|
+
export type TextProperties = Partial<CustomText> & {
|
|
8
|
+
align?: Alignment;
|
|
9
|
+
};
|
|
10
|
+
export declare const createGeometryElement: (shape: GeometryShapes, points: [Point, Point], text: string | Element, options?: GeometryStyleOptions, textProperties?: TextProperties) => PlaitGeometry;
|
|
6
11
|
export declare const getPointsByCenterPoint: (point: Point, width: number, height: number) => [Point, Point];
|
|
7
12
|
export declare const getTextRectangle: (element: PlaitGeometry) => {
|
|
8
13
|
height: number;
|
package/utils/index.d.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PlaitBoard, PlaitElement } from '@plait/core';
|
|
2
|
+
import { GeometryShapes, PlaitDrawElement } from '../interfaces';
|
|
3
|
+
import { DrawPointerType } from '../constants';
|
|
4
|
+
import { BaseOperation } from 'slate';
|
|
5
|
+
export declare const getMemorizeKey: (element: PlaitElement) => string;
|
|
6
|
+
export declare const getLineMemorizedLatest: () => PlaitElement;
|
|
7
|
+
export declare const getMemorizedLatestByPointer: (pointer: DrawPointerType) => {
|
|
8
|
+
textProperties: any;
|
|
9
|
+
geometryProperties: {
|
|
10
|
+
[x: string]: any;
|
|
11
|
+
id: string;
|
|
12
|
+
children?: PlaitElement[] | undefined;
|
|
13
|
+
points?: import("@plait/core").Point[] | undefined;
|
|
14
|
+
type?: string | undefined;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export declare const memorizeLatestText: (element: PlaitDrawElement, operations: BaseOperation[]) => void;
|
|
18
|
+
export declare const memorizeLatestShape: (board: PlaitBoard, shape: GeometryShapes) => void;
|
|
19
|
+
export declare const getMemorizedLatestShape: (board: PlaitBoard) => GeometryShapes[] | undefined;
|
|
@@ -10,6 +10,6 @@ export declare const getHitGeometryResizeHandleRef: (board: PlaitBoard, element:
|
|
|
10
10
|
height: number;
|
|
11
11
|
};
|
|
12
12
|
handle: ResizeHandle;
|
|
13
|
-
cursorClass: import("@plait/
|
|
13
|
+
cursorClass: import("@plait/core").ResizeCursorClass;
|
|
14
14
|
} | undefined;
|
|
15
15
|
export declare const getHitOutlineGeometry: (board: PlaitBoard, point: Point, offset?: number) => PlaitGeometry | null;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, createG, drawCircle, getSelectedElements, isSelectionMoving } from '@plait/core';
|
|
2
|
-
import { Generator, RESIZE_HANDLE_DIAMETER } from '@plait/common';
|
|
3
|
-
import { getAutoCompletePoints } from '../utils';
|
|
4
|
-
export class AutoCompleteGenerator extends Generator {
|
|
5
|
-
constructor(board) {
|
|
6
|
-
super(board);
|
|
7
|
-
this.board = board;
|
|
8
|
-
this.hoverElement = null;
|
|
9
|
-
}
|
|
10
|
-
canDraw(element, data) {
|
|
11
|
-
const selectedElements = getSelectedElements(this.board);
|
|
12
|
-
if (data.selected && selectedElements.length === 1 && !isSelectionMoving(this.board)) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
draw(element, data) {
|
|
20
|
-
this.autoCompleteG = createG();
|
|
21
|
-
const middlePoints = getAutoCompletePoints(element);
|
|
22
|
-
middlePoints.forEach((point, index) => {
|
|
23
|
-
const circle = drawCircle(PlaitBoard.getRoughSVG(this.board), point, RESIZE_HANDLE_DIAMETER, {
|
|
24
|
-
stroke: 'none',
|
|
25
|
-
fill: '#6698FF4d',
|
|
26
|
-
fillStyle: 'solid'
|
|
27
|
-
});
|
|
28
|
-
circle.classList.add(`geometry-auto-complete-${index}`);
|
|
29
|
-
this.autoCompleteG.appendChild(circle);
|
|
30
|
-
});
|
|
31
|
-
return this.autoCompleteG;
|
|
32
|
-
}
|
|
33
|
-
removeAutoCompleteG(index) {
|
|
34
|
-
this.hoverElement = this.autoCompleteG.querySelector(`.geometry-auto-complete-${index}`);
|
|
35
|
-
this.hoverElement.style.visibility = 'hidden';
|
|
36
|
-
}
|
|
37
|
-
recoverAutoCompleteG() {
|
|
38
|
-
if (this.hoverElement) {
|
|
39
|
-
this.hoverElement.style.visibility = 'visible';
|
|
40
|
-
this.hoverElement = null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3JzL2F1dG8tY29tcGxldGUuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUgsT0FBTyxFQUE0QixTQUFTLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVqRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsU0FBa0Q7SUFJekYsWUFBbUIsS0FBaUI7UUFDaEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBREUsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUZwQyxpQkFBWSxHQUF1QixJQUFJLENBQUM7SUFJeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFzQixFQUFFLElBQThCO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xGLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFzQixFQUFFLElBQThCO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDL0IsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFO2dCQUN6RixNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLE9BQU87YUFDckIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsWUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBjcmVhdGVHLCBkcmF3Q2lyY2xlLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBpc1NlbGVjdGlvbk1vdmluZyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvckV4dHJhRGF0YSwgR2VuZXJhdG9yLCBSRVNJWkVfSEFORExFX0RJQU1FVEVSLCBnZXRSZWN0YW5nbGVCeVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0QXV0b0NvbXBsZXRlUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlR2VuZXJhdG9yIGV4dGVuZHMgR2VuZXJhdG9yPFBsYWl0R2VvbWV0cnksIEFjdGl2ZUdlbmVyYXRvckV4dHJhRGF0YT4ge1xuICAgIGF1dG9Db21wbGV0ZUchOiBTVkdHRWxlbWVudDtcbiAgICBob3ZlckVsZW1lbnQ6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgc3VwZXIoYm9hcmQpO1xuICAgIH1cblxuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgZGF0YTogQWN0aXZlR2VuZXJhdG9yRXh0cmFEYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuXG4gICAgICAgIGlmIChkYXRhLnNlbGVjdGVkICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIGRhdGE6IEFjdGl2ZUdlbmVyYXRvckV4dHJhRGF0YSk6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVHID0gY3JlYXRlRygpO1xuICAgICAgICBjb25zdCBtaWRkbGVQb2ludHMgPSBnZXRBdXRvQ29tcGxldGVQb2ludHMoZWxlbWVudCk7XG4gICAgICAgIG1pZGRsZVBvaW50cy5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNpcmNsZSA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKSwgcG9pbnQsIFJFU0laRV9IQU5ETEVfRElBTUVURVIsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6ICdub25lJyxcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzY2OThGRjRkJyxcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2lyY2xlLmNsYXNzTGlzdC5hZGQoYGdlb21ldHJ5LWF1dG8tY29tcGxldGUtJHtpbmRleH1gKTtcbiAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRy5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlRztcbiAgICB9XG5cbiAgICByZW1vdmVBdXRvQ29tcGxldGVHKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5ob3ZlckVsZW1lbnQgPSB0aGlzLmF1dG9Db21wbGV0ZUcucXVlcnlTZWxlY3RvcihgLmdlb21ldHJ5LWF1dG8tY29tcGxldGUtJHtpbmRleH1gKTtcbiAgICAgICAgdGhpcy5ob3ZlckVsZW1lbnQhLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICB9XG5cbiAgICByZWNvdmVyQXV0b0NvbXBsZXRlRygpIHtcbiAgICAgICAgaWYgKHRoaXMuaG92ZXJFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVyRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgdGhpcy5ob3ZlckVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, PlaitElement, drawCircle, isSelectionMoving, toPoint, transformPoint } from '@plait/core';
|
|
2
|
-
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
-
import { getAutoCompletePoints, getHitIndexOfAutoCompletePoint, getSelectedDrawElements } from '../utils';
|
|
4
|
-
export const withAutoCompleteReaction = (board) => {
|
|
5
|
-
const { pointerMove } = board;
|
|
6
|
-
let reactionG = null;
|
|
7
|
-
board.pointerMove = (event) => {
|
|
8
|
-
reactionG?.remove();
|
|
9
|
-
if (isSelectionMoving(board)) {
|
|
10
|
-
pointerMove(event);
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const selectedElements = getSelectedDrawElements(board);
|
|
14
|
-
const movingPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
15
|
-
if (selectedElements.length === 1 && PlaitDrawElement.isGeometry(selectedElements[0])) {
|
|
16
|
-
const points = getAutoCompletePoints(selectedElements[0]);
|
|
17
|
-
const hitIndex = getHitIndexOfAutoCompletePoint(movingPoint, points);
|
|
18
|
-
const hitPoint = points[hitIndex];
|
|
19
|
-
const component = PlaitElement.getComponent(selectedElements[0]);
|
|
20
|
-
component.autoCompleteGenerator.recoverAutoCompleteG();
|
|
21
|
-
if (hitPoint) {
|
|
22
|
-
component.autoCompleteGenerator.removeAutoCompleteG(hitIndex);
|
|
23
|
-
reactionG = drawCircle(PlaitBoard.getRoughSVG(board), hitPoint, 10, {
|
|
24
|
-
stroke: 'none',
|
|
25
|
-
fill: '#6698FF80',
|
|
26
|
-
fillStyle: 'solid'
|
|
27
|
-
});
|
|
28
|
-
PlaitBoard.getElementActiveHost(board).append(reactionG);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
pointerMove(event);
|
|
32
|
-
};
|
|
33
|
-
return board;
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWF1dG8tY29tcGxldGUtcmVhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcxRyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUMxRCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTlCLElBQUksU0FBUyxHQUF1QixJQUFJLENBQUM7SUFFekMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN4QyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDcEIsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsT0FBTztTQUNWO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25GLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsTUFBTSxRQUFRLEdBQUcsOEJBQThCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFzQixDQUFDO1lBQ3RGLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3ZELElBQUksUUFBUSxFQUFFO2dCQUNWLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUQsU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7b0JBQ2hFLE1BQU0sRUFBRSxNQUFNO29CQUNkLElBQUksRUFBRSxXQUFXO29CQUNqQixTQUFTLEVBQUUsT0FBTztpQkFDckIsQ0FBQyxDQUFDO2dCQUNILFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUQ7U0FDSjtRQUVELFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIGRyYXdDaXJjbGUsIGlzU2VsZWN0aW9uTW92aW5nLCB0b1BvaW50LCB0cmFuc2Zvcm1Qb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldEF1dG9Db21wbGV0ZVBvaW50cywgZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50LCBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvbWV0cnkuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IHdpdGhBdXRvQ29tcGxldGVSZWFjdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlck1vdmUgfSA9IGJvYXJkO1xuXG4gICAgbGV0IHJlYWN0aW9uRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgcmVhY3Rpb25HPy5yZW1vdmUoKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoc2VsZWN0ZWRFbGVtZW50c1swXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldEF1dG9Db21wbGV0ZVBvaW50cyhzZWxlY3RlZEVsZW1lbnRzWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEluZGV4ID0gZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50KG1vdmluZ1BvaW50LCBwb2ludHMpO1xuICAgICAgICAgICAgY29uc3QgaGl0UG9pbnQgPSBwb2ludHNbaGl0SW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChzZWxlY3RlZEVsZW1lbnRzWzBdKSBhcyBHZW9tZXRyeUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbXBvbmVudC5hdXRvQ29tcGxldGVHZW5lcmF0b3IucmVjb3ZlckF1dG9Db21wbGV0ZUcoKTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hdXRvQ29tcGxldGVHZW5lcmF0b3IucmVtb3ZlQXV0b0NvbXBsZXRlRyhoaXRJbmRleCk7XG4gICAgICAgICAgICAgICAgcmVhY3Rpb25HID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSwgaGl0UG9pbnQsIDEwLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiAnIzY2OThGRjgwJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHJlYWN0aW9uRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, addSelectedElement, clearSelectedElement, createG, distanceBetweenPointAndPoint, temporaryDisableSelection, toPoint, transformPoint } from '@plait/core';
|
|
2
|
-
import { LineShape, PlaitDrawElement } from '../interfaces';
|
|
3
|
-
import { handleLineCreating, getAutoCompletePoints, getHitIndexOfAutoCompletePoint, getSelectedDrawElements } from '../utils';
|
|
4
|
-
export const withAutoCompletePluginKey = 'plait-auto-complete-plugin-key';
|
|
5
|
-
export const withAutoComplete = (board) => {
|
|
6
|
-
const { pointerDown, pointerMove, pointerUp } = board;
|
|
7
|
-
const tolerance = 3;
|
|
8
|
-
let startPoint = null;
|
|
9
|
-
let lineShapeG = null;
|
|
10
|
-
let sourceElement;
|
|
11
|
-
let temporaryElement;
|
|
12
|
-
board.pointerDown = (event) => {
|
|
13
|
-
const selectedElements = getSelectedDrawElements(board);
|
|
14
|
-
const clickPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
15
|
-
if (selectedElements.length === 1 && PlaitDrawElement.isGeometry(selectedElements[0])) {
|
|
16
|
-
const points = getAutoCompletePoints(selectedElements[0]);
|
|
17
|
-
const index = getHitIndexOfAutoCompletePoint(clickPoint, points);
|
|
18
|
-
const hitPoint = points[index];
|
|
19
|
-
if (hitPoint) {
|
|
20
|
-
temporaryDisableSelection(board);
|
|
21
|
-
startPoint = clickPoint;
|
|
22
|
-
sourceElement = selectedElements[0];
|
|
23
|
-
BoardTransforms.updatePointerType(board, LineShape.elbow);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
pointerDown(event);
|
|
27
|
-
};
|
|
28
|
-
board.pointerMove = (event) => {
|
|
29
|
-
lineShapeG?.remove();
|
|
30
|
-
lineShapeG = createG();
|
|
31
|
-
let movingPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
32
|
-
if (startPoint && sourceElement) {
|
|
33
|
-
const distance = distanceBetweenPointAndPoint(...movingPoint, ...startPoint);
|
|
34
|
-
if (distance > tolerance) {
|
|
35
|
-
temporaryElement = handleLineCreating(board, LineShape.elbow, startPoint, movingPoint, sourceElement, lineShapeG);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
pointerMove(event);
|
|
39
|
-
};
|
|
40
|
-
board.pointerUp = event => {
|
|
41
|
-
if (temporaryElement) {
|
|
42
|
-
Transforms.insertNode(board, temporaryElement, [board.children.length]);
|
|
43
|
-
clearSelectedElement(board);
|
|
44
|
-
addSelectedElement(board, temporaryElement);
|
|
45
|
-
const afterComplete = board.getPluginOptions(withAutoCompletePluginKey)
|
|
46
|
-
?.afterComplete;
|
|
47
|
-
afterComplete && afterComplete(temporaryElement);
|
|
48
|
-
}
|
|
49
|
-
if (startPoint) {
|
|
50
|
-
BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
|
|
51
|
-
startPoint = null;
|
|
52
|
-
}
|
|
53
|
-
lineShapeG?.remove();
|
|
54
|
-
lineShapeG = null;
|
|
55
|
-
sourceElement = null;
|
|
56
|
-
temporaryElement = null;
|
|
57
|
-
pointerUp(event);
|
|
58
|
-
};
|
|
59
|
-
return board;
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hdXRvLWNvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWF1dG8tY29tcGxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZixVQUFVLEVBRVYsZ0JBQWdCLEVBRWhCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLE9BQU8sRUFDUCxjQUFjLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU05SCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNsRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFdEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksVUFBVSxHQUFpQixJQUFJLENBQUM7SUFDcEMsSUFBSSxVQUFVLEdBQXVCLElBQUksQ0FBQztJQUMxQyxJQUFJLGFBQW1DLENBQUM7SUFDeEMsSUFBSSxnQkFBa0MsQ0FBQztJQUV2QyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxD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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJvYXJkVHJhbnNmb3JtcyxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24sXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaGFuZGxlTGluZUNyZWF0aW5nLCBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCwgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0NvbXBsZXRlT3B0aW9ucyB7XG4gICAgYWZ0ZXJDb21wbGV0ZTogKGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge307XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoQXV0b0NvbXBsZXRlUGx1Z2luS2V5ID0gJ3BsYWl0LWF1dG8tY29tcGxldGUtcGx1Z2luLWtleSc7XG5cbmV4cG9ydCBjb25zdCB3aXRoQXV0b0NvbXBsZXRlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIHBvaW50ZXJVcCB9ID0gYm9hcmQ7XG5cbiAgICBjb25zdCB0b2xlcmFuY2UgPSAzO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzb3VyY2VFbGVtZW50OiBQbGFpdEdlb21ldHJ5IHwgbnVsbDtcbiAgICBsZXQgdGVtcG9yYXJ5RWxlbWVudDogUGxhaXRMaW5lIHwgbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgY2xpY2tQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShzZWxlY3RlZEVsZW1lbnRzWzBdKSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXV0b0NvbXBsZXRlUG9pbnRzKHNlbGVjdGVkRWxlbWVudHNbMF0pO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQoY2xpY2tQb2ludCwgcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFBvaW50ID0gcG9pbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24oYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBjbGlja1BvaW50O1xuICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBzZWxlY3RlZEVsZW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgTGluZVNoYXBlLmVsYm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQgJiYgc291cmNlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLm1vdmluZ1BvaW50LCAuLi5zdGFydFBvaW50KTtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHRvbGVyYW5jZSkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBoYW5kbGVMaW5lQ3JlYXRpbmcoYm9hcmQsIExpbmVTaGFwZS5lbGJvdywgc3RhcnRQb2ludCwgbW92aW5nUG9pbnQsIHNvdXJjZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbXBsZXRlID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPEF1dG9Db21wbGV0ZU9wdGlvbnM+KHdpdGhBdXRvQ29tcGxldGVQbHVnaW5LZXkpXG4gICAgICAgICAgICAgICAgPy5hZnRlckNvbXBsZXRlO1xuICAgICAgICAgICAgYWZ0ZXJDb21wbGV0ZSAmJiBhZnRlckNvbXBsZXRlKHRlbXBvcmFyeUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBsaW5lU2hhcGVHID0gbnVsbDtcbiAgICAgICAgc291cmNlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { PropertyTransforms } from '@plait/common';
|
|
2
|
-
import { MemorizeKey, PlaitDrawElement } from '../interfaces';
|
|
3
|
-
export const setStrokeColor = (board, strokeColor) => {
|
|
4
|
-
PropertyTransforms.setProperty(board, { strokeColor }, { getMemorizeKey });
|
|
5
|
-
};
|
|
6
|
-
export const setStrokeWidth = (board, strokeWidth) => {
|
|
7
|
-
PropertyTransforms.setProperty(board, { strokeWidth }, { getMemorizeKey });
|
|
8
|
-
};
|
|
9
|
-
export const setFillColor = (board, fill) => {
|
|
10
|
-
PropertyTransforms.setProperty(board, { fill }, { getMemorizeKey });
|
|
11
|
-
};
|
|
12
|
-
export const setStrokeStyle = (board, strokeStyle) => {
|
|
13
|
-
PropertyTransforms.setProperty(board, { strokeStyle }, { getMemorizeKey });
|
|
14
|
-
};
|
|
15
|
-
export const getMemorizeKey = (element) => {
|
|
16
|
-
let key = '';
|
|
17
|
-
switch (true) {
|
|
18
|
-
case PlaitDrawElement.isBaseShape(element): {
|
|
19
|
-
key = MemorizeKey.basicShape;
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
case PlaitDrawElement.isFlowchart(element): {
|
|
23
|
-
key = MemorizeKey.flowchart;
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
case PlaitDrawElement.isLine(element): {
|
|
27
|
-
key = MemorizeKey.line;
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return key;
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdHJhbnNmb3Jtcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxXQUFtQixFQUFFLEVBQUU7SUFDckUsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUNyRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDNUQsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUNyRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtJQUNwRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDYixRQUFRLElBQUksRUFBRTtRQUNWLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDeEMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDN0IsTUFBTTtTQUNUO1FBQ0QsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNO1NBQ1Q7UUFDRCxLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLE1BQU07U0FDVDtLQUNKO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eVRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1lbW9yaXplS2V5LCBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBzZXRTdHJva2VDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgc3Ryb2tlQ29sb3I6IHN0cmluZykgPT4ge1xuICAgIFByb3BlcnR5VHJhbnNmb3Jtcy5zZXRQcm9wZXJ0eShib2FyZCwgeyBzdHJva2VDb2xvciB9LCB7IGdldE1lbW9yaXplS2V5IH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFN0cm9rZVdpZHRoID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdHJva2VXaWR0aDogbnVtYmVyKSA9PiB7XG4gICAgUHJvcGVydHlUcmFuc2Zvcm1zLnNldFByb3BlcnR5KGJvYXJkLCB7IHN0cm9rZVdpZHRoIH0sIHsgZ2V0TWVtb3JpemVLZXkgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0RmlsbENvbG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBmaWxsOiBzdHJpbmcpID0+IHtcbiAgICBQcm9wZXJ0eVRyYW5zZm9ybXMuc2V0UHJvcGVydHkoYm9hcmQsIHsgZmlsbCB9LCB7IGdldE1lbW9yaXplS2V5IH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFN0cm9rZVN0eWxlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdHJva2VTdHlsZTogc3RyaW5nKSA9PiB7XG4gICAgUHJvcGVydHlUcmFuc2Zvcm1zLnNldFByb3BlcnR5KGJvYXJkLCB7IHN0cm9rZVN0eWxlIH0sIHsgZ2V0TWVtb3JpemVLZXkgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVtb3JpemVLZXkgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgbGV0IGtleSA9ICcnO1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICBjYXNlIFBsYWl0RHJhd0VsZW1lbnQuaXNCYXNlU2hhcGUoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmJhc2ljU2hhcGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBsYWl0RHJhd0VsZW1lbnQuaXNGbG93Y2hhcnQoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmZsb3djaGFydDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmxpbmU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5O1xufTtcbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '@plait/core';
|
|
2
|
-
import { PlaitLine } from '../interfaces';
|
|
3
|
-
export interface AutoCompleteOptions {
|
|
4
|
-
afterComplete: (element: PlaitLine) => {};
|
|
5
|
-
}
|
|
6
|
-
export declare const withAutoCompletePluginKey = "plait-auto-complete-plugin-key";
|
|
7
|
-
export declare const withAutoComplete: (board: PlaitBoard) => PlaitBoard;
|