@plait/draw 0.50.1 → 0.51.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/README.md +13 -1
- package/constants/line.d.ts +1 -0
- package/engines/basic-shapes/ellipse.d.ts +1 -10
- package/engines/flowchart/terminal.d.ts +1 -0
- package/esm2022/constants/line.mjs +2 -1
- package/esm2022/engines/basic-shapes/comment.mjs +4 -5
- package/esm2022/engines/basic-shapes/ellipse.mjs +5 -29
- package/esm2022/engines/basic-shapes/parallelogram.mjs +3 -2
- package/esm2022/engines/basic-shapes/pentagon.mjs +3 -3
- package/esm2022/engines/basic-shapes/polygon.mjs +20 -4
- package/esm2022/engines/basic-shapes/process-arrow.mjs +3 -3
- package/esm2022/engines/basic-shapes/rectangle.mjs +4 -4
- package/esm2022/engines/basic-shapes/round-comment.mjs +4 -5
- package/esm2022/engines/basic-shapes/round-rectangle.mjs +3 -3
- package/esm2022/engines/basic-shapes/star.mjs +3 -3
- package/esm2022/engines/basic-shapes/trapezoid.mjs +3 -2
- package/esm2022/engines/basic-shapes/triangle.mjs +5 -4
- package/esm2022/engines/flowchart/delay.mjs +6 -6
- package/esm2022/engines/flowchart/manual-input.mjs +5 -4
- package/esm2022/engines/flowchart/manual-loop.mjs +3 -2
- package/esm2022/engines/flowchart/merge.mjs +4 -4
- package/esm2022/engines/flowchart/stored-data.mjs +16 -10
- package/esm2022/engines/flowchart/terminal.mjs +37 -27
- package/esm2022/generators/geometry-shape.generator.mjs +3 -3
- package/esm2022/generators/line-active.generator.mjs +52 -68
- package/esm2022/generators/line.generator.mjs +2 -2
- package/esm2022/geometry.component.mjs +4 -4
- package/esm2022/interfaces/geometry.mjs +1 -1
- package/esm2022/interfaces/line.mjs +2 -2
- package/esm2022/line.component.mjs +39 -9
- package/esm2022/plugins/with-draw-fragment.mjs +3 -3
- package/esm2022/plugins/with-draw-hotkey.mjs +6 -6
- package/esm2022/plugins/with-draw-resize.mjs +149 -0
- package/esm2022/plugins/with-draw.mjs +14 -8
- package/esm2022/plugins/with-geometry-create.mjs +10 -10
- package/esm2022/plugins/with-geometry-resize.mjs +27 -74
- package/esm2022/plugins/with-line-auto-complete.mjs +17 -5
- package/esm2022/plugins/with-line-bound-reaction.mjs +6 -5
- package/esm2022/plugins/with-line-create.mjs +2 -2
- package/esm2022/plugins/with-line-resize.mjs +105 -19
- package/esm2022/plugins/with-line-text-move.mjs +5 -4
- package/esm2022/plugins/with-line-text.mjs +7 -5
- package/esm2022/transforms/geometry.mjs +4 -4
- package/esm2022/transforms/line.mjs +6 -8
- package/esm2022/utils/clipboard.mjs +2 -2
- package/esm2022/utils/geometry.mjs +16 -33
- package/esm2022/utils/hit.mjs +18 -10
- package/esm2022/utils/index.mjs +2 -2
- package/esm2022/utils/line/elbow.mjs +101 -0
- package/esm2022/utils/line/index.mjs +6 -0
- package/esm2022/utils/line/line-arrow.mjs +123 -0
- package/esm2022/utils/line/line-basic.mjs +258 -0
- package/esm2022/utils/line/line-common.mjs +111 -0
- package/esm2022/utils/line/line-resize.mjs +313 -0
- package/esm2022/utils/polygon.mjs +30 -0
- package/esm2022/utils/position/geometry.mjs +5 -6
- package/esm2022/utils/position/line.mjs +38 -15
- package/esm2022/utils/resize-align-reaction.mjs +316 -0
- package/esm2022/utils/resize-align.mjs +37 -0
- package/fesm2022/plait-draw.mjs +2108 -1143
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/line-active.generator.d.ts +4 -2
- package/interfaces/geometry.d.ts +1 -0
- package/interfaces/line.d.ts +4 -0
- package/package.json +1 -1
- package/plugins/with-draw-resize.d.ts +13 -0
- package/utils/geometry.d.ts +1 -3
- package/utils/hit.d.ts +3 -1
- package/utils/index.d.ts +1 -1
- package/utils/line/elbow.d.ts +19 -0
- package/utils/line/index.d.ts +5 -0
- package/utils/{line-arrow.d.ts → line/line-arrow.d.ts} +1 -1
- package/utils/line/line-basic.d.ts +13 -0
- package/utils/line/line-common.d.ts +35 -0
- package/utils/line/line-resize.d.ts +23 -0
- package/utils/polygon.d.ts +4 -0
- package/utils/position/geometry.d.ts +2 -3
- package/utils/position/line.d.ts +4 -2
- package/utils/resize-align-reaction.d.ts +42 -0
- package/utils/resize-align.d.ts +8 -0
- package/esm2022/utils/line-arrow.mjs +0 -123
- package/esm2022/utils/line.mjs +0 -392
- package/utils/line.d.ts +0 -25
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PlaitNode, Point } from '@plait/core';
|
|
2
|
+
import { isSourceAndTargetIntersect, simplifyOrthogonalPoints, withResize } from '@plait/common';
|
|
2
3
|
import { getSelectedLineElements } from '../utils/selected';
|
|
3
4
|
import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
|
|
4
5
|
import { getHitOutlineGeometry } from '../utils/position/geometry';
|
|
5
|
-
import {
|
|
6
|
+
import { LineShape } from '../interfaces';
|
|
6
7
|
import { DrawTransforms } from '../transforms';
|
|
7
8
|
import { REACTION_MARGIN } from '../constants';
|
|
9
|
+
import { getElbowPoints, getNextRenderPoints } from '../utils/line/elbow';
|
|
10
|
+
import { alignElbowSegment, alignPoints, getIndexAndDeleteCountByKeyPoint, getResizedPreviousAndNextPoint, hasIllegalElbowPoint } from '../utils/line/line-resize';
|
|
11
|
+
import { getConnectionByNearestPoint, getLinePoints } from '../utils/line/line-basic';
|
|
12
|
+
import { getElbowLineRouteOptions } from '../utils/line';
|
|
8
13
|
export const withLineResize = (board) => {
|
|
9
|
-
let
|
|
14
|
+
let elbowLineIndex;
|
|
15
|
+
let elbowLineDeleteCount;
|
|
16
|
+
let elbowSourcePoint;
|
|
17
|
+
let elbowTargetPoint;
|
|
18
|
+
let elbowNextRenderPoints;
|
|
10
19
|
const options = {
|
|
11
20
|
key: 'draw-line',
|
|
12
21
|
canResize: () => {
|
|
13
22
|
return true;
|
|
14
23
|
},
|
|
15
|
-
|
|
24
|
+
hitTest: (point) => {
|
|
16
25
|
const selectedLineElements = getSelectedLineElements(board);
|
|
17
26
|
if (selectedLineElements.length > 0) {
|
|
18
27
|
let result = null;
|
|
@@ -21,25 +30,46 @@ export const withLineResize = (board) => {
|
|
|
21
30
|
if (handleRef) {
|
|
22
31
|
result = {
|
|
23
32
|
element: value,
|
|
24
|
-
handle: handleRef.handle
|
|
33
|
+
handle: handleRef.handle,
|
|
34
|
+
handleIndex: handleRef.handleIndex
|
|
25
35
|
};
|
|
26
|
-
pointIndex = handleRef.handle === LineResizeHandle.addHandle ? handleRef.index + 1 : handleRef.index;
|
|
27
36
|
}
|
|
28
37
|
});
|
|
29
38
|
return result;
|
|
30
39
|
}
|
|
31
40
|
return null;
|
|
32
41
|
},
|
|
42
|
+
beforeResize: (resizeRef) => {
|
|
43
|
+
if (resizeRef.element.shape === LineShape.elbow &&
|
|
44
|
+
resizeRef.handle !== LineResizeHandle.source &&
|
|
45
|
+
resizeRef.handle !== LineResizeHandle.target) {
|
|
46
|
+
const params = getElbowLineRouteOptions(board, resizeRef.element);
|
|
47
|
+
const isIntersect = isSourceAndTargetIntersect(params);
|
|
48
|
+
if (isIntersect) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const points = [...resizeRef.element.points];
|
|
52
|
+
const handleIndex = resizeRef.handleIndex;
|
|
53
|
+
const pointsOnElbow = getElbowPoints(board, resizeRef.element);
|
|
54
|
+
elbowSourcePoint = pointsOnElbow[0];
|
|
55
|
+
elbowTargetPoint = pointsOnElbow[pointsOnElbow.length - 1];
|
|
56
|
+
elbowNextRenderPoints = getNextRenderPoints(board, resizeRef.element, pointsOnElbow);
|
|
57
|
+
const value = getIndexAndDeleteCountByKeyPoint(board, resizeRef.element, [...points], elbowNextRenderPoints, handleIndex);
|
|
58
|
+
elbowLineIndex = value.index;
|
|
59
|
+
elbowLineDeleteCount = value.deleteCount;
|
|
60
|
+
}
|
|
61
|
+
},
|
|
33
62
|
onResize: (resizeRef, resizeState) => {
|
|
34
63
|
let points = [...resizeRef.element.points];
|
|
35
64
|
let source = { ...resizeRef.element.source };
|
|
36
65
|
let target = { ...resizeRef.element.target };
|
|
37
|
-
|
|
66
|
+
let handleIndex = resizeRef.handleIndex;
|
|
67
|
+
const hitElement = getHitOutlineGeometry(board, resizeState.endPoint, REACTION_MARGIN);
|
|
38
68
|
if (resizeRef.handle === LineResizeHandle.source || resizeRef.handle === LineResizeHandle.target) {
|
|
39
69
|
const object = resizeRef.handle === LineResizeHandle.source ? source : target;
|
|
40
|
-
points[
|
|
70
|
+
points[handleIndex] = resizeState.endPoint;
|
|
41
71
|
if (hitElement) {
|
|
42
|
-
object.connection =
|
|
72
|
+
object.connection = getConnectionByNearestPoint(board, resizeState.endPoint, hitElement);
|
|
43
73
|
object.boundId = hitElement.id;
|
|
44
74
|
}
|
|
45
75
|
else {
|
|
@@ -47,27 +77,83 @@ export const withLineResize = (board) => {
|
|
|
47
77
|
object.boundId = undefined;
|
|
48
78
|
}
|
|
49
79
|
}
|
|
50
|
-
else if (resizeRef.handle === LineResizeHandle.addHandle) {
|
|
51
|
-
points.splice(pointIndex, 0, resizeState.endTransformPoint);
|
|
52
|
-
}
|
|
53
80
|
else {
|
|
54
|
-
|
|
81
|
+
if (resizeRef.element.shape === LineShape.elbow) {
|
|
82
|
+
if (elbowNextRenderPoints && elbowSourcePoint && elbowTargetPoint) {
|
|
83
|
+
const resizedPreviousAndNextPoint = getResizedPreviousAndNextPoint(elbowNextRenderPoints, elbowSourcePoint, elbowTargetPoint, handleIndex);
|
|
84
|
+
const startKeyPoint = elbowNextRenderPoints[handleIndex];
|
|
85
|
+
const endKeyPoint = elbowNextRenderPoints[handleIndex + 1];
|
|
86
|
+
const [newStartPoint, newEndPoint] = alignElbowSegment(startKeyPoint, endKeyPoint, resizeState, resizedPreviousAndNextPoint);
|
|
87
|
+
let midDataPoints = [...points].slice(1, points.length - 1);
|
|
88
|
+
if (elbowLineIndex !== null && elbowLineDeleteCount !== null) {
|
|
89
|
+
if (hasIllegalElbowPoint(midDataPoints)) {
|
|
90
|
+
midDataPoints = [newStartPoint, newEndPoint];
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
midDataPoints.splice(elbowLineIndex, elbowLineDeleteCount, newStartPoint, newEndPoint);
|
|
94
|
+
}
|
|
95
|
+
points = [elbowSourcePoint, ...midDataPoints, elbowTargetPoint];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
if (resizeRef.handle === LineResizeHandle.addHandle) {
|
|
101
|
+
points.splice(handleIndex + 1, 0, resizeState.endPoint);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
points[handleIndex] = resizeState.endPoint;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
55
107
|
}
|
|
56
108
|
if (!hitElement) {
|
|
109
|
+
handleIndex = resizeRef.handle === LineResizeHandle.addHandle ? handleIndex + 1 : handleIndex;
|
|
57
110
|
const drawPoints = getLinePoints(board, resizeRef.element);
|
|
58
111
|
const newPoints = [...points];
|
|
59
112
|
newPoints[0] = drawPoints[0];
|
|
60
113
|
newPoints[newPoints.length - 1] = drawPoints[drawPoints.length - 1];
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
114
|
+
if (resizeRef.element.shape !== LineShape.elbow) {
|
|
115
|
+
newPoints.forEach((point, index) => {
|
|
116
|
+
if (index === handleIndex)
|
|
117
|
+
return;
|
|
118
|
+
if (points[handleIndex]) {
|
|
119
|
+
points[handleIndex] = alignPoints(point, points[handleIndex]);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
66
123
|
}
|
|
67
124
|
DrawTransforms.resizeLine(board, { points, source, target }, resizeRef.path);
|
|
125
|
+
},
|
|
126
|
+
afterResize: (resizeRef) => {
|
|
127
|
+
if (resizeRef.element.shape === LineShape.elbow) {
|
|
128
|
+
const element = PlaitNode.get(board, resizeRef.path);
|
|
129
|
+
let points = element && [...element.points];
|
|
130
|
+
if (points.length > 2 && elbowNextRenderPoints && elbowSourcePoint && elbowTargetPoint) {
|
|
131
|
+
const nextSourcePoint = elbowNextRenderPoints[0];
|
|
132
|
+
const nextTargetPoint = elbowNextRenderPoints[elbowNextRenderPoints.length - 1];
|
|
133
|
+
points.splice(0, 1, nextSourcePoint);
|
|
134
|
+
points.splice(-1, 1, nextTargetPoint);
|
|
135
|
+
points = simplifyOrthogonalPoints(points);
|
|
136
|
+
if (Point.isEquals(points[0], nextSourcePoint)) {
|
|
137
|
+
points.splice(0, 1);
|
|
138
|
+
}
|
|
139
|
+
if (Point.isEquals(points[points.length - 1], nextTargetPoint)) {
|
|
140
|
+
points.pop();
|
|
141
|
+
}
|
|
142
|
+
if (points.length === 1) {
|
|
143
|
+
points = [];
|
|
144
|
+
}
|
|
145
|
+
points = [elbowSourcePoint, ...points, elbowTargetPoint];
|
|
146
|
+
DrawTransforms.resizeLine(board, { points }, resizeRef.path);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
elbowLineIndex = null;
|
|
150
|
+
elbowLineDeleteCount = null;
|
|
151
|
+
elbowSourcePoint = null;
|
|
152
|
+
elbowTargetPoint = null;
|
|
153
|
+
elbowNextRenderPoints = null;
|
|
68
154
|
}
|
|
69
155
|
};
|
|
70
156
|
withResize(board, options);
|
|
71
157
|
return board;
|
|
72
158
|
};
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTZDLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixNQUFNLE9BQU8sR0FBbUQ7UUFDNUQsR0FBRyxFQUFFLFdBQVc7UUFDaEIsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxNQUFNLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNyQixNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDakMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixvQkFBb0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2pDLE1BQU0sU0FBUyxHQUFHLHlCQUF5QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pFLElBQUksU0FBUyxFQUFFO3dCQUNYLE1BQU0sR0FBRzs0QkFDTCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07eUJBQzNCLENBQUM7d0JBQ0YsVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztxQkFDeEc7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLENBQUM7YUFDakI7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsUUFBUSxFQUFFLENBQUMsU0FBaUQsRUFBRSxXQUF3QixFQUFFLEVBQUU7WUFDdEYsSUFBSSxNQUFNLEdBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxNQUFNLEdBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsSUFBSSxNQUFNLEdBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekQsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNoRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxFQUFFO2dCQUM5RixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQzlFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUM7Z0JBQ25ELElBQUksVUFBVSxFQUFFO29CQUNaLE1BQU0sQ0FBQyxVQUFVLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDakcsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO2lCQUNsQztxQkFBTTtvQkFDSCxNQUFNLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztvQkFDOUIsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7aUJBQzlCO2FBQ0o7aUJBQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFNBQVMsRUFBRTtnQkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQy9EO2lCQUFNO2dCQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUM7YUFDdEQ7WUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNiLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUMvQixJQUFJLEtBQUssS0FBSyxVQUFVO3dCQUFFLE9BQU87b0JBQ2pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRixDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBOEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXhELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVzaXplUmVmLCBSZXNpemVTdGF0ZSwgV2l0aFJlc2l6ZU9wdGlvbnMsIHdpdGhSZXNpemUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZiwgTGluZVJlc2l6ZUhhbmRsZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2xpbmUnO1xuaW1wb3J0IHsgZ2V0SGl0T3V0bGluZUdlb21ldHJ5IH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgTGluZUhhbmRsZSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBhbGlnblBvaW50cywgZ2V0TGluZVBvaW50cywgdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgUkVBQ1RJT05fTUFSR0lOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lUmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IHBvaW50SW5kZXggPSAwO1xuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctbGluZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGRldGVjdDogKHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRMaW5lRWxlbWVudHMgPSBnZXRTZWxlY3RlZExpbmVFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkTGluZUVsZW1lbnRzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVSZWYgPSBnZXRIaXRMaW5lUmVzaXplSGFuZGxlUmVmKGJvYXJkLCB2YWx1ZSwgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlOiBoYW5kbGVSZWYuaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRJbmRleCA9IGhhbmRsZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlID8gaGFuZGxlUmVmLmluZGV4ICsgMSA6IGhhbmRsZVJlZi5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGxldCBwb2ludHM6IFBvaW50W10gPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgIGxldCBzb3VyY2U6IExpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnNvdXJjZSB9O1xuICAgICAgICAgICAgbGV0IHRhcmdldDogTGluZUhhbmRsZSA9IHsgLi4ucmVzaXplUmVmLmVsZW1lbnQudGFyZ2V0IH07XG4gICAgICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0T3V0bGluZUdlb21ldHJ5KGJvYXJkLCByZXNpemVTdGF0ZS5lbmRUcmFuc2Zvcm1Qb2ludCwgUkVBQ1RJT05fTUFSR0lOKTtcbiAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSB8fCByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlID8gc291cmNlIDogdGFyZ2V0O1xuICAgICAgICAgICAgICAgIHBvaW50c1twb2ludEluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFRyYW5zZm9ybVBvaW50O1xuICAgICAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24oYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFRyYW5zZm9ybVBvaW50LCBoaXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSBoaXRFbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuYm91bmRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZShwb2ludEluZGV4LCAwLCByZXNpemVTdGF0ZS5lbmRUcmFuc2Zvcm1Qb2ludCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvaW50c1twb2ludEluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFRyYW5zZm9ybVBvaW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhd1BvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQb2ludHMgPSBbLi4ucG9pbnRzXTtcbiAgICAgICAgICAgICAgICBuZXdQb2ludHNbMF0gPSBkcmF3UG9pbnRzWzBdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1tuZXdQb2ludHMubGVuZ3RoIC0gMV0gPSBkcmF3UG9pbnRzW2RyYXdQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgbmV3UG9pbnRzLmZvckVhY2goKHBvaW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHBvaW50SW5kZXgpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW3BvaW50SW5kZXhdID0gYWxpZ25Qb2ludHMocG9pbnQsIHBvaW50c1twb2ludEluZGV4XSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUxpbmUoYm9hcmQsIHsgcG9pbnRzLCBzb3VyY2UsIHRhcmdldCB9LCByZXNpemVSZWYucGF0aCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUE2QywwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFjLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGdDQUFnQyxFQUNoQyw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3ZCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDaEQsSUFBSSxjQUE2QixDQUFDO0lBQ2xDLElBQUksb0JBQW1DLENBQUM7SUFDeEMsSUFBSSxnQkFB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QUN4RTthQUNKO1lBQ0QsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0QixvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDNUIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQztLQUNKLENBQUM7SUFFRixVQUFVLENBQThCLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV4RCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdE5vZGUsIFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVzaXplUmVmLCBSZXNpemVTdGF0ZSwgV2l0aFJlc2l6ZU9wdGlvbnMsIGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0LCBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMsIHdpdGhSZXNpemUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZiwgTGluZVJlc2l6ZUhhbmRsZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2xpbmUnO1xuaW1wb3J0IHsgZ2V0SGl0T3V0bGluZUdlb21ldHJ5IH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgTGluZUhhbmRsZSwgTGluZVNoYXBlLCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBSRUFDVElPTl9NQVJHSU4gfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RWxib3dQb2ludHMsIGdldE5leHRSZW5kZXJQb2ludHMgfSBmcm9tICcuLi91dGlscy9saW5lL2VsYm93JztcbmltcG9ydCB7XG4gICAgYWxpZ25FbGJvd1NlZ21lbnQsXG4gICAgYWxpZ25Qb2ludHMsXG4gICAgZ2V0SW5kZXhBbmREZWxldGVDb3VudEJ5S2V5UG9pbnQsXG4gICAgZ2V0UmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50LFxuICAgIGhhc0lsbGVnYWxFbGJvd1BvaW50XG59IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1yZXNpemUnO1xuaW1wb3J0IHsgZ2V0Q29ubmVjdGlvbkJ5TmVhcmVzdFBvaW50LCBnZXRMaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2xpbmUnO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVSZXNpemUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBsZXQgZWxib3dMaW5lSW5kZXg6IG51bWJlciB8IG51bGw7XG4gICAgbGV0IGVsYm93TGluZURlbGV0ZUNvdW50OiBudW1iZXIgfCBudWxsO1xuICAgIGxldCBlbGJvd1NvdXJjZVBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGVsYm93VGFyZ2V0UG9pbnQ6IFBvaW50IHwgbnVsbDtcbiAgICBsZXQgZWxib3dOZXh0UmVuZGVyUG9pbnRzOiBQb2ludFtdIHwgbnVsbDtcblxuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctbGluZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTGluZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGluZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZExpbmVFbGVtZW50cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmID0gZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgdmFsdWUsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleDogaGFuZGxlUmVmLmhhbmRsZUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBiZWZvcmVSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdyAmJlxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5oYW5kbGUgIT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlICYmXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLmhhbmRsZSAhPT0gTGluZVJlc2l6ZUhhbmRsZS50YXJnZXRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzSW50ZXJzZWN0ID0gaXNTb3VyY2VBbmRUYXJnZXRJbnRlcnNlY3QocGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNJbnRlcnNlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHM6IFBvaW50W10gPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IHJlc2l6ZVJlZi5oYW5kbGVJbmRleCE7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzT25FbGJvdyA9IGdldEVsYm93UG9pbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZWxib3dTb3VyY2VQb2ludCA9IHBvaW50c09uRWxib3dbMF07XG4gICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCA9IHBvaW50c09uRWxib3dbcG9pbnRzT25FbGJvdy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBlbGJvd05leHRSZW5kZXJQb2ludHMgPSBnZXROZXh0UmVuZGVyUG9pbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgcG9pbnRzT25FbGJvdyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50KGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgWy4uLnBvaW50c10sIGVsYm93TmV4dFJlbmRlclBvaW50cywgaGFuZGxlSW5kZXgpO1xuICAgICAgICAgICAgICAgIGVsYm93TGluZUluZGV4ID0gdmFsdWUuaW5kZXg7XG4gICAgICAgICAgICAgICAgZWxib3dMaW5lRGVsZXRlQ291bnQgPSB2YWx1ZS5kZWxldGVDb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGxldCBwb2ludHM6IFBvaW50W10gPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgIGxldCBzb3VyY2U6IExpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnNvdXJjZSB9O1xuICAgICAgICAgICAgbGV0IHRhcmdldDogTGluZUhhbmRsZSA9IHsgLi4ucmVzaXplUmVmLmVsZW1lbnQudGFyZ2V0IH07XG4gICAgICAgICAgICBsZXQgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdE91dGxpbmVHZW9tZXRyeShib2FyZCwgcmVzaXplU3RhdGUuZW5kUG9pbnQsIFJFQUNUSU9OX01BUkdJTik7XG4gICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5zb3VyY2UgfHwgcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvYmplY3QgPSByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSA/IHNvdXJjZSA6IHRhcmdldDtcbiAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmNvbm5lY3Rpb24gPSBnZXRDb25uZWN0aW9uQnlOZWFyZXN0UG9pbnQoYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBoaXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSBoaXRFbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuYm91bmRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmVsYm93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGJvd05leHRSZW5kZXJQb2ludHMgJiYgZWxib3dTb3VyY2VQb2ludCAmJiBlbGJvd1RhcmdldFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQgPSBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0S2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kS2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF0gPSBhbGlnbkVsYm93U2VnbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaWREYXRhUG9pbnRzOiBQb2ludFtdID0gWy4uLnBvaW50c10uc2xpY2UoMSwgcG9pbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsYm93TGluZUluZGV4ICE9PSBudWxsICYmIGVsYm93TGluZURlbGV0ZUNvdW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0lsbGVnYWxFbGJvd1BvaW50KG1pZERhdGFQb2ludHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMgPSBbbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMuc3BsaWNlKGVsYm93TGluZUluZGV4LCBlbGJvd0xpbmVEZWxldGVDb3VudCwgbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ubWlkRGF0YVBvaW50cywgZWxib3dUYXJnZXRQb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoaGFuZGxlSW5kZXggKyAxLCAwLCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUgPyBoYW5kbGVJbmRleCArIDEgOiBoYW5kbGVJbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmF3UG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IFsuLi5wb2ludHNdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1swXSA9IGRyYXdQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgbmV3UG9pbnRzW25ld1BvaW50cy5sZW5ndGggLSAxXSA9IGRyYXdQb2ludHNbZHJhd1BvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgIT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgICAgICBuZXdQb2ludHMuZm9yRWFjaCgocG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGhhbmRsZUluZGV4KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzW2hhbmRsZUluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSBhbGlnblBvaW50cyhwb2ludCwgcG9pbnRzW2hhbmRsZUluZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUxpbmUoYm9hcmQsIHsgcG9pbnRzLCBzb3VyY2UsIHRhcmdldCB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnRzID0gZWxlbWVudCAmJiBbLi4uZWxlbWVudC5wb2ludHMhXTtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIgJiYgZWxib3dOZXh0UmVuZGVyUG9pbnRzICYmIGVsYm93U291cmNlUG9pbnQgJiYgZWxib3dUYXJnZXRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0U291cmNlUG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRUYXJnZXRQb2ludCA9IGVsYm93TmV4dFJlbmRlclBvaW50c1tlbGJvd05leHRSZW5kZXJQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoMCwgMSwgbmV4dFNvdXJjZVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZSgtMSwgMSwgbmV4dFRhcmdldFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKHBvaW50cyEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNFcXVhbHMocG9pbnRzWzBdLCBuZXh0U291cmNlUG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChQb2ludC5pc0VxdWFscyhwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBuZXh0VGFyZ2V0UG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtlbGJvd1NvdXJjZVBvaW50LCAuLi5wb2ludHMsIGVsYm93VGFyZ2V0UG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVMaW5lKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGJvd0xpbmVJbmRleCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd0xpbmVEZWxldGVDb3VudCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd1NvdXJjZVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { PlaitElement, distanceBetweenPointAndSegments, getHitElementByPoint, getNearestPointBetweenPointAndSegments } from '@plait/core';
|
|
2
2
|
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
-
import { getHitLineTextIndex, getLinePoints } from '../utils';
|
|
4
3
|
import { ResizeHandle, getRatioByPoint, withResize } from '@plait/common';
|
|
5
4
|
import { DrawTransforms } from '../transforms';
|
|
5
|
+
import { getLinePoints } from '../utils/line/line-basic';
|
|
6
|
+
import { getHitLineTextIndex } from '../utils/position/line';
|
|
6
7
|
export const withLineTextMove = (board) => {
|
|
7
8
|
let textIndex = 0;
|
|
8
9
|
const movableBuffer = 100;
|
|
@@ -11,7 +12,7 @@ export const withLineTextMove = (board) => {
|
|
|
11
12
|
canResize: () => {
|
|
12
13
|
return true;
|
|
13
14
|
},
|
|
14
|
-
|
|
15
|
+
hitTest: (point) => {
|
|
15
16
|
let result = null;
|
|
16
17
|
const line = getHitElementByPoint(board, point, (element) => {
|
|
17
18
|
return PlaitDrawElement.isLine(element);
|
|
@@ -30,7 +31,7 @@ export const withLineTextMove = (board) => {
|
|
|
30
31
|
onResize: (resizeRef, resizeState) => {
|
|
31
32
|
const element = resizeRef.element;
|
|
32
33
|
if (element) {
|
|
33
|
-
const movingPoint = resizeState.
|
|
34
|
+
const movingPoint = resizeState.endPoint;
|
|
34
35
|
const points = getLinePoints(board, element);
|
|
35
36
|
const distance = distanceBetweenPointAndSegments(points, movingPoint);
|
|
36
37
|
if (distance <= movableBuffer) {
|
|
@@ -49,4 +50,4 @@ export const withLineTextMove = (board) => {
|
|
|
49
50
|
withResize(board, options);
|
|
50
51
|
return board;
|
|
51
52
|
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXRleHQtbW92ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXRleHQtbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsWUFBWSxFQUVaLCtCQUErQixFQUMvQixvQkFBb0IsRUFDcEIsc0NBQXNDLEVBQ3pDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUE2QyxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2xELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNsQixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7SUFDMUIsTUFBTSxPQUFPLEdBQWlDO1FBQzFDLEdBQUcsRUFBRSxXQUFXO1FBQ2hCLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEVBQUU7Z0JBQ3RFLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBMEIsQ0FBQztZQUM1QixJQUFJLElBQUksRUFBRTtnQkFDTixNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBa0IsQ0FBQztnQkFDdEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7b0JBQ3ZDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ3BEO2FBQ0o7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO1FBQ0QsUUFBUSxFQUFFLENBQUMsU0FBK0IsRUFBRSxXQUF3QixFQUFFLEVBQUU7WUFDcEUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUNsQyxJQUFJLE9BQU8sRUFBRTtnQkFDVCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUN6QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLFFBQVEsR0FBRywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksUUFBUSxJQUFJLGFBQWEsRUFBRTtvQkFDM0IsTUFBTSxLQUFLLEdBQUcsc0NBQXNDLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDakYsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDakMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHO3dCQUNmLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQzt3QkFDbkIsUUFBUTtxQkFDWCxDQUFDO29CQUNGLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDdEQ7YUFDSjtRQUNMLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUFZLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV0QyxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBvaW50LFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMsXG4gICAgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsXG4gICAgZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZXNpemVIYW5kbGUsIFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCBnZXRSYXRpb0J5UG9pbnQsIHdpdGhSZXNpemUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBMaW5lQ29tcG9uZW50IH0gZnJvbSAnLi4vbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBnZXRIaXRMaW5lVGV4dEluZGV4IH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vbGluZSc7XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluZVRleHRNb3ZlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IHRleHRJbmRleCA9IDA7XG4gICAgY29uc3QgbW92YWJsZUJ1ZmZlciA9IDEwMDtcbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdExpbmU+ID0ge1xuICAgICAgICBrZXk6ICdsaW5lLXRleHQnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQsIChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCk7XG4gICAgICAgICAgICB9KSBhcyB1bmRlZmluZWQgfCBQbGFpdExpbmU7XG4gICAgICAgICAgICBpZiAobGluZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZ2V0SGl0TGluZVRleHRJbmRleChib2FyZCwgbGluZSwgcG9pbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQobGluZSkgYXMgTGluZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gaGl0Q29tcG9uZW50LmdldFRleHRNYW5hZ2VzKClbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgIXRleHRNYW5hZ2UuaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBlbGVtZW50OiBsaW5lLCBoYW5kbGU6IFJlc2l6ZUhhbmRsZS5lIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmU+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSByZXNpemVSZWYuZWxlbWVudDtcbiAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnRzLCBtb3ZpbmdQb2ludCk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDw9IG1vdmFibGVCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhtb3ZpbmdQb2ludCwgcG9pbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gZ2V0UmF0aW9CeVBvaW50KHBvaW50cywgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0cyA9IFsuLi5lbGVtZW50LnRleHRzXTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dHNbdGV4dEluZGV4XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRleHRzW3RleHRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRMaW5lVGV4dHMoYm9hcmQsIGVsZW1lbnQsIHRleHRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdExpbmU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { PlaitBoard, PlaitElement, getHitElementByPoint, getNearestPointBetweenPointAndSegments, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
2
|
import { PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { Node } from 'slate';
|
|
4
|
-
import { getHitLineTextIndex, getLinePoints, isHitLineText } from '../utils';
|
|
5
4
|
import { getRatioByPoint } from '@plait/common';
|
|
6
5
|
import { buildText } from '@plait/text';
|
|
7
6
|
import { DrawTransforms } from '../transforms';
|
|
7
|
+
import { getLinePoints } from '../utils/line/line-basic';
|
|
8
|
+
import { getHitLineTextIndex } from '../utils/position/line';
|
|
9
|
+
import { isHitLineText } from '../utils/hit';
|
|
8
10
|
export const withLineText = (board) => {
|
|
9
|
-
const {
|
|
10
|
-
board.
|
|
11
|
+
const { dblClick } = board;
|
|
12
|
+
board.dblClick = (event) => {
|
|
11
13
|
if (!PlaitBoard.isReadonly(board)) {
|
|
12
14
|
const clickPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
13
15
|
const hitTarget = getHitElementByPoint(board, clickPoint, (element) => {
|
|
@@ -38,7 +40,7 @@ export const withLineText = (board) => {
|
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
dblClick(event);
|
|
42
44
|
};
|
|
43
45
|
return board;
|
|
44
46
|
};
|
|
@@ -54,4 +56,4 @@ function editHandle(board, element, manageIndex, isFirstEdit = false) {
|
|
|
54
56
|
}
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS10ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixzQ0FBc0MsRUFDdEMsV0FBVyxFQUNYLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzlDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFM0IsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsT0FBcUIsRUFBRSxFQUFFO2dCQUNoRixPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQTBCLENBQUM7WUFDNUIsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxLQUFLLEdBQUcsc0NBQXNDLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNsRSxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxTQUFTLEVBQUU7b0JBQ1gsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQzNDO3FCQUFNO29CQUNILE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzdDLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1AsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLFFBQVEsRUFBRSxLQUFLO3dCQUNmLEtBQUssRUFBRSxFQUFFO3dCQUNULE1BQU0sRUFBRSxFQUFFO3FCQUNiLENBQUMsQ0FBQztvQkFDSCxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3JELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ1osTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQWtCLENBQUM7d0JBQzNFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNqRixDQUFDLENBQUMsQ0FBQztpQkFDTjthQUNKO1NBQ0o7UUFDRCxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsU0FBUyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFrQixFQUFFLFdBQW1CLEVBQUUsY0FBdUIsS0FBSztJQUN4RyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBa0IsQ0FBQztJQUN6RSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBRTdELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxNQUFNLFlBQVksR0FBRyxDQUFDLFdBQVcsSUFBSSxVQUFVLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDekUsSUFBSSxZQUFZLEVBQUU7WUFDZCxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDOUQ7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIHRvSG9zdFBvaW50LFxuICAgIHRvVmlld0JveFBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGdldFJhdGlvQnlQb2ludCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgYnVpbGRUZXh0IH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgTGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2xpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRMaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldEhpdExpbmVUZXh0SW5kZXggfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IGlzSGl0TGluZVRleHQgfSBmcm9tICcuLi91dGlscy9oaXQnO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBkYmxDbGljayB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kYmxDbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFRhcmdldCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBjbGlja1BvaW50LCAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSkgYXMgdW5kZWZpbmVkIHwgUGxhaXRMaW5lO1xuICAgICAgICAgICAgaWYgKGhpdFRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGhpdFRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhjbGlja1BvaW50LCBwb2ludHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRzID0gaGl0VGFyZ2V0LnRleHRzPy5sZW5ndGggPyBbLi4uaGl0VGFyZ2V0LnRleHRzXSA6IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRJbmRleCA9IGdldEhpdExpbmVUZXh0SW5kZXgoYm9hcmQsIGhpdFRhcmdldCwgY2xpY2tQb2ludCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNIaXRUZXh0ID0gaXNIaXRMaW5lVGV4dChib2FyZCwgaGl0VGFyZ2V0LCBjbGlja1BvaW50KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNIaXRUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRIYW5kbGUoYm9hcmQsIGhpdFRhcmdldCwgdGV4dEluZGV4KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IGdldFJhdGlvQnlQb2ludChwb2ludHMsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+aWh+acrCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJhdGlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI4LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0TGluZVRleHRzKGJvYXJkLCBoaXRUYXJnZXQsIHRleHRzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoaXRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGhpdFRhcmdldCkgYXMgTGluZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRIYW5kbGUoYm9hcmQsIGhpdFRhcmdldCwgaGl0Q29tcG9uZW50LmdldFRleHRNYW5hZ2VzKCkubGVuZ3RoIC0gMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkYmxDbGljayhldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG5cbmZ1bmN0aW9uIGVkaXRIYW5kbGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgbWFuYWdlSW5kZXg6IG51bWJlciwgaXNGaXJzdEVkaXQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IGhpdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZWxlbWVudCkgYXMgTGluZUNvbXBvbmVudDtcbiAgICBjb25zdCB0ZXh0TWFuYWdlID0gaGl0Q29tcG9uZW50LmdldFRleHRNYW5hZ2VzKClbbWFuYWdlSW5kZXhdO1xuICAgIGNvbnN0IG9yaWdpblRleHQgPSB0ZXh0TWFuYWdlLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jaGlsZHJlbjtcblxuICAgIHRleHRNYW5hZ2UuZWRpdCgob3JpZ2luLCBkZXNjZW5kYW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBOb2RlLnN0cmluZyhkZXNjZW5kYW50WzBdKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVtb3ZlID0gKGlzRmlyc3RFZGl0ICYmIG9yaWdpblRleHQgPT09IGRlc2NlbmRhbnQpIHx8ICF0ZXh0O1xuICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlKSB7XG4gICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZW1vdmVMaW5lVGV4dChib2FyZCwgZWxlbWVudCwgbWFuYWdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PlaitBoard, Transforms, PlaitNode, getSelectedElements, Direction } from '@plait/core';
|
|
1
|
+
import { PlaitBoard, Transforms, PlaitNode, getSelectedElements, Direction, RectangleClient } from '@plait/core';
|
|
2
2
|
import { PlaitDrawElement, BasicShapes } from '../interfaces';
|
|
3
|
-
import { createDefaultGeometry, createTextElement, getMemorizedLatestByPointer,
|
|
3
|
+
import { createDefaultGeometry, createTextElement, getMemorizedLatestByPointer, getTextShapeProperty, insertElement } from '../utils';
|
|
4
4
|
import { getDirectionByVector, getPointByVector, normalizeShapePoints } from '@plait/common';
|
|
5
5
|
import { DrawTransforms } from '.';
|
|
6
6
|
import { collectLineUpdatedRefsByGeometry } from './line';
|
|
@@ -22,7 +22,7 @@ export const insertGeometryByVector = (board, point, shape, vector) => {
|
|
|
22
22
|
offset = -shapeProperty.height / 2;
|
|
23
23
|
}
|
|
24
24
|
const vectorPoint = getPointByVector(point, vector, offset);
|
|
25
|
-
const points =
|
|
25
|
+
const points = RectangleClient.getPoints(RectangleClient.getRectangleByCenterPoint(vectorPoint, shapeProperty.width, shapeProperty.height));
|
|
26
26
|
return insertGeometry(board, points, shape);
|
|
27
27
|
}
|
|
28
28
|
return null;
|
|
@@ -60,4 +60,4 @@ export const switchGeometryShape = (board, shape) => {
|
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFlLFNBQVMsRUFBRSxtQkFBbUIsRUFBVSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEQsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdEksT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsS0FBcUIsRUFBRSxFQUFFO0lBQy9GLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0QsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQyxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsS0FBWSxFQUFFLEtBQXFCLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDN0csTUFBTSxhQUFh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QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM1QixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5QyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNDLGdDQUFnQyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3JFO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7S0FDTjtBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMsIFBvaW50LCBQYXRoLCBQbGFpdE5vZGUsIGdldFNlbGVjdGVkRWxlbWVudHMsIFZlY3RvciwgRGlyZWN0aW9uLCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBHZW9tZXRyeVNoYXBlcywgUGxhaXRUZXh0LCBQbGFpdExpbmUsIEZsb3djaGFydFN5bWJvbHMsIEJhc2ljU2hhcGVzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0R2VvbWV0cnksIGNyZWF0ZVRleHRFbGVtZW50LCBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIsIGdldFRleHRTaGFwZVByb3BlcnR5LCBpbnNlcnRFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGdldERpcmVjdGlvbkJ5VmVjdG9yLCBnZXRQb2ludEJ5VmVjdG9yLCBub3JtYWxpemVTaGFwZVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuJztcbmltcG9ydCB7IGNvbGxlY3RMaW5lVXBkYXRlZFJlZnNCeUdlb21ldHJ5IH0gZnJvbSAnLi9saW5lJztcbmltcG9ydCB7IERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHksIERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eU1hcCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRHZW9tZXRyeSA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSwgc2hhcGU6IEdlb21ldHJ5U2hhcGVzKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IGNyZWF0ZURlZmF1bHRHZW9tZXRyeShib2FyZCwgcG9pbnRzLCBzaGFwZSk7XG4gICAgaW5zZXJ0RWxlbWVudChib2FyZCwgbmV3RWxlbWVudCk7XG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0R2VvbWV0cnlCeVZlY3RvciA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IFBvaW50LCBzaGFwZTogR2VvbWV0cnlTaGFwZXMsIHZlY3RvcjogVmVjdG9yKSA9PiB7XG4gICAgY29uc3Qgc2hhcGVQcm9wZXJ0eSA9IERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eU1hcFtzaGFwZSBhcyBGbG93Y2hhcnRTeW1ib2xzXSB8fCBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5O1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldERpcmVjdGlvbkJ5VmVjdG9yKHZlY3Rvcik7XG4gICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgaWYgKFtEaXJlY3Rpb24ubGVmdCwgRGlyZWN0aW9uLnJpZ2h0XS5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAtc2hhcGVQcm9wZXJ0eS53aWR0aCAvIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAtc2hhcGVQcm9wZXJ0eS5oZWlnaHQgLyAyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZlY3RvclBvaW50ID0gZ2V0UG9pbnRCeVZlY3Rvcihwb2ludCwgdmVjdG9yLCBvZmZzZXQpO1xuICAgICAgICBjb25zdCBwb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFxuICAgICAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5Q2VudGVyUG9pbnQodmVjdG9yUG9pbnQsIHNoYXBlUHJvcGVydHkud2lkdGgsIHNoYXBlUHJvcGVydHkuaGVpZ2h0KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaW5zZXJ0R2VvbWV0cnkoYm9hcmQsIHBvaW50cywgc2hhcGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQsIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBtZW1vcml6ZWRMYXRlc3QgPSBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIoQmFzaWNTaGFwZXMudGV4dCk7XG4gICAgY29uc3QgcHJvcGVydHkgPSBnZXRUZXh0U2hhcGVQcm9wZXJ0eShib2FyZCwgdGV4dCwgbWVtb3JpemVkTGF0ZXN0LnRleHRQcm9wZXJ0aWVzWydmb250LXNpemUnXSk7XG4gICAgY29uc3QgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSA9IFtwb2ludCwgW3BvaW50WzBdICsgcHJvcGVydHkud2lkdGgsIHBvaW50WzFdICsgcHJvcGVydHkuaGVpZ2h0XV07XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IGNyZWF0ZVRleHRFbGVtZW50KGJvYXJkLCBwb2ludHMsIHRleHQpO1xuICAgIGluc2VydEVsZW1lbnQoYm9hcmQsIG5ld0VsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2l6ZUdlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFtQb2ludCwgUG9pbnRdLCB0ZXh0SGVpZ2h0OiBudW1iZXIsIHBhdGg6IFBhdGgpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVQb2ludHMgPSBub3JtYWxpemVTaGFwZVBvaW50cyhwb2ludHMpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKTtcbiAgICBjb25zdCBuZXdIZWlnaHQgPSB0ZXh0SGVpZ2h0IC8gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0aWVzID0geyBwb2ludHM6IG5vcm1hbGl6ZVBvaW50cywgdGV4dEhlaWdodDogbmV3SGVpZ2h0IH07XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpICYmIGVsZW1lbnQuYXV0b1NpemUpIHtcbiAgICAgICAgKG5ld1Byb3BlcnRpZXMgYXMgUGFydGlhbDxQbGFpdFRleHQ+KS5hdXRvU2l6ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld1Byb3BlcnRpZXMsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHN3aXRjaEdlb21ldHJ5U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNoYXBlOiBHZW9tZXRyeVNoYXBlcykgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjb25zdCByZWZzOiB7IHByb3BlcnR5OiBQYXJ0aWFsPFBsYWl0TGluZT47IHBhdGg6IFBhdGggfVtdID0gW107XG4gICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGl0ZW0pICYmICFQbGFpdERyYXdFbGVtZW50LmlzVGV4dChpdGVtKSkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGl0ZW0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHNoYXBlIH0sIHBhdGgpO1xuICAgICAgICAgICAgY29sbGVjdExpbmVVcGRhdGVkUmVmc0J5R2VvbWV0cnkoYm9hcmQsIHsgLi4uaXRlbSwgc2hhcGUgfSwgcmVmcyk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocmVmcy5sZW5ndGgpIHtcbiAgICAgICAgcmVmcy5mb3JFYWNoKHJlZiA9PiB7XG4gICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVMaW5lKGJvYXJkLCByZWYucHJvcGVydHksIHJlZi5wYXRoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Path, PlaitBoard, Transforms, findElements } from '@plait/core';
|
|
2
|
-
import { LineHandleKey,
|
|
2
|
+
import { LineHandleKey, MemorizeKey, PlaitDrawElement, PlaitLine } from '../interfaces';
|
|
3
3
|
import { memorizeLatest } from '@plait/common';
|
|
4
|
-
import {
|
|
4
|
+
import { getSelectedLineElements } from '../utils/selected';
|
|
5
|
+
import { getConnectionByNearestPoint, getLinePoints } from '../utils/line/line-basic';
|
|
5
6
|
export const resizeLine = (board, options, path) => {
|
|
6
7
|
Transforms.setNode(board, options, path);
|
|
7
8
|
};
|
|
@@ -33,9 +34,6 @@ export const setLineShape = (board, newProperties) => {
|
|
|
33
34
|
if (element.shape === newProperties.shape) {
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
|
-
if (newProperties.shape === LineShape.elbow) {
|
|
37
|
-
_properties.points = [element.points[0], element.points[element.points.length - 1]];
|
|
38
|
-
}
|
|
39
37
|
const path = PlaitBoard.findPath(board, element);
|
|
40
38
|
Transforms.setNode(board, _properties, path);
|
|
41
39
|
});
|
|
@@ -57,7 +55,7 @@ export const collectLineUpdatedRefsByGeometry = (board, geometry, refs) => {
|
|
|
57
55
|
const object = { ...line[handle] };
|
|
58
56
|
const linePoints = getLinePoints(board, line);
|
|
59
57
|
const point = isSourceBound ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
60
|
-
object.connection =
|
|
58
|
+
object.connection = getConnectionByNearestPoint(board, point, geometry);
|
|
61
59
|
const path = PlaitBoard.findPath(board, line);
|
|
62
60
|
const index = refs.findIndex(obj => Path.equals(obj.path, path));
|
|
63
61
|
if (index === -1) {
|
|
@@ -77,7 +75,7 @@ export const collectLineUpdatedRefsByGeometry = (board, geometry, refs) => {
|
|
|
77
75
|
export const connectLineToGeometry = (board, lineElement, handle, geometryElement) => {
|
|
78
76
|
const linePoints = PlaitLine.getPoints(board, lineElement);
|
|
79
77
|
const point = handle === LineHandleKey.source ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
80
|
-
const connection =
|
|
78
|
+
const connection = getConnectionByNearestPoint(board, point, geometryElement);
|
|
81
79
|
if (connection) {
|
|
82
80
|
let source = lineElement.source;
|
|
83
81
|
let target = lineElement.target;
|
|
@@ -99,4 +97,4 @@ export const connectLineToGeometry = (board, lineElement, handle, geometryElemen
|
|
|
99
97
|
resizeLine(board, { source, target }, path);
|
|
100
98
|
}
|
|
101
99
|
};
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3RyYW5zZm9ybXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RyxPQUFPLEVBRUgsYUFBYSxFQUViLFNBQVMsRUFFVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBRWhCLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUEyQixFQUFFLElBQVUsRUFBRSxFQUFFO0lBQ3JGLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsS0FBaUIsRUFBRSxFQUFFO0lBQ3JGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFrQixFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQ25GLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FB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VCxPQUFPLEVBQUUsZUFBZSxDQUFDLEVBQUU7Z0JBQzNCLFVBQVU7YUFDYixDQUFDO1NBQ0w7UUFDRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRCxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9DO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludE9mUmVjdGFuZ2xlLCBUcmFuc2Zvcm1zLCBmaW5kRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQge1xuICAgIExpbmVIYW5kbGUsXG4gICAgTGluZUhhbmRsZUtleSxcbiAgICBMaW5lTWFya2VyVHlwZSxcbiAgICBMaW5lU2hhcGUsXG4gICAgTGluZVRleHQsXG4gICAgTWVtb3JpemVLZXksXG4gICAgUGxhaXREcmF3RWxlbWVudCxcbiAgICBQbGFpdEdlb21ldHJ5LFxuICAgIFBsYWl0TGluZVxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IG1lbW9yaXplTGF0ZXN0IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRMaW5lUG9pbnRzLCBnZXRTZWxlY3RlZExpbmVFbGVtZW50cywgdHJhbnNmb3JtUG9pbnRUb0Nvbm5lY3Rpb24gfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCByZXNpemVMaW5lID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zOiBQYXJ0aWFsPFBsYWl0TGluZT4sIHBhdGg6IFBhdGgpID0+IHtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG9wdGlvbnMsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldExpbmVUZXh0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCB0ZXh0czogTGluZVRleHRbXSkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgdGV4dHMgfSwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTGluZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCB0ZXh0cyA9IGVsZW1lbnQudGV4dHM/Lmxlbmd0aCA/IFsuLi5lbGVtZW50LnRleHRzXSA6IFtdO1xuICAgIGNvbnN0IG5ld1RleHRzID0gWy4uLnRleHRzXTtcbiAgICBuZXdUZXh0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyB0ZXh0czogbmV3VGV4dHMgfSwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0TGluZU1hcmsgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGhhbmRsZUtleTogTGluZUhhbmRsZUtleSwgbWFya2VyOiBMaW5lTWFya2VyVHlwZSkgPT4ge1xuICAgIG1lbW9yaXplTGF0ZXN0KE1lbW9yaXplS2V5LmxpbmUsIGhhbmRsZUtleSwgbWFya2VyKTtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgIHNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgbGV0IGhhbmRsZSA9IGhhbmRsZUtleSA9PT0gTGluZUhhbmRsZUtleS5zb3VyY2UgPyBlbGVtZW50LnNvdXJjZSA6IGVsZW1lbnQudGFyZ2V0O1xuICAgICAgICBoYW5kbGUgPSB7IC4uLmhhbmRsZSwgbWFya2VyIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBbaGFuZGxlS2V5XTogaGFuZGxlIH0sIHBhdGgpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldExpbmVTaGFwZSA9IChib2FyZDogUGxhaXRCb2FyZCwgbmV3UHJvcGVydGllczogUGFydGlhbDxQbGFpdExpbmU+KSA9PiB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZExpbmVFbGVtZW50cyhib2FyZCk7XG4gICAgZWxlbWVudHMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBfcHJvcGVydGllcyA9IHsgLi4ubmV3UHJvcGVydGllcyB9O1xuICAgICAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gbmV3UHJvcGVydGllcy5zaGFwZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdQcm9wZXJ0aWVzLnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgIF9wcm9wZXJ0aWVzLnBvaW50cyA9IFtlbGVtZW50LnBvaW50c1swXSwgZWxlbWVudC5wb2ludHNbZWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV1dO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBfcHJvcGVydGllcywgcGF0aCk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29sbGVjdExpbmVVcGRhdGVkUmVmc0J5R2VvbWV0cnkgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZ2VvbWV0cnk6IFBsYWl0R2VvbWV0cnksXG4gICAgcmVmczogeyBwcm9wZXJ0eTogUGFydGlhbDxQbGFpdExpbmU+OyBwYXRoOiBQYXRoIH1bXVxuKSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBmaW5kRWxlbWVudHMoYm9hcmQsIHtcbiAgICAgICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnNvdXJjZS5ib3VuZElkID09PSBnZW9tZXRyeS5pZCB8fCBlbGVtZW50LnRhcmdldC5ib3VuZElkID09PSBnZW9tZXRyeS5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVjdXJzaW9uOiBlbGVtZW50ID0+IHRydWVcbiAgICB9KSBhcyBQbGFpdExpbmVbXTtcbiAgICBpZiAobGluZXMubGVuZ3RoKSB7XG4gICAgICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1NvdXJjZUJvdW5kID0gbGluZS5zb3VyY2UuYm91bmRJZCA9PT0gZ2VvbWV0cnkuaWQ7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSBpc1NvdXJjZUJvdW5kID8gJ3NvdXJjZScgOiAndGFyZ2V0JztcbiAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHsgLi4ubGluZVtoYW5kbGVdIH07XG4gICAgICAgICAgICBjb25zdCBsaW5lUG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgbGluZSk7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IGlzU291cmNlQm91bmQgPyBsaW5lUG9pbnRzWzBdIDogbGluZVBvaW50c1tsaW5lUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgb2JqZWN0LmNvbm5lY3Rpb24gPSB0cmFuc2Zvcm1Qb2ludFRvQ29ubmVjdGlvbihib2FyZCwgcG9pbnQsIGdlb21ldHJ5KTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBsaW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVmcy5maW5kSW5kZXgob2JqID0+IFBhdGguZXF1YWxzKG9iai5wYXRoLCBwYXRoKSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVdOiBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWZzW2luZGV4XS5wcm9wZXJ0eSA9IHsgLi4ucmVmc1tpbmRleF0ucHJvcGVydHksIFtoYW5kbGVdOiBvYmplY3QgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbm5lY3RMaW5lVG9HZW9tZXRyeSA9IChib2FyZDogUGxhaXRCb2FyZCwgbGluZUVsZW1lbnQ6IFBsYWl0TGluZSwgaGFuZGxlOiBMaW5lSGFuZGxlS2V5LCBnZW9tZXRyeUVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICBjb25zdCBsaW5lUG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgbGluZUVsZW1lbnQpO1xuICAgIGNvbnN0IHBvaW50ID0gaGFuZGxlID09PSBMaW5lSGFuZGxlS2V5LnNvdXJjZSA/IGxpbmVQb2ludHNbMF0gOiBsaW5lUG9pbnRzW2xpbmVQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgY29ubmVjdGlvbjogUG9pbnRPZlJlY3RhbmdsZSA9IHRyYW5zZm9ybVBvaW50VG9Db25uZWN0aW9uKGJvYXJkLCBwb2ludCwgZ2VvbWV0cnlFbGVtZW50KTtcbiAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgICBsZXQgc291cmNlOiBMaW5lSGFuZGxlID0gbGluZUVsZW1lbnQuc291cmNlO1xuICAgICAgICBsZXQgdGFyZ2V0OiBMaW5lSGFuZGxlID0gbGluZUVsZW1lbnQudGFyZ2V0O1xuICAgICAgICBpZiAoaGFuZGxlID09PSBMaW5lSGFuZGxlS2V5LnNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlID0ge1xuICAgICAgICAgICAgICAgIC4uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICBib3VuZElkOiBnZW9tZXRyeUVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgY29ubmVjdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldCA9IHtcbiAgICAgICAgICAgICAgICAuLi50YXJnZXQsXG4gICAgICAgICAgICAgICAgYm91bmRJZDogZ2VvbWV0cnlFbGVtZW50LmlkLFxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGxpbmVFbGVtZW50KTtcbiAgICAgICAgcmVzaXplTGluZShib2FyZCwgeyBzb3VyY2UsIHRhcmdldCB9LCBwYXRoKTtcbiAgICB9XG59O1xuIl19
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3RyYW5zZm9ybXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RyxPQUFPLEVBRUgsYUFBYSxFQUliLFdBQVcsRUFDWCxnQkFBZ0IsRUFFaEIsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBMkIsRUFBRSxJQUFVLEVBQUUsRUFBRTtJQUNyRixVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFrQixFQUFFLEtBQWlCLEVBQUUsRUFBRTtJQUNyRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNuRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFB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QUUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnRPZlJlY3RhbmdsZSwgVHJhbnNmb3JtcywgZmluZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHtcbiAgICBMaW5lSGFuZGxlLFxuICAgIExpbmVIYW5kbGVLZXksXG4gICAgTGluZU1hcmtlclR5cGUsXG4gICAgTGluZVNoYXBlLFxuICAgIExpbmVUZXh0LFxuICAgIE1lbW9yaXplS2V5LFxuICAgIFBsYWl0RHJhd0VsZW1lbnQsXG4gICAgUGxhaXRHZW9tZXRyeSxcbiAgICBQbGFpdExpbmVcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBtZW1vcml6ZUxhdGVzdCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRMaW5lRWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZCc7XG5pbXBvcnQgeyBnZXRDb25uZWN0aW9uQnlOZWFyZXN0UG9pbnQsIGdldExpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtYmFzaWMnO1xuXG5leHBvcnQgY29uc3QgcmVzaXplTGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgb3B0aW9uczogUGFydGlhbDxQbGFpdExpbmU+LCBwYXRoOiBQYXRoKSA9PiB7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBvcHRpb25zLCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRMaW5lVGV4dHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgdGV4dHM6IExpbmVUZXh0W10pID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHRleHRzIH0sIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxpbmVUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgdGV4dHMgPSBlbGVtZW50LnRleHRzPy5sZW5ndGggPyBbLi4uZWxlbWVudC50ZXh0c10gOiBbXTtcbiAgICBjb25zdCBuZXdUZXh0cyA9IFsuLi50ZXh0c107XG4gICAgbmV3VGV4dHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgdGV4dHM6IG5ld1RleHRzIH0sIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldExpbmVNYXJrID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBoYW5kbGVLZXk6IExpbmVIYW5kbGVLZXksIG1hcmtlcjogTGluZU1hcmtlclR5cGUpID0+IHtcbiAgICBtZW1vcml6ZUxhdGVzdChNZW1vcml6ZUtleS5saW5lLCBoYW5kbGVLZXksIG1hcmtlcik7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzKGJvYXJkKTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGxldCBoYW5kbGUgPSBoYW5kbGVLZXkgPT09IExpbmVIYW5kbGVLZXkuc291cmNlID8gZWxlbWVudC5zb3VyY2UgOiBlbGVtZW50LnRhcmdldDtcbiAgICAgICAgaGFuZGxlID0geyAuLi5oYW5kbGUsIG1hcmtlciB9O1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgW2hhbmRsZUtleV06IGhhbmRsZSB9LCBwYXRoKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRMaW5lU2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5ld1Byb3BlcnRpZXM6IFBhcnRpYWw8UGxhaXRMaW5lPikgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgIGVsZW1lbnRzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3QgX3Byb3BlcnRpZXMgPSB7IC4uLm5ld1Byb3BlcnRpZXMgfTtcbiAgICAgICAgaWYgKGVsZW1lbnQuc2hhcGUgPT09IG5ld1Byb3BlcnRpZXMuc2hhcGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgX3Byb3BlcnRpZXMsIHBhdGgpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3RMaW5lVXBkYXRlZFJlZnNCeUdlb21ldHJ5ID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5LFxuICAgIHJlZnM6IHsgcHJvcGVydHk6IFBhcnRpYWw8UGxhaXRMaW5lPjsgcGF0aDogUGF0aCB9W11cbikgPT4ge1xuICAgIGNvbnN0IGxpbmVzID0gZmluZEVsZW1lbnRzKGJvYXJkLCB7XG4gICAgICAgIG1hdGNoOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA9PT0gZ2VvbWV0cnkuaWQgfHwgZWxlbWVudC50YXJnZXQuYm91bmRJZCA9PT0gZ2VvbWV0cnkuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIHJlY3Vyc2lvbjogZWxlbWVudCA9PiB0cnVlXG4gICAgfSkgYXMgUGxhaXRMaW5lW107XG4gICAgaWYgKGxpbmVzLmxlbmd0aCkge1xuICAgICAgICBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTb3VyY2VCb3VuZCA9IGxpbmUuc291cmNlLmJvdW5kSWQgPT09IGdlb21ldHJ5LmlkO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gaXNTb3VyY2VCb3VuZCA/ICdzb3VyY2UnIDogJ3RhcmdldCc7XG4gICAgICAgICAgICBjb25zdCBvYmplY3QgPSB7IC4uLmxpbmVbaGFuZGxlXSB9O1xuICAgICAgICAgICAgY29uc3QgbGluZVBvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBpc1NvdXJjZUJvdW5kID8gbGluZVBvaW50c1swXSA6IGxpbmVQb2ludHNbbGluZVBvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gZ2V0Q29ubmVjdGlvbkJ5TmVhcmVzdFBvaW50KGJvYXJkLCBwb2ludCwgZ2VvbWV0cnkpO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSByZWZzLmZpbmRJbmRleChvYmogPT4gUGF0aC5lcXVhbHMob2JqLnBhdGgsIHBhdGgpKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZV06IG9iamVjdFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXRoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZnNbaW5kZXhdLnByb3BlcnR5ID0geyAuLi5yZWZzW2luZGV4XS5wcm9wZXJ0eSwgW2hhbmRsZV06IG9iamVjdCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29ubmVjdExpbmVUb0dlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBsaW5lRWxlbWVudDogUGxhaXRMaW5lLCBoYW5kbGU6IExpbmVIYW5kbGVLZXksIGdlb21ldHJ5RWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIGNvbnN0IGxpbmVQb2ludHMgPSBQbGFpdExpbmUuZ2V0UG9pbnRzKGJvYXJkLCBsaW5lRWxlbWVudCk7XG4gICAgY29uc3QgcG9pbnQgPSBoYW5kbGUgPT09IExpbmVIYW5kbGVLZXkuc291cmNlID8gbGluZVBvaW50c1swXSA6IGxpbmVQb2ludHNbbGluZVBvaW50cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBjb25uZWN0aW9uOiBQb2ludE9mUmVjdGFuZ2xlID0gZ2V0Q29ubmVjdGlvbkJ5TmVhcmVzdFBvaW50KGJvYXJkLCBwb2ludCwgZ2VvbWV0cnlFbGVtZW50KTtcbiAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgICBsZXQgc291cmNlOiBMaW5lSGFuZGxlID0gbGluZUVsZW1lbnQuc291cmNlO1xuICAgICAgICBsZXQgdGFyZ2V0OiBMaW5lSGFuZGxlID0gbGluZUVsZW1lbnQudGFyZ2V0O1xuICAgICAgICBpZiAoaGFuZGxlID09PSBMaW5lSGFuZGxlS2V5LnNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlID0ge1xuICAgICAgICAgICAgICAgIC4uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICBib3VuZElkOiBnZW9tZXRyeUVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgY29ubmVjdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldCA9IHtcbiAgICAgICAgICAgICAgICAuLi50YXJnZXQsXG4gICAgICAgICAgICAgICAgYm91bmRJZDogZ2VvbWV0cnlFbGVtZW50LmlkLFxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGxpbmVFbGVtZW50KTtcbiAgICAgICAgcmVzaXplTGluZShib2FyZCwgeyBzb3VyY2UsIHRhcmdldCB9LCBwYXRoKTtcbiAgICB9XG59O1xuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Transforms, getElementById, idCreator } from '@plait/core';
|
|
2
2
|
import { PlaitDrawElement, PlaitLine } from '../interfaces';
|
|
3
|
-
import { getConnectionPoint } from './line';
|
|
3
|
+
import { getConnectionPoint } from './line/line-common';
|
|
4
4
|
export const buildClipboardData = (board, elements, startPoint) => {
|
|
5
5
|
return elements.map(element => {
|
|
6
6
|
if (PlaitDrawElement.isGeometry(element) || PlaitDrawElement.isImage(element)) {
|
|
@@ -59,4 +59,4 @@ export const insertClipboardData = (board, elements, startPoint) => {
|
|
|
59
59
|
});
|
|
60
60
|
Transforms.addSelectionWithTemporaryElements(board, elements);
|
|
61
61
|
};
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQTRCLEVBQUUsVUFBaUIsRUFBRSxFQUFFO0lBQ3JHLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMxQixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0UsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBbUIsQ0FBQztTQUNsRDtRQUNELElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FB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QztJQUNILFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFRyYW5zZm9ybXMsIGdldEVsZW1lbnRCeUlkLCBpZENyZWF0b3IgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5LCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBsYWl0SW1hZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ltYWdlJztcbmltcG9ydCB7IGdldENvbm5lY3Rpb25Qb2ludCB9IGZyb20gJy4vbGluZS9saW5lLWNvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBidWlsZENsaXBib2FyZERhdGEgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdERyYXdFbGVtZW50W10sIHN0YXJ0UG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSB8fCBQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGVsZW1lbnQucG9pbnRzLm1hcChwb2ludCA9PiBbcG9pbnRbMF0gLSBzdGFydFBvaW50WzBdLCBwb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV1dKTtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmVsZW1lbnQsIHBvaW50cyB9IGFzIFBsYWl0R2VvbWV0cnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBsZXQgc291cmNlID0geyAuLi5lbGVtZW50LnNvdXJjZSB9O1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9IHsgLi4uZWxlbWVudC50YXJnZXQgfTtcbiAgICAgICAgICAgIGxldCBwb2ludHMgPSBbLi4uZWxlbWVudC5wb2ludHNdO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuc291cmNlLmJvdW5kSWQpIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbMF0gPSBnZXRDb25uZWN0aW9uUG9pbnQoZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQuc291cmNlLmJvdW5kSWQpISwgZWxlbWVudC5zb3VyY2UuY29ubmVjdGlvbiEpO1xuICAgICAgICAgICAgICAgIGlmICghZ2V0RWxlbWVudEJ5SWQoYm9hcmQsIGVsZW1lbnQuc291cmNlLmJvdW5kSWQsIGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc291cmNlLmJvdW5kSWQ7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzb3VyY2UuY29ubmVjdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC50YXJnZXQuYm91bmRJZCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0gPSBnZXRDb25uZWN0aW9uUG9pbnQoXG4gICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnRhcmdldC5ib3VuZElkKSEsXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoIWdldEVsZW1lbnRCeUlkKGJvYXJkLCBlbGVtZW50LnRhcmdldC5ib3VuZElkLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRhcmdldC5ib3VuZElkO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0LmNvbm5lY3Rpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9pbnRzID0gcG9pbnRzLm1hcChwb2ludCA9PiBbcG9pbnRbMF0gLSBzdGFydFBvaW50WzBdLCBwb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV1dKTtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmVsZW1lbnQsIHBvaW50cywgc291cmNlLCB0YXJnZXQgfSBhcyBQbGFpdExpbmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Q2xpcGJvYXJkRGF0YSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RHJhd0VsZW1lbnRbXSwgc3RhcnRQb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBsaW5lcyA9IGVsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzTGluZSh2YWx1ZSkpIGFzIFBsYWl0TGluZVtdO1xuICAgIGNvbnN0IGdlb21ldHJpZXMgPSBlbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHZhbHVlKSB8fCBQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UodmFsdWUpKSBhcyAoXG4gICAgICAgIHwgUGxhaXRJbWFnZVxuICAgICAgICB8IFBsYWl0R2VvbWV0cnlcbiAgICApW107XG5cbiAgICBnZW9tZXRyaWVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZUxpbmVzOiBQbGFpdExpbmVbXSA9IFtdO1xuICAgICAgICBjb25zdCB0YXJnZXRMaW5lczogUGxhaXRMaW5lW10gPSBbXTtcbiAgICAgICAgbGluZXMuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdExpbmUuaXNCb3VuZEVsZW1lbnRPZlNvdXJjZShsaW5lLCBlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHNvdXJjZUxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUGxhaXRMaW5lLmlzQm91bmRFbGVtZW50T2ZUYXJnZXQobGluZSwgZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZWxlbWVudC5pZCA9IGlkQ3JlYXRvcigpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBsaW5lc1xuICAgICAgICBzb3VyY2VMaW5lcy5mb3JFYWNoKHNvdXJjZUxpbmUgPT4gKHNvdXJjZUxpbmUuc291cmNlLmJvdW5kSWQgPSBlbGVtZW50LmlkKSk7XG4gICAgICAgIHRhcmdldExpbmVzLmZvckVhY2godGFyZ2V0TGluZSA9PiAodGFyZ2V0TGluZS50YXJnZXQuYm91bmRJZCA9IGVsZW1lbnQuaWQpKTtcblxuICAgICAgICBlbGVtZW50LnBvaW50cyA9IGVsZW1lbnQucG9pbnRzLm1hcChwb2ludCA9PiBbc3RhcnRQb2ludFswXSArIHBvaW50WzBdLCBzdGFydFBvaW50WzFdICsgcG9pbnRbMV1dKSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgfSk7XG4gICAgbGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5pZCA9IGlkQ3JlYXRvcigpO1xuICAgICAgICBlbGVtZW50LnBvaW50cyA9IGVsZW1lbnQucG9pbnRzLm1hcChwb2ludCA9PiBbc3RhcnRQb2ludFswXSArIHBvaW50WzBdLCBzdGFydFBvaW50WzFdICsgcG9pbnRbMV1dKSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgfSk7XG4gICAgVHJhbnNmb3Jtcy5hZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzKTtcbn07XG4iXX0=
|