@plait/draw 0.62.0-next.1 → 0.62.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/arrow-line.component.d.ts +26 -0
- package/constants/geometry.d.ts +1 -0
- package/constants/pointer.d.ts +3 -3
- package/esm2022/arrow-line.component.mjs +157 -0
- package/esm2022/constants/geometry.mjs +10 -3
- package/esm2022/constants/pointer.mjs +4 -4
- package/esm2022/engines/basic-shapes/ellipse.mjs +5 -3
- package/esm2022/engines/basic-shapes/round-comment.mjs +5 -3
- package/esm2022/engines/flowchart/note-curly-left.mjs +2 -2
- package/esm2022/engines/flowchart/note-curly-right.mjs +7 -7
- package/esm2022/engines/flowchart/note-square.mjs +2 -2
- package/esm2022/engines/flowchart/or.mjs +5 -3
- package/esm2022/engines/flowchart/summing-junction.mjs +5 -3
- package/esm2022/engines/table/table.mjs +48 -26
- package/esm2022/engines/uml/deletion.mjs +3 -2
- package/esm2022/engines/uml/required-interface.mjs +3 -2
- package/esm2022/generators/arrow-line-active.generator.mjs +81 -0
- package/esm2022/generators/arrow-line-auto-complete.generator.mjs +46 -0
- package/esm2022/generators/arrow-line.generator.mjs +13 -0
- package/esm2022/generators/index.mjs +3 -3
- package/esm2022/geometry.component.mjs +4 -4
- package/esm2022/image.component.mjs +4 -4
- package/esm2022/interfaces/arrow-line.mjs +70 -0
- package/esm2022/interfaces/element.mjs +2 -2
- package/esm2022/interfaces/index.mjs +14 -7
- package/esm2022/interfaces/vector-line.mjs +6 -0
- package/esm2022/plugins/with-arrow-line-auto-complete-reaction.mjs +41 -0
- package/esm2022/plugins/with-arrow-line-auto-complete.mjs +74 -0
- package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +53 -0
- package/esm2022/plugins/with-arrow-line-create.mjs +53 -0
- package/esm2022/plugins/with-arrow-line-resize.mjs +158 -0
- package/esm2022/plugins/with-arrow-line-text-move.mjs +53 -0
- package/esm2022/plugins/with-arrow-line-text.mjs +63 -0
- package/esm2022/plugins/with-draw-fragment.mjs +13 -13
- package/esm2022/plugins/with-draw-resize.mjs +12 -5
- package/esm2022/plugins/with-draw.mjs +27 -20
- package/esm2022/plugins/with-geometry-resize.mjs +1 -1
- package/esm2022/plugins/with-swimlane-create.mjs +4 -7
- package/esm2022/plugins/with-swimlane.mjs +1 -20
- package/esm2022/plugins/with-table.mjs +34 -7
- package/esm2022/public-api.mjs +3 -3
- package/esm2022/table.component.mjs +6 -6
- package/esm2022/transforms/arrow-line.mjs +66 -0
- package/esm2022/transforms/common.mjs +36 -0
- package/esm2022/transforms/geometry.mjs +6 -28
- package/esm2022/transforms/index.mjs +15 -13
- package/esm2022/transforms/swimlane.mjs +1 -29
- package/esm2022/transforms/table-text.mjs +5 -5
- package/esm2022/transforms/table.mjs +30 -0
- package/esm2022/utils/arrow-line/arrow-line-arrow.mjs +123 -0
- package/esm2022/utils/arrow-line/arrow-line-basic.mjs +257 -0
- package/esm2022/utils/arrow-line/arrow-line-common.mjs +162 -0
- package/esm2022/utils/arrow-line/arrow-line-resize.mjs +309 -0
- package/esm2022/utils/arrow-line/elbow.mjs +114 -0
- package/esm2022/utils/arrow-line/index.mjs +6 -0
- package/esm2022/utils/clipboard.mjs +10 -10
- package/esm2022/utils/common.mjs +14 -5
- package/esm2022/utils/geometry.mjs +17 -14
- package/esm2022/utils/hit.mjs +67 -44
- package/esm2022/utils/index.mjs +2 -2
- package/esm2022/utils/memorize.mjs +4 -5
- package/esm2022/utils/position/arrow-line.mjs +67 -0
- package/esm2022/utils/position/geometry.mjs +1 -1
- package/esm2022/utils/selected.mjs +3 -3
- package/esm2022/utils/style/stroke.mjs +6 -4
- package/esm2022/utils/swimlane.mjs +16 -7
- package/esm2022/utils/table-selected.mjs +3 -4
- package/esm2022/utils/table.mjs +28 -5
- package/fesm2022/plait-draw.mjs +668 -511
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/arrow-line-active.generator.d.ts +13 -0
- package/generators/{line-auto-complete.generator.d.ts → arrow-line-auto-complete.generator.d.ts} +1 -1
- package/generators/arrow-line.generator.d.ts +8 -0
- package/generators/index.d.ts +2 -2
- package/geometry.component.d.ts +2 -2
- package/image.component.d.ts +2 -2
- package/interfaces/arrow-line.d.ts +75 -0
- package/interfaces/element.d.ts +1 -1
- package/interfaces/index.d.ts +6 -4
- package/interfaces/vector-line.d.ts +16 -0
- package/package.json +12 -4
- package/plugins/with-arrow-line-auto-complete-reaction.d.ts +2 -0
- package/plugins/with-arrow-line-auto-complete.d.ts +7 -0
- package/plugins/with-arrow-line-bound-reaction.d.ts +2 -0
- package/plugins/with-arrow-line-create.d.ts +2 -0
- package/plugins/with-arrow-line-resize.d.ts +2 -0
- package/plugins/with-arrow-line-text-move.d.ts +2 -0
- package/plugins/with-arrow-line-text.d.ts +2 -0
- package/plugins/with-draw-fragment.d.ts +2 -2
- package/plugins/with-swimlane.d.ts +1 -2
- package/public-api.d.ts +2 -2
- package/table.component.d.ts +2 -2
- package/transforms/arrow-line.d.ts +8 -0
- package/transforms/common.d.ts +3 -0
- package/transforms/geometry.d.ts +1 -2
- package/transforms/index.d.ts +9 -9
- package/transforms/swimlane.d.ts +1 -3
- package/transforms/table-text.d.ts +2 -3
- package/transforms/table.d.ts +3 -0
- package/utils/arrow-line/arrow-line-arrow.d.ts +4 -0
- package/utils/arrow-line/arrow-line-basic.d.ts +13 -0
- package/utils/{line/line-common.d.ts → arrow-line/arrow-line-common.d.ts} +8 -4
- package/utils/{line/line-resize.d.ts → arrow-line/arrow-line-resize.d.ts} +3 -3
- package/utils/{line → arrow-line}/elbow.d.ts +7 -7
- package/utils/arrow-line/index.d.ts +5 -0
- package/utils/clipboard.d.ts +4 -4
- package/utils/common.d.ts +1 -0
- package/utils/geometry.d.ts +2 -1
- package/utils/hit.d.ts +7 -4
- package/utils/index.d.ts +1 -1
- package/utils/position/arrow-line.d.ts +16 -0
- package/utils/selected.d.ts +2 -2
- package/utils/swimlane.d.ts +3 -2
- package/utils/table.d.ts +2 -0
- package/esm2022/generators/line-active.generator.mjs +0 -81
- package/esm2022/generators/line-auto-complete.generator.mjs +0 -46
- package/esm2022/generators/line.generator.mjs +0 -13
- package/esm2022/interfaces/line.mjs +0 -70
- package/esm2022/line.component.mjs +0 -155
- package/esm2022/plugins/with-line-auto-complete-reaction.mjs +0 -41
- package/esm2022/plugins/with-line-auto-complete.mjs +0 -75
- package/esm2022/plugins/with-line-bound-reaction.mjs +0 -53
- package/esm2022/plugins/with-line-create.mjs +0 -53
- package/esm2022/plugins/with-line-resize.mjs +0 -158
- package/esm2022/plugins/with-line-text-move.mjs +0 -53
- package/esm2022/plugins/with-line-text.mjs +0 -62
- package/esm2022/transforms/line.mjs +0 -100
- package/esm2022/utils/line/elbow.mjs +0 -114
- package/esm2022/utils/line/index.mjs +0 -6
- package/esm2022/utils/line/line-arrow.mjs +0 -123
- package/esm2022/utils/line/line-basic.mjs +0 -257
- package/esm2022/utils/line/line-common.mjs +0 -123
- package/esm2022/utils/line/line-resize.mjs +0 -309
- package/esm2022/utils/position/line.mjs +0 -67
- package/generators/line-active.generator.d.ts +0 -13
- package/generators/line.generator.d.ts +0 -8
- package/interfaces/line.d.ts +0 -75
- package/line.component.d.ts +0 -26
- package/plugins/with-line-auto-complete-reaction.d.ts +0 -2
- package/plugins/with-line-auto-complete.d.ts +0 -7
- package/plugins/with-line-bound-reaction.d.ts +0 -2
- package/plugins/with-line-create.d.ts +0 -2
- package/plugins/with-line-resize.d.ts +0 -2
- package/plugins/with-line-text-move.d.ts +0 -2
- package/plugins/with-line-text.d.ts +0 -2
- package/transforms/line.d.ts +0 -12
- package/utils/line/index.d.ts +0 -5
- package/utils/line/line-arrow.d.ts +0 -4
- package/utils/line/line-basic.d.ts +0 -13
- package/utils/position/line.d.ts +0 -16
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Path, PlaitBoard, Transforms, findElements } from '@plait/core';
|
|
2
|
-
import { LineHandleKey, MemorizeKey, PlaitDrawElement, PlaitLine } from '../interfaces';
|
|
3
|
-
import { memorizeLatest } from '@plait/common';
|
|
4
|
-
import { getSelectedLineElements } from '../utils/selected';
|
|
5
|
-
import { getHitConnection, getLinePoints } from '../utils/line/line-basic';
|
|
6
|
-
export const resizeLine = (board, options, path) => {
|
|
7
|
-
Transforms.setNode(board, options, path);
|
|
8
|
-
};
|
|
9
|
-
export const setLineTexts = (board, element, texts) => {
|
|
10
|
-
const path = PlaitBoard.findPath(board, element);
|
|
11
|
-
Transforms.setNode(board, { texts }, path);
|
|
12
|
-
};
|
|
13
|
-
export const removeLineText = (board, element, index) => {
|
|
14
|
-
const path = PlaitBoard.findPath(board, element);
|
|
15
|
-
const texts = element.texts?.length ? [...element.texts] : [];
|
|
16
|
-
const newTexts = [...texts];
|
|
17
|
-
newTexts.splice(index, 1);
|
|
18
|
-
Transforms.setNode(board, { texts: newTexts }, path);
|
|
19
|
-
};
|
|
20
|
-
export const setLineMark = (board, handleKey, marker) => {
|
|
21
|
-
memorizeLatest(MemorizeKey.line, handleKey, marker);
|
|
22
|
-
const selectedElements = getSelectedLineElements(board);
|
|
23
|
-
selectedElements.forEach((element) => {
|
|
24
|
-
const path = PlaitBoard.findPath(board, element);
|
|
25
|
-
let handle = handleKey === LineHandleKey.source ? element.source : element.target;
|
|
26
|
-
handle = { ...handle, marker };
|
|
27
|
-
Transforms.setNode(board, { [handleKey]: handle }, path);
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
export const setLineShape = (board, newProperties) => {
|
|
31
|
-
const elements = getSelectedLineElements(board);
|
|
32
|
-
elements.map(element => {
|
|
33
|
-
const _properties = { ...newProperties };
|
|
34
|
-
if (element.shape === newProperties.shape) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const path = PlaitBoard.findPath(board, element);
|
|
38
|
-
Transforms.setNode(board, _properties, path);
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
export const collectLineUpdatedRefsByGeometry = (board, geometry, refs) => {
|
|
42
|
-
const lines = findElements(board, {
|
|
43
|
-
match: (element) => {
|
|
44
|
-
if (PlaitDrawElement.isLine(element)) {
|
|
45
|
-
return element.source.boundId === geometry.id || element.target.boundId === geometry.id;
|
|
46
|
-
}
|
|
47
|
-
return false;
|
|
48
|
-
},
|
|
49
|
-
recursion: element => true
|
|
50
|
-
});
|
|
51
|
-
if (lines.length) {
|
|
52
|
-
lines.forEach(line => {
|
|
53
|
-
const isSourceBound = line.source.boundId === geometry.id;
|
|
54
|
-
const handle = isSourceBound ? 'source' : 'target';
|
|
55
|
-
const object = { ...line[handle] };
|
|
56
|
-
const linePoints = getLinePoints(board, line);
|
|
57
|
-
const point = isSourceBound ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
58
|
-
object.connection = getHitConnection(board, point, geometry);
|
|
59
|
-
const path = PlaitBoard.findPath(board, line);
|
|
60
|
-
const index = refs.findIndex(obj => Path.equals(obj.path, path));
|
|
61
|
-
if (index === -1) {
|
|
62
|
-
refs.push({
|
|
63
|
-
property: {
|
|
64
|
-
[handle]: object
|
|
65
|
-
},
|
|
66
|
-
path
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
refs[index].property = { ...refs[index].property, [handle]: object };
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
export const connectLineToGeometry = (board, lineElement, handle, geometryElement) => {
|
|
76
|
-
const linePoints = PlaitLine.getPoints(board, lineElement);
|
|
77
|
-
const point = handle === LineHandleKey.source ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
78
|
-
const connection = getHitConnection(board, point, geometryElement);
|
|
79
|
-
if (connection) {
|
|
80
|
-
let source = lineElement.source;
|
|
81
|
-
let target = lineElement.target;
|
|
82
|
-
if (handle === LineHandleKey.source) {
|
|
83
|
-
source = {
|
|
84
|
-
...source,
|
|
85
|
-
boundId: geometryElement.id,
|
|
86
|
-
connection
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
target = {
|
|
91
|
-
...target,
|
|
92
|
-
boundId: geometryElement.id,
|
|
93
|
-
connection
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
const path = PlaitBoard.findPath(board, lineElement);
|
|
97
|
-
resizeLine(board, { source, target }, path);
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3RyYW5zZm9ybXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBa0MsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RyxPQUFPLEVBRUgsYUFBYSxFQUdiLFdBQVcsRUFDWCxnQkFBZ0IsRUFFaEIsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBMkIsRUFBRSxJQUFVLEVBQUUsRUFBRTtJQUNyRixVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFrQixFQUFFLEtBQWlCLEVBQUUsRUFBRTtJQUNyRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNuRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFB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QyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckQsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludE9mUmVjdGFuZ2xlLCBUcmFuc2Zvcm1zLCBmaW5kRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQge1xuICAgIExpbmVIYW5kbGUsXG4gICAgTGluZUhhbmRsZUtleSxcbiAgICBMaW5lTWFya2VyVHlwZSxcbiAgICBMaW5lVGV4dCxcbiAgICBNZW1vcml6ZUtleSxcbiAgICBQbGFpdERyYXdFbGVtZW50LFxuICAgIFBsYWl0R2VvbWV0cnksXG4gICAgUGxhaXRMaW5lXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgbWVtb3JpemVMYXRlc3QgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0Q29ubmVjdGlvbiwgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5cbmV4cG9ydCBjb25zdCByZXNpemVMaW5lID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zOiBQYXJ0aWFsPFBsYWl0TGluZT4sIHBhdGg6IFBhdGgpID0+IHtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG9wdGlvbnMsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldExpbmVUZXh0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCB0ZXh0czogTGluZVRleHRbXSkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgdGV4dHMgfSwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTGluZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCB0ZXh0cyA9IGVsZW1lbnQudGV4dHM/Lmxlbmd0aCA/IFsuLi5lbGVtZW50LnRleHRzXSA6IFtdO1xuICAgIGNvbnN0IG5ld1RleHRzID0gWy4uLnRleHRzXTtcbiAgICBuZXdUZXh0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyB0ZXh0czogbmV3VGV4dHMgfSwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0TGluZU1hcmsgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGhhbmRsZUtleTogTGluZUhhbmRsZUtleSwgbWFya2VyOiBMaW5lTWFya2VyVHlwZSkgPT4ge1xuICAgIG1lbW9yaXplTGF0ZXN0KE1lbW9yaXplS2V5LmxpbmUsIGhhbmRsZUtleSwgbWFya2VyKTtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgIHNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgbGV0IGhhbmRsZSA9IGhhbmRsZUtleSA9PT0gTGluZUhhbmRsZUtleS5zb3VyY2UgPyBlbGVtZW50LnNvdXJjZSA6IGVsZW1lbnQudGFyZ2V0O1xuICAgICAgICBoYW5kbGUgPSB7IC4uLmhhbmRsZSwgbWFya2VyIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBbaGFuZGxlS2V5XTogaGFuZGxlIH0sIHBhdGgpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldExpbmVTaGFwZSA9IChib2FyZDogUGxhaXRCb2FyZCwgbmV3UHJvcGVydGllczogUGFydGlhbDxQbGFpdExpbmU+KSA9PiB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZExpbmVFbGVtZW50cyhib2FyZCk7XG4gICAgZWxlbWVudHMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBfcHJvcGVydGllcyA9IHsgLi4ubmV3UHJvcGVydGllcyB9O1xuICAgICAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gbmV3UHJvcGVydGllcy5zaGFwZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBfcHJvcGVydGllcywgcGF0aCk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29sbGVjdExpbmVVcGRhdGVkUmVmc0J5R2VvbWV0cnkgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZ2VvbWV0cnk6IFBsYWl0R2VvbWV0cnksXG4gICAgcmVmczogeyBwcm9wZXJ0eTogUGFydGlhbDxQbGFpdExpbmU+OyBwYXRoOiBQYXRoIH1bXVxuKSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBmaW5kRWxlbWVudHMoYm9hcmQsIHtcbiAgICAgICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnNvdXJjZS5ib3VuZElkID09PSBnZW9tZXRyeS5pZCB8fCBlbGVtZW50LnRhcmdldC5ib3VuZElkID09PSBnZW9tZXRyeS5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVjdXJzaW9uOiBlbGVtZW50ID0+IHRydWVcbiAgICB9KSBhcyBQbGFpdExpbmVbXTtcbiAgICBpZiAobGluZXMubGVuZ3RoKSB7XG4gICAgICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1NvdXJjZUJvdW5kID0gbGluZS5zb3VyY2UuYm91bmRJZCA9PT0gZ2VvbWV0cnkuaWQ7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSBpc1NvdXJjZUJvdW5kID8gJ3NvdXJjZScgOiAndGFyZ2V0JztcbiAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHsgLi4ubGluZVtoYW5kbGVdIH07XG4gICAgICAgICAgICBjb25zdCBsaW5lUG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgbGluZSk7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IGlzU291cmNlQm91bmQgPyBsaW5lUG9pbnRzWzBdIDogbGluZVBvaW50c1tsaW5lUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgb2JqZWN0LmNvbm5lY3Rpb24gPSBnZXRIaXRDb25uZWN0aW9uKGJvYXJkLCBwb2ludCwgZ2VvbWV0cnkpO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSByZWZzLmZpbmRJbmRleChvYmogPT4gUGF0aC5lcXVhbHMob2JqLnBhdGgsIHBhdGgpKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZV06IG9iamVjdFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwYXRoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZnNbaW5kZXhdLnByb3BlcnR5ID0geyAuLi5yZWZzW2luZGV4XS5wcm9wZXJ0eSwgW2hhbmRsZV06IG9iamVjdCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29ubmVjdExpbmVUb0dlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBsaW5lRWxlbWVudDogUGxhaXRMaW5lLCBoYW5kbGU6IExpbmVIYW5kbGVLZXksIGdlb21ldHJ5RWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIGNvbnN0IGxpbmVQb2ludHMgPSBQbGFpdExpbmUuZ2V0UG9pbnRzKGJvYXJkLCBsaW5lRWxlbWVudCk7XG4gICAgY29uc3QgcG9pbnQgPSBoYW5kbGUgPT09IExpbmVIYW5kbGVLZXkuc291cmNlID8gbGluZVBvaW50c1swXSA6IGxpbmVQb2ludHNbbGluZVBvaW50cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBjb25uZWN0aW9uOiBQb2ludE9mUmVjdGFuZ2xlID0gZ2V0SGl0Q29ubmVjdGlvbihib2FyZCwgcG9pbnQsIGdlb21ldHJ5RWxlbWVudCk7XG4gICAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICAgICAgbGV0IHNvdXJjZTogTGluZUhhbmRsZSA9IGxpbmVFbGVtZW50LnNvdXJjZTtcbiAgICAgICAgbGV0IHRhcmdldDogTGluZUhhbmRsZSA9IGxpbmVFbGVtZW50LnRhcmdldDtcbiAgICAgICAgaWYgKGhhbmRsZSA9PT0gTGluZUhhbmRsZUtleS5zb3VyY2UpIHtcbiAgICAgICAgICAgIHNvdXJjZSA9IHtcbiAgICAgICAgICAgICAgICAuLi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgYm91bmRJZDogZ2VvbWV0cnlFbGVtZW50LmlkLFxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXQgPSB7XG4gICAgICAgICAgICAgICAgLi4udGFyZ2V0LFxuICAgICAgICAgICAgICAgIGJvdW5kSWQ6IGdlb21ldHJ5RWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBsaW5lRWxlbWVudCk7XG4gICAgICAgIHJlc2l6ZUxpbmUoYm9hcmQsIHsgc291cmNlLCB0YXJnZXQgfSwgcGF0aCk7XG4gICAgfVxufTtcbiJdfQ==
|
|
@@ -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, PlaitLine } from '../../interfaces';
|
|
4
|
-
import { createGeometryElement } from '../geometry';
|
|
5
|
-
import { getElbowLineRouteOptions, getLineHandleRefPair } from './line-common';
|
|
6
|
-
import { getMidKeyPoints, getMirrorDataPoints, hasIllegalElbowPoint } from './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 = getLineHandleRefPair(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(PlaitLine.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxib3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9saW5lL2VsYm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWMsY0FBYyxFQUFFLGVBQWUsRUFBd0IscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUgsT0FBTyxFQUNILFNBQVMsRUFDVCx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLG9CQUFvQixFQUV2QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQWtCLEVBQUUsRUFBRTtJQUM3QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3ZGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsT0FBa0IsRUFBRSxPQUE4QixFQUFFLEVBQUU7SUFDOUYsT0FBTywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsRUFBRTtJQUNwRSxNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0QsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RSxpQ0FBaUM7SUFDakMsSUFBSSwyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMvQyxPQUFPLHdCQUF3QixDQUMzQixTQUFTLENBQ0wsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQzFCLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUM5QixhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDMUIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQzlCLG9CQUFvQixDQUN2QixDQUNKLENBQUM7SUFDTixDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0UsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLHVCQUF1QixHQUFHLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDOUUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxJQUFJLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLGFBQWEsRUFBRSx1QkFBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuSSxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckcscURBQXFEO1FBQ3JELE1BQU0sWUFBWSxHQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvRCxJQUFJLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDZCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RixJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDaEMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNMLENBQUM7UUFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsc0xBQXNMO1FBQ3RMLFFBQVE7UUFDUixzQ0FBc0M7UUFDdEMsbUNBQW1DO1FBQ25DLG1DQUFtQztRQUNuQyxzQ0FBc0M7UUFDdEMsc0VBQXNFO1FBQ3RFLHNDQUFzQztRQUN0QyxtQ0FBbUM7UUFDbkMsbUNBQW1DO1FBQ25DLHNDQUFzQztRQUN0QyxNQUFNLEdBQUcsR0FBRyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBRSxFQUFFO0lBQ2xGLE1BQU0sT0FBTyxHQUFHLHdCQUF3QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsYUFBZ0MsRUFBRSxFQUFFO0lBQ25ILElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQWdCLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEgsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBZ0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN0SCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqQixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ3BDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxlQUFlLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRixNQUFNLHlCQUF5QixHQUMzQixxQkFBcUIsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFLGFBQWEsQ0FBQztRQUN0RixlQUFlLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELGVBQWUsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNsRixlQUFlLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFdkcsSUFBSSxlQUFlLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRixNQUFNLHlCQUF5QixHQUMzQixxQkFBcUIsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFLGFBQWEsQ0FBQztRQUN0RixlQUFlLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELGVBQWUsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNsRixlQUFlLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFdkcsT0FBTztRQUNILGVBQWU7UUFDZixlQUFlO0tBQ2xCLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsVUFBaUIsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUM1RCxNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakUsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25HLE9BQU8scUJBQXFCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBRSxZQUFzQjtJQUM3RixJQUFJLGtCQUFrQixHQUFHLFlBQVksSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLEdBQUcsNEJBQTRCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEQsT0FBTyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCwgUGxhaXRCb2FyZCwgZ2V0RWxlbWVudEJ5SWQsIFJlY3RhbmdsZUNsaWVudCwgVmVjdG9yLCByb3RhdGVQb2ludHMsIHJvdGF0ZVBvaW50c0J5RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgZ2V0UG9pbnRzLFxuICAgIGdldFBvaW50QnlWZWN0b3JDb21wb25lbnQsXG4gICAgcmVtb3ZlRHVwbGljYXRlUG9pbnRzLFxuICAgIGdlbmVyYXRlRWxib3dMaW5lUm91dGUsXG4gICAgc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzLFxuICAgIGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0LFxuICAgIERFRkFVTFRfUk9VVEVfTUFSR0lOLFxuICAgIEVsYm93TGluZVJvdXRlT3B0aW9uc1xufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IEJhc2ljU2hhcGVzLCBMaW5lSGFuZGxlUmVmUGFpciwgUGxhaXRHZW9tZXRyeSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVHZW9tZXRyeUVsZW1lbnQgfSBmcm9tICcuLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMsIGdldExpbmVIYW5kbGVSZWZQYWlyIH0gZnJvbSAnLi9saW5lLWNvbW1vbic7XG5pbXBvcnQgeyBnZXRNaWRLZXlQb2ludHMsIGdldE1pcnJvckRhdGFQb2ludHMsIGhhc0lsbGVnYWxFbGJvd1BvaW50IH0gZnJvbSAnLi9saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBpc1NlbGZMb29wID0gKGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50LnNvdXJjZS5ib3VuZElkICYmIGVsZW1lbnQuc291cmNlLmJvdW5kSWQgPT09IGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNVc2VEZWZhdWx0T3J0aG9nb25hbFJvdXRlID0gKGVsZW1lbnQ6IFBsYWl0TGluZSwgb3B0aW9uczogRWxib3dMaW5lUm91dGVPcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0KG9wdGlvbnMpICYmICFpc1NlbGZMb29wKGVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsYm93UG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZWZQYWlyID0gZ2V0TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHBhcmFtcyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgZWxlbWVudCwgaGFuZGxlUmVmUGFpcik7XG4gICAgLy8gY29uc29sZS5sb2cocGFyYW1zLCAncGFyYW1zJyk7XG4gICAgaWYgKGlzVXNlRGVmYXVsdE9ydGhvZ29uYWxSb3V0ZShlbGVtZW50LCBwYXJhbXMpKSB7XG4gICAgICAgIHJldHVybiBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMoXG4gICAgICAgICAgICBnZXRQb2ludHMoXG4gICAgICAgICAgICAgICAgaGFuZGxlUmVmUGFpci5zb3VyY2UucG9pbnQsXG4gICAgICAgICAgICAgICAgaGFuZGxlUmVmUGFpci5zb3VyY2UuZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIGhhbmRsZVJlZlBhaXIudGFyZ2V0LnBvaW50LFxuICAgICAgICAgICAgICAgIGhhbmRsZVJlZlBhaXIudGFyZ2V0LmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICBERUZBVUxUX1JPVVRFX01BUkdJTlxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBrZXlQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoZ2VuZXJhdGVFbGJvd0xpbmVSb3V0ZShwYXJhbXMsIGJvYXJkKSk7XG4gICAgY29uc3QgbmV4dEtleVBvaW50cyA9IGtleVBvaW50cy5zbGljZSgxLCBrZXlQb2ludHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICByZXR1cm4gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKGtleVBvaW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2ltcGxpZmllZE5leHRLZXlQb2ludHMgPSBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMobmV4dEtleVBvaW50cyk7XG4gICAgICAgIGNvbnN0IGRhdGFQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCkpO1xuICAgICAgICBjb25zdCBtaWREYXRhUG9pbnRzID0gZGF0YVBvaW50cy5zbGljZSgxLCAtMSk7XG4gICAgICAgIGlmIChoYXNJbGxlZ2FsRWxib3dQb2ludChtaWREYXRhUG9pbnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyhrZXlQb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHREYXRhUG9pbnRzID0gW3NpbXBsaWZpZWROZXh0S2V5UG9pbnRzWzBdLCAuLi5taWREYXRhUG9pbnRzLCBzaW1wbGlmaWVkTmV4dEtleVBvaW50c1tzaW1wbGlmaWVkTmV4dEtleVBvaW50cy5sZW5ndGggLSAxXV07XG4gICAgICAgIGNvbnN0IG1pcnJvckRhdGFQb2ludHMgPSBnZXRNaXJyb3JEYXRhUG9pbnRzKGJvYXJkLCBuZXh0RGF0YVBvaW50cywgc2ltcGxpZmllZE5leHRLZXlQb2ludHMsIHBhcmFtcyk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKG1pcnJvckRhdGFQb2ludHMsICdtaXJyb3JEYXRhUG9pbnRzJyk7XG4gICAgICAgIGNvbnN0IHJlbmRlclBvaW50czogUG9pbnRbXSA9IFtrZXlQb2ludHNbMF1dO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWlycm9yRGF0YVBvaW50cy5sZW5ndGggLSAxOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFBvaW50ID0gbWlycm9yRGF0YVBvaW50c1tpbmRleF07XG4gICAgICAgICAgICBsZXQgbmV4dFBvaW50ID0gbWlycm9yRGF0YVBvaW50c1tpbmRleCArIDFdO1xuICAgICAgICAgICAgY29uc3QgaXNTdHJhaWdodCA9IFBvaW50LmlzQWxpZ24oW2N1cnJlbnRQb2ludCwgbmV4dFBvaW50XSk7XG4gICAgICAgICAgICBpZiAoIWlzU3RyYWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaWRLZXlQb2ludHMgPSBnZXRNaWRLZXlQb2ludHMoc2ltcGxpZmllZE5leHRLZXlQb2ludHMsIGN1cnJlbnRQb2ludCwgbmV4dFBvaW50KTtcbiAgICAgICAgICAgICAgICBpZiAobWlkS2V5UG9pbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJQb2ludHMucHVzaChjdXJyZW50UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJQb2ludHMucHVzaCguLi5taWRLZXlQb2ludHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlclBvaW50cy5wdXNoKGN1cnJlbnRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd1bmtub3duIGRhdGEgcG9pbnRzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZW5kZXJQb2ludHMucHVzaChjdXJyZW50UG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlbmRlclBvaW50cy5wdXNoKGtleVBvaW50c1trZXlQb2ludHMubGVuZ3RoIC0gMl0sIGtleVBvaW50c1trZXlQb2ludHMubGVuZ3RoIC0gMV0pO1xuICAgICAgICAvLyBSZW1vdmUgdGhlIG1pZGRsZSBwb2ludCB0byBhdm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIHRoZSBzdGFydGluZyBhbmQgZW5kaW5nIHBvc2l0aW9ucyBhcmUgZHJhd24gYmFjaywgc3VjaCBhcyB3aGVuIHNvdXJjZVBvaW50IGlzIGJldHdlZW4gbmV4dFNvdXJjZVBvaW50IGFuZCB0aGUgZmlyc3Qga2V5IHBvaW50LlxuICAgICAgICAvLyBJc3N1ZVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVBvaW50MlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICAgICAvLyBuZXh0UG9pbnQtLS1zb3VyY2VQb2ludC0tLWtleVBvaW50MVxuICAgICAgICAvLyBUaGUgY29ycmVjdCByZW5kZXJpbmcgc2hvdWxkIGJlIChuZXh0UG9pbnQgc2hvdWxkIGJlIGZpbHRlcmVkIG91dCk6XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5UG9pbnQyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICAgIC8vICAgICAgICAgICAgIHNvdXJjZVBvaW50LS0ta2V5UG9pbnQxXG4gICAgICAgIGNvbnN0IHJldCA9IHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyhyZW5kZXJQb2ludHMpO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXROZXh0U291cmNlQW5kVGFyZ2V0UG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zKGJvYXJkLCBlbGVtZW50KTtcbiAgICByZXR1cm4gW29wdGlvbnMubmV4dFNvdXJjZVBvaW50LCBvcHRpb25zLm5leHRUYXJnZXRQb2ludF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U291cmNlQW5kVGFyZ2V0UmVjdGFuZ2xlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIGhhbmRsZVJlZlBhaXI6IExpbmVIYW5kbGVSZWZQYWlyKSA9PiB7XG4gICAgbGV0IHNvdXJjZUVsZW1lbnQgPSBlbGVtZW50LnNvdXJjZS5ib3VuZElkID8gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQuc291cmNlLmJvdW5kSWQpIDogdW5kZWZpbmVkO1xuICAgIGxldCB0YXJnZXRFbGVtZW50ID0gZWxlbWVudC50YXJnZXQuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnRhcmdldC5ib3VuZElkKSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoIXNvdXJjZUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gaGFuZGxlUmVmUGFpci5zb3VyY2U7XG4gICAgICAgIHNvdXJjZUVsZW1lbnQgPSBjcmVhdGVGYWtlRWxlbWVudChzb3VyY2UucG9pbnQsIHNvdXJjZS52ZWN0b3IpO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gaGFuZGxlUmVmUGFpci50YXJnZXQ7XG4gICAgICAgIHRhcmdldEVsZW1lbnQgPSBjcmVhdGVGYWtlRWxlbWVudCh0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IpO1xuICAgIH1cblxuICAgIGxldCBzb3VyY2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoc291cmNlRWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IHJvdGF0ZWRTb3VyY2VDb3JuZXJQb2ludHMgPVxuICAgICAgICByb3RhdGVQb2ludHNCeUVsZW1lbnQoUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhzb3VyY2VSZWN0YW5nbGUpLCBzb3VyY2VFbGVtZW50KSB8fFxuICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHNvdXJjZVJlY3RhbmdsZSk7XG4gICAgc291cmNlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJvdGF0ZWRTb3VyY2VDb3JuZXJQb2ludHMpO1xuICAgIHNvdXJjZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHNvdXJjZVJlY3RhbmdsZSwgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoc291cmNlRWxlbWVudCkgKiAyKTtcblxuICAgIGxldCB0YXJnZXRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHModGFyZ2V0RWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IHJvdGF0ZWRUYXJnZXRDb3JuZXJQb2ludHMgPVxuICAgICAgICByb3RhdGVQb2ludHNCeUVsZW1lbnQoUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyh0YXJnZXRSZWN0YW5nbGUpLCB0YXJnZXRFbGVtZW50KSB8fFxuICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHRhcmdldFJlY3RhbmdsZSk7XG4gICAgdGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJvdGF0ZWRUYXJnZXRDb3JuZXJQb2ludHMpO1xuICAgIHRhcmdldFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHRhcmdldFJlY3RhbmdsZSwgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQodGFyZ2V0RWxlbWVudCkgKiAyKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZVJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlXG4gICAgfTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZha2VFbGVtZW50ID0gKHN0YXJ0UG9pbnQ6IFBvaW50LCB2ZWN0b3I6IFZlY3RvcikgPT4ge1xuICAgIGNvbnN0IHBvaW50ID0gZ2V0UG9pbnRCeVZlY3RvckNvbXBvbmVudChzdGFydFBvaW50LCB2ZWN0b3IsIC0yNSk7XG4gICAgY29uc3QgcG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChwb2ludCwgNTAsIDUwKSk7XG4gICAgcmV0dXJuIGNyZWF0ZUdlb21ldHJ5RWxlbWVudChCYXNpY1NoYXBlcy5yZWN0YW5nbGUsIHBvaW50cywgJycpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRSZW5kZXJQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcmVuZGVyUG9pbnRzPzogUG9pbnRbXSkge1xuICAgIGxldCBuZXdSZW5kZXJLZXlQb2ludHMgPSByZW5kZXJQb2ludHMgPz8gZ2V0RWxib3dQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IFtuZXh0U291cmNlUG9pbnQsIG5leHRUYXJnZXRQb2ludF0gPSBnZXROZXh0U291cmNlQW5kVGFyZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBuZXdSZW5kZXJLZXlQb2ludHMuc3BsaWNlKDAsIDEsIG5leHRTb3VyY2VQb2ludCk7XG4gICAgbmV3UmVuZGVyS2V5UG9pbnRzLnNwbGljZSgtMSwgMSwgbmV4dFRhcmdldFBvaW50KTtcbiAgICByZXR1cm4gcmVtb3ZlRHVwbGljYXRlUG9pbnRzKG5ld1JlbmRlcktleVBvaW50cyk7XG59XG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './elbow';
|
|
2
|
-
export * from './line-arrow';
|
|
3
|
-
export * from './line-basic';
|
|
4
|
-
export * from './line-common';
|
|
5
|
-
export * from './line-resize';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9saW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lbGJvdyc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmUtYXJyb3cnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLWJhc2ljJztcbmV4cG9ydCAqIGZyb20gJy4vbGluZS1jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLXJlc2l6ZSc7XG4iXX0=
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { arrowPoints, createG, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate } from '@plait/core';
|
|
2
|
-
import { LineMarkerType, PlaitLine } from '../../interfaces';
|
|
3
|
-
import { getExtendPoint, getUnitVectorByPointAndPoint } from '@plait/common';
|
|
4
|
-
import { getStrokeWidthByElement } from '../common';
|
|
5
|
-
const ARROW_LENGTH = 20;
|
|
6
|
-
export const drawLineArrow = (element, points, options) => {
|
|
7
|
-
const arrowG = createG();
|
|
8
|
-
if (PlaitLine.isSourceMark(element, LineMarkerType.none) && PlaitLine.isTargetMark(element, LineMarkerType.none)) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
12
|
-
const offset = (strokeWidth * strokeWidth) / 3;
|
|
13
|
-
if (points.length === 1) {
|
|
14
|
-
points = [points[0], [points[0][0] + 0.1, points[0][1]]];
|
|
15
|
-
}
|
|
16
|
-
if (!PlaitLine.isSourceMark(element, LineMarkerType.none)) {
|
|
17
|
-
const source = getExtendPoint(points[0], points[1], ARROW_LENGTH + offset);
|
|
18
|
-
const sourceArrow = getArrow(element, { marker: element.source.marker, source, target: points[0], isSource: true }, options);
|
|
19
|
-
sourceArrow && arrowG.appendChild(sourceArrow);
|
|
20
|
-
}
|
|
21
|
-
if (!PlaitLine.isTargetMark(element, LineMarkerType.none)) {
|
|
22
|
-
const source = getExtendPoint(points[points.length - 1], points[points.length - 2], ARROW_LENGTH + offset);
|
|
23
|
-
const arrow = getArrow(element, { marker: element.target.marker, source, target: points[points.length - 1], isSource: false }, options);
|
|
24
|
-
arrow && arrowG.appendChild(arrow);
|
|
25
|
-
}
|
|
26
|
-
return arrowG;
|
|
27
|
-
};
|
|
28
|
-
const getArrow = (element, arrowOptions, options) => {
|
|
29
|
-
const { marker, target, source, isSource } = arrowOptions;
|
|
30
|
-
let targetArrow;
|
|
31
|
-
switch (marker) {
|
|
32
|
-
case LineMarkerType.openTriangle: {
|
|
33
|
-
targetArrow = drawOpenTriangle(element, source, target, options);
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
case LineMarkerType.solidTriangle: {
|
|
37
|
-
targetArrow = drawSolidTriangle(source, target, options);
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
case LineMarkerType.arrow: {
|
|
41
|
-
targetArrow = drawArrow(element, source, target, options);
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case LineMarkerType.sharpArrow: {
|
|
45
|
-
targetArrow = drawSharpArrow(source, target, options);
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
case LineMarkerType.oneSideUp: {
|
|
49
|
-
targetArrow = drawOneSideArrow(source, target, isSource ? 'down' : 'up', options);
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
case LineMarkerType.oneSideDown: {
|
|
53
|
-
targetArrow = drawOneSideArrow(source, target, isSource ? 'up' : 'down', options);
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
case LineMarkerType.hollowTriangle: {
|
|
57
|
-
targetArrow = drawHollowTriangleArrow(source, target, options);
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
case LineMarkerType.singleSlash: {
|
|
61
|
-
targetArrow = drawSingleSlash(source, target, isSource, options);
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return targetArrow;
|
|
66
|
-
};
|
|
67
|
-
const drawSharpArrow = (source, target, options) => {
|
|
68
|
-
const startPoint = target;
|
|
69
|
-
const { pointLeft, pointRight } = arrowPoints(source, target, 20);
|
|
70
|
-
const g = createG();
|
|
71
|
-
const path = createPath();
|
|
72
|
-
let polylinePath = `M${pointRight[0]},${pointRight[1]}A25,25,20,0,1,${pointLeft[0]},${pointLeft[1]}L${startPoint[0]},${startPoint[1]}Z`;
|
|
73
|
-
path.setAttribute('d', polylinePath);
|
|
74
|
-
path.setAttribute('stroke', `${options?.stroke}`);
|
|
75
|
-
path.setAttribute('stroke-width', `${options?.strokeWidth}`);
|
|
76
|
-
path.setAttribute('fill', `${options?.stroke}`);
|
|
77
|
-
g.appendChild(path);
|
|
78
|
-
return g;
|
|
79
|
-
};
|
|
80
|
-
const drawArrow = (element, source, target, options) => {
|
|
81
|
-
const unitVector = getUnitVectorByPointAndPoint(source, target);
|
|
82
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
83
|
-
const endPoint = [target[0] + (strokeWidth * unitVector[0]) / 2, target[1] + (strokeWidth * unitVector[1]) / 2];
|
|
84
|
-
const distance = distanceBetweenPointAndPoint(...source, ...endPoint);
|
|
85
|
-
const middlePoint = [
|
|
86
|
-
endPoint[0] - (((distance * 3) / 5 + strokeWidth) / 2) * unitVector[0],
|
|
87
|
-
endPoint[1] - (((distance * 3) / 5 + strokeWidth) / 2) * unitVector[1]
|
|
88
|
-
];
|
|
89
|
-
const { pointLeft, pointRight } = arrowPoints(source, endPoint, 30);
|
|
90
|
-
const arrowG = drawLinearPath([pointLeft, endPoint, pointRight, middlePoint], { ...options, fill: options.stroke }, true);
|
|
91
|
-
const path = arrowG.querySelector('path');
|
|
92
|
-
path.setAttribute('stroke-linejoin', 'round');
|
|
93
|
-
return arrowG;
|
|
94
|
-
};
|
|
95
|
-
const drawSolidTriangle = (source, target, options) => {
|
|
96
|
-
const endPoint = target;
|
|
97
|
-
const { pointLeft, pointRight } = arrowPoints(source, endPoint, 30);
|
|
98
|
-
return drawLinearPath([pointLeft, endPoint, pointRight], { ...options, fill: options.stroke }, true);
|
|
99
|
-
};
|
|
100
|
-
const drawOpenTriangle = (element, source, target, options) => {
|
|
101
|
-
const unitVector = getUnitVectorByPointAndPoint(source, target);
|
|
102
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
103
|
-
const endPoint = [target[0] + (strokeWidth * unitVector[0]) / 2, target[1] + (strokeWidth * unitVector[1]) / 2];
|
|
104
|
-
const { pointLeft, pointRight } = arrowPoints(source, endPoint, 40);
|
|
105
|
-
return drawLinearPath([pointLeft, endPoint, pointRight], options);
|
|
106
|
-
};
|
|
107
|
-
const drawOneSideArrow = (source, target, side, options) => {
|
|
108
|
-
const { pointLeft, pointRight } = arrowPoints(source, target, 40);
|
|
109
|
-
return drawLinearPath([side === 'up' ? pointRight : pointLeft, target], options);
|
|
110
|
-
};
|
|
111
|
-
const drawSingleSlash = (source, target, isSource, options) => {
|
|
112
|
-
const length = distanceBetweenPointAndPoint(...source, ...target);
|
|
113
|
-
const middlePoint = getExtendPoint(target, source, length / 2);
|
|
114
|
-
const angle = isSource ? 120 : 60;
|
|
115
|
-
const start = rotate(...source, ...middlePoint, (angle * Math.PI) / 180);
|
|
116
|
-
const end = rotate(...target, ...middlePoint, (angle * Math.PI) / 180);
|
|
117
|
-
return drawLinearPath([start, end], options);
|
|
118
|
-
};
|
|
119
|
-
const drawHollowTriangleArrow = (source, target, options) => {
|
|
120
|
-
const { pointLeft, pointRight } = arrowPoints(source, target, 30);
|
|
121
|
-
return drawLinearPath([pointLeft, pointRight, target], { ...options, fill: 'white' }, true);
|
|
122
|
-
};
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hcnJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUvbGluZS1hcnJvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1SCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBUXBELE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUV4QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFrQixFQUFFLE1BQWUsRUFBRSxPQUFnQixFQUFFLEVBQUU7SUFDbkYsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDekIsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDL0csT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELE1BQU0sTUFBTSxHQUFHLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdILFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQztRQUMzRyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQ2xCLE9BQU8sRUFDUCxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxL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LENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50LCBhcnJvd1BvaW50cywgY3JlYXRlRywgY3JlYXRlUGF0aCwgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCwgZHJhd0xpbmVhclBhdGgsIHJvdGF0ZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IExpbmVNYXJrZXJUeXBlLCBQbGFpdExpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldEV4dGVuZFBvaW50LCBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmludGVyZmFjZSBBcnJvd09wdGlvbnMge1xuICAgIG1hcmtlcjogTGluZU1hcmtlclR5cGU7XG4gICAgc291cmNlOiBQb2ludDtcbiAgICB0YXJnZXQ6IFBvaW50O1xuICAgIGlzU291cmNlOiBib29sZWFuO1xufVxuY29uc3QgQVJST1dfTEVOR1RIID0gMjA7XG5cbmV4cG9ydCBjb25zdCBkcmF3TGluZUFycm93ID0gKGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnRzOiBQb2ludFtdLCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgYXJyb3dHID0gY3JlYXRlRygpO1xuICAgIGlmIChQbGFpdExpbmUuaXNTb3VyY2VNYXJrKGVsZW1lbnQsIExpbmVNYXJrZXJUeXBlLm5vbmUpICYmIFBsYWl0TGluZS5pc1RhcmdldE1hcmsoZWxlbWVudCwgTGluZU1hcmtlclR5cGUubm9uZSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gKHN0cm9rZVdpZHRoICogc3Ryb2tlV2lkdGgpIC8gMztcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBwb2ludHMgPSBbcG9pbnRzWzBdLCBbcG9pbnRzWzBdWzBdICsgMC4xLCBwb2ludHNbMF1bMV1dXTtcbiAgICB9XG5cbiAgICBpZiAoIVBsYWl0TGluZS5pc1NvdXJjZU1hcmsoZWxlbWVudCwgTGluZU1hcmtlclR5cGUubm9uZSkpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RXh0ZW5kUG9pbnQocG9pbnRzWzBdLCBwb2ludHNbMV0sIEFSUk9XX0xFTkdUSCArIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUFycm93ID0gZ2V0QXJyb3coZWxlbWVudCwgeyBtYXJrZXI6IGVsZW1lbnQuc291cmNlLm1hcmtlciwgc291cmNlLCB0YXJnZXQ6IHBvaW50c1swXSwgaXNTb3VyY2U6IHRydWUgfSwgb3B0aW9ucyk7XG4gICAgICAgIHNvdXJjZUFycm93ICYmIGFycm93Ry5hcHBlbmRDaGlsZChzb3VyY2VBcnJvdyk7XG4gICAgfVxuICAgIGlmICghUGxhaXRMaW5lLmlzVGFyZ2V0TWFyayhlbGVtZW50LCBMaW5lTWFya2VyVHlwZS5ub25lKSkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFeHRlbmRQb2ludChwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDJdLCBBUlJPV19MRU5HVEggKyBvZmZzZXQpO1xuICAgICAgICBjb25zdCBhcnJvdyA9IGdldEFycm93KFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIHsgbWFya2VyOiBlbGVtZW50LnRhcmdldC5tYXJrZXIsIHNvdXJjZSwgdGFyZ2V0OiBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBpc1NvdXJjZTogZmFsc2UgfSxcbiAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcblxuICAgICAgICBhcnJvdyAmJiBhcnJvd0cuYXBwZW5kQ2hpbGQoYXJyb3cpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyb3dHO1xufTtcblxuY29uc3QgZ2V0QXJyb3cgPSAoZWxlbWVudDogUGxhaXRMaW5lLCBhcnJvd09wdGlvbnM6IEFycm93T3B0aW9ucywgb3B0aW9uczogT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHsgbWFya2VyLCB0YXJnZXQsIHNvdXJjZSwgaXNTb3VyY2UgfSA9IGFycm93T3B0aW9ucztcbiAgICBsZXQgdGFyZ2V0QXJyb3c7XG4gICAgc3dpdGNoIChtYXJrZXIpIHtcbiAgICAgICAgY2FzZSBMaW5lTWFya2VyVHlwZS5vcGVuVHJpYW5nbGU6IHtcbiAgICAgICAgICAgIHRhcmdldEFycm93ID0gZHJhd09wZW5UcmlhbmdsZShlbGVtZW50LCBzb3VyY2UsIHRhcmdldCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIExpbmVNYXJrZXJUeXBlLnNvbGlkVHJpYW5nbGU6IHtcbiAgICAgICAgICAgIHRhcmdldEFycm93ID0gZHJhd1NvbGlkVHJpYW5nbGUoc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBMaW5lTWFya2VyVHlwZS5hcnJvdzoge1xuICAgICAgICAgICAgdGFyZ2V0QXJyb3cgPSBkcmF3QXJyb3coZWxlbWVudCwgc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBMaW5lTWFya2VyVHlwZS5zaGFycEFycm93OiB7XG4gICAgICAgICAgICB0YXJnZXRBcnJvdyA9IGRyYXdTaGFycEFycm93KHNvdXJjZSwgdGFyZ2V0LCBvcHRpb25zKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgTGluZU1hcmtlclR5cGUub25lU2lkZVVwOiB7XG4gICAgICAgICAgICB0YXJnZXRBcnJvdyA9IGRyYXdPbmVTaWRlQXJyb3coc291cmNlLCB0YXJnZXQsIGlzU291cmNlID8gJ2Rvd24nIDogJ3VwJywgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIExpbmVNYXJrZXJUeXBlLm9uZVNpZGVEb3duOiB7XG4gICAgICAgICAgICB0YXJnZXRBcnJvdyA9IGRyYXdPbmVTaWRlQXJyb3coc291cmNlLCB0YXJnZXQsIGlzU291cmNlID8gJ3VwJyA6ICdkb3duJywgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIExpbmVNYXJrZXJUeXBlLmhvbGxvd1RyaWFuZ2xlOiB7XG4gICAgICAgICAgICB0YXJnZXRBcnJvdyA9IGRyYXdIb2xsb3dUcmlhbmdsZUFycm93KHNvdXJjZSwgdGFyZ2V0LCBvcHRpb25zKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgTGluZU1hcmtlclR5cGUuc2luZ2xlU2xhc2g6IHtcbiAgICAgICAgICAgIHRhcmdldEFycm93ID0gZHJhd1NpbmdsZVNsYXNoKHNvdXJjZSwgdGFyZ2V0LCBpc1NvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0QXJyb3c7XG59O1xuXG5jb25zdCBkcmF3U2hhcnBBcnJvdyA9IChzb3VyY2U6IFBvaW50LCB0YXJnZXQ6IFBvaW50LCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc3RhcnRQb2ludDogUG9pbnQgPSB0YXJnZXQ7XG4gICAgY29uc3QgeyBwb2ludExlZnQsIHBvaW50UmlnaHQgfSA9IGFycm93UG9pbnRzKHNvdXJjZSwgdGFyZ2V0LCAyMCk7XG4gICAgY29uc3QgZyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCBwYXRoID0gY3JlYXRlUGF0aCgpO1xuICAgIGxldCBwb2x5bGluZVBhdGggPSBgTSR7cG9pbnRSaWdodFswXX0sJHtwb2ludFJpZ2h0WzFdfUEyNSwyNSwyMCwwLDEsJHtwb2ludExlZnRbMF19LCR7cG9pbnRMZWZ0WzFdfUwke3N0YXJ0UG9pbnRbMF19LCR7c3RhcnRQb2ludFsxXX1aYDtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnZCcsIHBvbHlsaW5lUGF0aCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGAke29wdGlvbnM/LnN0cm9rZX1gKTtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgYCR7b3B0aW9ucz8uc3Ryb2tlV2lkdGh9YCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBgJHtvcHRpb25zPy5zdHJva2V9YCk7XG4gICAgZy5hcHBlbmRDaGlsZChwYXRoKTtcbiAgICByZXR1cm4gZztcbn07XG5cbmNvbnN0IGRyYXdBcnJvdyA9IChlbGVtZW50OiBQbGFpdExpbmUsIHNvdXJjZTogUG9pbnQsIHRhcmdldDogUG9pbnQsIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB1bml0VmVjdG9yID0gZ2V0VW5pdFZlY3RvckJ5UG9pbnRBbmRQb2ludChzb3VyY2UsIHRhcmdldCk7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBlbmRQb2ludDogUG9pbnQgPSBbdGFyZ2V0WzBdICsgKHN0cm9rZVdpZHRoICogdW5pdFZlY3RvclswXSkgLyAyLCB0YXJnZXRbMV0gKyAoc3Ryb2tlV2lkdGggKiB1bml0VmVjdG9yWzFdKSAvIDJdO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5zb3VyY2UsIC4uLmVuZFBvaW50KTtcbiAgICBjb25zdCBtaWRkbGVQb2ludDogUG9pbnQgPSBbXG4gICAgICAgIGVuZFBvaW50WzBdIC0gKCgoZGlzdGFuY2UgKiAzKSAvIDUgKyBzdHJva2VXaWR0aCkgLyAyKSAqIHVuaXRWZWN0b3JbMF0sXG4gICAgICAgIGVuZFBvaW50WzFdIC0gKCgoZGlzdGFuY2UgKiAzKSAvIDUgKyBzdHJva2VXaWR0aCkgLyAyKSAqIHVuaXRWZWN0b3JbMV1cbiAgICBdO1xuICAgIGNvbnN0IHsgcG9pbnRMZWZ0LCBwb2ludFJpZ2h0IH0gPSBhcnJvd1BvaW50cyhzb3VyY2UsIGVuZFBvaW50LCAzMCk7XG4gICAgY29uc3QgYXJyb3dHID0gZHJhd0xpbmVhclBhdGgoW3BvaW50TGVmdCwgZW5kUG9pbnQsIHBvaW50UmlnaHQsIG1pZGRsZVBvaW50XSwgeyAuLi5vcHRpb25zLCBmaWxsOiBvcHRpb25zLnN0cm9rZSB9LCB0cnVlKTtcbiAgICBjb25zdCBwYXRoID0gYXJyb3dHLnF1ZXJ5U2VsZWN0b3IoJ3BhdGgnKTtcbiAgICBwYXRoIS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1saW5lam9pbicsICdyb3VuZCcpO1xuICAgIHJldHVybiBhcnJvd0c7XG59O1xuXG5jb25zdCBkcmF3U29saWRUcmlhbmdsZSA9IChzb3VyY2U6IFBvaW50LCB0YXJnZXQ6IFBvaW50LCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgZW5kUG9pbnQ6IFBvaW50ID0gdGFyZ2V0O1xuICAgIGNvbnN0IHsgcG9pbnRMZWZ0LCBwb2ludFJpZ2h0IH0gPSBhcnJvd1BvaW50cyhzb3VyY2UsIGVuZFBvaW50LCAzMCk7XG4gICAgcmV0dXJuIGRyYXdMaW5lYXJQYXRoKFtwb2ludExlZnQsIGVuZFBvaW50LCBwb2ludFJpZ2h0XSwgeyAuLi5vcHRpb25zLCBmaWxsOiBvcHRpb25zLnN0cm9rZSB9LCB0cnVlKTtcbn07XG5cbmNvbnN0IGRyYXdPcGVuVHJpYW5nbGUgPSAoZWxlbWVudDogUGxhaXRMaW5lLCBzb3VyY2U6IFBvaW50LCB0YXJnZXQ6IFBvaW50LCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdW5pdFZlY3RvciA9IGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoc291cmNlLCB0YXJnZXQpO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgZW5kUG9pbnQ6IFBvaW50ID0gW3RhcmdldFswXSArIChzdHJva2VXaWR0aCAqIHVuaXRWZWN0b3JbMF0pIC8gMiwgdGFyZ2V0WzFdICsgKHN0cm9rZVdpZHRoICogdW5pdFZlY3RvclsxXSkgLyAyXTtcbiAgICBjb25zdCB7IHBvaW50TGVmdCwgcG9pbnRSaWdodCB9ID0gYXJyb3dQb2ludHMoc291cmNlLCBlbmRQb2ludCwgNDApO1xuICAgIHJldHVybiBkcmF3TGluZWFyUGF0aChbcG9pbnRMZWZ0LCBlbmRQb2ludCwgcG9pbnRSaWdodF0sIG9wdGlvbnMpO1xufTtcblxuY29uc3QgZHJhd09uZVNpZGVBcnJvdyA9IChzb3VyY2U6IFBvaW50LCB0YXJnZXQ6IFBvaW50LCBzaWRlOiBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IHBvaW50TGVmdCwgcG9pbnRSaWdodCB9ID0gYXJyb3dQb2ludHMoc291cmNlLCB0YXJnZXQsIDQwKTtcbiAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgoW3NpZGUgPT09ICd1cCcgPyBwb2ludFJpZ2h0IDogcG9pbnRMZWZ0LCB0YXJnZXRdLCBvcHRpb25zKTtcbn07XG5cbmNvbnN0IGRyYXdTaW5nbGVTbGFzaCA9IChzb3VyY2U6IFBvaW50LCB0YXJnZXQ6IFBvaW50LCBpc1NvdXJjZTogYm9vbGVhbiwgb3B0aW9uczogT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGxlbmd0aCA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uc291cmNlLCAuLi50YXJnZXQpO1xuICAgIGNvbnN0IG1pZGRsZVBvaW50ID0gZ2V0RXh0ZW5kUG9pbnQodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCAvIDIpO1xuICAgIGNvbnN0IGFuZ2xlID0gaXNTb3VyY2UgPyAxMjAgOiA2MDtcbiAgICBjb25zdCBzdGFydCA9IHJvdGF0ZSguLi5zb3VyY2UsIC4uLm1pZGRsZVBvaW50LCAoYW5nbGUgKiBNYXRoLlBJKSAvIDE4MCkgYXMgUG9pbnQ7XG4gICAgY29uc3QgZW5kID0gcm90YXRlKC4uLnRhcmdldCwgLi4ubWlkZGxlUG9pbnQsIChhbmdsZSAqIE1hdGguUEkpIC8gMTgwKSBhcyBQb2ludDtcbiAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgoW3N0YXJ0LCBlbmRdLCBvcHRpb25zKTtcbn07XG5cbmNvbnN0IGRyYXdIb2xsb3dUcmlhbmdsZUFycm93ID0gKHNvdXJjZTogUG9pbnQsIHRhcmdldDogUG9pbnQsIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IHBvaW50TGVmdCwgcG9pbnRSaWdodCB9ID0gYXJyb3dQb2ludHMoc291cmNlLCB0YXJnZXQsIDMwKTtcbiAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgoW3BvaW50TGVmdCwgcG9pbnRSaWdodCwgdGFyZ2V0XSwgeyAuLi5vcHRpb25zLCBmaWxsOiAnd2hpdGUnIH0sIHRydWUpO1xufTtcbiJdfQ==
|