@plait/draw 0.1.0-next.10 → 0.1.0-next.12
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/pointer.d.ts +5 -1
- package/esm2022/constants/pointer.mjs +27 -0
- package/esm2022/generators/line-active.generator.mjs +51 -0
- package/{esm2020 → esm2022}/geometry.component.mjs +4 -4
- package/esm2022/interfaces/geometry.mjs +27 -0
- package/esm2022/interfaces/line.mjs +56 -0
- package/esm2022/line.component.mjs +160 -0
- package/esm2022/plugins/with-draw-fragment.mjs +61 -0
- package/{esm2020 → esm2022}/plugins/with-draw.mjs +4 -5
- package/{esm2020 → esm2022}/utils/clipboard.mjs +2 -1
- package/esm2022/utils/engine/diamond.mjs +30 -0
- package/esm2022/utils/engine/ellipse.mjs +92 -0
- package/esm2022/utils/engine/index.mjs +26 -0
- package/esm2022/utils/engine/left-arrow.mjs +45 -0
- package/esm2022/utils/engine/parallelogram.mjs +39 -0
- package/esm2022/utils/engine/rectangle.mjs +26 -0
- package/esm2022/utils/engine/right-arrow.mjs +45 -0
- package/esm2022/utils/engine/round-rectangle.mjs +59 -0
- package/esm2022/utils/engine/trapezoid.mjs +40 -0
- package/esm2022/utils/engine/triangle.mjs +40 -0
- package/esm2022/utils/geometry.mjs +95 -0
- package/esm2022/utils/line.mjs +205 -0
- package/esm2022/utils/position/line.mjs +33 -0
- package/{fesm2020 → fesm2022}/plait-draw.mjs +416 -88
- package/fesm2022/plait-draw.mjs.map +1 -0
- package/generators/line-active.generator.d.ts +1 -0
- package/interfaces/geometry.d.ts +9 -2
- package/interfaces/line.d.ts +9 -2
- package/line.component.d.ts +1 -0
- package/package.json +7 -12
- package/plugins/with-draw-fragment.d.ts +2 -0
- package/styles/styles.scss +2 -2
- package/utils/engine/left-arrow.d.ts +4 -0
- package/utils/engine/parallelogram.d.ts +1 -1
- package/utils/engine/right-arrow.d.ts +4 -0
- package/utils/engine/trapezoid.d.ts +4 -0
- package/utils/engine/triangle.d.ts +4 -0
- package/utils/geometry.d.ts +1 -0
- package/utils/line.d.ts +10 -6
- package/esm2020/constants/pointer.mjs +0 -19
- package/esm2020/generators/line-active.generator.mjs +0 -36
- package/esm2020/interfaces/geometry.mjs +0 -23
- package/esm2020/interfaces/line.mjs +0 -48
- package/esm2020/line.component.mjs +0 -152
- package/esm2020/plugins/with-draw-fragment.mjs +0 -52
- package/esm2020/utils/engine/diamond.mjs +0 -22
- package/esm2020/utils/engine/ellipse.mjs +0 -55
- package/esm2020/utils/engine/index.mjs +0 -18
- package/esm2020/utils/engine/parallelogram.mjs +0 -32
- package/esm2020/utils/engine/rectangle.mjs +0 -18
- package/esm2020/utils/engine/round-rectangle.mjs +0 -49
- package/esm2020/utils/geometry.mjs +0 -84
- package/esm2020/utils/line.mjs +0 -169
- package/esm2020/utils/position/line.mjs +0 -34
- package/fesm2015/plait-draw.mjs +0 -1765
- package/fesm2015/plait-draw.mjs.map +0 -1
- package/fesm2020/plait-draw.mjs.map +0 -1
- /package/{esm2020 → esm2022}/constants/geometry.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/line.mjs +0 -0
- /package/{esm2020 → esm2022}/generators/geometry-shape.generator.mjs +0 -0
- /package/{esm2020 → esm2022}/generators/line.generator.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/element.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/text.mjs +0 -0
- /package/{esm2020 → esm2022}/plait-draw.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-draw-hotkey.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-geometry-create.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-geometry-resize.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-line-bound-reaction.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-line-create.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-line-resize.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-line-text.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/geometry-text.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/geometry.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/index.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/line.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/line-arrow.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/position/geometry.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/selected.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/style/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/style/stroke.mjs +0 -0
package/package.json
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plait/draw",
|
|
3
|
-
"version": "0.1.0-next.
|
|
3
|
+
"version": "0.1.0-next.12",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^16.0.0",
|
|
6
|
-
"@angular/core": "^16.0.0"
|
|
6
|
+
"@angular/core": "^16.0.0",
|
|
7
|
+
"is-hotkey": "^0.2.0"
|
|
7
8
|
},
|
|
8
9
|
"dependencies": {
|
|
9
10
|
"tslib": "^2.3.0"
|
|
10
11
|
},
|
|
11
|
-
"module": "
|
|
12
|
-
"es2020": "fesm2020/plait-draw.mjs",
|
|
13
|
-
"esm2020": "esm2020/plait-draw.mjs",
|
|
14
|
-
"fesm2020": "fesm2020/plait-draw.mjs",
|
|
15
|
-
"fesm2015": "fesm2015/plait-draw.mjs",
|
|
12
|
+
"module": "fesm2022/plait-draw.mjs",
|
|
16
13
|
"typings": "index.d.ts",
|
|
17
14
|
"exports": {
|
|
18
15
|
"./package.json": {
|
|
@@ -20,11 +17,9 @@
|
|
|
20
17
|
},
|
|
21
18
|
".": {
|
|
22
19
|
"types": "./index.d.ts",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"node": "./fesm2015/plait-draw.mjs",
|
|
27
|
-
"default": "./fesm2020/plait-draw.mjs"
|
|
20
|
+
"esm2022": "./esm2022/plait-draw.mjs",
|
|
21
|
+
"esm": "./esm2022/plait-draw.mjs",
|
|
22
|
+
"default": "./fesm2022/plait-draw.mjs"
|
|
28
23
|
}
|
|
29
24
|
},
|
|
30
25
|
"sideEffects": false
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { PlaitBoard } from '@plait/core';
|
|
2
|
+
import { PlaitGeometry, PlaitLine } from '../interfaces';
|
|
2
3
|
export declare const withDrawFragment: (baseBoard: PlaitBoard) => PlaitBoard;
|
|
4
|
+
export declare const getBoundedLineElements: (board: PlaitBoard, geometries: PlaitGeometry[]) => PlaitLine[];
|
package/styles/styles.scss
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Point, RectangleClient } from '@plait/core';
|
|
2
2
|
import { ShapeEngine } from '../../interfaces';
|
|
3
3
|
export declare const ParallelogramEngine: ShapeEngine;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const getParallelogramCornerPoints: (rectangle: RectangleClient) => Point[];
|
package/utils/geometry.d.ts
CHANGED
|
@@ -14,3 +14,4 @@ export declare const drawBoundMask: (board: PlaitBoard, element: PlaitGeometry)
|
|
|
14
14
|
export declare const drawGeometry: (board: PlaitBoard, outerRectangle: RectangleClient, shape: GeometryShape, options: Options) => SVGGElement;
|
|
15
15
|
export declare const getNearestPoint: (element: PlaitGeometry, point: Point, inflateDelta?: number) => Point;
|
|
16
16
|
export declare const getCenterPointsOnPolygon: (points: Point[]) => Point[];
|
|
17
|
+
export declare const getEdgeOnPolygonByPoint: (corners: Point[], point: Point) => [Point, Point] | null;
|
package/utils/line.d.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { Point, PlaitBoard, RectangleClient } from '@plait/core';
|
|
2
|
-
import { LineHandle, LineShape, PlaitGeometry, PlaitLine } from '../interfaces';
|
|
1
|
+
import { Point, PlaitBoard, RectangleClient, PointOfRectangle, Direction } from '@plait/core';
|
|
2
|
+
import { LineHandle, LineHandleRef, LineShape, PlaitGeometry, PlaitLine } from '../interfaces';
|
|
3
3
|
export declare const createLineElement: (shape: LineShape, points: [Point, Point], source: LineHandle, target: LineHandle, options?: Pick<PlaitLine, 'strokeColor' | 'strokeWidth'>) => PlaitLine;
|
|
4
4
|
export declare const getLinePoints: (board: PlaitBoard, element: PlaitLine) => Point[];
|
|
5
|
-
export declare const getStraightPoints: (board: PlaitBoard, element: PlaitLine) =>
|
|
5
|
+
export declare const getStraightPoints: (board: PlaitBoard, element: PlaitLine) => PointOfRectangle[];
|
|
6
|
+
export declare const getLineHandlePoints: (board: PlaitBoard, element: PlaitLine) => PointOfRectangle[];
|
|
7
|
+
export declare const getLineHandleRefPair: (board: PlaitBoard, element: PlaitLine) => {
|
|
8
|
+
source: LineHandleRef;
|
|
9
|
+
target: LineHandleRef;
|
|
10
|
+
};
|
|
6
11
|
export declare const getElbowPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
|
|
7
12
|
export declare const isHitPolyLine: (pathPoints: Point[], point: Point, strokeWidth: number, expand?: number) => boolean;
|
|
8
13
|
export declare const getHitLineTextIndex: (board: PlaitBoard, element: PlaitLine, point: Point) => number;
|
|
9
14
|
export declare const isHitLineText: (board: PlaitBoard, element: PlaitLine, point: Point) => boolean;
|
|
10
15
|
export declare const drawLine: (board: PlaitBoard, element: PlaitLine) => SVGGElement;
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const getConnectionPoint: (geometry: PlaitGeometry, connection: Point, offset: number) => Point;
|
|
16
|
+
export declare const getDirectionByBoundElementAndConnection: (board: PlaitBoard, boundElement: PlaitGeometry, connection: PointOfRectangle) => Direction | null;
|
|
17
|
+
export declare const getConnectionPoint: (geometry: PlaitGeometry, connection: Point, direction?: Direction, delta?: number) => Point;
|
|
14
18
|
export declare const transformPointToConnection: (board: PlaitBoard, point: Point, hitElement: PlaitGeometry) => Point;
|
|
15
19
|
export declare const getHitConnectorPoint: (movingPoint: Point, hitElement: PlaitGeometry, rectangle: RectangleClient) => Point | undefined;
|
|
16
20
|
export declare const getLineTextRectangle: (board: PlaitBoard, element: PlaitLine, index: number) => RectangleClient;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export var DrawPointerType;
|
|
2
|
-
(function (DrawPointerType) {
|
|
3
|
-
DrawPointerType["text"] = "text";
|
|
4
|
-
DrawPointerType["rectangle"] = "rectangle";
|
|
5
|
-
DrawPointerType["line"] = "line";
|
|
6
|
-
DrawPointerType["diamond"] = "diamond";
|
|
7
|
-
DrawPointerType["roundRectangle"] = "roundRectangle";
|
|
8
|
-
DrawPointerType["parallelogram"] = "parallelogram";
|
|
9
|
-
DrawPointerType["ellipse"] = "ellipse";
|
|
10
|
-
})(DrawPointerType || (DrawPointerType = {}));
|
|
11
|
-
export const GeometryPointer = [
|
|
12
|
-
DrawPointerType.rectangle,
|
|
13
|
-
DrawPointerType.text,
|
|
14
|
-
DrawPointerType.diamond,
|
|
15
|
-
DrawPointerType.ellipse,
|
|
16
|
-
DrawPointerType.parallelogram,
|
|
17
|
-
DrawPointerType.roundRectangle
|
|
18
|
-
];
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2NvbnN0YW50cy9wb2ludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGVBUVg7QUFSRCxXQUFZLGVBQWU7SUFDdkIsZ0NBQWEsQ0FBQTtJQUNiLDBDQUF1QixDQUFBO0lBQ3ZCLGdDQUFhLENBQUE7SUFDYixzQ0FBbUIsQ0FBQTtJQUNuQixvREFBaUMsQ0FBQTtJQUNqQyxrREFBK0IsQ0FBQTtJQUMvQixzQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBUlcsZUFBZSxLQUFmLGVBQWUsUUFRMUI7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsZUFBZSxDQUFDLFNBQVM7SUFDekIsZUFBZSxDQUFDLElBQUk7SUFDcEIsZUFBZSxDQUFDLE9BQU87SUFDdkIsZUFBZSxDQUFDLE9BQU87SUFDdkIsZUFBZSxDQUFDLGFBQWE7SUFDN0IsZUFBZSxDQUFDLGNBQWM7Q0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIERyYXdQb2ludGVyVHlwZSB7XG4gICAgdGV4dCA9ICd0ZXh0JyxcbiAgICByZWN0YW5nbGUgPSAncmVjdGFuZ2xlJyxcbiAgICBsaW5lID0gJ2xpbmUnLFxuICAgIGRpYW1vbmQgPSAnZGlhbW9uZCcsXG4gICAgcm91bmRSZWN0YW5nbGUgPSAncm91bmRSZWN0YW5nbGUnLFxuICAgIHBhcmFsbGVsb2dyYW0gPSAncGFyYWxsZWxvZ3JhbScsXG4gICAgZWxsaXBzZSA9ICdlbGxpcHNlJ1xufVxuXG5leHBvcnQgY29uc3QgR2VvbWV0cnlQb2ludGVyID0gW1xuICAgIERyYXdQb2ludGVyVHlwZS5yZWN0YW5nbGUsXG4gICAgRHJhd1BvaW50ZXJUeXBlLnRleHQsXG4gICAgRHJhd1BvaW50ZXJUeXBlLmRpYW1vbmQsXG4gICAgRHJhd1BvaW50ZXJUeXBlLmVsbGlwc2UsXG4gICAgRHJhd1BvaW50ZXJUeXBlLnBhcmFsbGVsb2dyYW0sXG4gICAgRHJhd1BvaW50ZXJUeXBlLnJvdW5kUmVjdGFuZ2xlXG5dO1xuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, createG, drawCircle } from '@plait/core';
|
|
2
|
-
import { Generator, RESIZE_HANDLE_DIAMETER } from '@plait/common';
|
|
3
|
-
import { getSourcePoint, getTargetPoint } from '../utils';
|
|
4
|
-
export class LineActiveGenerator extends Generator {
|
|
5
|
-
canDraw(element, data) {
|
|
6
|
-
if (data.selected) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
baseDraw(element, data) {
|
|
14
|
-
const activeG = createG();
|
|
15
|
-
activeG.classList.add('active');
|
|
16
|
-
activeG.classList.add('line-handle');
|
|
17
|
-
const sourcePoint = getSourcePoint(this.board, element);
|
|
18
|
-
const targetPoint = getTargetPoint(this.board, element);
|
|
19
|
-
const sourceCircle = drawCircle(PlaitBoard.getRoughSVG(this.board), sourcePoint, RESIZE_HANDLE_DIAMETER, {
|
|
20
|
-
stroke: '#999999',
|
|
21
|
-
strokeWidth: 1,
|
|
22
|
-
fill: '#FFF',
|
|
23
|
-
fillStyle: 'solid'
|
|
24
|
-
});
|
|
25
|
-
const targetCircle = drawCircle(PlaitBoard.getRoughSVG(this.board), targetPoint, RESIZE_HANDLE_DIAMETER, {
|
|
26
|
-
stroke: '#999999',
|
|
27
|
-
strokeWidth: 1,
|
|
28
|
-
fill: '#FFF',
|
|
29
|
-
fillStyle: 'solid'
|
|
30
|
-
});
|
|
31
|
-
activeG.appendChild(targetCircle);
|
|
32
|
-
activeG.appendChild(sourceCircle);
|
|
33
|
-
return activeG;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9ycy9saW5lLWFjdGl2ZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlELE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNMUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFNBQWdDO0lBQ3JFLE9BQU8sQ0FBQyxPQUFrQixFQUFFLElBQWdCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFrQixFQUFFLElBQWdCO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDckcsTUFBTSxFQUFFLFNBQVM7WUFDakIsV0FBVyxFQUFFLENBQUM7WUFDZCxJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxPQUFPO1NBQ3JCLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDckcsTUFBTSxFQUFFLFNBQVM7WUFDakIsV0FBVyxFQUFFLENBQUM7WUFDZCxJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxPQUFPO1NBQ3JCLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBjcmVhdGVHLCBkcmF3Q2lyY2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBHZW5lcmF0b3IsIFJFU0laRV9IQU5ETEVfRElBTUVURVIgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNvdXJjZVBvaW50LCBnZXRUYXJnZXRQb2ludCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVEYXRhIHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIExpbmVBY3RpdmVHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3I8UGxhaXRMaW5lLCBBY3RpdmVEYXRhPiB7XG4gICAgY2FuRHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmFzZURyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBBY3RpdmVEYXRhKTogU1ZHR0VsZW1lbnQge1xuICAgICAgICBjb25zdCBhY3RpdmVHID0gY3JlYXRlRygpO1xuICAgICAgICBhY3RpdmVHLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICAgICAgICBhY3RpdmVHLmNsYXNzTGlzdC5hZGQoJ2xpbmUtaGFuZGxlJyk7XG4gICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gZ2V0U291cmNlUG9pbnQodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gZ2V0VGFyZ2V0UG9pbnQodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNpcmNsZSA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKSwgc291cmNlUG9pbnQsIFJFU0laRV9IQU5ETEVfRElBTUVURVIsIHtcbiAgICAgICAgICAgIHN0cm9rZTogJyM5OTk5OTknLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICBmaWxsOiAnI0ZGRicsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRhcmdldENpcmNsZSA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKSwgdGFyZ2V0UG9pbnQsIFJFU0laRV9IQU5ETEVfRElBTUVURVIsIHtcbiAgICAgICAgICAgIHN0cm9rZTogJyM5OTk5OTknLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICBmaWxsOiAnI0ZGRicsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGl2ZUcuYXBwZW5kQ2hpbGQodGFyZ2V0Q2lyY2xlKTtcbiAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZChzb3VyY2VDaXJjbGUpO1xuICAgICAgICByZXR1cm4gYWN0aXZlRztcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { PlaitElement } from '@plait/core';
|
|
2
|
-
export var GeometryShape;
|
|
3
|
-
(function (GeometryShape) {
|
|
4
|
-
GeometryShape["rectangle"] = "rectangle";
|
|
5
|
-
GeometryShape["ellipse"] = "ellipse";
|
|
6
|
-
GeometryShape["diamond"] = "diamond";
|
|
7
|
-
GeometryShape["roundRectangle"] = "roundRectangle";
|
|
8
|
-
GeometryShape["parallelogram"] = "parallelogram";
|
|
9
|
-
GeometryShape["text"] = "text";
|
|
10
|
-
})(GeometryShape || (GeometryShape = {}));
|
|
11
|
-
export const PlaitGeometry = {
|
|
12
|
-
getTextEditor(element) {
|
|
13
|
-
return PlaitGeometry.getTextManage(element).componentRef.instance.editor;
|
|
14
|
-
},
|
|
15
|
-
getTextManage(element) {
|
|
16
|
-
const component = PlaitElement.getComponent(element);
|
|
17
|
-
if (component) {
|
|
18
|
-
return component.textManage;
|
|
19
|
-
}
|
|
20
|
-
throw new Error('can not get correctly component in get text editor');
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9pbnRlcmZhY2VzL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBTS9FLE1BQU0sQ0FBTixJQUFZLGFBT1g7QUFQRCxXQUFZLGFBQWE7SUFDckIsd0NBQXVCLENBQUE7SUFDdkIsb0NBQW1CLENBQUE7SUFDbkIsb0NBQW1CLENBQUE7SUFDbkIsa0RBQWlDLENBQUE7SUFDakMsZ0RBQStCLENBQUE7SUFDL0IsOEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBUFcsYUFBYSxLQUFiLGFBQWEsUUFPeEI7QUFnQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQ3pCLGFBQWEsQ0FBQyxPQUFzQjtRQUNoQyxPQUFPLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDN0UsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBc0IsQ0FBQztRQUMxRSxJQUFJLFNBQVMsRUFBRTtZQUNYLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQztTQUMvQjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvbWV0cnkuY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IFBhcmFncmFwaEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBTdHJva2VTdHlsZSB9IGZyb20gJy4vZWxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIEdlb21ldHJ5U2hhcGUge1xuICAgIHJlY3RhbmdsZSA9ICdyZWN0YW5nbGUnLFxuICAgIGVsbGlwc2UgPSAnZWxsaXBzZScsXG4gICAgZGlhbW9uZCA9ICdkaWFtb25kJyxcbiAgICByb3VuZFJlY3RhbmdsZSA9ICdyb3VuZFJlY3RhbmdsZScsXG4gICAgcGFyYWxsZWxvZ3JhbSA9ICdwYXJhbGxlbG9ncmFtJyxcbiAgICB0ZXh0ID0gJ3RleHQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRHZW9tZXRyeSBleHRlbmRzIFBsYWl0RWxlbWVudCB7XG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XTtcbiAgICB0eXBlOiAnZ2VvbWV0cnknO1xuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlO1xuXG4gICAgdGV4dDogUGFyYWdyYXBoRWxlbWVudDtcbiAgICB0ZXh0SGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvLyBub2RlIHN0eWxlIGF0dHJpYnV0ZXNcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHN0cm9rZVN0eWxlPzogU3Ryb2tlU3R5bGU7XG5cbiAgICBhbmdsZTogbnVtYmVyO1xuICAgIG9wYWNpdHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdFJlY3RhbmdsZSBleHRlbmRzIFBsYWl0R2VvbWV0cnkge1xuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlLnJlY3RhbmdsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEVsbGlwc2UgZXh0ZW5kcyBQbGFpdEdlb21ldHJ5IHtcbiAgICBzaGFwZTogR2VvbWV0cnlTaGFwZS5lbGxpcHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0RGlhbW9uZCBleHRlbmRzIFBsYWl0R2VvbWV0cnkge1xuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlLmRpYW1vbmQ7XG59XG5cbmV4cG9ydCBjb25zdCBQbGFpdEdlb21ldHJ5ID0ge1xuICAgIGdldFRleHRFZGl0b3IoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkge1xuICAgICAgICByZXR1cm4gUGxhaXRHZW9tZXRyeS5nZXRUZXh0TWFuYWdlKGVsZW1lbnQpLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lZGl0b3I7XG4gICAgfSxcbiAgICBnZXRUZXh0TWFuYWdlKGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChlbGVtZW50KSBhcyBHZW9tZXRyeUNvbXBvbmVudDtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC50ZXh0TWFuYWdlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY2FuIG5vdCBnZXQgY29ycmVjdGx5IGNvbXBvbmVudCBpbiBnZXQgdGV4dCBlZGl0b3InKTtcbiAgICB9XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXBlRW5naW5lIHtcbiAgICBpc0hpdDogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpID0+IGJvb2xlYW47XG4gICAgZ2V0TmVhcmVzdFBvaW50OiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkgPT4gUG9pbnQ7XG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzOiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IFBvaW50W107XG4gICAgZHJhdzogKGJvYXJkOiBQbGFpdEJvYXJkLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogT3B0aW9ucykgPT4gU1ZHR0VsZW1lbnQ7XG59XG4iXX0=
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { PlaitElement } from '@plait/core';
|
|
2
|
-
export var LineMarkerType;
|
|
3
|
-
(function (LineMarkerType) {
|
|
4
|
-
LineMarkerType["arrow"] = "arrow";
|
|
5
|
-
LineMarkerType["none"] = "none";
|
|
6
|
-
LineMarkerType["openTriangle"] = "open-triangle";
|
|
7
|
-
LineMarkerType["solidTriangle"] = "solid-triangle";
|
|
8
|
-
LineMarkerType["sharpArrow"] = "sharp-arrow";
|
|
9
|
-
})(LineMarkerType || (LineMarkerType = {}));
|
|
10
|
-
export var LineShape;
|
|
11
|
-
(function (LineShape) {
|
|
12
|
-
LineShape["straight"] = "straight";
|
|
13
|
-
LineShape["curve"] = "curve";
|
|
14
|
-
LineShape["elbow"] = "elbow";
|
|
15
|
-
})(LineShape || (LineShape = {}));
|
|
16
|
-
export var LineHandleKey;
|
|
17
|
-
(function (LineHandleKey) {
|
|
18
|
-
LineHandleKey["source"] = "source";
|
|
19
|
-
LineHandleKey["target"] = "target";
|
|
20
|
-
})(LineHandleKey || (LineHandleKey = {}));
|
|
21
|
-
export const PlaitLine = {
|
|
22
|
-
getTextEditors(element) {
|
|
23
|
-
const component = PlaitElement.getComponent(element);
|
|
24
|
-
if (component) {
|
|
25
|
-
const manage = component.textManages.find(manage => manage.isEditing);
|
|
26
|
-
if (manage) {
|
|
27
|
-
return [manage.componentRef.instance.editor];
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
return component.textManages.map(manage => manage.componentRef.instance.editor);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
throw new Error('can not get correctly component in get text editor');
|
|
34
|
-
},
|
|
35
|
-
isSourceMark(line, markType) {
|
|
36
|
-
return line.source.marker === markType;
|
|
37
|
-
},
|
|
38
|
-
isTargetMark(line, markType) {
|
|
39
|
-
return line.target.marker === markType;
|
|
40
|
-
},
|
|
41
|
-
isBoundElementOfSource(line, element) {
|
|
42
|
-
return line.source.boundId === element.id;
|
|
43
|
-
},
|
|
44
|
-
isBoundElementOfTarget(line, element) {
|
|
45
|
-
return line.target.boundId === element.id;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2ludGVyZmFjZXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBTWxELE1BQU0sQ0FBTixJQUFZLGNBTVg7QUFORCxXQUFZLGNBQWM7SUFDdEIsaUNBQWUsQ0FBQTtJQUNmLCtCQUFhLENBQUE7SUFDYixnREFBOEIsQ0FBQTtJQUM5QixrREFBZ0MsQ0FBQTtJQUNoQyw0Q0FBMEIsQ0FBQTtBQUM5QixDQUFDLEVBTlcsY0FBYyxLQUFkLGNBQWMsUUFNekI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ2pCLGtDQUFxQixDQUFBO0lBQ3JCLDRCQUFlLENBQUE7SUFDZiw0QkFBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsa0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBK0NELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixjQUFjLENBQUMsT0FBa0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQWtCLENBQUM7UUFDdEUsSUFBSSxTQUFTLEVBQUU7WUFDWCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0RSxJQUFJLE1BQU0sRUFBRTtnQkFDUixPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0gsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ25GO1NBQ0o7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELFlBQVksQ0FBQyxJQUFlLEVBQUUsUUFBd0I7UUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7SUFDM0MsQ0FBQztJQUNELFlBQVksQ0FBQyxJQUFlLEVBQUUsUUFBd0I7UUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7SUFDM0MsQ0FBQztJQUNELHNCQUFzQixDQUFDLElBQWUsRUFBRSxPQUFzQjtRQUMxRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELHNCQUFzQixDQUFDLElBQWUsRUFBRSxPQUFzQjtRQUMxRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDOUMsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IExpbmVDb21wb25lbnQgfSBmcm9tICcuLi9saW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBTdHJva2VTdHlsZSB9IGZyb20gJy4vZWxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExpbmVNYXJrZXJUeXBlIHtcbiAgICBhcnJvdyA9ICdhcnJvdycsXG4gICAgbm9uZSA9ICdub25lJyxcbiAgICBvcGVuVHJpYW5nbGUgPSAnb3Blbi10cmlhbmdsZScsXG4gICAgc29saWRUcmlhbmdsZSA9ICdzb2xpZC10cmlhbmdsZScsXG4gICAgc2hhcnBBcnJvdyA9ICdzaGFycC1hcnJvdydcbn1cblxuZXhwb3J0IGVudW0gTGluZVNoYXBlIHtcbiAgICBzdHJhaWdodCA9ICdzdHJhaWdodCcsXG4gICAgY3VydmUgPSAnY3VydmUnLFxuICAgIGVsYm93ID0gJ2VsYm93J1xufVxuXG5leHBvcnQgZW51bSBMaW5lSGFuZGxlS2V5IHtcbiAgICBzb3VyY2UgPSAnc291cmNlJyxcbiAgICB0YXJnZXQgPSAndGFyZ2V0J1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmVUZXh0IHtcbiAgICB0ZXh0OiBFbGVtZW50O1xuICAgIC8v5Z+65LqO57q/6ZW/5bqm77yM5a6a5L2N55qE55m+5YiG5q+UXG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmVIYW5kbGUge1xuICAgIC8vIOWFs+iBlOWFg+e0oOeahCBpZFxuICAgIGJvdW5kSWQ/OiBzdHJpbmc7XG4gICAgY29ubmVjdGlvbj86IFBvaW50O1xuICAgIG1hcmtlcjogTGluZU1hcmtlclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRMaW5lIGV4dGVuZHMgUGxhaXRFbGVtZW50IHtcbiAgICB0eXBlOiAnbGluZSc7XG4gICAgc2hhcGU6IExpbmVTaGFwZTtcbiAgICBwb2ludHM6IFBvaW50W107XG5cbiAgICBzb3VyY2U6IExpbmVIYW5kbGU7XG4gICAgdGFyZ2V0OiBMaW5lSGFuZGxlO1xuXG4gICAgdGV4dHM6IExpbmVUZXh0W107XG5cbiAgICAvLyBub2RlIHN0eWxlIGF0dHJpYnV0ZXNcbiAgICBzdHJva2VDb2xvcj86IHN0cmluZztcbiAgICBzdHJva2VXaWR0aD86IG51bWJlcjtcbiAgICBzdHJva2VTdHlsZT86IFN0cm9rZVN0eWxlO1xuXG4gICAgb3BhY2l0eTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0U3RyYWlnaHRMaW5lIGV4dGVuZHMgUGxhaXRMaW5lIHtcbiAgICBzaGFwZTogTGluZVNoYXBlLnN0cmFpZ2h0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Q3VydmVMaW5lIGV4dGVuZHMgUGxhaXRMaW5lIHtcbiAgICBzaGFwZTogTGluZVNoYXBlLmN1cnZlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0RWxib3dMaW5lIGV4dGVuZHMgUGxhaXRMaW5lIHtcbiAgICBzaGFwZTogTGluZVNoYXBlLmVsYm93O1xufVxuXG5leHBvcnQgY29uc3QgUGxhaXRMaW5lID0ge1xuICAgIGdldFRleHRFZGl0b3JzKGVsZW1lbnQ6IFBsYWl0TGluZSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGVsZW1lbnQpIGFzIExpbmVDb21wb25lbnQ7XG4gICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hbmFnZSA9IGNvbXBvbmVudC50ZXh0TWFuYWdlcy5maW5kKG1hbmFnZSA9PiBtYW5hZ2UuaXNFZGl0aW5nKTtcbiAgICAgICAgICAgIGlmIChtYW5hZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW21hbmFnZS5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWRpdG9yXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC50ZXh0TWFuYWdlcy5tYXAobWFuYWdlID0+IG1hbmFnZS5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbiBub3QgZ2V0IGNvcnJlY3RseSBjb21wb25lbnQgaW4gZ2V0IHRleHQgZWRpdG9yJyk7XG4gICAgfSxcbiAgICBpc1NvdXJjZU1hcmsobGluZTogUGxhaXRMaW5lLCBtYXJrVHlwZTogTGluZU1hcmtlclR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUuc291cmNlLm1hcmtlciA9PT0gbWFya1R5cGU7XG4gICAgfSxcbiAgICBpc1RhcmdldE1hcmsobGluZTogUGxhaXRMaW5lLCBtYXJrVHlwZTogTGluZU1hcmtlclR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUudGFyZ2V0Lm1hcmtlciA9PT0gbWFya1R5cGU7XG4gICAgfSxcbiAgICBpc0JvdW5kRWxlbWVudE9mU291cmNlKGxpbmU6IFBsYWl0TGluZSwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSkge1xuICAgICAgICByZXR1cm4gbGluZS5zb3VyY2UuYm91bmRJZCA9PT0gZWxlbWVudC5pZDtcbiAgICB9LFxuICAgIGlzQm91bmRFbGVtZW50T2ZUYXJnZXQobGluZTogUGxhaXRMaW5lLCBlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSB7XG4gICAgICAgIHJldHVybiBsaW5lLnRhcmdldC5ib3VuZElkID09PSBlbGVtZW50LmlkO1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { PlaitBoard, PlaitPluginElementComponent, getElementById } from '@plait/core';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { TextManage } from '@plait/text';
|
|
5
|
-
import { LineShapeGenerator } from './generators/line.generator';
|
|
6
|
-
import { LineActiveGenerator } from './generators/line-active.generator';
|
|
7
|
-
import { getLineTextRectangle } from './utils';
|
|
8
|
-
import { DrawTransforms } from './transforms';
|
|
9
|
-
import { GeometryThreshold } from './constants';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class LineComponent extends PlaitPluginElementComponent {
|
|
12
|
-
constructor(viewContainerRef, cdr) {
|
|
13
|
-
super(cdr);
|
|
14
|
-
this.viewContainerRef = viewContainerRef;
|
|
15
|
-
this.cdr = cdr;
|
|
16
|
-
this.destroy$ = new Subject();
|
|
17
|
-
this.textManages = [];
|
|
18
|
-
this.boundedElements = {};
|
|
19
|
-
}
|
|
20
|
-
initializeGenerator() {
|
|
21
|
-
this.shapeGenerator = new LineShapeGenerator(this.board);
|
|
22
|
-
this.activeGenerator = new LineActiveGenerator(this.board);
|
|
23
|
-
this.initializeTextManages();
|
|
24
|
-
}
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
this.initializeGenerator();
|
|
27
|
-
this.shapeGenerator.draw(this.element, this.g);
|
|
28
|
-
this.activeGenerator.draw(this.element, PlaitBoard.getElementActiveHost(this.board), { selected: this.selected });
|
|
29
|
-
super.ngOnInit();
|
|
30
|
-
this.boundedElements = this.getBoundedElements();
|
|
31
|
-
this.drawText();
|
|
32
|
-
}
|
|
33
|
-
getBoundedElements() {
|
|
34
|
-
const boundedElements = {};
|
|
35
|
-
if (this.element.source.boundId) {
|
|
36
|
-
const boundElement = getElementById(this.board, this.element.source.boundId);
|
|
37
|
-
if (boundElement) {
|
|
38
|
-
boundedElements.source = boundElement;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (this.element.target.boundId) {
|
|
42
|
-
const boundElement = getElementById(this.board, this.element.target.boundId);
|
|
43
|
-
if (boundElement) {
|
|
44
|
-
boundedElements.target = boundElement;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return boundedElements;
|
|
48
|
-
}
|
|
49
|
-
onContextChanged(value, previous) {
|
|
50
|
-
const boundedElements = this.getBoundedElements();
|
|
51
|
-
const isBoundedElementsChanged = boundedElements.source !== this.boundedElements.source || boundedElements.target !== this.boundedElements.target;
|
|
52
|
-
this.boundedElements = boundedElements;
|
|
53
|
-
if (value.element !== previous.element) {
|
|
54
|
-
this.shapeGenerator.draw(this.element, this.g);
|
|
55
|
-
this.activeGenerator.draw(this.element, PlaitBoard.getElementActiveHost(this.board), { selected: this.selected });
|
|
56
|
-
this.updateText(previous.element.texts, value.element.texts);
|
|
57
|
-
this.updateTextRectangle();
|
|
58
|
-
}
|
|
59
|
-
if (isBoundedElementsChanged) {
|
|
60
|
-
this.shapeGenerator.draw(this.element, this.g);
|
|
61
|
-
this.activeGenerator.draw(this.element, PlaitBoard.getElementActiveHost(this.board), { selected: this.selected });
|
|
62
|
-
this.updateTextRectangle();
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const hasSameSelected = value.selected === previous.selected;
|
|
66
|
-
if (!hasSameSelected) {
|
|
67
|
-
this.activeGenerator.draw(this.element, PlaitBoard.getElementActiveHost(this.board), { selected: this.selected });
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
initializeTextManages() {
|
|
71
|
-
if (this.element.texts?.length) {
|
|
72
|
-
this.element.texts.forEach((text, index) => {
|
|
73
|
-
const manage = this.createTextManage(text, index);
|
|
74
|
-
this.textManages.push(manage);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
destroyTextManages() {
|
|
79
|
-
this.textManages.forEach(manage => {
|
|
80
|
-
manage.destroy();
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
drawText() {
|
|
84
|
-
if (this.element.texts?.length) {
|
|
85
|
-
this.textManages.forEach((manage, index) => {
|
|
86
|
-
manage.draw(this.element.texts[index].text);
|
|
87
|
-
this.g.append(manage.g);
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
createTextManage(text, index) {
|
|
92
|
-
return new TextManage(this.board, this.viewContainerRef, {
|
|
93
|
-
getRectangle: () => {
|
|
94
|
-
return getLineTextRectangle(this.board, this.element, index);
|
|
95
|
-
},
|
|
96
|
-
onValueChangeHandle: (textManageRef) => {
|
|
97
|
-
const height = textManageRef.height / this.board.viewport.zoom;
|
|
98
|
-
const width = textManageRef.width / this.board.viewport.zoom;
|
|
99
|
-
const texts = [...this.element.texts];
|
|
100
|
-
texts.splice(index, 1, {
|
|
101
|
-
text: textManageRef.newValue ? textManageRef.newValue : this.element.texts[index].text,
|
|
102
|
-
position: this.element.texts[index].position,
|
|
103
|
-
width,
|
|
104
|
-
height
|
|
105
|
-
});
|
|
106
|
-
DrawTransforms.setLineTexts(this.board, this.element, texts);
|
|
107
|
-
},
|
|
108
|
-
getMaxWidth: () => GeometryThreshold.defaultTextMaxWidth
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
updateText(previousTexts, currentTexts) {
|
|
112
|
-
if (previousTexts === currentTexts)
|
|
113
|
-
return;
|
|
114
|
-
const previousTextsLength = previousTexts.length;
|
|
115
|
-
const currentTextsLength = currentTexts.length;
|
|
116
|
-
if (currentTextsLength === previousTextsLength) {
|
|
117
|
-
for (let i = 0; i < previousTextsLength; i++) {
|
|
118
|
-
if (previousTexts[i].text !== currentTexts[i].text) {
|
|
119
|
-
this.textManages[i].updateText(currentTexts[i].text);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
this.destroyTextManages();
|
|
125
|
-
this.textManages = [];
|
|
126
|
-
this.initializeTextManages();
|
|
127
|
-
this.drawText();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
updateTextRectangle() {
|
|
131
|
-
this.textManages.forEach(manage => {
|
|
132
|
-
manage.updateRectangle();
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
ngOnDestroy() {
|
|
136
|
-
super.ngOnDestroy();
|
|
137
|
-
this.activeGenerator.destroy();
|
|
138
|
-
this.destroy$.next();
|
|
139
|
-
this.destroy$.complete();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
LineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: LineComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
-
LineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: LineComponent, selector: "plait-draw-line", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: LineComponent, decorators: [{
|
|
145
|
-
type: Component,
|
|
146
|
-
args: [{
|
|
147
|
-
selector: 'plait-draw-line',
|
|
148
|
-
template: ``,
|
|
149
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
150
|
-
}]
|
|
151
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9saW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFVBQVUsRUFBRSwyQkFBMkIsRUFBK0MsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFVBQVUsRUFBNEIsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQVloRCxNQUFNLE9BQU8sYUFBYyxTQUFRLDJCQUFrRDtJQVlqRixZQUFvQixnQkFBa0MsRUFBWSxHQUFzQjtRQUNwRixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFESyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVksUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFWeEYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFNL0IsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBRS9CLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztJQUl0QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJ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LFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7MEdBcEpRLGFBQWE7OEZBQWIsYUFBYSw4RUFIWixFQUFFOzJGQUdILGFBQWE7a0JBTHpCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQsIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsIE9uQ29udGV4dENoYW5nZWQsIGdldEVsZW1lbnRCeUlkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGluZVRleHQsIFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUZXh0TWFuYWdlLCBUZXh0TWFuYWdlUmVmLCBidWlsZFRleHQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBMaW5lU2hhcGVHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvbGluZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgTGluZUFjdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9saW5lLWFjdGl2ZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgZ2V0TGluZVRleHRSZWN0YW5nbGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IEdlb21ldHJ5VGhyZXNob2xkIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5pbnRlcmZhY2UgQm91bmRlZEVsZW1lbnRzIHtcbiAgICBzb3VyY2U/OiBQbGFpdEdlb21ldHJ5O1xuICAgIHRhcmdldD86IFBsYWl0R2VvbWV0cnk7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGxhaXQtZHJhdy1saW5lJyxcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTGluZUNvbXBvbmVudCBleHRlbmRzIFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudDxQbGFpdExpbmUsIFBsYWl0Qm9hcmQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25Db250ZXh0Q2hhbmdlZDxQbGFpdExpbmUsIFBsYWl0Qm9hcmQ+IHtcbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBzaGFwZUdlbmVyYXRvciE6IExpbmVTaGFwZUdlbmVyYXRvcjtcblxuICAgIGFjdGl2ZUdlbmVyYXRvciE6IExpbmVBY3RpdmVHZW5lcmF0b3I7XG5cbiAgICB0ZXh0TWFuYWdlczogVGV4dE1hbmFnZVtdID0gW107XG5cbiAgICBib3VuZGVkRWxlbWVudHM6IEJvdW5kZWRFbGVtZW50cyA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVHZW5lcmF0b3IoKSB7XG4gICAgICAgIHRoaXMuc2hhcGVHZW5lcmF0b3IgPSBuZXcgTGluZVNoYXBlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvciA9IG5ldyBMaW5lQWN0aXZlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVUZXh0TWFuYWdlcygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVHZW5lcmF0b3IoKTtcbiAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IuZHJhdyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuYm91bmRlZEVsZW1lbnRzID0gdGhpcy5nZXRCb3VuZGVkRWxlbWVudHMoKTtcbiAgICAgICAgdGhpcy5kcmF3VGV4dCgpO1xuICAgIH1cblxuICAgIGdldEJvdW5kZWRFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgYm91bmRlZEVsZW1lbnRzOiBCb3VuZGVkRWxlbWVudHMgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5zb3VyY2UuYm91bmRJZCkge1xuICAgICAgICAgICAgY29uc3QgYm91bmRFbGVtZW50ID0gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4odGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LnNvdXJjZS5ib3VuZElkKTtcbiAgICAgICAgICAgIGlmIChib3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBib3VuZGVkRWxlbWVudHMuc291cmNlID0gYm91bmRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kRWxlbWVudCA9IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudC50YXJnZXQuYm91bmRJZCk7XG4gICAgICAgICAgICBpZiAoYm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgYm91bmRlZEVsZW1lbnRzLnRhcmdldCA9IGJvdW5kRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYm91bmRlZEVsZW1lbnRzO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZWQodmFsdWU6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRMaW5lLCBQbGFpdEJvYXJkPiwgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRMaW5lLCBQbGFpdEJvYXJkPikge1xuICAgICAgICBjb25zdCBib3VuZGVkRWxlbWVudHMgPSB0aGlzLmdldEJvdW5kZWRFbGVtZW50cygpO1xuICAgICAgICBjb25zdCBpc0JvdW5kZWRFbGVtZW50c0NoYW5nZWQgPVxuICAgICAgICAgICAgYm91bmRlZEVsZW1lbnRzLnNvdXJjZSAhPT0gdGhpcy5ib3VuZGVkRWxlbWVudHMuc291cmNlIHx8IGJvdW5kZWRFbGVtZW50cy50YXJnZXQgIT09IHRoaXMuYm91bmRlZEVsZW1lbnRzLnRhcmdldDtcbiAgICAgICAgdGhpcy5ib3VuZGVkRWxlbWVudHMgPSBib3VuZGVkRWxlbWVudHM7XG5cbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVHZW5lcmF0b3IuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZyk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kcmF3KHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGV4dChwcmV2aW91cy5lbGVtZW50LnRleHRzLCB2YWx1ZS5lbGVtZW50LnRleHRzKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGV4dFJlY3RhbmdsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQm91bmRlZEVsZW1lbnRzQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUZXh0UmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgIGlmICghaGFzU2FtZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kcmF3KHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemVUZXh0TWFuYWdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC50ZXh0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQudGV4dHMuZm9yRWFjaCgodGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5hZ2UgPSB0aGlzLmNyZWF0ZVRleHRNYW5hZ2UodGV4dCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGV4dE1hbmFnZXMucHVzaChtYW5hZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95VGV4dE1hbmFnZXMoKSB7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZXMuZm9yRWFjaChtYW5hZ2UgPT4ge1xuICAgICAgICAgICAgbWFuYWdlLmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZHJhd1RleHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQudGV4dHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50ZXh0TWFuYWdlcy5mb3JFYWNoKChtYW5hZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgbWFuYWdlLmRyYXcodGhpcy5lbGVtZW50LnRleHRzIVtpbmRleF0udGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmFwcGVuZChtYW5hZ2UuZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVRleHRNYW5hZ2UodGV4dDogTGluZVRleHQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0TWFuYWdlKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZiwge1xuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldExpbmVUZXh0UmVjdGFuZ2xlKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCwgaW5kZXgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2VIYW5kbGU6ICh0ZXh0TWFuYWdlUmVmOiBUZXh0TWFuYWdlUmVmKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGV4dE1hbmFnZVJlZi5oZWlnaHQgLyB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0ZXh0TWFuYWdlUmVmLndpZHRoIC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRzID0gWy4uLnRoaXMuZWxlbWVudC50ZXh0c107XG4gICAgICAgICAgICAgICAgdGV4dHMuc3BsaWNlKGluZGV4LCAxLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRleHRNYW5hZ2VSZWYubmV3VmFsdWUgPyB0ZXh0TWFuYWdlUmVmLm5ld1ZhbHVlIDogdGhpcy5lbGVtZW50LnRleHRzW2luZGV4XS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5lbGVtZW50LnRleHRzW2luZGV4XS5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnNldExpbmVUZXh0cyh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHRleHRzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRNYXhXaWR0aDogKCkgPT4gR2VvbWV0cnlUaHJlc2hvbGQuZGVmYXVsdFRleHRNYXhXaWR0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVUZXh0KHByZXZpb3VzVGV4dHM6IExpbmVUZXh0W10sIGN1cnJlbnRUZXh0czogTGluZVRleHRbXSkge1xuICAgICAgICBpZiAocHJldmlvdXNUZXh0cyA9PT0gY3VycmVudFRleHRzKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHByZXZpb3VzVGV4dHNMZW5ndGggPSBwcmV2aW91c1RleHRzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY3VycmVudFRleHRzTGVuZ3RoID0gY3VycmVudFRleHRzLmxlbmd0aDtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0c0xlbmd0aCA9PT0gcHJldmlvdXNUZXh0c0xlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2aW91c1RleHRzTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNUZXh0c1tpXS50ZXh0ICE9PSBjdXJyZW50VGV4dHNbaV0udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRNYW5hZ2VzW2ldLnVwZGF0ZVRleHQoY3VycmVudFRleHRzW2ldLnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVRleHRNYW5hZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnRleHRNYW5hZ2VzID0gW107XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUZXh0TWFuYWdlcygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3VGV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlVGV4dFJlY3RhbmdsZSgpIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlcy5mb3JFYWNoKG1hbmFnZSA9PiB7XG4gICAgICAgICAgICBtYW5hZ2UudXBkYXRlUmVjdGFuZ2xlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { getDataFromClipboard, getSelectedElements, setClipboardData } from '@plait/core';
|
|
2
|
-
import { getSelectedDrawElements } from '../utils/selected';
|
|
3
|
-
import { PlaitDrawElement, PlaitLine } from '../interfaces';
|
|
4
|
-
import { getTextFromClipboard, getTextSize } from '@plait/text';
|
|
5
|
-
import { buildClipboardData, insertClipboardData } from '../utils/clipboard';
|
|
6
|
-
import { DrawTransforms } from '../transforms';
|
|
7
|
-
import { getBoardLines } from '../utils/line';
|
|
8
|
-
export const withDrawFragment = (baseBoard) => {
|
|
9
|
-
const board = baseBoard;
|
|
10
|
-
const { getDeletedFragment, setFragment, insertFragment } = board;
|
|
11
|
-
board.getDeletedFragment = (data) => {
|
|
12
|
-
const drawElements = getSelectedDrawElements(board);
|
|
13
|
-
if (drawElements.length) {
|
|
14
|
-
const lines = getBoardLines(board);
|
|
15
|
-
const geometryElements = drawElements.filter(value => PlaitDrawElement.isGeometry(value));
|
|
16
|
-
const lineElements = drawElements.filter(value => PlaitDrawElement.isLine(value));
|
|
17
|
-
const boundLineElements = lines.filter(line => geometryElements.find(geometry => PlaitLine.isBoundElementOfSource(line, geometry) || PlaitLine.isBoundElementOfTarget(line, geometry)));
|
|
18
|
-
data.push(...[...geometryElements, ...lineElements, ...boundLineElements.filter(line => !lineElements.includes(line))]);
|
|
19
|
-
}
|
|
20
|
-
return getDeletedFragment(data);
|
|
21
|
-
};
|
|
22
|
-
board.setFragment = (data, rectangle) => {
|
|
23
|
-
const targetDrawElements = getSelectedDrawElements(board);
|
|
24
|
-
if (targetDrawElements.length) {
|
|
25
|
-
const elements = buildClipboardData(board, targetDrawElements, rectangle ? [rectangle.x, rectangle.y] : [0, 0]);
|
|
26
|
-
setClipboardData(data, elements);
|
|
27
|
-
}
|
|
28
|
-
setFragment(data, rectangle);
|
|
29
|
-
};
|
|
30
|
-
board.insertFragment = (data, targetPoint) => {
|
|
31
|
-
const elements = getDataFromClipboard(data);
|
|
32
|
-
const drawElements = elements.filter(value => PlaitDrawElement.isDrawElement(value));
|
|
33
|
-
if (elements.length > 0 && drawElements.length > 0) {
|
|
34
|
-
insertClipboardData(board, drawElements, targetPoint);
|
|
35
|
-
}
|
|
36
|
-
else if (elements.length === 0) {
|
|
37
|
-
const text = getTextFromClipboard(data);
|
|
38
|
-
const selectedElements = getSelectedElements(board);
|
|
39
|
-
// (* ̄︶ ̄)
|
|
40
|
-
const insertAsChildren = selectedElements.length === 1 && selectedElements[0].children;
|
|
41
|
-
const insertAsFreeText = !insertAsChildren;
|
|
42
|
-
if (text && insertAsFreeText) {
|
|
43
|
-
const { width, height } = getTextSize(board, text);
|
|
44
|
-
DrawTransforms.insertText(board, [targetPoint, [targetPoint[0] + width, targetPoint[1] + height]], text);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
insertFragment(data, targetPoint);
|
|
49
|
-
};
|
|
50
|
-
return board;
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LWZyYWdtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXctZnJhZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvRCxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFNBQXFCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLEtBQUssR0FBRyxTQUF1QixDQUFDO0lBQ3RDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWxFLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQW9CLEVBQUUsRUFBRTtRQUNoRCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFD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QUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3pHLE9BQU87YUFDVjtTQUNKO1FBQ0QsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGdldERhdGFGcm9tQ2xpcGJvYXJkLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBzZXRDbGlwYm9hcmREYXRhIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZCc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5LCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFRleHRGcm9tQ2xpcGJvYXJkLCBnZXRUZXh0U2l6ZSB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IGJ1aWxkQ2xpcGJvYXJkRGF0YSwgaW5zZXJ0Q2xpcGJvYXJkRGF0YSB9IGZyb20gJy4uL3V0aWxzL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0Qm9hcmRMaW5lcyB9IGZyb20gJy4uL3V0aWxzL2xpbmUnO1xuXG5leHBvcnQgY29uc3Qgd2l0aERyYXdGcmFnbWVudCA9IChiYXNlQm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBib2FyZCA9IGJhc2VCb2FyZCBhcyBQbGFpdEJvYXJkO1xuICAgIGNvbnN0IHsgZ2V0RGVsZXRlZEZyYWdtZW50LCBzZXRGcmFnbWVudCwgaW5zZXJ0RnJhZ21lbnQgfSA9IGJvYXJkO1xuXG4gICAgYm9hcmQuZ2V0RGVsZXRlZEZyYWdtZW50ID0gKGRhdGE6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRyYXdFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgaWYgKGRyYXdFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gZ2V0Qm9hcmRMaW5lcyhib2FyZCk7XG4gICAgICAgICAgICBjb25zdCBnZW9tZXRyeUVsZW1lbnRzID0gZHJhd0VsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodmFsdWUpKSBhcyBQbGFpdEdlb21ldHJ5W107XG4gICAgICAgICAgICBjb25zdCBsaW5lRWxlbWVudHMgPSBkcmF3RWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKHZhbHVlKSkgYXMgUGxhaXRMaW5lW107XG4gICAgICAgICAgICBjb25zdCBib3VuZExpbmVFbGVtZW50cyA9IGxpbmVzLmZpbHRlcihsaW5lID0+XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnlFbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeSA9PiBQbGFpdExpbmUuaXNCb3VuZEVsZW1lbnRPZlNvdXJjZShsaW5lLCBnZW9tZXRyeSkgfHwgUGxhaXRMaW5lLmlzQm91bmRFbGVtZW50T2ZUYXJnZXQobGluZSwgZ2VvbWV0cnkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRhdGEucHVzaCguLi5bLi4uZ2VvbWV0cnlFbGVtZW50cywgLi4ubGluZUVsZW1lbnRzLCAuLi5ib3VuZExpbmVFbGVtZW50cy5maWx0ZXIobGluZSA9PiAhbGluZUVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpKV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXREZWxldGVkRnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIGJvYXJkLnNldEZyYWdtZW50ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREcmF3RWxlbWVudHMgPSBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGlmICh0YXJnZXREcmF3RWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IGJ1aWxkQ2xpcGJvYXJkRGF0YShib2FyZCwgdGFyZ2V0RHJhd0VsZW1lbnRzLCByZWN0YW5nbGUgPyBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55XSA6IFswLCAwXSk7XG4gICAgICAgICAgICBzZXRDbGlwYm9hcmREYXRhKGRhdGEsIGVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRGcmFnbWVudChkYXRhLCByZWN0YW5nbGUpO1xuICAgIH07XG5cbiAgICBib2FyZC5pbnNlcnRGcmFnbWVudCA9IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsLCB0YXJnZXRQb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXREYXRhRnJvbUNsaXBib2FyZChkYXRhKTtcbiAgICAgICAgY29uc3QgZHJhd0VsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNEcmF3RWxlbWVudCh2YWx1ZSkpIGFzIFBsYWl0RHJhd0VsZW1lbnRbXTtcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgZHJhd0VsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGluc2VydENsaXBib2FyZERhdGEoYm9hcmQsIGRyYXdFbGVtZW50cywgdGFyZ2V0UG9pbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGdldFRleHRGcm9tQ2xpcGJvYXJkKGRhdGEpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgLy8gKCrvv6PvuLbvv6MpXG4gICAgICAgICAgICBjb25zdCBpbnNlcnRBc0NoaWxkcmVuID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgc2VsZWN0ZWRFbGVtZW50c1swXS5jaGlsZHJlbjtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydEFzRnJlZVRleHQgPSAhaW5zZXJ0QXNDaGlsZHJlbjtcbiAgICAgICAgICAgIGlmICh0ZXh0ICYmIGluc2VydEFzRnJlZVRleHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFRleHRTaXplKGJvYXJkLCB0ZXh0KTtcbiAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5pbnNlcnRUZXh0KGJvYXJkLCBbdGFyZ2V0UG9pbnQsIFt0YXJnZXRQb2ludFswXSArIHdpZHRoLCB0YXJnZXRQb2ludFsxXSArIGhlaWdodF1dLCB0ZXh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0RnJhZ21lbnQoZGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient, getNearestPointBetweenPointAndSegments, isPointInPolygon, setStrokeLinecap } from '@plait/core';
|
|
2
|
-
export const DiamondEngine = {
|
|
3
|
-
draw(board, rectangle, options) {
|
|
4
|
-
const points = RectangleClient.getEdgeCenterPoints(rectangle);
|
|
5
|
-
const rs = PlaitBoard.getRoughSVG(board);
|
|
6
|
-
const polygon = rs.polygon(points, { ...options, fillStyle: 'solid' });
|
|
7
|
-
setStrokeLinecap(polygon, 'round');
|
|
8
|
-
return polygon;
|
|
9
|
-
},
|
|
10
|
-
isHit(rectangle, point) {
|
|
11
|
-
const controlPoints = RectangleClient.getEdgeCenterPoints(rectangle);
|
|
12
|
-
return isPointInPolygon(point, controlPoints);
|
|
13
|
-
},
|
|
14
|
-
getNearestPoint(rectangle, point) {
|
|
15
|
-
const connectorPoints = RectangleClient.getEdgeCenterPoints(rectangle);
|
|
16
|
-
return getNearestPointBetweenPointAndSegments(point, connectorPoints);
|
|
17
|
-
},
|
|
18
|
-
getConnectorPoints(rectangle) {
|
|
19
|
-
return RectangleClient.getEdgeCenterPoints(rectangle);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbW9uZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2VuZ2luZS9kaWFtb25kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVMsZUFBZSxFQUFFLHNDQUFzQyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTdJLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZ0I7SUFDdEMsSUFBSSxDQUFDLEtBQWlCLEVBQUUsU0FBMEIsRUFBRSxPQUFnQjtRQUNoRSxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0QsS0FBSyxDQUFDLFNBQTBCLEVBQUUsS0FBWTtRQUMxQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUEwQixFQUFFLEtBQVk7UUFDcEQsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sc0NBQXNDLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxTQUEwQjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLCBpc1BvaW50SW5Qb2x5Z29uLCBzZXRTdHJva2VMaW5lY2FwIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgU2hhcGVFbmdpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcblxuZXhwb3J0IGNvbnN0IERpYW1vbmRFbmdpbmU6IFNoYXBlRW5naW5lID0ge1xuICAgIGRyYXcoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIGNvbnN0IHJzID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgIGNvbnN0IHBvbHlnb24gPSBycy5wb2x5Z29uKHBvaW50cywgeyAuLi5vcHRpb25zLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSk7XG4gICAgICAgIHNldFN0cm9rZUxpbmVjYXAocG9seWdvbiwgJ3JvdW5kJyk7XG4gICAgICAgIHJldHVybiBwb2x5Z29uO1xuICAgIH0sXG4gICAgaXNIaXQocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludCkge1xuICAgICAgICBjb25zdCBjb250cm9sUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGlzUG9pbnRJblBvbHlnb24ocG9pbnQsIGNvbnRyb2xQb2ludHMpO1xuICAgIH0sXG4gICAgZ2V0TmVhcmVzdFBvaW50KHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdG9yUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50LCBjb25uZWN0b3JQb2ludHMpO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIH1cbn07XG4iXX0=
|