@plait/draw 0.77.3 → 0.78.0-next.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/fesm2022/plait-draw.mjs +2 -2
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/arrow-line.component.mjs +0 -165
- package/esm2022/constants/default.mjs +0 -7
- package/esm2022/constants/geometry.mjs +0 -272
- package/esm2022/constants/image.mjs +0 -2
- package/esm2022/constants/index.mjs +0 -9
- package/esm2022/constants/line.mjs +0 -12
- package/esm2022/constants/pointer.mjs +0 -23
- package/esm2022/constants/swimlane.mjs +0 -25
- package/esm2022/constants/text.mjs +0 -2
- package/esm2022/constants/theme.mjs +0 -28
- package/esm2022/engines/basic-shapes/cloud.mjs +0 -146
- package/esm2022/engines/basic-shapes/comment.mjs +0 -56
- package/esm2022/engines/basic-shapes/cross.mjs +0 -33
- package/esm2022/engines/basic-shapes/diamond.mjs +0 -16
- package/esm2022/engines/basic-shapes/ellipse.mjs +0 -53
- package/esm2022/engines/basic-shapes/hexagon.mjs +0 -27
- package/esm2022/engines/basic-shapes/left-arrow.mjs +0 -30
- package/esm2022/engines/basic-shapes/octagon.mjs +0 -29
- package/esm2022/engines/basic-shapes/parallelogram.mjs +0 -26
- package/esm2022/engines/basic-shapes/pentagon-arrow.mjs +0 -27
- package/esm2022/engines/basic-shapes/pentagon.mjs +0 -30
- package/esm2022/engines/basic-shapes/polygon.mjs +0 -56
- package/esm2022/engines/basic-shapes/process-arrow.mjs +0 -26
- package/esm2022/engines/basic-shapes/rectangle.mjs +0 -26
- package/esm2022/engines/basic-shapes/right-arrow.mjs +0 -28
- package/esm2022/engines/basic-shapes/round-comment.mjs +0 -82
- package/esm2022/engines/basic-shapes/round-rectangle.mjs +0 -58
- package/esm2022/engines/basic-shapes/star.mjs +0 -39
- package/esm2022/engines/basic-shapes/trapezoid.mjs +0 -26
- package/esm2022/engines/basic-shapes/triangle.mjs +0 -34
- package/esm2022/engines/basic-shapes/two-way-arrow.mjs +0 -25
- package/esm2022/engines/flowchart/database.mjs +0 -84
- package/esm2022/engines/flowchart/delay.mjs +0 -44
- package/esm2022/engines/flowchart/display.mjs +0 -74
- package/esm2022/engines/flowchart/document.mjs +0 -81
- package/esm2022/engines/flowchart/hard-disk.mjs +0 -84
- package/esm2022/engines/flowchart/internal-storage.mjs +0 -47
- package/esm2022/engines/flowchart/manual-input.mjs +0 -33
- package/esm2022/engines/flowchart/manual-loop.mjs +0 -26
- package/esm2022/engines/flowchart/merge.mjs +0 -34
- package/esm2022/engines/flowchart/multi-document.mjs +0 -143
- package/esm2022/engines/flowchart/note-curly-left.mjs +0 -86
- package/esm2022/engines/flowchart/note-curly-right.mjs +0 -89
- package/esm2022/engines/flowchart/note-square.mjs +0 -46
- package/esm2022/engines/flowchart/off-page.mjs +0 -32
- package/esm2022/engines/flowchart/or.mjs +0 -20
- package/esm2022/engines/flowchart/predefined-process.mjs +0 -47
- package/esm2022/engines/flowchart/preparation.mjs +0 -27
- package/esm2022/engines/flowchart/stored-data.mjs +0 -79
- package/esm2022/engines/flowchart/summing-junction.mjs +0 -23
- package/esm2022/engines/flowchart/terminal.mjs +0 -68
- package/esm2022/engines/index.mjs +0 -130
- package/esm2022/engines/table/table.mjs +0 -101
- package/esm2022/engines/uml/activity-class.mjs +0 -47
- package/esm2022/engines/uml/actor.mjs +0 -119
- package/esm2022/engines/uml/assembly.mjs +0 -105
- package/esm2022/engines/uml/combined-fragment.mjs +0 -66
- package/esm2022/engines/uml/component-box.mjs +0 -61
- package/esm2022/engines/uml/component.mjs +0 -117
- package/esm2022/engines/uml/container.mjs +0 -44
- package/esm2022/engines/uml/deletion.mjs +0 -54
- package/esm2022/engines/uml/note.mjs +0 -58
- package/esm2022/engines/uml/package.mjs +0 -105
- package/esm2022/engines/uml/provided-interface.mjs +0 -92
- package/esm2022/engines/uml/required-interface.mjs +0 -81
- package/esm2022/engines/uml/template.mjs +0 -47
- package/esm2022/generators/arrow-line-auto-complete.generator.mjs +0 -46
- package/esm2022/generators/arrow-line.generator.mjs +0 -13
- package/esm2022/generators/geometry-shape.generator.mjs +0 -29
- package/esm2022/generators/index.mjs +0 -7
- package/esm2022/generators/line-active.generator.mjs +0 -84
- package/esm2022/generators/single-text.generator.mjs +0 -16
- package/esm2022/generators/table.generator.mjs +0 -25
- package/esm2022/generators/text.generator.mjs +0 -131
- package/esm2022/generators/vector-line-generator.mjs +0 -13
- package/esm2022/geometry.component.mjs +0 -145
- package/esm2022/image.component.mjs +0 -67
- package/esm2022/interfaces/arrow-line.mjs +0 -70
- package/esm2022/interfaces/element.mjs +0 -9
- package/esm2022/interfaces/engine.mjs +0 -2
- package/esm2022/interfaces/geometry.mjs +0 -82
- package/esm2022/interfaces/image.mjs +0 -2
- package/esm2022/interfaces/index.mjs +0 -92
- package/esm2022/interfaces/line.mjs +0 -2
- package/esm2022/interfaces/options.mjs +0 -2
- package/esm2022/interfaces/swimlane.mjs +0 -13
- package/esm2022/interfaces/table.mjs +0 -13
- package/esm2022/interfaces/text.mjs +0 -2
- package/esm2022/interfaces/vector-line.mjs +0 -10
- package/esm2022/plait-draw.mjs +0 -5
- package/esm2022/plugins/with-arrow-line-auto-complete-reaction.mjs +0 -43
- package/esm2022/plugins/with-arrow-line-auto-complete.mjs +0 -76
- package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +0 -53
- package/esm2022/plugins/with-arrow-line-create.mjs +0 -51
- package/esm2022/plugins/with-arrow-line-resize.mjs +0 -158
- package/esm2022/plugins/with-arrow-line-text-move.mjs +0 -53
- package/esm2022/plugins/with-arrow-line-text.mjs +0 -73
- package/esm2022/plugins/with-draw-fragment.mjs +0 -98
- package/esm2022/plugins/with-draw-hotkey.mjs +0 -45
- package/esm2022/plugins/with-draw-resize.mjs +0 -269
- package/esm2022/plugins/with-draw-rotate.mjs +0 -132
- package/esm2022/plugins/with-draw.mjs +0 -144
- package/esm2022/plugins/with-geometry-create.mjs +0 -182
- package/esm2022/plugins/with-swimlane-create.mjs +0 -127
- package/esm2022/plugins/with-swimlane.mjs +0 -21
- package/esm2022/plugins/with-table-resize.mjs +0 -135
- package/esm2022/plugins/with-table.mjs +0 -109
- package/esm2022/plugins/with-vector-line-create.mjs +0 -85
- package/esm2022/plugins/with-vector-line-resize.mjs +0 -61
- package/esm2022/public-api.mjs +0 -11
- package/esm2022/table.component.mjs +0 -162
- package/esm2022/transforms/arrow-line.mjs +0 -66
- package/esm2022/transforms/common.mjs +0 -36
- package/esm2022/transforms/geometry-text.mjs +0 -59
- package/esm2022/transforms/geometry.mjs +0 -43
- package/esm2022/transforms/image.mjs +0 -33
- package/esm2022/transforms/index.mjs +0 -36
- package/esm2022/transforms/multi-text-geometry-text.mjs +0 -15
- package/esm2022/transforms/swimlane.mjs +0 -164
- package/esm2022/transforms/table-text.mjs +0 -44
- package/esm2022/transforms/table.mjs +0 -36
- package/esm2022/transforms/vector-line.mjs +0 -13
- package/esm2022/utils/arrow-line/arrow-line-arrow.mjs +0 -123
- package/esm2022/utils/arrow-line/arrow-line-basic.mjs +0 -205
- package/esm2022/utils/arrow-line/arrow-line-common.mjs +0 -162
- package/esm2022/utils/arrow-line/arrow-line-resize.mjs +0 -309
- package/esm2022/utils/arrow-line/elbow.mjs +0 -114
- package/esm2022/utils/arrow-line/index.mjs +0 -6
- package/esm2022/utils/clipboard.mjs +0 -55
- package/esm2022/utils/common.mjs +0 -184
- package/esm2022/utils/geometry.mjs +0 -178
- package/esm2022/utils/hit.mjs +0 -238
- package/esm2022/utils/index.mjs +0 -17
- package/esm2022/utils/line.mjs +0 -64
- package/esm2022/utils/memorize.mjs +0 -93
- package/esm2022/utils/multi-text-geometry.mjs +0 -61
- package/esm2022/utils/polygon.mjs +0 -30
- package/esm2022/utils/position/arrow-line.mjs +0 -20
- package/esm2022/utils/position/geometry.mjs +0 -30
- package/esm2022/utils/position/line.mjs +0 -51
- package/esm2022/utils/selected.mjs +0 -39
- package/esm2022/utils/shape.mjs +0 -11
- package/esm2022/utils/snap-resizing.mjs +0 -185
- package/esm2022/utils/style/index.mjs +0 -2
- package/esm2022/utils/style/stroke.mjs +0 -21
- package/esm2022/utils/swimlane.mjs +0 -124
- package/esm2022/utils/table-selected.mjs +0 -21
- package/esm2022/utils/table.mjs +0 -172
- package/esm2022/utils/uml.mjs +0 -90
- package/esm2022/utils/vector-line.mjs +0 -71
- package/esm2022/vector-line.component.mjs +0 -55
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
import { generateElbowLineRoute, removeDuplicatePoints, simplifyOrthogonalPoints } from '@plait/common';
|
|
2
|
-
import { Point, RectangleClient, createDebugGenerator } from '@plait/core';
|
|
3
|
-
import { LINE_ALIGN_TOLERANCE } from '../../constants/line';
|
|
4
|
-
import { getElbowLineRouteOptions, getArrowLineHandleRefPair } from './arrow-line-common';
|
|
5
|
-
const debugKey = 'debug:plait:line-mirror';
|
|
6
|
-
const debugGenerator = createDebugGenerator(debugKey);
|
|
7
|
-
export const alignPoints = (basePoint, movingPoint) => {
|
|
8
|
-
const newPoint = [...movingPoint];
|
|
9
|
-
if (Point.isVertical(newPoint, basePoint, LINE_ALIGN_TOLERANCE)) {
|
|
10
|
-
newPoint[0] = basePoint[0];
|
|
11
|
-
}
|
|
12
|
-
if (Point.isHorizontal(newPoint, basePoint, LINE_ALIGN_TOLERANCE)) {
|
|
13
|
-
newPoint[1] = basePoint[1];
|
|
14
|
-
}
|
|
15
|
-
return newPoint;
|
|
16
|
-
};
|
|
17
|
-
export function getResizedPreviousAndNextPoint(nextRenderPoints, sourcePoint, targetPoint, handleIndex) {
|
|
18
|
-
const referencePoint = {
|
|
19
|
-
previous: null,
|
|
20
|
-
next: null
|
|
21
|
-
};
|
|
22
|
-
const startPoint = nextRenderPoints[handleIndex];
|
|
23
|
-
const endPoint = nextRenderPoints[handleIndex + 1];
|
|
24
|
-
const isHorizontal = Point.isHorizontal(startPoint, endPoint);
|
|
25
|
-
const isVertical = Point.isVertical(startPoint, endPoint);
|
|
26
|
-
const previousPoint = nextRenderPoints[handleIndex - 1] ?? nextRenderPoints[0];
|
|
27
|
-
const beforePreviousPoint = nextRenderPoints[handleIndex - 2] ?? sourcePoint;
|
|
28
|
-
if ((isHorizontal && Point.isHorizontal(beforePreviousPoint, previousPoint)) ||
|
|
29
|
-
(isVertical && Point.isVertical(beforePreviousPoint, previousPoint))) {
|
|
30
|
-
referencePoint.previous = previousPoint;
|
|
31
|
-
}
|
|
32
|
-
const nextPoint = nextRenderPoints[handleIndex + 2] ?? nextRenderPoints[nextRenderPoints.length - 1];
|
|
33
|
-
const afterNextPoint = nextRenderPoints[handleIndex + 3] ?? targetPoint;
|
|
34
|
-
if ((isHorizontal && Point.isHorizontal(nextPoint, afterNextPoint)) || (isVertical && Point.isVertical(nextPoint, afterNextPoint))) {
|
|
35
|
-
referencePoint.next = nextPoint;
|
|
36
|
-
}
|
|
37
|
-
return referencePoint;
|
|
38
|
-
}
|
|
39
|
-
export function alignElbowSegment(startKeyPoint, endKeyPoint, resizeState, resizedPreviousAndNextPoint) {
|
|
40
|
-
let newStartPoint = startKeyPoint;
|
|
41
|
-
let newEndPoint = endKeyPoint;
|
|
42
|
-
if (Point.isHorizontal(startKeyPoint, endKeyPoint)) {
|
|
43
|
-
const offsetY = Point.getOffsetY(resizeState.startPoint, resizeState.endPoint);
|
|
44
|
-
let pointY = startKeyPoint[1] + offsetY;
|
|
45
|
-
if (resizedPreviousAndNextPoint.previous && Math.abs(resizedPreviousAndNextPoint.previous[1] - pointY) < LINE_ALIGN_TOLERANCE) {
|
|
46
|
-
pointY = resizedPreviousAndNextPoint.previous[1];
|
|
47
|
-
}
|
|
48
|
-
else if (resizedPreviousAndNextPoint.next && Math.abs(resizedPreviousAndNextPoint.next[1] - pointY) < LINE_ALIGN_TOLERANCE) {
|
|
49
|
-
pointY = resizedPreviousAndNextPoint.next[1];
|
|
50
|
-
}
|
|
51
|
-
newStartPoint = [startKeyPoint[0], pointY];
|
|
52
|
-
newEndPoint = [endKeyPoint[0], pointY];
|
|
53
|
-
}
|
|
54
|
-
if (Point.isVertical(startKeyPoint, endKeyPoint)) {
|
|
55
|
-
const offsetX = Point.getOffsetX(resizeState.startPoint, resizeState.endPoint);
|
|
56
|
-
let pointX = startKeyPoint[0] + offsetX;
|
|
57
|
-
if (resizedPreviousAndNextPoint.previous && Math.abs(resizedPreviousAndNextPoint.previous[0] - pointX) < LINE_ALIGN_TOLERANCE) {
|
|
58
|
-
pointX = resizedPreviousAndNextPoint.previous[0];
|
|
59
|
-
}
|
|
60
|
-
else if (resizedPreviousAndNextPoint.next && Math.abs(resizedPreviousAndNextPoint.next[0] - pointX) < LINE_ALIGN_TOLERANCE) {
|
|
61
|
-
pointX = resizedPreviousAndNextPoint.next[0];
|
|
62
|
-
}
|
|
63
|
-
newStartPoint = [pointX, startKeyPoint[1]];
|
|
64
|
-
newEndPoint = [pointX, endKeyPoint[1]];
|
|
65
|
-
}
|
|
66
|
-
return [newStartPoint, newEndPoint];
|
|
67
|
-
}
|
|
68
|
-
export function getIndexAndDeleteCountByKeyPoint(board, element, dataPoints, nextRenderPoints, handleIndex) {
|
|
69
|
-
let index = null;
|
|
70
|
-
let deleteCount = null;
|
|
71
|
-
const startKeyPoint = nextRenderPoints[handleIndex];
|
|
72
|
-
const endKeyPoint = nextRenderPoints[handleIndex + 1];
|
|
73
|
-
if (!startKeyPoint || !endKeyPoint) {
|
|
74
|
-
return {
|
|
75
|
-
index,
|
|
76
|
-
deleteCount
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
const midDataPoints = dataPoints.slice(1, -1);
|
|
80
|
-
const startIndex = midDataPoints.findIndex(item => Point.isEquals(item, startKeyPoint));
|
|
81
|
-
const endIndex = midDataPoints.findIndex(item => Point.isEquals(item, endKeyPoint));
|
|
82
|
-
if (Math.max(startIndex, endIndex) > -1) {
|
|
83
|
-
if (startIndex > -1 && endIndex > -1) {
|
|
84
|
-
return {
|
|
85
|
-
index: startIndex,
|
|
86
|
-
deleteCount: 2
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
if (startIndex > -1 && endIndex === -1) {
|
|
90
|
-
const isReplace = startIndex < midDataPoints.length - 1 &&
|
|
91
|
-
Point.isAlign([midDataPoints[startIndex], midDataPoints[startIndex + 1], startKeyPoint, endKeyPoint]);
|
|
92
|
-
if (isReplace) {
|
|
93
|
-
return {
|
|
94
|
-
index: startIndex,
|
|
95
|
-
deleteCount: 2
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
return {
|
|
99
|
-
index: startIndex,
|
|
100
|
-
deleteCount: 1
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
if (startIndex === -1 && endIndex > -1) {
|
|
104
|
-
const isReplace = endIndex > 0 && Point.isAlign([midDataPoints[endIndex], midDataPoints[endIndex - 1], startKeyPoint, endKeyPoint]);
|
|
105
|
-
if (isReplace) {
|
|
106
|
-
return {
|
|
107
|
-
index: endIndex - 1,
|
|
108
|
-
deleteCount: 2
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
return {
|
|
112
|
-
index: endIndex,
|
|
113
|
-
deleteCount: 1
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
for (let i = 0; i < midDataPoints.length - 1; i++) {
|
|
119
|
-
const currentPoint = midDataPoints[i];
|
|
120
|
-
const nextPoint = midDataPoints[i + 1];
|
|
121
|
-
if (Point.isAlign([currentPoint, nextPoint, startKeyPoint, endKeyPoint])) {
|
|
122
|
-
index = i;
|
|
123
|
-
deleteCount = 2;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
if (Point.isAlign([currentPoint, nextPoint, startKeyPoint])) {
|
|
127
|
-
index = Math.min(i + 1, midDataPoints.length - 1);
|
|
128
|
-
deleteCount = 1;
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
if (Point.isAlign([currentPoint, nextPoint, endKeyPoint])) {
|
|
132
|
-
index = Math.max(i - 1, 0);
|
|
133
|
-
deleteCount = 1;
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
if (index === null) {
|
|
139
|
-
deleteCount = 0;
|
|
140
|
-
if (midDataPoints.length > 0) {
|
|
141
|
-
const handleRefPair = getArrowLineHandleRefPair(board, element);
|
|
142
|
-
const params = getElbowLineRouteOptions(board, element, handleRefPair);
|
|
143
|
-
const keyPoints = removeDuplicatePoints(generateElbowLineRoute(params, board));
|
|
144
|
-
const nextKeyPoints = simplifyOrthogonalPoints(keyPoints.slice(1, keyPoints.length - 1));
|
|
145
|
-
const nextDataPoints = [nextRenderPoints[0], ...midDataPoints, nextRenderPoints[nextRenderPoints.length - 1]];
|
|
146
|
-
const mirrorDataPoints = getMirrorDataPoints(board, nextDataPoints, nextKeyPoints, params);
|
|
147
|
-
for (let i = handleIndex - 1; i >= 0; i--) {
|
|
148
|
-
const previousIndex = mirrorDataPoints.slice(1, -1).findIndex(item => Point.isEquals(item, nextRenderPoints[i]));
|
|
149
|
-
if (previousIndex > -1) {
|
|
150
|
-
index = previousIndex + 1;
|
|
151
|
-
break;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (index === null) {
|
|
155
|
-
index = 0;
|
|
156
|
-
// When renderPoints is a straight line and dataPoints are not on the line,
|
|
157
|
-
// the default 'deleteCount' is set to midDataPoints.length.
|
|
158
|
-
if (Point.isAlign(nextRenderPoints)) {
|
|
159
|
-
deleteCount = midDataPoints.length;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
index = 0;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return {
|
|
168
|
-
index,
|
|
169
|
-
deleteCount
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
export function getMirrorDataPoints(board, nextDataPoints, nextKeyPoints, params) {
|
|
173
|
-
for (let index = 1; index < nextDataPoints.length - 2; index++) {
|
|
174
|
-
adjustByCustomPointStartIndex(board, index, nextDataPoints, nextKeyPoints, params);
|
|
175
|
-
}
|
|
176
|
-
return nextDataPoints;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* adjust based parallel segment
|
|
180
|
-
*/
|
|
181
|
-
const adjustByCustomPointStartIndex = (board, customPointStartIndex, nextDataPoints, nextKeyPoints, params) => {
|
|
182
|
-
const beforePoint = nextDataPoints[customPointStartIndex - 1];
|
|
183
|
-
const startPoint = nextDataPoints[customPointStartIndex];
|
|
184
|
-
const endPoint = nextDataPoints[customPointStartIndex + 1];
|
|
185
|
-
const afterPoint = nextDataPoints[customPointStartIndex + 2];
|
|
186
|
-
const beforeSegment = [beforePoint, startPoint];
|
|
187
|
-
const afterSegment = [endPoint, afterPoint];
|
|
188
|
-
const isStraightWithBefore = Point.isAlign(beforeSegment);
|
|
189
|
-
const isStraightWithAfter = Point.isAlign(afterSegment);
|
|
190
|
-
let isAdjustStart = false;
|
|
191
|
-
let isAdjustEnd = false;
|
|
192
|
-
if (!isStraightWithBefore || !isStraightWithAfter) {
|
|
193
|
-
const midKeyPointsWithBefore = getMidKeyPoints(nextKeyPoints, beforeSegment[0], beforeSegment[1]);
|
|
194
|
-
const midKeyPointsWithAfter = getMidKeyPoints(nextKeyPoints, afterSegment[0], afterSegment[1]);
|
|
195
|
-
const hasMidKeyPoints = midKeyPointsWithBefore.length > 0 && midKeyPointsWithAfter.length > 0;
|
|
196
|
-
isAdjustStart = !isStraightWithBefore && !hasMidKeyPoints;
|
|
197
|
-
isAdjustEnd = !isStraightWithAfter && !hasMidKeyPoints;
|
|
198
|
-
}
|
|
199
|
-
if (isAdjustStart || isAdjustEnd) {
|
|
200
|
-
const parallelSegment = [startPoint, endPoint];
|
|
201
|
-
const parallelSegments = findOrthogonalParallelSegments(parallelSegment, nextKeyPoints);
|
|
202
|
-
const mirrorSegments = findMirrorSegments(board, parallelSegment, parallelSegments, params.sourceRectangle, params.targetRectangle);
|
|
203
|
-
if (mirrorSegments.length === 1) {
|
|
204
|
-
const mirrorSegment = mirrorSegments[0];
|
|
205
|
-
if (isAdjustStart) {
|
|
206
|
-
nextDataPoints.splice(customPointStartIndex, 1, mirrorSegment[0]);
|
|
207
|
-
}
|
|
208
|
-
if (isAdjustEnd) {
|
|
209
|
-
nextDataPoints.splice(customPointStartIndex + 1, 1, mirrorSegment[1]);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
const isHorizontal = Point.isHorizontal(startPoint, endPoint);
|
|
214
|
-
const adjustIndex = isHorizontal ? 0 : 1;
|
|
215
|
-
if (isAdjustStart) {
|
|
216
|
-
const newStartPoint = [startPoint[0], startPoint[1]];
|
|
217
|
-
newStartPoint[adjustIndex] = beforePoint[adjustIndex];
|
|
218
|
-
nextDataPoints.splice(customPointStartIndex, 1, newStartPoint);
|
|
219
|
-
}
|
|
220
|
-
if (isAdjustEnd) {
|
|
221
|
-
const newEndPoint = [endPoint[0], endPoint[1]];
|
|
222
|
-
newEndPoint[adjustIndex] = afterPoint[adjustIndex];
|
|
223
|
-
nextDataPoints.splice(customPointStartIndex + 1, 1, newEndPoint);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
export function isUpdatedHandleIndex(board, element, dataPoints, nextRenderPoints, handleIndex) {
|
|
229
|
-
const { deleteCount } = getIndexAndDeleteCountByKeyPoint(board, element, dataPoints, nextRenderPoints, handleIndex);
|
|
230
|
-
if (deleteCount !== null && deleteCount > 1) {
|
|
231
|
-
return true;
|
|
232
|
-
}
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
export function getMidKeyPoints(simplifiedNextKeyPoints, startPoint, endPoint) {
|
|
236
|
-
let midElbowPoints = [];
|
|
237
|
-
let startPointIndex = -1;
|
|
238
|
-
let endPointIndex = -1;
|
|
239
|
-
for (let i = 0; i < simplifiedNextKeyPoints.length; i++) {
|
|
240
|
-
if (Point.isAlign([simplifiedNextKeyPoints[i], startPoint])) {
|
|
241
|
-
startPointIndex = i;
|
|
242
|
-
}
|
|
243
|
-
if (startPointIndex > -1 && Point.isAlign([simplifiedNextKeyPoints[i], endPoint])) {
|
|
244
|
-
endPointIndex = i;
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
if (startPointIndex > -1 && endPointIndex > -1) {
|
|
249
|
-
midElbowPoints = simplifiedNextKeyPoints.slice(startPointIndex, endPointIndex + 1);
|
|
250
|
-
}
|
|
251
|
-
return midElbowPoints;
|
|
252
|
-
}
|
|
253
|
-
function findOrthogonalParallelSegments(segment, keyPoints) {
|
|
254
|
-
const isHorizontalSegment = Point.isHorizontal(segment[0], segment[1]);
|
|
255
|
-
const parallelSegments = [];
|
|
256
|
-
for (let i = 0; i < keyPoints.length - 1; i++) {
|
|
257
|
-
const current = keyPoints[i];
|
|
258
|
-
const next = keyPoints[i + 1];
|
|
259
|
-
const isHorizontal = Point.isHorizontal(current, next, 0.1);
|
|
260
|
-
if (isHorizontalSegment && isHorizontal) {
|
|
261
|
-
parallelSegments.push([current, next]);
|
|
262
|
-
}
|
|
263
|
-
if (!isHorizontalSegment && !isHorizontal) {
|
|
264
|
-
parallelSegments.push([current, next]);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return parallelSegments;
|
|
268
|
-
}
|
|
269
|
-
function findMirrorSegments(board, segment, parallelSegments, sourceRectangle, targetRectangle) {
|
|
270
|
-
debugGenerator.isDebug() && debugGenerator.clear();
|
|
271
|
-
const mirrorSegments = [];
|
|
272
|
-
for (let index = 0; index < parallelSegments.length; index++) {
|
|
273
|
-
const parallelPath = parallelSegments[index];
|
|
274
|
-
const startPoint = [segment[0][0], segment[0][1]];
|
|
275
|
-
const endPoint = [segment[1][0], segment[1][1]];
|
|
276
|
-
const isHorizontal = Point.isHorizontal(startPoint, endPoint);
|
|
277
|
-
const adjustDataIndex = isHorizontal ? 0 : 1;
|
|
278
|
-
startPoint[adjustDataIndex] = parallelPath[0][adjustDataIndex];
|
|
279
|
-
endPoint[adjustDataIndex] = parallelPath[1][adjustDataIndex];
|
|
280
|
-
const fakeRectangle = RectangleClient.getRectangleByPoints([startPoint, endPoint, ...parallelPath]);
|
|
281
|
-
const isValid = !RectangleClient.isHit(fakeRectangle, sourceRectangle) && !RectangleClient.isHit(fakeRectangle, targetRectangle);
|
|
282
|
-
if (isValid) {
|
|
283
|
-
mirrorSegments.push([startPoint, endPoint]);
|
|
284
|
-
debugGenerator.isDebug() && debugGenerator.drawPolygon(board, RectangleClient.getCornerPoints(fakeRectangle));
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
return mirrorSegments;
|
|
288
|
-
}
|
|
289
|
-
export const hasIllegalElbowPoint = (midDataPoints) => {
|
|
290
|
-
if (midDataPoints.length === 1) {
|
|
291
|
-
return true;
|
|
292
|
-
}
|
|
293
|
-
return midDataPoints.some((item, index) => {
|
|
294
|
-
const beforePoint = midDataPoints[index - 1];
|
|
295
|
-
const afterPoint = midDataPoints[index + 1];
|
|
296
|
-
const beforeSegment = beforePoint && [beforePoint, item];
|
|
297
|
-
const afterSegment = afterPoint && [item, afterPoint];
|
|
298
|
-
const isStraightWithBefore = beforeSegment && Point.isAlign(beforeSegment);
|
|
299
|
-
const isStraightWithAfter = afterSegment && Point.isAlign(afterSegment);
|
|
300
|
-
if (index === 0) {
|
|
301
|
-
return !isStraightWithAfter;
|
|
302
|
-
}
|
|
303
|
-
if (index === midDataPoints.length - 1) {
|
|
304
|
-
return !isStraightWithBefore;
|
|
305
|
-
}
|
|
306
|
-
return !isStraightWithBefore && !isStraightWithAfter;
|
|
307
|
-
});
|
|
308
|
-
};
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9hcnJvdy1saW5lL2Fycm93LWxpbmUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0Msc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFjLEtBQUssRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHMUYsTUFBTSxRQUFRLEdBQUcseUJBQXlCLENBQUM7QUFDM0MsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBZ0IsRUFBRSxXQUFrQixFQUFFLEVBQUU7SUFDaEUsTUFBTSxRQUFRLEdBQVUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztRQUM5RCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFDaEUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxD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YUFBYSxDQUFDLENBQUM7UUFDM0UsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNkLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxLQUFLLEtBQUssYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxib3dMaW5lUm91dGVPcHRpb25zLCBSZXNpemVTdGF0ZSwgZ2VuZXJhdGVFbGJvd0xpbmVSb3V0ZSwgcmVtb3ZlRHVwbGljYXRlUG9pbnRzLCBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGNyZWF0ZURlYnVnR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTElORV9BTElHTl9UT0xFUkFOQ0UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbGluZSc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMsIGdldEFycm93TGluZUhhbmRsZVJlZlBhaXIgfSBmcm9tICcuL2Fycm93LWxpbmUtY29tbW9uJztcbmltcG9ydCB7IFBsYWl0QXJyb3dMaW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmNvbnN0IGRlYnVnS2V5ID0gJ2RlYnVnOnBsYWl0OmxpbmUtbWlycm9yJztcbmNvbnN0IGRlYnVnR2VuZXJhdG9yID0gY3JlYXRlRGVidWdHZW5lcmF0b3IoZGVidWdLZXkpO1xuXG5leHBvcnQgY29uc3QgYWxpZ25Qb2ludHMgPSAoYmFzZVBvaW50OiBQb2ludCwgbW92aW5nUG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgbmV3UG9pbnQ6IFBvaW50ID0gWy4uLm1vdmluZ1BvaW50XTtcbiAgICBpZiAoUG9pbnQuaXNWZXJ0aWNhbChuZXdQb2ludCwgYmFzZVBvaW50LCBMSU5FX0FMSUdOX1RPTEVSQU5DRSkpIHtcbiAgICAgICAgbmV3UG9pbnRbMF0gPSBiYXNlUG9pbnRbMF07XG4gICAgfVxuICAgIGlmIChQb2ludC5pc0hvcml6b250YWwobmV3UG9pbnQsIGJhc2VQb2ludCwgTElORV9BTElHTl9UT0xFUkFOQ0UpKSB7XG4gICAgICAgIG5ld1BvaW50WzFdID0gYmFzZVBvaW50WzFdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3UG9pbnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50KG5leHRSZW5kZXJQb2ludHM6IFBvaW50W10sIHNvdXJjZVBvaW50OiBQb2ludCwgdGFyZ2V0UG9pbnQ6IFBvaW50LCBoYW5kbGVJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlUG9pbnQ6IHsgcHJldmlvdXM6IFBvaW50IHwgbnVsbDsgbmV4dDogUG9pbnQgfCBudWxsIH0gPSB7XG4gICAgICAgIHByZXZpb3VzOiBudWxsLFxuICAgICAgICBuZXh0OiBudWxsXG4gICAgfTtcblxuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBuZXh0UmVuZGVyUG9pbnRzW2hhbmRsZUluZGV4XTtcbiAgICBjb25zdCBlbmRQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBQb2ludC5pc0hvcml6b250YWwoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgIGNvbnN0IGlzVmVydGljYWwgPSBQb2ludC5pc1ZlcnRpY2FsKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICBjb25zdCBwcmV2aW91c1BvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCAtIDFdID8/IG5leHRSZW5kZXJQb2ludHNbMF07XG4gICAgY29uc3QgYmVmb3JlUHJldmlvdXNQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggLSAyXSA/PyBzb3VyY2VQb2ludDtcbiAgICBpZiAoXG4gICAgICAgIChpc0hvcml6b250YWwgJiYgUG9pbnQuaXNIb3Jpem9udGFsKGJlZm9yZVByZXZpb3VzUG9pbnQsIHByZXZpb3VzUG9pbnQpKSB8fFxuICAgICAgICAoaXNWZXJ0aWNhbCAmJiBQb2ludC5pc1ZlcnRpY2FsKGJlZm9yZVByZXZpb3VzUG9pbnQsIHByZXZpb3VzUG9pbnQpKVxuICAgICkge1xuICAgICAgICByZWZlcmVuY2VQb2ludC5wcmV2aW91cyA9IHByZXZpb3VzUG9pbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFBvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCArIDJdID8/IG5leHRSZW5kZXJQb2ludHNbbmV4dFJlbmRlclBvaW50cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhZnRlck5leHRQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAzXSA/PyB0YXJnZXRQb2ludDtcbiAgICBpZiAoKGlzSG9yaXpvbnRhbCAmJiBQb2ludC5pc0hvcml6b250YWwobmV4dFBvaW50LCBhZnRlck5leHRQb2ludCkpIHx8IChpc1ZlcnRpY2FsICYmIFBvaW50LmlzVmVydGljYWwobmV4dFBvaW50LCBhZnRlck5leHRQb2ludCkpKSB7XG4gICAgICAgIHJlZmVyZW5jZVBvaW50Lm5leHQgPSBuZXh0UG9pbnQ7XG4gICAgfVxuICAgIHJldHVybiByZWZlcmVuY2VQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWduRWxib3dTZWdtZW50KFxuICAgIHN0YXJ0S2V5UG9pbnQ6IFBvaW50LFxuICAgIGVuZEtleVBvaW50OiBQb2ludCxcbiAgICByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUsXG4gICAgcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50OiB7IHByZXZpb3VzOiBQb2ludCB8IG51bGw7IG5leHQ6IFBvaW50IHwgbnVsbCB9XG4pIHtcbiAgICBsZXQgbmV3U3RhcnRQb2ludCA9IHN0YXJ0S2V5UG9pbnQ7XG4gICAgbGV0IG5ld0VuZFBvaW50ID0gZW5kS2V5UG9pbnQ7XG4gICAgaWYgKFBvaW50LmlzSG9yaXpvbnRhbChzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludCkpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IFBvaW50LmdldE9mZnNldFkocmVzaXplU3RhdGUuc3RhcnRQb2ludCwgcmVzaXplU3RhdGUuZW5kUG9pbnQpO1xuICAgICAgICBsZXQgcG9pbnRZID0gc3RhcnRLZXlQb2ludFsxXSArIG9mZnNldFk7XG4gICAgICAgIGlmIChyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQucHJldmlvdXMgJiYgTWF0aC5hYnMocmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50LnByZXZpb3VzWzFdIC0gcG9pbnRZKSA8IExJTkVfQUxJR05fVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICBwb2ludFkgPSByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQucHJldmlvdXNbMV07XG4gICAgICAgIH0gZWxzZSBpZiAocmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50Lm5leHQgJiYgTWF0aC5hYnMocmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50Lm5leHRbMV0gLSBwb2ludFkpIDwgTElORV9BTElHTl9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgIHBvaW50WSA9IHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5uZXh0WzFdO1xuICAgICAgICB9XG4gICAgICAgIG5ld1N0YXJ0UG9pbnQgPSBbc3RhcnRLZXlQb2ludFswXSwgcG9pbnRZXTtcbiAgICAgICAgbmV3RW5kUG9pbnQgPSBbZW5kS2V5UG9pbnRbMF0sIHBvaW50WV07XG4gICAgfVxuICAgIGlmIChQb2ludC5pc1ZlcnRpY2FsKHN0YXJ0S2V5UG9pbnQsIGVuZEtleVBvaW50KSkge1xuICAgICAgICBjb25zdCBvZmZzZXRYID0gUG9pbnQuZ2V0T2Zmc2V0WChyZXNpemVTdGF0ZS5zdGFydFBvaW50LCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgIGxldCBwb2ludFggPSBzdGFydEtleVBvaW50WzBdICsgb2Zmc2V0WDtcbiAgICAgICAgaWYgKHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5wcmV2aW91cyAmJiBNYXRoLmFicyhyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQucHJldmlvdXNbMF0gLSBwb2ludFgpIDwgTElORV9BTElHTl9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgIHBvaW50WCA9IHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5wcmV2aW91c1swXTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQubmV4dCAmJiBNYXRoLmFicyhyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQubmV4dFswXSAtIHBvaW50WCkgPCBMSU5FX0FMSUdOX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgcG9pbnRYID0gcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50Lm5leHRbMF07XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhcnRQb2ludCA9IFtwb2ludFgsIHN0YXJ0S2V5UG9pbnRbMV1dO1xuICAgICAgICBuZXdFbmRQb2ludCA9IFtwb2ludFgsIGVuZEtleVBvaW50WzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdEFycm93TGluZSxcbiAgICBkYXRhUG9pbnRzOiBQb2ludFtdLFxuICAgIG5leHRSZW5kZXJQb2ludHM6IFBvaW50W10sXG4gICAgaGFuZGxlSW5kZXg6IG51bWJlclxuKSB7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgZGVsZXRlQ291bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3Qgc3RhcnRLZXlQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgIGNvbnN0IGVuZEtleVBvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCArIDFdO1xuICAgIGlmICghc3RhcnRLZXlQb2ludCB8fCAhZW5kS2V5UG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgZGVsZXRlQ291bnRcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbWlkRGF0YVBvaW50cyA9IGRhdGFQb2ludHMuc2xpY2UoMSwgLTEpO1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBtaWREYXRhUG9pbnRzLmZpbmRJbmRleChpdGVtID0+IFBvaW50LmlzRXF1YWxzKGl0ZW0sIHN0YXJ0S2V5UG9pbnQpKTtcbiAgICBjb25zdCBlbmRJbmRleCA9IG1pZERhdGFQb2ludHMuZmluZEluZGV4KGl0ZW0gPT4gUG9pbnQuaXNFcXVhbHMoaXRlbSwgZW5kS2V5UG9pbnQpKTtcblxuICAgIGlmIChNYXRoLm1heChzdGFydEluZGV4LCBlbmRJbmRleCkgPiAtMSkge1xuICAgICAgICBpZiAoc3RhcnRJbmRleCA+IC0xICYmIGVuZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IDJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggPiAtMSAmJiBlbmRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVwbGFjZSA9XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA8IG1pZERhdGFQb2ludHMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgIFBvaW50LmlzQWxpZ24oW21pZERhdGFQb2ludHNbc3RhcnRJbmRleF0sIG1pZERhdGFQb2ludHNbc3RhcnRJbmRleCArIDFdLCBzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludF0pO1xuICAgICAgICAgICAgaWYgKGlzUmVwbGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVDb3VudDogMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiAxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydEluZGV4ID09PSAtMSAmJiBlbmRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBpc1JlcGxhY2UgPVxuICAgICAgICAgICAgICAgIGVuZEluZGV4ID4gMCAmJiBQb2ludC5pc0FsaWduKFttaWREYXRhUG9pbnRzW2VuZEluZGV4XSwgbWlkRGF0YVBvaW50c1tlbmRJbmRleCAtIDFdLCBzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludF0pO1xuICAgICAgICAgICAgaWYgKGlzUmVwbGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBlbmRJbmRleCAtIDEsXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IGVuZEluZGV4LFxuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiAxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaWREYXRhUG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBvaW50ID0gbWlkRGF0YVBvaW50c1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRQb2ludCA9IG1pZERhdGFQb2ludHNbaSArIDFdO1xuICAgICAgICAgICAgaWYgKFBvaW50LmlzQWxpZ24oW2N1cnJlbnRQb2ludCwgbmV4dFBvaW50LCBzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludF0pKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChQb2ludC5pc0FsaWduKFtjdXJyZW50UG9pbnQsIG5leHRQb2ludCwgc3RhcnRLZXlQb2ludF0pKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBNYXRoLm1pbihpICsgMSwgbWlkRGF0YVBvaW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUG9pbnQuaXNBbGlnbihbY3VycmVudFBvaW50LCBuZXh0UG9pbnQsIGVuZEtleVBvaW50XSkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IE1hdGgubWF4KGkgLSAxLCAwKTtcbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZUNvdW50ID0gMDtcbiAgICAgICAgaWYgKG1pZERhdGFQb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldEFycm93TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zKGJvYXJkLCBlbGVtZW50IGFzIFBsYWl0QXJyb3dMaW5lLCBoYW5kbGVSZWZQYWlyKTtcbiAgICAgICAgICAgIGNvbnN0IGtleVBvaW50cyA9IHJlbW92ZUR1cGxpY2F0ZVBvaW50cyhnZW5lcmF0ZUVsYm93TGluZVJvdXRlKHBhcmFtcywgYm9hcmQpKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRLZXlQb2ludHMgPSBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMoa2V5UG9pbnRzLnNsaWNlKDEsIGtleVBvaW50cy5sZW5ndGggLSAxKSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0RGF0YVBvaW50cyA9IFtuZXh0UmVuZGVyUG9pbnRzWzBdLCAuLi5taWREYXRhUG9pbnRzLCBuZXh0UmVuZGVyUG9pbnRzW25leHRSZW5kZXJQb2ludHMubGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgY29uc3QgbWlycm9yRGF0YVBvaW50cyA9IGdldE1pcnJvckRhdGFQb2ludHMoYm9hcmQsIG5leHREYXRhUG9pbnRzLCBuZXh0S2V5UG9pbnRzLCBwYXJhbXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGhhbmRsZUluZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gbWlycm9yRGF0YVBvaW50cy5zbGljZSgxLCAtMSkuZmluZEluZGV4KGl0ZW0gPT4gUG9pbnQuaXNFcXVhbHMoaXRlbSwgbmV4dFJlbmRlclBvaW50c1tpXSkpO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwcmV2aW91c0luZGV4ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gcmVuZGVyUG9pbnRzIGlzIGEgc3RyYWlnaHQgbGluZSBhbmQgZGF0YVBvaW50cyBhcmUgbm90IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICAgICAgIC8vIHRoZSBkZWZhdWx0ICdkZWxldGVDb3VudCcgaXMgc2V0IHRvIG1pZERhdGFQb2ludHMubGVuZ3RoLlxuICAgICAgICAgICAgICAgIGlmIChQb2ludC5pc0FsaWduKG5leHRSZW5kZXJQb2ludHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gbWlkRGF0YVBvaW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGRlbGV0ZUNvdW50XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pcnJvckRhdGFQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5leHREYXRhUG9pbnRzOiBQb2ludFtdLCBuZXh0S2V5UG9pbnRzOiBQb2ludFtdLCBwYXJhbXM6IEVsYm93TGluZVJvdXRlT3B0aW9ucykge1xuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBuZXh0RGF0YVBvaW50cy5sZW5ndGggLSAyOyBpbmRleCsrKSB7XG4gICAgICAgIGFkanVzdEJ5Q3VzdG9tUG9pbnRTdGFydEluZGV4KGJvYXJkLCBpbmRleCwgbmV4dERhdGFQb2ludHMsIG5leHRLZXlQb2ludHMsIHBhcmFtcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXh0RGF0YVBvaW50cztcbn1cblxuLyoqXG4gKiBhZGp1c3QgYmFzZWQgcGFyYWxsZWwgc2VnbWVudFxuICovXG5jb25zdCBhZGp1c3RCeUN1c3RvbVBvaW50U3RhcnRJbmRleCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBjdXN0b21Qb2ludFN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICBuZXh0RGF0YVBvaW50czogUG9pbnRbXSxcbiAgICBuZXh0S2V5UG9pbnRzOiBQb2ludFtdLFxuICAgIHBhcmFtczogRWxib3dMaW5lUm91dGVPcHRpb25zXG4pID0+IHtcbiAgICBjb25zdCBiZWZvcmVQb2ludCA9IG5leHREYXRhUG9pbnRzW2N1c3RvbVBvaW50U3RhcnRJbmRleCAtIDFdO1xuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBuZXh0RGF0YVBvaW50c1tjdXN0b21Qb2ludFN0YXJ0SW5kZXhdO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gbmV4dERhdGFQb2ludHNbY3VzdG9tUG9pbnRTdGFydEluZGV4ICsgMV07XG4gICAgY29uc3QgYWZ0ZXJQb2ludCA9IG5leHREYXRhUG9pbnRzW2N1c3RvbVBvaW50U3RhcnRJbmRleCArIDJdO1xuICAgIGNvbnN0IGJlZm9yZVNlZ21lbnQgPSBbYmVmb3JlUG9pbnQsIHN0YXJ0UG9pbnRdO1xuICAgIGNvbnN0IGFmdGVyU2VnbWVudCA9IFtlbmRQb2ludCwgYWZ0ZXJQb2ludF07XG4gICAgY29uc3QgaXNTdHJhaWdodFdpdGhCZWZvcmUgPSBQb2ludC5pc0FsaWduKGJlZm9yZVNlZ21lbnQpO1xuICAgIGNvbnN0IGlzU3RyYWlnaHRXaXRoQWZ0ZXIgPSBQb2ludC5pc0FsaWduKGFmdGVyU2VnbWVudCk7XG4gICAgbGV0IGlzQWRqdXN0U3RhcnQgPSBmYWxzZTtcbiAgICBsZXQgaXNBZGp1c3RFbmQgPSBmYWxzZTtcbiAgICBpZiAoIWlzU3RyYWlnaHRXaXRoQmVmb3JlIHx8ICFpc1N0cmFpZ2h0V2l0aEFmdGVyKSB7XG4gICAgICAgIGNvbnN0IG1pZEtleVBvaW50c1dpdGhCZWZvcmUgPSBnZXRNaWRLZXlQb2ludHMobmV4dEtleVBvaW50cywgYmVmb3JlU2VnbWVudFswXSwgYmVmb3JlU2VnbWVudFsxXSk7XG4gICAgICAgIGNvbnN0IG1pZEtleVBvaW50c1dpdGhBZnRlciA9IGdldE1pZEtleVBvaW50cyhuZXh0S2V5UG9pbnRzLCBhZnRlclNlZ21lbnRbMF0sIGFmdGVyU2VnbWVudFsxXSk7XG4gICAgICAgIGNvbnN0IGhhc01pZEtleVBvaW50cyA9IG1pZEtleVBvaW50c1dpdGhCZWZvcmUubGVuZ3RoID4gMCAmJiBtaWRLZXlQb2ludHNXaXRoQWZ0ZXIubGVuZ3RoID4gMDtcbiAgICAgICAgaXNBZGp1c3RTdGFydCA9ICFpc1N0cmFpZ2h0V2l0aEJlZm9yZSAmJiAhaGFzTWlkS2V5UG9pbnRzO1xuICAgICAgICBpc0FkanVzdEVuZCA9ICFpc1N0cmFpZ2h0V2l0aEFmdGVyICYmICFoYXNNaWRLZXlQb2ludHM7XG4gICAgfVxuICAgIGlmIChpc0FkanVzdFN0YXJ0IHx8IGlzQWRqdXN0RW5kKSB7XG4gICAgICAgIGNvbnN0IHBhcmFsbGVsU2VnbWVudCA9IFtzdGFydFBvaW50LCBlbmRQb2ludF0gYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIGNvbnN0IHBhcmFsbGVsU2VnbWVudHMgPSBmaW5kT3J0aG9nb25hbFBhcmFsbGVsU2VnbWVudHMocGFyYWxsZWxTZWdtZW50LCBuZXh0S2V5UG9pbnRzKTtcbiAgICAgICAgY29uc3QgbWlycm9yU2VnbWVudHMgPSBmaW5kTWlycm9yU2VnbWVudHMoYm9hcmQsIHBhcmFsbGVsU2VnbWVudCwgcGFyYWxsZWxTZWdtZW50cywgcGFyYW1zLnNvdXJjZVJlY3RhbmdsZSwgcGFyYW1zLnRhcmdldFJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChtaXJyb3JTZWdtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pcnJvclNlZ21lbnQgPSBtaXJyb3JTZWdtZW50c1swXTtcbiAgICAgICAgICAgIGlmIChpc0FkanVzdFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgbmV4dERhdGFQb2ludHMuc3BsaWNlKGN1c3RvbVBvaW50U3RhcnRJbmRleCwgMSwgbWlycm9yU2VnbWVudFswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBZGp1c3RFbmQpIHtcbiAgICAgICAgICAgICAgICBuZXh0RGF0YVBvaW50cy5zcGxpY2UoY3VzdG9tUG9pbnRTdGFydEluZGV4ICsgMSwgMSwgbWlycm9yU2VnbWVudFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBQb2ludC5pc0hvcml6b250YWwoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgYWRqdXN0SW5kZXggPSBpc0hvcml6b250YWwgPyAwIDogMTtcbiAgICAgICAgICAgIGlmIChpc0FkanVzdFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhcnRQb2ludCA9IFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXSBhcyBQb2ludDtcbiAgICAgICAgICAgICAgICBuZXdTdGFydFBvaW50W2FkanVzdEluZGV4XSA9IGJlZm9yZVBvaW50W2FkanVzdEluZGV4XTtcbiAgICAgICAgICAgICAgICBuZXh0RGF0YVBvaW50cy5zcGxpY2UoY3VzdG9tUG9pbnRTdGFydEluZGV4LCAxLCBuZXdTdGFydFBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0FkanVzdEVuZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VuZFBvaW50ID0gW2VuZFBvaW50WzBdLCBlbmRQb2ludFsxXV0gYXMgUG9pbnQ7XG4gICAgICAgICAgICAgICAgbmV3RW5kUG9pbnRbYWRqdXN0SW5kZXhdID0gYWZ0ZXJQb2ludFthZGp1c3RJbmRleF07XG4gICAgICAgICAgICAgICAgbmV4dERhdGFQb2ludHMuc3BsaWNlKGN1c3RvbVBvaW50U3RhcnRJbmRleCArIDEsIDEsIG5ld0VuZFBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VwZGF0ZWRIYW5kbGVJbmRleChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdEFycm93TGluZSxcbiAgICBkYXRhUG9pbnRzOiBQb2ludFtdLFxuICAgIG5leHRSZW5kZXJQb2ludHM6IFBvaW50W10sXG4gICAgaGFuZGxlSW5kZXg6IG51bWJlclxuKSB7XG4gICAgY29uc3QgeyBkZWxldGVDb3VudCB9ID0gZ2V0SW5kZXhBbmREZWxldGVDb3VudEJ5S2V5UG9pbnQoYm9hcmQsIGVsZW1lbnQsIGRhdGFQb2ludHMsIG5leHRSZW5kZXJQb2ludHMsIGhhbmRsZUluZGV4KTtcbiAgICBpZiAoZGVsZXRlQ291bnQgIT09IG51bGwgJiYgZGVsZXRlQ291bnQgPiAxKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWRLZXlQb2ludHMoc2ltcGxpZmllZE5leHRLZXlQb2ludHM6IFBvaW50W10sIHN0YXJ0UG9pbnQ6IFBvaW50LCBlbmRQb2ludDogUG9pbnQpIHtcbiAgICBsZXQgbWlkRWxib3dQb2ludHM6IFBvaW50W10gPSBbXTtcbiAgICBsZXQgc3RhcnRQb2ludEluZGV4ID0gLTE7XG4gICAgbGV0IGVuZFBvaW50SW5kZXggPSAtMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpbXBsaWZpZWROZXh0S2V5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChQb2ludC5pc0FsaWduKFtzaW1wbGlmaWVkTmV4dEtleVBvaW50c1tpXSwgc3RhcnRQb2ludF0pKSB7XG4gICAgICAgICAgICBzdGFydFBvaW50SW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydFBvaW50SW5kZXggPiAtMSAmJiBQb2ludC5pc0FsaWduKFtzaW1wbGlmaWVkTmV4dEtleVBvaW50c1tpXSwgZW5kUG9pbnRdKSkge1xuICAgICAgICAgICAgZW5kUG9pbnRJbmRleCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhcnRQb2ludEluZGV4ID4gLTEgJiYgZW5kUG9pbnRJbmRleCA+IC0xKSB7XG4gICAgICAgIG1pZEVsYm93UG9pbnRzID0gc2ltcGxpZmllZE5leHRLZXlQb2ludHMuc2xpY2Uoc3RhcnRQb2ludEluZGV4LCBlbmRQb2ludEluZGV4ICsgMSk7XG4gICAgfVxuICAgIHJldHVybiBtaWRFbGJvd1BvaW50cztcbn1cblxuZnVuY3Rpb24gZmluZE9ydGhvZ29uYWxQYXJhbGxlbFNlZ21lbnRzKHNlZ21lbnQ6IFtQb2ludCwgUG9pbnRdLCBrZXlQb2ludHM6IFBvaW50W10pOiBbUG9pbnQsIFBvaW50XVtdIHtcbiAgICBjb25zdCBpc0hvcml6b250YWxTZWdtZW50ID0gUG9pbnQuaXNIb3Jpem9udGFsKHNlZ21lbnRbMF0sIHNlZ21lbnRbMV0pO1xuICAgIGNvbnN0IHBhcmFsbGVsU2VnbWVudHM6IFtQb2ludCwgUG9pbnRdW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5UG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0ga2V5UG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBuZXh0ID0ga2V5UG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gUG9pbnQuaXNIb3Jpem9udGFsKGN1cnJlbnQsIG5leHQsIDAuMSk7XG4gICAgICAgIGlmIChpc0hvcml6b250YWxTZWdtZW50ICYmIGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgcGFyYWxsZWxTZWdtZW50cy5wdXNoKFtjdXJyZW50LCBuZXh0XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0hvcml6b250YWxTZWdtZW50ICYmICFpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgIHBhcmFsbGVsU2VnbWVudHMucHVzaChbY3VycmVudCwgbmV4dF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFsbGVsU2VnbWVudHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRNaXJyb3JTZWdtZW50cyhcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBzZWdtZW50OiBbUG9pbnQsIFBvaW50XSxcbiAgICBwYXJhbGxlbFNlZ21lbnRzOiBbUG9pbnQsIFBvaW50XVtdLFxuICAgIHNvdXJjZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIHRhcmdldFJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50XG4pIHtcbiAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuY2xlYXIoKTtcblxuICAgIGNvbnN0IG1pcnJvclNlZ21lbnRzOiBbUG9pbnQsIFBvaW50XVtdID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBhcmFsbGVsU2VnbWVudHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmFsbGVsUGF0aCA9IHBhcmFsbGVsU2VnbWVudHNbaW5kZXhdO1xuICAgICAgICBjb25zdCBzdGFydFBvaW50ID0gW3NlZ21lbnRbMF1bMF0sIHNlZ21lbnRbMF1bMV1dIGFzIFBvaW50O1xuICAgICAgICBjb25zdCBlbmRQb2ludCA9IFtzZWdtZW50WzFdWzBdLCBzZWdtZW50WzFdWzFdXSBhcyBQb2ludDtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gUG9pbnQuaXNIb3Jpem9udGFsKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgY29uc3QgYWRqdXN0RGF0YUluZGV4ID0gaXNIb3Jpem9udGFsID8gMCA6IDE7XG4gICAgICAgIHN0YXJ0UG9pbnRbYWRqdXN0RGF0YUluZGV4XSA9IHBhcmFsbGVsUGF0aFswXVthZGp1c3REYXRhSW5kZXhdO1xuICAgICAgICBlbmRQb2ludFthZGp1c3REYXRhSW5kZXhdID0gcGFyYWxsZWxQYXRoWzFdW2FkanVzdERhdGFJbmRleF07XG4gICAgICAgIGNvbnN0IGZha2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3N0YXJ0UG9pbnQsIGVuZFBvaW50LCAuLi5wYXJhbGxlbFBhdGhdKTtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9ICFSZWN0YW5nbGVDbGllbnQuaXNIaXQoZmFrZVJlY3RhbmdsZSwgc291cmNlUmVjdGFuZ2xlKSAmJiAhUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KGZha2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICBtaXJyb3JTZWdtZW50cy5wdXNoKFtzdGFydFBvaW50LCBlbmRQb2ludF0pO1xuXG4gICAgICAgICAgICBkZWJ1Z0dlbmVyYXRvci5pc0RlYnVnKCkgJiYgZGVidWdHZW5lcmF0b3IuZHJhd1BvbHlnb24oYm9hcmQsIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMoZmFrZVJlY3RhbmdsZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaXJyb3JTZWdtZW50cztcbn1cblxuZXhwb3J0IGNvbnN0IGhhc0lsbGVnYWxFbGJvd1BvaW50ID0gKG1pZERhdGFQb2ludHM6IFBvaW50W10pOiBib29sZWFuID0+IHtcbiAgICBpZiAobWlkRGF0YVBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBtaWREYXRhUG9pbnRzLnNvbWUoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gbWlkRGF0YVBvaW50c1tpbmRleCAtIDFdO1xuICAgICAgICBjb25zdCBhZnRlclBvaW50ID0gbWlkRGF0YVBvaW50c1tpbmRleCArIDFdO1xuICAgICAgICBjb25zdCBiZWZvcmVTZWdtZW50ID0gYmVmb3JlUG9pbnQgJiYgW2JlZm9yZVBvaW50LCBpdGVtXTtcbiAgICAgICAgY29uc3QgYWZ0ZXJTZWdtZW50ID0gYWZ0ZXJQb2ludCAmJiBbaXRlbSwgYWZ0ZXJQb2ludF07XG4gICAgICAgIGNvbnN0IGlzU3RyYWlnaHRXaXRoQmVmb3JlID0gYmVmb3JlU2VnbWVudCAmJiBQb2ludC5pc0FsaWduKGJlZm9yZVNlZ21lbnQpO1xuICAgICAgICBjb25zdCBpc1N0cmFpZ2h0V2l0aEFmdGVyID0gYWZ0ZXJTZWdtZW50ICYmIFBvaW50LmlzQWxpZ24oYWZ0ZXJTZWdtZW50KTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gIWlzU3RyYWlnaHRXaXRoQWZ0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSBtaWREYXRhUG9pbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiAhaXNTdHJhaWdodFdpdGhCZWZvcmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc1N0cmFpZ2h0V2l0aEJlZm9yZSAmJiAhaXNTdHJhaWdodFdpdGhBZnRlcjtcbiAgICB9KTtcbn07XG4iXX0=
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Point, getElementById, RectangleClient, rotatePointsByElement } from '@plait/core';
|
|
2
|
-
import { getPoints, getPointByVectorComponent, removeDuplicatePoints, generateElbowLineRoute, simplifyOrthogonalPoints, isSourceAndTargetIntersect, DEFAULT_ROUTE_MARGIN } from '@plait/common';
|
|
3
|
-
import { BasicShapes, PlaitArrowLine } from '../../interfaces';
|
|
4
|
-
import { createGeometryElement } from '../geometry';
|
|
5
|
-
import { getElbowLineRouteOptions, getArrowLineHandleRefPair } from './arrow-line-common';
|
|
6
|
-
import { getMidKeyPoints, getMirrorDataPoints, hasIllegalElbowPoint } from './arrow-line-resize';
|
|
7
|
-
import { getStrokeWidthByElement } from '../common';
|
|
8
|
-
export const isSelfLoop = (element) => {
|
|
9
|
-
return element.source.boundId && element.source.boundId === element.target.boundId;
|
|
10
|
-
};
|
|
11
|
-
export const isUseDefaultOrthogonalRoute = (element, options) => {
|
|
12
|
-
return isSourceAndTargetIntersect(options) && !isSelfLoop(element);
|
|
13
|
-
};
|
|
14
|
-
export const getElbowPoints = (board, element) => {
|
|
15
|
-
const handleRefPair = getArrowLineHandleRefPair(board, element);
|
|
16
|
-
const params = getElbowLineRouteOptions(board, element, handleRefPair);
|
|
17
|
-
// console.log(params, 'params');
|
|
18
|
-
if (isUseDefaultOrthogonalRoute(element, params)) {
|
|
19
|
-
return simplifyOrthogonalPoints(getPoints(handleRefPair.source.point, handleRefPair.source.direction, handleRefPair.target.point, handleRefPair.target.direction, DEFAULT_ROUTE_MARGIN));
|
|
20
|
-
}
|
|
21
|
-
const keyPoints = removeDuplicatePoints(generateElbowLineRoute(params, board));
|
|
22
|
-
const nextKeyPoints = keyPoints.slice(1, keyPoints.length - 1);
|
|
23
|
-
if (element.points.length === 2) {
|
|
24
|
-
return simplifyOrthogonalPoints(keyPoints);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
const simplifiedNextKeyPoints = simplifyOrthogonalPoints(nextKeyPoints);
|
|
28
|
-
const dataPoints = removeDuplicatePoints(PlaitArrowLine.getPoints(board, element));
|
|
29
|
-
const midDataPoints = dataPoints.slice(1, -1);
|
|
30
|
-
if (hasIllegalElbowPoint(midDataPoints)) {
|
|
31
|
-
return simplifyOrthogonalPoints(keyPoints);
|
|
32
|
-
}
|
|
33
|
-
const nextDataPoints = [simplifiedNextKeyPoints[0], ...midDataPoints, simplifiedNextKeyPoints[simplifiedNextKeyPoints.length - 1]];
|
|
34
|
-
const mirrorDataPoints = getMirrorDataPoints(board, nextDataPoints, simplifiedNextKeyPoints, params);
|
|
35
|
-
// console.log(mirrorDataPoints, 'mirrorDataPoints');
|
|
36
|
-
const renderPoints = [keyPoints[0]];
|
|
37
|
-
for (let index = 0; index < mirrorDataPoints.length - 1; index++) {
|
|
38
|
-
let currentPoint = mirrorDataPoints[index];
|
|
39
|
-
let nextPoint = mirrorDataPoints[index + 1];
|
|
40
|
-
const isStraight = Point.isAlign([currentPoint, nextPoint]);
|
|
41
|
-
if (!isStraight) {
|
|
42
|
-
const midKeyPoints = getMidKeyPoints(simplifiedNextKeyPoints, currentPoint, nextPoint);
|
|
43
|
-
if (midKeyPoints.length) {
|
|
44
|
-
renderPoints.push(currentPoint);
|
|
45
|
-
renderPoints.push(...midKeyPoints);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
renderPoints.push(currentPoint);
|
|
49
|
-
console.log('unknown data points');
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
renderPoints.push(currentPoint);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
renderPoints.push(keyPoints[keyPoints.length - 2], keyPoints[keyPoints.length - 1]);
|
|
57
|
-
// Remove the middle point to avoid the situation where the starting and ending positions are drawn back, such as when sourcePoint is between nextSourcePoint and the first key point.
|
|
58
|
-
// Issue
|
|
59
|
-
// keyPoint2
|
|
60
|
-
// |
|
|
61
|
-
// |
|
|
62
|
-
// nextPoint---sourcePoint---keyPoint1
|
|
63
|
-
// The correct rendering should be (nextPoint should be filtered out):
|
|
64
|
-
// keyPoint2
|
|
65
|
-
// |
|
|
66
|
-
// |
|
|
67
|
-
// sourcePoint---keyPoint1
|
|
68
|
-
const ret = simplifyOrthogonalPoints(renderPoints);
|
|
69
|
-
return ret;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
export const getNextSourceAndTargetPoints = (board, element) => {
|
|
73
|
-
const options = getElbowLineRouteOptions(board, element);
|
|
74
|
-
return [options.nextSourcePoint, options.nextTargetPoint];
|
|
75
|
-
};
|
|
76
|
-
export const getSourceAndTargetRectangle = (board, element, handleRefPair) => {
|
|
77
|
-
let sourceElement = element.source.boundId ? getElementById(board, element.source.boundId) : undefined;
|
|
78
|
-
let targetElement = element.target.boundId ? getElementById(board, element.target.boundId) : undefined;
|
|
79
|
-
if (!sourceElement) {
|
|
80
|
-
const source = handleRefPair.source;
|
|
81
|
-
sourceElement = createFakeElement(source.point, source.vector);
|
|
82
|
-
}
|
|
83
|
-
if (!targetElement) {
|
|
84
|
-
const target = handleRefPair.target;
|
|
85
|
-
targetElement = createFakeElement(target.point, target.vector);
|
|
86
|
-
}
|
|
87
|
-
let sourceRectangle = RectangleClient.getRectangleByPoints(sourceElement.points);
|
|
88
|
-
const rotatedSourceCornerPoints = rotatePointsByElement(RectangleClient.getCornerPoints(sourceRectangle), sourceElement) ||
|
|
89
|
-
RectangleClient.getCornerPoints(sourceRectangle);
|
|
90
|
-
sourceRectangle = RectangleClient.getRectangleByPoints(rotatedSourceCornerPoints);
|
|
91
|
-
sourceRectangle = RectangleClient.inflate(sourceRectangle, getStrokeWidthByElement(sourceElement) * 2);
|
|
92
|
-
let targetRectangle = RectangleClient.getRectangleByPoints(targetElement.points);
|
|
93
|
-
const rotatedTargetCornerPoints = rotatePointsByElement(RectangleClient.getCornerPoints(targetRectangle), targetElement) ||
|
|
94
|
-
RectangleClient.getCornerPoints(targetRectangle);
|
|
95
|
-
targetRectangle = RectangleClient.getRectangleByPoints(rotatedTargetCornerPoints);
|
|
96
|
-
targetRectangle = RectangleClient.inflate(targetRectangle, getStrokeWidthByElement(targetElement) * 2);
|
|
97
|
-
return {
|
|
98
|
-
sourceRectangle,
|
|
99
|
-
targetRectangle
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
const createFakeElement = (startPoint, vector) => {
|
|
103
|
-
const point = getPointByVectorComponent(startPoint, vector, -25);
|
|
104
|
-
const points = RectangleClient.getPoints(RectangleClient.getRectangleByCenterPoint(point, 50, 50));
|
|
105
|
-
return createGeometryElement(BasicShapes.rectangle, points, '');
|
|
106
|
-
};
|
|
107
|
-
export function getNextRenderPoints(board, element, renderPoints) {
|
|
108
|
-
let newRenderKeyPoints = renderPoints ?? getElbowPoints(board, element);
|
|
109
|
-
const [nextSourcePoint, nextTargetPoint] = getNextSourceAndTargetPoints(board, element);
|
|
110
|
-
newRenderKeyPoints.splice(0, 1, nextSourcePoint);
|
|
111
|
-
newRenderKeyPoints.splice(-1, 1, nextTargetPoint);
|
|
112
|
-
return removeDuplicatePoints(newRenderKeyPoints);
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxib3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9hcnJvdy1saW5lL2VsYm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWMsY0FBYyxFQUFFLGVBQWUsRUFBd0IscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUgsT0FBTyxFQUNILFNBQVMsRUFDVCx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLG9CQUFvQixFQUV2QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUF5QyxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUF1QixFQUFFLEVBQUU7SUFDbEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN2RixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLE9BQXVCLEVBQUUsT0FBOEIsRUFBRSxFQUFFO0lBQ25HLE9BQU8sMEJBQTBCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7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QUMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNqRCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2xELE9BQU8scUJBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFBsYWl0Qm9hcmQsIGdldEVsZW1lbnRCeUlkLCBSZWN0YW5nbGVDbGllbnQsIFZlY3Rvciwgcm90YXRlUG9pbnRzLCByb3RhdGVQb2ludHNCeUVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQge1xuICAgIGdldFBvaW50cyxcbiAgICBnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50LFxuICAgIHJlbW92ZUR1cGxpY2F0ZVBvaW50cyxcbiAgICBnZW5lcmF0ZUVsYm93TGluZVJvdXRlLFxuICAgIHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyxcbiAgICBpc1NvdXJjZUFuZFRhcmdldEludGVyc2VjdCxcbiAgICBERUZBVUxUX1JPVVRFX01BUkdJTixcbiAgICBFbGJvd0xpbmVSb3V0ZU9wdGlvbnNcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBCYXNpY1NoYXBlcywgQXJyb3dMaW5lSGFuZGxlUmVmUGFpciwgUGxhaXRHZW9tZXRyeSwgUGxhaXRBcnJvd0xpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZUdlb21ldHJ5RWxlbWVudCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmltcG9ydCB7IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucywgZ2V0QXJyb3dMaW5lSGFuZGxlUmVmUGFpciB9IGZyb20gJy4vYXJyb3ctbGluZS1jb21tb24nO1xuaW1wb3J0IHsgZ2V0TWlkS2V5UG9pbnRzLCBnZXRNaXJyb3JEYXRhUG9pbnRzLCBoYXNJbGxlZ2FsRWxib3dQb2ludCB9IGZyb20gJy4vYXJyb3ctbGluZS1yZXNpemUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgaXNTZWxmTG9vcCA9IChlbGVtZW50OiBQbGFpdEFycm93TGluZSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50LnNvdXJjZS5ib3VuZElkICYmIGVsZW1lbnQuc291cmNlLmJvdW5kSWQgPT09IGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNVc2VEZWZhdWx0T3J0aG9nb25hbFJvdXRlID0gKGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBvcHRpb25zOiBFbGJvd0xpbmVSb3V0ZU9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gaXNTb3VyY2VBbmRUYXJnZXRJbnRlcnNlY3Qob3B0aW9ucykgJiYgIWlzU2VsZkxvb3AoZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWxib3dQb2ludHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldEFycm93TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHBhcmFtcyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgZWxlbWVudCwgaGFuZGxlUmVmUGFpcik7XG4gICAgLy8gY29uc29sZS5sb2cocGFyYW1zLCAncGFyYW1zJyk7XG4gICAgaWYgKGlzVXNlRGVmYXVsdE9ydGhvZ29uYWxSb3V0ZShlbGVtZW50LCBwYXJhbXMpKSB7XG4gICAgICAgIHJldHVybiBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMoXG4gICAgICAgICAgICBnZXRQb2ludHMoXG4gICAgICAgICAgICAgICAgaGFuZGxlUmVmUGFpci5zb3VyY2UucG9pbnQsXG4gICAgICAgICAgICAgICAgaGFuZGxlUmVmUGFpci5zb3VyY2UuZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIGhhbmRsZVJlZlBhaXIudGFyZ2V0LnBvaW50LFxuICAgICAgICAgICAgICAgIGhhbmRsZVJlZlBhaXIudGFyZ2V0LmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICBERUZBVUxUX1JPVVRFX01BUkdJTlxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBrZXlQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoZ2VuZXJhdGVFbGJvd0xpbmVSb3V0ZShwYXJhbXMsIGJvYXJkKSk7XG4gICAgY29uc3QgbmV4dEtleVBvaW50cyA9IGtleVBvaW50cy5zbGljZSgxLCBrZXlQb2ludHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICByZXR1cm4gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKGtleVBvaW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2ltcGxpZmllZE5leHRLZXlQb2ludHMgPSBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMobmV4dEtleVBvaW50cyk7XG4gICAgICAgIGNvbnN0IGRhdGFQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoUGxhaXRBcnJvd0xpbmUuZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IG1pZERhdGFQb2ludHMgPSBkYXRhUG9pbnRzLnNsaWNlKDEsIC0xKTtcbiAgICAgICAgaWYgKGhhc0lsbGVnYWxFbGJvd1BvaW50KG1pZERhdGFQb2ludHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKGtleVBvaW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dERhdGFQb2ludHMgPSBbc2ltcGxpZmllZE5leHRLZXlQb2ludHNbMF0sIC4uLm1pZERhdGFQb2ludHMsIHNpbXBsaWZpZWROZXh0S2V5UG9pbnRzW3NpbXBsaWZpZWROZXh0S2V5UG9pbnRzLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgY29uc3QgbWlycm9yRGF0YVBvaW50cyA9IGdldE1pcnJvckRhdGFQb2ludHMoYm9hcmQsIG5leHREYXRhUG9pbnRzLCBzaW1wbGlmaWVkTmV4dEtleVBvaW50cywgcGFyYW1zKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2cobWlycm9yRGF0YVBvaW50cywgJ21pcnJvckRhdGFQb2ludHMnKTtcbiAgICAgICAgY29uc3QgcmVuZGVyUG9pbnRzOiBQb2ludFtdID0gW2tleVBvaW50c1swXV07XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtaXJyb3JEYXRhUG9pbnRzLmxlbmd0aCAtIDE7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UG9pbnQgPSBtaXJyb3JEYXRhUG9pbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGxldCBuZXh0UG9pbnQgPSBtaXJyb3JEYXRhUG9pbnRzW2luZGV4ICsgMV07XG4gICAgICAgICAgICBjb25zdCBpc1N0cmFpZ2h0ID0gUG9pbnQuaXNBbGlnbihbY3VycmVudFBvaW50LCBuZXh0UG9pbnRdKTtcbiAgICAgICAgICAgIGlmICghaXNTdHJhaWdodCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pZEtleVBvaW50cyA9IGdldE1pZEtleVBvaW50cyhzaW1wbGlmaWVkTmV4dEtleVBvaW50cywgY3VycmVudFBvaW50LCBuZXh0UG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmIChtaWRLZXlQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlclBvaW50cy5wdXNoKGN1cnJlbnRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlclBvaW50cy5wdXNoKC4uLm1pZEtleVBvaW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyUG9pbnRzLnB1c2goY3VycmVudFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Vua25vd24gZGF0YSBwb2ludHMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlbmRlclBvaW50cy5wdXNoKGN1cnJlbnRQb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyUG9pbnRzLnB1c2goa2V5UG9pbnRzW2tleVBvaW50cy5sZW5ndGggLSAyXSwga2V5UG9pbnRzW2tleVBvaW50cy5sZW5ndGggLSAxXSk7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbWlkZGxlIHBvaW50IHRvIGF2b2lkIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIHN0YXJ0aW5nIGFuZCBlbmRpbmcgcG9zaXRpb25zIGFyZSBkcmF3biBiYWNrLCBzdWNoIGFzIHdoZW4gc291cmNlUG9pbnQgaXMgYmV0d2VlbiBuZXh0U291cmNlUG9pbnQgYW5kIHRoZSBmaXJzdCBrZXkgcG9pbnQuXG4gICAgICAgIC8vIElzc3VlXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5UG9pbnQyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgIC8vIG5leHRQb2ludC0tLXNvdXJjZVBvaW50LS0ta2V5UG9pbnQxXG4gICAgICAgIC8vIFRoZSBjb3JyZWN0IHJlbmRlcmluZyBzaG91bGQgYmUgKG5leHRQb2ludCBzaG91bGQgYmUgZmlsdGVyZWQgb3V0KTpcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlQb2ludDJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAgLy8gICAgICAgICAgICAgc291cmNlUG9pbnQtLS1rZXlQb2ludDFcbiAgICAgICAgY29uc3QgcmV0ID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKHJlbmRlclBvaW50cyk7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldE5leHRTb3VyY2VBbmRUYXJnZXRQb2ludHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIFtvcHRpb25zLm5leHRTb3VyY2VQb2ludCwgb3B0aW9ucy5uZXh0VGFyZ2V0UG9pbnRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvdXJjZUFuZFRhcmdldFJlY3RhbmdsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIGhhbmRsZVJlZlBhaXI6IEFycm93TGluZUhhbmRsZVJlZlBhaXIpID0+IHtcbiAgICBsZXQgc291cmNlRWxlbWVudCA9IGVsZW1lbnQuc291cmNlLmJvdW5kSWQgPyBnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IHRhcmdldEVsZW1lbnQgPSBlbGVtZW50LnRhcmdldC5ib3VuZElkID8gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIDogdW5kZWZpbmVkO1xuICAgIGlmICghc291cmNlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBoYW5kbGVSZWZQYWlyLnNvdXJjZTtcbiAgICAgICAgc291cmNlRWxlbWVudCA9IGNyZWF0ZUZha2VFbGVtZW50KHNvdXJjZS5wb2ludCwgc291cmNlLnZlY3Rvcik7XG4gICAgfVxuICAgIGlmICghdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBoYW5kbGVSZWZQYWlyLnRhcmdldDtcbiAgICAgICAgdGFyZ2V0RWxlbWVudCA9IGNyZWF0ZUZha2VFbGVtZW50KHRhcmdldC5wb2ludCwgdGFyZ2V0LnZlY3Rvcik7XG4gICAgfVxuXG4gICAgbGV0IHNvdXJjZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhzb3VyY2VFbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3Qgcm90YXRlZFNvdXJjZUNvcm5lclBvaW50cyA9XG4gICAgICAgIHJvdGF0ZVBvaW50c0J5RWxlbWVudChSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHNvdXJjZVJlY3RhbmdsZSksIHNvdXJjZUVsZW1lbnQpIHx8XG4gICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMoc291cmNlUmVjdGFuZ2xlKTtcbiAgICBzb3VyY2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocm90YXRlZFNvdXJjZUNvcm5lclBvaW50cyk7XG4gICAgc291cmNlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUoc291cmNlUmVjdGFuZ2xlLCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChzb3VyY2VFbGVtZW50KSAqIDIpO1xuXG4gICAgbGV0IHRhcmdldFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyh0YXJnZXRFbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3Qgcm90YXRlZFRhcmdldENvcm5lclBvaW50cyA9XG4gICAgICAgIHJvdGF0ZVBvaW50c0J5RWxlbWVudChSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHRhcmdldFJlY3RhbmdsZSksIHRhcmdldEVsZW1lbnQpIHx8XG4gICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHModGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICB0YXJnZXRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocm90YXRlZFRhcmdldENvcm5lclBvaW50cyk7XG4gICAgdGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUodGFyZ2V0UmVjdGFuZ2xlLCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCh0YXJnZXRFbGVtZW50KSAqIDIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlUmVjdGFuZ2xlLFxuICAgICAgICB0YXJnZXRSZWN0YW5nbGVcbiAgICB9O1xufTtcblxuY29uc3QgY3JlYXRlRmFrZUVsZW1lbnQgPSAoc3RhcnRQb2ludDogUG9pbnQsIHZlY3RvcjogVmVjdG9yKSA9PiB7XG4gICAgY29uc3QgcG9pbnQgPSBnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50KHN0YXJ0UG9pbnQsIHZlY3RvciwgLTI1KTtcbiAgICBjb25zdCBwb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeUNlbnRlclBvaW50KHBvaW50LCA1MCwgNTApKTtcbiAgICByZXR1cm4gY3JlYXRlR2VvbWV0cnlFbGVtZW50KEJhc2ljU2hhcGVzLnJlY3RhbmdsZSwgcG9pbnRzLCAnJyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV4dFJlbmRlclBvaW50cyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIHJlbmRlclBvaW50cz86IFBvaW50W10pIHtcbiAgICBsZXQgbmV3UmVuZGVyS2V5UG9pbnRzID0gcmVuZGVyUG9pbnRzID8/IGdldEVsYm93UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBbbmV4dFNvdXJjZVBvaW50LCBuZXh0VGFyZ2V0UG9pbnRdID0gZ2V0TmV4dFNvdXJjZUFuZFRhcmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgbmV3UmVuZGVyS2V5UG9pbnRzLnNwbGljZSgwLCAxLCBuZXh0U291cmNlUG9pbnQpO1xuICAgIG5ld1JlbmRlcktleVBvaW50cy5zcGxpY2UoLTEsIDEsIG5leHRUYXJnZXRQb2ludCk7XG4gICAgcmV0dXJuIHJlbW92ZUR1cGxpY2F0ZVBvaW50cyhuZXdSZW5kZXJLZXlQb2ludHMpO1xufVxuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './elbow';
|
|
2
|
-
export * from './arrow-line-arrow';
|
|
3
|
-
export * from './arrow-line-basic';
|
|
4
|
-
export * from './arrow-line-common';
|
|
5
|
-
export * from './arrow-line-resize';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9hcnJvdy1saW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VsYm93JztcbmV4cG9ydCAqIGZyb20gJy4vYXJyb3ctbGluZS1hcnJvdyc7XG5leHBvcnQgKiBmcm9tICcuL2Fycm93LWxpbmUtYmFzaWMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnJvdy1saW5lLWNvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2Fycm93LWxpbmUtcmVzaXplJztcbiJdfQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { getElementById } from '@plait/core';
|
|
2
|
-
import { buildClipboardData as basicBuildClipboard, insertClipboardData as basicInsertClipboard } from '@plait/common';
|
|
3
|
-
import { PlaitDrawElement } from '../interfaces';
|
|
4
|
-
import { getConnectionPoint } from './arrow-line/arrow-line-common';
|
|
5
|
-
import { updateCellIds, updateRowOrColumnIds } from './table';
|
|
6
|
-
export const buildClipboardData = (board, elements, startPoint) => {
|
|
7
|
-
return basicBuildClipboard(board, elements, startPoint, (element) => {
|
|
8
|
-
if (PlaitDrawElement.isArrowLine(element)) {
|
|
9
|
-
let source = { ...element.source };
|
|
10
|
-
let target = { ...element.target };
|
|
11
|
-
let points = [...element.points];
|
|
12
|
-
if (element.source.boundId) {
|
|
13
|
-
points[0] = getConnectionPoint(getElementById(board, element.source.boundId), element.source.connection);
|
|
14
|
-
if (!getElementById(board, element.source.boundId, elements)) {
|
|
15
|
-
delete source.boundId;
|
|
16
|
-
delete source.connection;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
if (element.target.boundId) {
|
|
20
|
-
points[points.length - 1] = getConnectionPoint(getElementById(board, element.target.boundId), element.target.connection);
|
|
21
|
-
if (!getElementById(board, element.target.boundId, elements)) {
|
|
22
|
-
delete target.boundId;
|
|
23
|
-
delete target.connection;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
points = points.map(point => [point[0] - startPoint[0], point[1] - startPoint[1]]);
|
|
27
|
-
return { ...element, points, source, target };
|
|
28
|
-
}
|
|
29
|
-
return undefined;
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
export const insertClipboardData = (board, elements, startPoint) => {
|
|
33
|
-
basicInsertClipboard(board, elements, startPoint, (element, idsMap) => {
|
|
34
|
-
if (PlaitDrawElement.isArrowLine(element)) {
|
|
35
|
-
if (element.source.boundId) {
|
|
36
|
-
const boundElement = elements.find(item => [element.source.boundId, idsMap[element.source.boundId]].includes(item.id));
|
|
37
|
-
if (boundElement) {
|
|
38
|
-
element.source.boundId = idsMap[element.source.boundId];
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (element.target.boundId) {
|
|
42
|
-
const boundElement = elements.find(item => [element.target.boundId, idsMap[element.target.boundId]].includes(item.id));
|
|
43
|
-
if (boundElement) {
|
|
44
|
-
element.target.boundId = idsMap[element.target.boundId];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (PlaitDrawElement.isElementByTable(element)) {
|
|
49
|
-
updateRowOrColumnIds(element, 'row');
|
|
50
|
-
updateRowOrColumnIds(element, 'column');
|
|
51
|
-
updateCellIds(element.cells);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0MsY0FBYyxFQUFhLE1BQU0sYUFBYSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxtQkFBbUIsRUFBRSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQWtCLGdCQUFnQixFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUE0QixFQUFFLFVBQWlCLEVBQUUsRUFBRTtJQUNyRyxPQUFPLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsT0FBcUIsRUFBRSxFQUFFO1FBQzlFLElBQUksZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLE1BQU0sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxDQUFnQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FB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T0FBTyxDQUFDLENBQUM7Z0JBQzVELENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxvQkFBb0IsQ0FBQyxPQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELG9CQUFvQixDQUFDLE9BQXFCLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdEQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBvaW50LCBUcmFuc2Zvcm1zLCBnZXRFbGVtZW50QnlJZCwgaWRDcmVhdG9yIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgYnVpbGRDbGlwYm9hcmREYXRhIGFzIGJhc2ljQnVpbGRDbGlwYm9hcmQsIGluc2VydENsaXBib2FyZERhdGEgYXMgYmFzaWNJbnNlcnRDbGlwYm9hcmQgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0QXJyb3dMaW5lLCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRDb25uZWN0aW9uUG9pbnQgfSBmcm9tICcuL2Fycm93LWxpbmUvYXJyb3ctbGluZS1jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRUYWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgdXBkYXRlQ2VsbElkcywgdXBkYXRlUm93T3JDb2x1bW5JZHMgfSBmcm9tICcuL3RhYmxlJztcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQ2xpcGJvYXJkRGF0YSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RHJhd0VsZW1lbnRbXSwgc3RhcnRQb2ludDogUG9pbnQpID0+IHtcbiAgICByZXR1cm4gYmFzaWNCdWlsZENsaXBib2FyZChib2FyZCwgZWxlbWVudHMsIHN0YXJ0UG9pbnQsIChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNBcnJvd0xpbmUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGxldCBzb3VyY2UgPSB7IC4uLmVsZW1lbnQuc291cmNlIH07XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0geyAuLi5lbGVtZW50LnRhcmdldCB9O1xuICAgICAgICAgICAgbGV0IHBvaW50cyA9IFsuLi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5zb3VyY2UuYm91bmRJZCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1swXSA9IGdldENvbm5lY3Rpb25Qb2ludChnZXRFbGVtZW50QnlJZDxQbGFpdEdlb21ldHJ5Pihib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCkhLCBlbGVtZW50LnNvdXJjZS5jb25uZWN0aW9uISk7XG4gICAgICAgICAgICAgICAgaWYgKCFnZXRFbGVtZW50QnlJZChib2FyZCwgZWxlbWVudC5zb3VyY2UuYm91bmRJZCwgZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzb3VyY2UuYm91bmRJZDtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNvdXJjZS5jb25uZWN0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnRhcmdldC5ib3VuZElkKSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSA9IGdldENvbm5lY3Rpb25Qb2ludChcbiAgICAgICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpISxcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50YXJnZXQuY29ubmVjdGlvbiFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICghZ2V0RWxlbWVudEJ5SWQoYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQsIGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0LmJvdW5kSWQ7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQuY29ubmVjdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb2ludHMgPSBwb2ludHMubWFwKHBvaW50ID0+IFtwb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0sIHBvaW50WzFdIC0gc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uZWxlbWVudCwgcG9pbnRzLCBzb3VyY2UsIHRhcmdldCB9IGFzIFBsYWl0QXJyb3dMaW5lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Q2xpcGJvYXJkRGF0YSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RHJhd0VsZW1lbnRbXSwgc3RhcnRQb2ludDogUG9pbnQpID0+IHtcbiAgICBiYXNpY0luc2VydENsaXBib2FyZChib2FyZCwgZWxlbWVudHMsIHN0YXJ0UG9pbnQsIChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIGlkc01hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuc291cmNlLmJvdW5kSWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib3VuZEVsZW1lbnQgPSBlbGVtZW50cy5maW5kKGl0ZW0gPT4gW2VsZW1lbnQuc291cmNlLmJvdW5kSWQsIGlkc01hcFtlbGVtZW50LnNvdXJjZS5ib3VuZElkIV1dLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgICAgICAgICAgICAgICBpZiAoYm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc291cmNlLmJvdW5kSWQgPSBpZHNNYXBbZWxlbWVudC5zb3VyY2UuYm91bmRJZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib3VuZEVsZW1lbnQgPSBlbGVtZW50cy5maW5kKGl0ZW0gPT4gW2VsZW1lbnQudGFyZ2V0LmJvdW5kSWQsIGlkc01hcFtlbGVtZW50LnRhcmdldC5ib3VuZElkIV1dLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgICAgICAgICAgICAgICBpZiAoYm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQgPSBpZHNNYXBbZWxlbWVudC50YXJnZXQuYm91bmRJZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHVwZGF0ZVJvd09yQ29sdW1uSWRzKGVsZW1lbnQgYXMgUGxhaXRUYWJsZSwgJ3JvdycpO1xuICAgICAgICAgICAgdXBkYXRlUm93T3JDb2x1bW5JZHMoZWxlbWVudCBhcyBQbGFpdFRhYmxlLCAnY29sdW1uJyk7XG4gICAgICAgICAgICB1cGRhdGVDZWxsSWRzKGVsZW1lbnQuY2VsbHMpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuIl19
|