@plait/draw 0.38.0 → 0.40.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/esm2022/engines/flowchart/stored-data.mjs +2 -2
- package/esm2022/generators/line-active.generator.mjs +9 -2
- package/esm2022/geometry.component.mjs +1 -1
- package/esm2022/line.component.mjs +1 -1
- package/esm2022/plugins/with-draw.mjs +3 -2
- package/esm2022/plugins/with-geometry-create.mjs +10 -34
- package/esm2022/plugins/with-line-auto-complete.mjs +3 -3
- package/esm2022/plugins/with-line-resize.mjs +12 -12
- package/esm2022/plugins/with-line-text-move.mjs +52 -0
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/transforms/geometry.mjs +25 -18
- package/esm2022/transforms/index.mjs +3 -3
- package/esm2022/transforms/line.mjs +38 -3
- package/esm2022/utils/geometry.mjs +23 -2
- package/esm2022/utils/line.mjs +7 -3
- package/fesm2022/plait-draw.mjs +252 -158
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/with-line-auto-complete.d.ts +1 -1
- package/plugins/with-line-text-move.d.ts +2 -0
- package/public-api.d.ts +1 -0
- package/styles/styles.scss +4 -0
- package/transforms/geometry.d.ts +2 -2
- package/transforms/index.d.ts +1 -1
- package/transforms/line.d.ts +5 -1
- package/utils/geometry.d.ts +3 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoardTransforms, PRESS_AND_MOVE_BUFFER, PlaitBoard, PlaitPointerType, Transforms, addSelectedElement, clearSelectedElement, createG, distanceBetweenPointAndPoint, temporaryDisableSelection, toPoint, transformPoint } from '@plait/core';
|
|
2
2
|
import { LineShape, PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { handleLineCreating, getAutoCompletePoints, getHitIndexOfAutoCompletePoint, getSelectedDrawElements } from '../utils';
|
|
4
|
-
export const
|
|
4
|
+
export const WithLineAutoCompletePluginKey = 'plait-line-auto-complete-plugin-key';
|
|
5
5
|
export const withLineAutoComplete = (board) => {
|
|
6
6
|
const { pointerDown, pointerMove, pointerUp } = board;
|
|
7
7
|
let startPoint = null;
|
|
@@ -42,7 +42,7 @@ export const withLineAutoComplete = (board) => {
|
|
|
42
42
|
Transforms.insertNode(board, temporaryElement, [board.children.length]);
|
|
43
43
|
clearSelectedElement(board);
|
|
44
44
|
addSelectedElement(board, temporaryElement);
|
|
45
|
-
const afterComplete = board.getPluginOptions(
|
|
45
|
+
const afterComplete = board.getPluginOptions(WithLineAutoCompletePluginKey)
|
|
46
46
|
?.afterComplete;
|
|
47
47
|
afterComplete && afterComplete(temporaryElement);
|
|
48
48
|
}
|
|
@@ -58,4 +58,4 @@ export const withLineAutoComplete = (board) => {
|
|
|
58
58
|
};
|
|
59
59
|
return board;
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLDRCQUE0QixFQUM1Qix5QkFBeUIsRUFDekIsT0FBTyxFQUNQLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLDhCQUE4QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLHFDQUFxQyxDQUFDO0FBTW5GLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3RELE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUV0RCxJQUFJLFVBQVUsR0FBaUIsSUFBSSxDQUFDO0lBQ3BDLElBQUksVUFBVSxHQUF1QixJQUFJLENBQUM7SUFDMUMsSUFBSSxhQUFnQyxDQUFDO0lBQ3JDLElBQUksZ0JBQWtDLENBQUM7SUFFdkMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN4QyxNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMs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Q0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQm9hcmRUcmFuc2Zvcm1zLFxuICAgIFBSRVNTX0FORF9NT1ZFX0JVRkZFUixcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24sXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0TGluZSwgUGxhaXRTaGFwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaGFuZGxlTGluZUNyZWF0aW5nLCBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCwgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBXaXRoTGluZUF1dG9Db21wbGV0ZVBsdWdpbktleSA9ICdwbGFpdC1saW5lLWF1dG8tY29tcGxldGUtcGx1Z2luLWtleSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZUF1dG9Db21wbGV0ZU9wdGlvbnMge1xuICAgIGFmdGVyQ29tcGxldGU6IChlbGVtZW50OiBQbGFpdExpbmUpID0+IHt9O1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVBdXRvQ29tcGxldGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgcG9pbnRlclVwIH0gPSBib2FyZDtcblxuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlIHwgbnVsbDtcbiAgICBsZXQgdGVtcG9yYXJ5RWxlbWVudDogUGxhaXRMaW5lIHwgbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgIGNvbnN0IGNsaWNrUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiB0YXJnZXRFbGVtZW50ICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNTaGFwZSh0YXJnZXRFbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXV0b0NvbXBsZXRlUG9pbnRzKHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQoY2xpY2tQb2ludCwgcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFBvaW50ID0gcG9pbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24oYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBjbGlja1BvaW50O1xuICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSB0YXJnZXRFbGVtZW50O1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgTGluZVNoYXBlLmVsYm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQgJiYgc291cmNlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLm1vdmluZ1BvaW50LCAuLi5zdGFydFBvaW50KTtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUikge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBoYW5kbGVMaW5lQ3JlYXRpbmcoYm9hcmQsIExpbmVTaGFwZS5lbGJvdywgc3RhcnRQb2ludCwgbW92aW5nUG9pbnQsIHNvdXJjZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbXBsZXRlID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPExpbmVBdXRvQ29tcGxldGVPcHRpb25zPihXaXRoTGluZUF1dG9Db21wbGV0ZVBsdWdpbktleSlcbiAgICAgICAgICAgICAgICA/LmFmdGVyQ29tcGxldGU7XG4gICAgICAgICAgICBhZnRlckNvbXBsZXRlICYmIGFmdGVyQ29tcGxldGUodGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBudWxsO1xuICAgICAgICBzb3VyY2VFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IG51bGw7XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { withResize } from '@plait/common';
|
|
|
2
2
|
import { getSelectedLineElements } from '../utils/selected';
|
|
3
3
|
import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
|
|
4
4
|
import { getHitOutlineGeometry } from '../utils/position/geometry';
|
|
5
|
-
import { alignPoints,
|
|
5
|
+
import { alignPoints, transformPointToConnection } from '../utils';
|
|
6
6
|
import { DrawTransforms } from '../transforms';
|
|
7
7
|
import { REACTION_MARGIN } from '../constants';
|
|
8
8
|
export const withLineResize = (board) => {
|
|
@@ -23,7 +23,7 @@ export const withLineResize = (board) => {
|
|
|
23
23
|
element: value,
|
|
24
24
|
handle: handleRef.handle
|
|
25
25
|
};
|
|
26
|
-
pointIndex = handleRef.index;
|
|
26
|
+
pointIndex = handleRef.handle === LineResizeHandle.addHandle ? handleRef.index + 1 : handleRef.index;
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
return result;
|
|
@@ -34,10 +34,10 @@ export const withLineResize = (board) => {
|
|
|
34
34
|
let points = [...resizeRef.element.points];
|
|
35
35
|
let source = { ...resizeRef.element.source };
|
|
36
36
|
let target = { ...resizeRef.element.target };
|
|
37
|
+
const hitElement = getHitOutlineGeometry(board, resizeState.endTransformPoint, REACTION_MARGIN);
|
|
37
38
|
if (resizeRef.handle === LineResizeHandle.source || resizeRef.handle === LineResizeHandle.target) {
|
|
38
39
|
const object = resizeRef.handle === LineResizeHandle.source ? source : target;
|
|
39
40
|
points[pointIndex] = resizeState.endTransformPoint;
|
|
40
|
-
const hitElement = getHitOutlineGeometry(board, resizeState.endTransformPoint, REACTION_MARGIN);
|
|
41
41
|
if (hitElement) {
|
|
42
42
|
object.connection = transformPointToConnection(board, resizeState.endTransformPoint, hitElement);
|
|
43
43
|
object.boundId = hitElement.id;
|
|
@@ -45,25 +45,25 @@ export const withLineResize = (board) => {
|
|
|
45
45
|
else {
|
|
46
46
|
object.connection = undefined;
|
|
47
47
|
object.boundId = undefined;
|
|
48
|
-
if (points.length === 2) {
|
|
49
|
-
let movingPoint = points[pointIndex];
|
|
50
|
-
const drawPoints = getLinePoints(board, resizeRef.element);
|
|
51
|
-
const index = pointIndex === 0 ? drawPoints.length - 1 : 0;
|
|
52
|
-
const otherPoint = drawPoints[index];
|
|
53
|
-
points[pointIndex] = alignPoints(otherPoint, movingPoint);
|
|
54
|
-
}
|
|
55
48
|
}
|
|
56
49
|
}
|
|
57
50
|
else if (resizeRef.handle === LineResizeHandle.addHandle) {
|
|
58
|
-
points.splice(pointIndex
|
|
51
|
+
points.splice(pointIndex, 0, resizeState.endTransformPoint);
|
|
59
52
|
}
|
|
60
53
|
else {
|
|
61
54
|
points[pointIndex] = resizeState.endTransformPoint;
|
|
62
55
|
}
|
|
56
|
+
if (!hitElement) {
|
|
57
|
+
points.forEach((point, index) => {
|
|
58
|
+
if (index === pointIndex)
|
|
59
|
+
return;
|
|
60
|
+
points[pointIndex] = alignPoints(point, points[pointIndex]);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
63
|
DrawTransforms.resizeLine(board, { points, source, target }, resizeRef.path);
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
66
|
withResize(board, options);
|
|
67
67
|
return board;
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTZDLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDaEQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sT0FBTyxHQUFtRDtRQUM1RCxHQUFHLEVBQUUsV0FBVztRQUNoQixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE1BQU0sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3JCLE1BQU0sb0JBQW9CLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDakMsTUFBTSxTQUFTLEdBQUcseUJBQXlCLENBQUMsS0FB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QUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZExpbmVFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYsIExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IGdldEhpdE91dGxpbmVHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7IExpbmVIYW5kbGUsIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYWxpZ25Qb2ludHMsIHRyYW5zZm9ybVBvaW50VG9Db25uZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IFJFQUNUSU9OX01BUkdJTiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluZVJlc2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGxldCBwb2ludEluZGV4ID0gMDtcbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+ID0ge1xuICAgICAgICBrZXk6ICdkcmF3LWxpbmUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBkZXRlY3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTGluZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGluZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZExpbmVFbGVtZW50cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmID0gZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgdmFsdWUsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50SW5kZXggPSBoYW5kbGVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSA/IGhhbmRsZVJlZi5pbmRleCArIDEgOiBoYW5kbGVSZWYuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBsZXQgc291cmNlOiBMaW5lSGFuZGxlID0geyAuLi5yZXNpemVSZWYuZWxlbWVudC5zb3VyY2UgfTtcbiAgICAgICAgICAgIGxldCB0YXJnZXQ6IExpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnRhcmdldCB9O1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdE91dGxpbmVHZW9tZXRyeShib2FyZCwgcmVzaXplU3RhdGUuZW5kVHJhbnNmb3JtUG9pbnQsIFJFQUNUSU9OX01BUkdJTik7XG4gICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5zb3VyY2UgfHwgcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvYmplY3QgPSByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSA/IHNvdXJjZSA6IHRhcmdldDtcbiAgICAgICAgICAgICAgICBwb2ludHNbcG9pbnRJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRUcmFuc2Zvcm1Qb2ludDtcbiAgICAgICAgICAgICAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuY29ubmVjdGlvbiA9IHRyYW5zZm9ybVBvaW50VG9Db25uZWN0aW9uKGJvYXJkLCByZXNpemVTdGF0ZS5lbmRUcmFuc2Zvcm1Qb2ludCwgaGl0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5ib3VuZElkID0gaGl0RWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuY29ubmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLmFkZEhhbmRsZSkge1xuICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UocG9pbnRJbmRleCwgMCwgcmVzaXplU3RhdGUuZW5kVHJhbnNmb3JtUG9pbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbcG9pbnRJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRUcmFuc2Zvcm1Qb2ludDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHBvaW50cy5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBwb2ludEluZGV4KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1twb2ludEluZGV4XSA9IGFsaWduUG9pbnRzKHBvaW50LCBwb2ludHNbcG9pbnRJbmRleF0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVMaW5lKGJvYXJkLCB7IHBvaW50cywgc291cmNlLCB0YXJnZXQgfSwgcmVzaXplUmVmLnBhdGgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHdpdGhSZXNpemU8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPihib2FyZCwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { PlaitElement, distanceBetweenPointAndSegments, getHitElementByPoint, getNearestPointBetweenPointAndSegments } from '@plait/core';
|
|
2
|
+
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
+
import { getHitLineTextIndex, getLinePoints } from '../utils';
|
|
4
|
+
import { ResizeHandle, getRatioByPoint, withResize } from '@plait/common';
|
|
5
|
+
import { DrawTransforms } from '../transforms';
|
|
6
|
+
export const withLineTextMove = (board) => {
|
|
7
|
+
let textIndex = 0;
|
|
8
|
+
const movableBuffer = 100;
|
|
9
|
+
const options = {
|
|
10
|
+
key: 'line-text',
|
|
11
|
+
canResize: () => {
|
|
12
|
+
return true;
|
|
13
|
+
},
|
|
14
|
+
detect: (point) => {
|
|
15
|
+
let result = null;
|
|
16
|
+
const line = getHitElementByPoint(board, point, (element) => {
|
|
17
|
+
return PlaitDrawElement.isLine(element);
|
|
18
|
+
});
|
|
19
|
+
if (line) {
|
|
20
|
+
const index = getHitLineTextIndex(board, line, point);
|
|
21
|
+
const hitComponent = PlaitElement.getComponent(line);
|
|
22
|
+
const textManage = hitComponent.textManages[index];
|
|
23
|
+
if (index !== -1 && !textManage.isEditing) {
|
|
24
|
+
textIndex = index;
|
|
25
|
+
return { element: line, handle: ResizeHandle.e };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
},
|
|
30
|
+
onResize: (resizeRef, resizeState) => {
|
|
31
|
+
const element = resizeRef.element;
|
|
32
|
+
if (element) {
|
|
33
|
+
const movingPoint = resizeState.endTransformPoint;
|
|
34
|
+
const points = getLinePoints(board, element);
|
|
35
|
+
const distance = distanceBetweenPointAndSegments(points, movingPoint);
|
|
36
|
+
if (distance <= movableBuffer) {
|
|
37
|
+
const point = getNearestPointBetweenPointAndSegments(movingPoint, points, false);
|
|
38
|
+
const position = getRatioByPoint(points, point);
|
|
39
|
+
const texts = [...element.texts];
|
|
40
|
+
texts[textIndex] = {
|
|
41
|
+
...texts[textIndex],
|
|
42
|
+
position
|
|
43
|
+
};
|
|
44
|
+
DrawTransforms.setLineTexts(board, element, texts);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
withResize(board, options);
|
|
50
|
+
return board;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXRleHQtbW92ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXRleHQtbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsWUFBWSxFQUVaLCtCQUErQixFQUMvQixvQkFBb0IsRUFDcEIsc0NBQXNDLEVBQ3pDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQTZDLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNsRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDbEIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0lBQzFCLE1BQU0sT0FBTyxHQUFpQztRQUMxQyxHQUFHLEVBQUUsV0FBVztRQUNoQixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE1BQU0sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3JCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsQixNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsT0FBcUIsRUFBRSxFQUFFO2dCQUN0RSxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQTBCLENBQUM7WUFDNUIsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQWtCLENBQUM7Z0JBQ3RFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtvQkFDdkMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDcEQ7YUFDSjtZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxRQUFRLEVBQUUsQ0FBQyxTQUErQixFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUNwRSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ2xDLElBQUksT0FBTyxFQUFFO2dCQUNULE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDbEQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDN0MsTUFBTSxRQUFRLEdBQUcsK0JBQStCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLFFBQVEsSUFBSSxhQUFhLEVBQUU7b0JBQzNCLE1BQU0sS0FBSyxHQUFHLHNDQUFzQyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pGLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2hELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRzt3QkFDZixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7d0JBQ25CLFFBQVE7cUJBQ1gsQ0FBQztvQkFDRixjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ3REO2FBQ0o7UUFDTCxDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBWSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdEMsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQb2ludCxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVRleHRJbmRleCwgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZSwgUmVzaXplUmVmLCBSZXNpemVTdGF0ZSwgV2l0aFJlc2l6ZU9wdGlvbnMsIGdldFJhdGlvQnlQb2ludCwgd2l0aFJlc2l6ZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IExpbmVDb21wb25lbnQgfSBmcm9tICcuLi9saW5lLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluZVRleHRNb3ZlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IHRleHRJbmRleCA9IDA7XG4gICAgY29uc3QgbW92YWJsZUJ1ZmZlciA9IDEwMDtcbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdExpbmU+ID0ge1xuICAgICAgICBrZXk6ICdsaW5lLXRleHQnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBkZXRlY3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBwb2ludCwgKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KTtcbiAgICAgICAgICAgIH0pIGFzIHVuZGVmaW5lZCB8IFBsYWl0TGluZTtcbiAgICAgICAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBnZXRIaXRMaW5lVGV4dEluZGV4KGJvYXJkLCBsaW5lLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGl0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChsaW5lKSBhcyBMaW5lQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRNYW5hZ2UgPSBoaXRDb21wb25lbnQudGV4dE1hbmFnZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgIXRleHRNYW5hZ2UuaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBlbGVtZW50OiBsaW5lLCBoYW5kbGU6IFJlc2l6ZUhhbmRsZS5lIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmU+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSByZXNpemVSZWYuZWxlbWVudDtcbiAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSByZXNpemVTdGF0ZS5lbmRUcmFuc2Zvcm1Qb2ludDtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnRzLCBtb3ZpbmdQb2ludCk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDw9IG1vdmFibGVCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhtb3ZpbmdQb2ludCwgcG9pbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gZ2V0UmF0aW9CeVBvaW50KHBvaW50cywgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0cyA9IFsuLi5lbGVtZW50LnRleHRzXTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dHNbdGV4dEluZGV4XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRleHRzW3RleHRJbmRleF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRMaW5lVGV4dHMoYm9hcmQsIGVsZW1lbnQsIHRleHRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdExpbmU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './interfaces';
|
|
2
2
|
export * from './plugins/with-draw';
|
|
3
|
+
export * from './plugins/with-line-auto-complete';
|
|
3
4
|
export * from './constants';
|
|
4
5
|
export * from './utils';
|
|
5
6
|
export * from './geometry.component';
|
|
6
7
|
export * from './line.component';
|
|
7
8
|
export * from './transforms';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMvd2l0aC1kcmF3JztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy93aXRoLWxpbmUtYXV0by1jb21wbGV0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VvbWV0cnkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGluZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2Zvcm1zJztcbiJdfQ==
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import { PlaitBoard, Transforms,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { createGeometryElement } from '../utils';
|
|
1
|
+
import { PlaitBoard, Transforms, PlaitNode, getSelectedElements } from '@plait/core';
|
|
2
|
+
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
+
import { createDefaultGeometry, createDefaultText, insertElement } from '../utils';
|
|
5
4
|
import { normalizeShapePoints } from '@plait/common';
|
|
5
|
+
import { DrawTransforms } from '.';
|
|
6
|
+
import { collectRefs } from './line';
|
|
6
7
|
export const insertGeometry = (board, points, shape) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
});
|
|
10
|
-
Transforms.insertNode(board, newElement, [board.children.length]);
|
|
11
|
-
clearSelectedElement(board);
|
|
12
|
-
addSelectedElement(board, newElement);
|
|
8
|
+
const newElement = createDefaultGeometry(board, points, shape);
|
|
9
|
+
insertElement(board, newElement);
|
|
13
10
|
};
|
|
14
11
|
export const insertText = (board, points, text = '文本') => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
clearSelectedElement(board);
|
|
18
|
-
addSelectedElement(board, newElement);
|
|
12
|
+
const newElement = createDefaultText(board, points);
|
|
13
|
+
insertElement(board, newElement);
|
|
19
14
|
};
|
|
20
15
|
export const resizeGeometry = (board, points, textHeight, path) => {
|
|
21
16
|
const normalizePoints = normalizeShapePoints(points);
|
|
@@ -27,8 +22,20 @@ export const resizeGeometry = (board, points, textHeight, path) => {
|
|
|
27
22
|
}
|
|
28
23
|
Transforms.setNode(board, newProperties, path);
|
|
29
24
|
};
|
|
30
|
-
export const
|
|
31
|
-
const
|
|
32
|
-
|
|
25
|
+
export const switchGeometryShape = (board, shape) => {
|
|
26
|
+
const selectedElements = getSelectedElements(board);
|
|
27
|
+
const refs = [];
|
|
28
|
+
selectedElements.forEach(item => {
|
|
29
|
+
if (PlaitDrawElement.isGeometry(item) && !PlaitDrawElement.isText(item)) {
|
|
30
|
+
const path = PlaitBoard.findPath(board, item);
|
|
31
|
+
Transforms.setNode(board, { shape }, path);
|
|
32
|
+
collectRefs(board, { ...item, shape }, refs);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
if (refs.length) {
|
|
36
|
+
refs.forEach(ref => {
|
|
37
|
+
DrawTransforms.resizeLine(board, ref.property, ref.path);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
33
40
|
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFlLFNBQVMsRUFBRSxtQkFBbUIsRUFBOEIsTUFBTSxhQUFhLENBQUM7QUFDOUgsT0FBTyxFQUFFLGdCQUFnQixFQUF1RCxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQWlCLGFBQWEsRUFBOEIsTUFBTSxVQUFVLENBQUM7QUFFOUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsS0FBcUIsRUFBRSxFQUFFO0lBQy9GLE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0QsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsT0FBeUIsSUFBSSxFQUFFLEVBQUU7SUFDbkcsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxNQUFzQixFQUFFLFVBQWtCLEVBQUUsSUFBVSxFQUFFLEVBQUU7SUFDeEcsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ25ELE1BQU0sYUFBYSxHQUFHLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDekUsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtRQUNyRCxhQUFvQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7S0FDMUQ7SUFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQXFCLEVBQUUsRUFBRTtJQUM1RSxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELE1BQU0sSUFBSSxHQUFtRCxFQUFFLENBQUM7SUFDaEUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzVCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JFLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7S0FDTjtBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMsIFBvaW50LCBQYXRoLCBQbGFpdE5vZGUsIGdldFNlbGVjdGVkRWxlbWVudHMsIGZpbmRFbGVtZW50cywgUGxhaXRFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRHZW9tZXRyeSwgR2VvbWV0cnlTaGFwZXMsIFBsYWl0VGV4dCwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0R2VvbWV0cnksIGNyZWF0ZURlZmF1bHRUZXh0LCBnZXRMaW5lUG9pbnRzLCBpbnNlcnRFbGVtZW50LCB0cmFuc2Zvcm1Qb2ludFRvQ29ubmVjdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBub3JtYWxpemVTaGFwZVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuJztcbmltcG9ydCB7IGNvbGxlY3RSZWZzIH0gZnJvbSAnLi9saW5lJztcblxuZXhwb3J0IGNvbnN0IGluc2VydEdlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFtQb2ludCwgUG9pbnRdLCBzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gY3JlYXRlRGVmYXVsdEdlb21ldHJ5KGJvYXJkLCBwb2ludHMsIHNoYXBlKTtcbiAgICBpbnNlcnRFbGVtZW50KGJvYXJkLCBuZXdFbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFtQb2ludCwgUG9pbnRdLCB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50ID0gJ+aWh+acrCcpID0+IHtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gY3JlYXRlRGVmYXVsdFRleHQoYm9hcmQsIHBvaW50cyk7XG4gICAgaW5zZXJ0RWxlbWVudChib2FyZCwgbmV3RWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzaXplR2VvbWV0cnkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50czogW1BvaW50LCBQb2ludF0sIHRleHRIZWlnaHQ6IG51bWJlciwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZVBvaW50cyA9IG5vcm1hbGl6ZVNoYXBlUG9pbnRzKHBvaW50cyk7XG4gICAgY29uc3QgZWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpO1xuICAgIGNvbnN0IG5ld0hlaWdodCA9IHRleHRIZWlnaHQgLyBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IG5ld1Byb3BlcnRpZXMgPSB7IHBvaW50czogbm9ybWFsaXplUG9pbnRzLCB0ZXh0SGVpZ2h0OiBuZXdIZWlnaHQgfTtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1RleHQoZWxlbWVudCkgJiYgZWxlbWVudC5hdXRvU2l6ZSkge1xuICAgICAgICAobmV3UHJvcGVydGllcyBhcyBQYXJ0aWFsPFBsYWl0VGV4dD4pLmF1dG9TaXplID0gZmFsc2U7XG4gICAgfVxuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3UHJvcGVydGllcywgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3dpdGNoR2VvbWV0cnlTaGFwZSA9IChib2FyZDogUGxhaXRCb2FyZCwgc2hhcGU6IEdlb21ldHJ5U2hhcGVzKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IHJlZnM6IHsgcHJvcGVydHk6IFBhcnRpYWw8UGxhaXRMaW5lPjsgcGF0aDogUGF0aCB9W10gPSBbXTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoaXRlbSkgJiYgIVBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGl0ZW0pKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgaXRlbSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgc2hhcGUgfSwgcGF0aCk7XG4gICAgICAgICAgICBjb2xsZWN0UmVmcyhib2FyZCwgeyAuLi5pdGVtLCBzaGFwZSB9LCByZWZzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZWZzLmxlbmd0aCkge1xuICAgICAgICByZWZzLmZvckVhY2gocmVmID0+IHtcbiAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUxpbmUoYm9hcmQsIHJlZi5wcm9wZXJ0eSwgcmVmLnBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { insertText, insertGeometry, resizeGeometry,
|
|
1
|
+
import { insertText, insertGeometry, resizeGeometry, switchGeometryShape } from './geometry';
|
|
2
2
|
import { setText, setTextSize } from './geometry-text';
|
|
3
3
|
import { insertImage } from './image';
|
|
4
4
|
import { removeLineText, resizeLine, setLineMark, setLineTexts } from './line';
|
|
@@ -13,6 +13,6 @@ export const DrawTransforms = {
|
|
|
13
13
|
removeLineText,
|
|
14
14
|
setLineMark,
|
|
15
15
|
insertImage,
|
|
16
|
-
|
|
16
|
+
switchGeometryShape
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsT0FBTztJQUNQLGNBQWM7SUFDZCxjQUFjO0lBQ2QsVUFBVTtJQUNWLFdBQVc7SUFDWCxVQUFVO0lBQ1YsWUFBWTtJQUNaLGNBQWM7SUFDZCxXQUFXO0lBQ1gsV0FBVztJQUNYLG1CQUFtQjtDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zZXJ0VGV4dCwgaW5zZXJ0R2VvbWV0cnksIHJlc2l6ZUdlb21ldHJ5LCBzd2l0Y2hHZW9tZXRyeVNoYXBlIH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBzZXRUZXh0LCBzZXRUZXh0U2l6ZSB9IGZyb20gJy4vZ2VvbWV0cnktdGV4dCc7XG5pbXBvcnQgeyBpbnNlcnRJbWFnZSB9IGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IHsgcmVtb3ZlTGluZVRleHQsIHJlc2l6ZUxpbmUsIHNldExpbmVNYXJrLCBzZXRMaW5lVGV4dHMgfSBmcm9tICcuL2xpbmUnO1xuXG5leHBvcnQgY29uc3QgRHJhd1RyYW5zZm9ybXMgPSB7XG4gICAgc2V0VGV4dCxcbiAgICBpbnNlcnRHZW9tZXRyeSxcbiAgICByZXNpemVHZW9tZXRyeSxcbiAgICBpbnNlcnRUZXh0LFxuICAgIHNldFRleHRTaXplLFxuICAgIHJlc2l6ZUxpbmUsXG4gICAgc2V0TGluZVRleHRzLFxuICAgIHJlbW92ZUxpbmVUZXh0LFxuICAgIHNldExpbmVNYXJrLFxuICAgIGluc2VydEltYWdlLFxuICAgIHN3aXRjaEdlb21ldHJ5U2hhcGVcbn07XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { PlaitBoard, Transforms } from '@plait/core';
|
|
2
|
-
import { LineHandleKey, MemorizeKey } from '../interfaces';
|
|
1
|
+
import { Path, PlaitBoard, Transforms, findElements } from '@plait/core';
|
|
2
|
+
import { LineHandleKey, MemorizeKey, PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { memorizeLatest } from '@plait/common';
|
|
4
|
+
import { getLinePoints, transformPointToConnection } from '../utils';
|
|
4
5
|
export const resizeLine = (board, options, path) => {
|
|
5
6
|
Transforms.setNode(board, options, path);
|
|
6
7
|
};
|
|
@@ -22,4 +23,38 @@ export const setLineMark = (board, element, handleKey, marker) => {
|
|
|
22
23
|
memorizeLatest(MemorizeKey.line, handleKey, marker);
|
|
23
24
|
Transforms.setNode(board, { [handleKey]: handle }, path);
|
|
24
25
|
};
|
|
25
|
-
|
|
26
|
+
export const collectRefs = (board, geometry, refs) => {
|
|
27
|
+
const lines = findElements(board, {
|
|
28
|
+
match: (element) => {
|
|
29
|
+
if (PlaitDrawElement.isLine(element)) {
|
|
30
|
+
return element.source.boundId === geometry.id || element.target.boundId === geometry.id;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
},
|
|
34
|
+
recursion: element => true
|
|
35
|
+
});
|
|
36
|
+
if (lines.length) {
|
|
37
|
+
lines.forEach(line => {
|
|
38
|
+
const isSourceBound = line.source.boundId === geometry.id;
|
|
39
|
+
const handle = isSourceBound ? 'source' : 'target';
|
|
40
|
+
const object = { ...line[handle] };
|
|
41
|
+
const linePoints = getLinePoints(board, line);
|
|
42
|
+
const point = isSourceBound ? linePoints[0] : linePoints[linePoints.length - 1];
|
|
43
|
+
object.connection = transformPointToConnection(board, point, geometry);
|
|
44
|
+
const path = PlaitBoard.findPath(board, line);
|
|
45
|
+
const index = refs.findIndex(obj => Path.equals(obj.path, path));
|
|
46
|
+
if (index === -1) {
|
|
47
|
+
refs.push({
|
|
48
|
+
property: {
|
|
49
|
+
[handle]: object
|
|
50
|
+
},
|
|
51
|
+
path
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
refs[index].property = { ...refs[index].property, [handle]: object };
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3RyYW5zZm9ybXMvbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBZ0IsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUE0QixXQUFXLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQTJCLEVBQUUsSUFBVSxFQUFFLEVBQUU7SUFDckYsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBRSxLQUFpQixFQUFFLEVBQUU7SUFDckYsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQWtCLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDbkYsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsTUFBTSxLQUFLLEdBQUcsT0FB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QyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ04sUUFBUSxFQUFFO3dCQUNOLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTTtxQkFDbkI7b0JBQ0QsSUFBSTtpQkFDUCxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDeEU7UUFDTCxDQUFDLENBQUMsQ0FBQztLQUNOO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBUcmFuc2Zvcm1zLCBmaW5kRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lSGFuZGxlS2V5LCBMaW5lTWFya2VyVHlwZSwgTGluZVRleHQsIE1lbW9yaXplS2V5LCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5LCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IG1lbW9yaXplTGF0ZXN0IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRMaW5lUG9pbnRzLCB0cmFuc2Zvcm1Qb2ludFRvQ29ubmVjdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IHJlc2l6ZUxpbmUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9wdGlvbnM6IFBhcnRpYWw8UGxhaXRMaW5lPiwgcGF0aDogUGF0aCkgPT4ge1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgb3B0aW9ucywgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0TGluZVRleHRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIHRleHRzOiBMaW5lVGV4dFtdKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyB0ZXh0cyB9LCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lVGV4dCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cz8ubGVuZ3RoID8gWy4uLmVsZW1lbnQudGV4dHNdIDogW107XG4gICAgY29uc3QgbmV3VGV4dHMgPSBbLi4udGV4dHNdO1xuICAgIG5ld1RleHRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHRleHRzOiBuZXdUZXh0cyB9LCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRMaW5lTWFyayA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBoYW5kbGVLZXk6IExpbmVIYW5kbGVLZXksIG1hcmtlcjogTGluZU1hcmtlclR5cGUpID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgbGV0IGhhbmRsZSA9IGhhbmRsZUtleSA9PT0gTGluZUhhbmRsZUtleS5zb3VyY2UgPyBlbGVtZW50LnNvdXJjZSA6IGVsZW1lbnQudGFyZ2V0O1xuICAgIGhhbmRsZSA9IHsgLi4uaGFuZGxlLCBtYXJrZXIgfTtcbiAgICBtZW1vcml6ZUxhdGVzdChNZW1vcml6ZUtleS5saW5lLCBoYW5kbGVLZXksIG1hcmtlcik7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IFtoYW5kbGVLZXldOiBoYW5kbGUgfSwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29sbGVjdFJlZnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5LCByZWZzOiB7IHByb3BlcnR5OiBQYXJ0aWFsPFBsYWl0TGluZT47IHBhdGg6IFBhdGggfVtdKSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBmaW5kRWxlbWVudHMoYm9hcmQsIHtcbiAgICAgICAgbWF0Y2g6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnNvdXJjZS5ib3VuZElkID09PSBnZW9tZXRyeS5pZCB8fCBlbGVtZW50LnRhcmdldC5ib3VuZElkID09PSBnZW9tZXRyeS5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVjdXJzaW9uOiBlbGVtZW50ID0+IHRydWVcbiAgICB9KSBhcyBQbGFpdExpbmVbXTtcbiAgICBpZiAobGluZXMubGVuZ3RoKSB7XG4gICAgICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1NvdXJjZUJvdW5kID0gbGluZS5zb3VyY2UuYm91bmRJZCA9PT0gZ2VvbWV0cnkuaWQ7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGUgPSBpc1NvdXJjZUJvdW5kID8gJ3NvdXJjZScgOiAndGFyZ2V0JztcbiAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHsgLi4ubGluZVtoYW5kbGVdIH07XG4gICAgICAgICAgICBjb25zdCBsaW5lUG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgbGluZSk7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IGlzU291cmNlQm91bmQgPyBsaW5lUG9pbnRzWzBdIDogbGluZVBvaW50c1tsaW5lUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgb2JqZWN0LmNvbm5lY3Rpb24gPSB0cmFuc2Zvcm1Qb2ludFRvQ29ubmVjdGlvbihib2FyZCwgcG9pbnQsIGdlb21ldHJ5KTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBsaW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVmcy5maW5kSW5kZXgob2JqID0+IFBhdGguZXF1YWxzKG9iai5wYXRoLCBwYXRoKSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVdOiBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWZzW2luZGV4XS5wcm9wZXJ0eSA9IHsgLi4ucmVmc1tpbmRleF0ucHJvcGVydHksIFtoYW5kbGVdOiBvYmplY3QgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, createG, distanceBetweenPointAndSegment, drawCircle, idCreator } from '@plait/core';
|
|
1
|
+
import { ACTIVE_STROKE_WIDTH, BoardTransforms, PlaitBoard, PlaitPointerType, RectangleClient, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, Transforms, addSelectedElement, clearSelectedElement, createG, distanceBetweenPointAndSegment, drawCircle, idCreator } from '@plait/core';
|
|
2
2
|
import { BasicShapes, FlowchartSymbols } from '../interfaces/geometry';
|
|
3
3
|
import { Alignment, DEFAULT_FONT_SIZE, buildText, getTextSize } from '@plait/text';
|
|
4
4
|
import { DefaultBasicShapeProperty, DefaultFlowchartPropertyMap, DefaultTextProperty, DrawThemeColors, ShapeDefaultSpace, getFlowchartPointers } from '../constants';
|
|
@@ -9,6 +9,7 @@ import { getShape } from './shape';
|
|
|
9
9
|
import { createLineElement } from './line';
|
|
10
10
|
import { LineMarkerType, LineShape } from '../interfaces';
|
|
11
11
|
import { DefaultLineStyle } from '../constants/line';
|
|
12
|
+
import { getMemorizedLatestByPointer, memorizeLatestShape } from './memorize';
|
|
12
13
|
export const createGeometryElement = (shape, points, text, options = {}, textProperties = {}) => {
|
|
13
14
|
let textOptions = {};
|
|
14
15
|
let alignment = Alignment.center;
|
|
@@ -208,4 +209,24 @@ export const getDefaultTextPoints = (board, centerPoint, fontSize) => {
|
|
|
208
209
|
const property = getDefaultTextShapeProperty(board, fontSize);
|
|
209
210
|
return getPointsByCenterPoint(centerPoint, property.width, property.height);
|
|
210
211
|
};
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUVwQixPQUFPLEVBQ1AsOEJBQThCLEVBQzlCLFVBQVUsRUFDVixTQUFTLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFrQixXQUFXLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBYyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9GLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLG1CQUFtQixFQUVuQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUN2QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU1yRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNqQyxLQUFxQixFQUNyQixNQUFzQixFQUN0QixJQUFzQixFQUN0QixV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QUFDLENBQUM7S0FDbkU7U0FBTTtRQUNILE9BQU8seUJBQXlCLENBQUM7S0FDcEM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsV0FBa0IsRUFBRSxRQUEwQixFQUFFLEVBQUU7SUFDdEcsTUFBTSxRQUFRLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlELE9BQU8sc0JBQXNCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgIFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgIFRoZW1lQ29sb3JNb2RlLFxuICAgIGNyZWF0ZUcsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50LFxuICAgIGRyYXdDaXJjbGUsXG4gICAgaWRDcmVhdG9yXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEdlb21ldHJ5U2hhcGVzLCBCYXNpY1NoYXBlcywgUGxhaXRHZW9tZXRyeSwgRmxvd2NoYXJ0U3ltYm9scyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBDdXN0b21UZXh0LCBERUZBVUxUX0ZPTlRfU0laRSwgYnVpbGRUZXh0LCBnZXRUZXh0U2l6ZSB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQge1xuICAgIERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHksXG4gICAgRGVmYXVsdEZsb3djaGFydFByb3BlcnR5TWFwLFxuICAgIERlZmF1bHRUZXh0UHJvcGVydHksXG4gICAgRHJhd1BvaW50ZXJUeXBlLFxuICAgIERyYXdUaGVtZUNvbG9ycyxcbiAgICBTaGFwZURlZmF1bHRTcGFjZSxcbiAgICBnZXRGbG93Y2hhcnRQb2ludGVyc1xufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiwgZ2V0UmVjdGFuZ2xlQnlQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi9zdHlsZS9zdHJva2UnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBnZXRTaGFwZSB9IGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IHsgY3JlYXRlTGluZUVsZW1lbnQgfSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgTGluZU1hcmtlclR5cGUsIExpbmVTaGFwZSwgUGxhaXRTaGFwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGVmYXVsdExpbmVTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9saW5lJztcblxuZXhwb3J0IHR5cGUgR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSBQaWNrPFBsYWl0R2VvbWV0cnksICdmaWxsJyB8ICdzdHJva2VDb2xvcicgfCAnc3Ryb2tlV2lkdGgnPjtcblxuZXhwb3J0IHR5cGUgVGV4dFByb3BlcnRpZXMgPSBQYXJ0aWFsPEN1c3RvbVRleHQ+ICYgeyBhbGlnbj86IEFsaWdubWVudDsgdGV4dEhlaWdodD86IG51bWJlciB9O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsXG4gICAgb3B0aW9uczogR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSB7fSxcbiAgICB0ZXh0UHJvcGVydGllczogVGV4dFByb3BlcnRpZXMgPSB7fVxuKTogUGxhaXRHZW9tZXRyeSA9PiB7XG4gICAgbGV0IHRleHRPcHRpb25zID0ge307XG4gICAgbGV0IGFsaWdubWVudDogdW5kZWZpbmVkIHwgQWxpZ25tZW50ID0gQWxpZ25tZW50LmNlbnRlcjtcbiAgICBsZXQgdGV4dEhlaWdodCA9IERlZmF1bHRUZXh0UHJvcGVydHkuaGVpZ2h0O1xuICAgIGlmIChzaGFwZSA9PT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICB0ZXh0T3B0aW9ucyA9IHsgYXV0b1NpemU6IHRydWUgfTtcbiAgICAgICAgYWxpZ25tZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0ZXh0UHJvcGVydGllcyA9IHsgLi4udGV4dFByb3BlcnRpZXMgfTtcbiAgICB0ZXh0UHJvcGVydGllcz8uYWxpZ24gJiYgKGFsaWdubWVudCA9IHRleHRQcm9wZXJ0aWVzPy5hbGlnbik7XG4gICAgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQgJiYgKHRleHRIZWlnaHQgPSB0ZXh0UHJvcGVydGllcz8udGV4dEhlaWdodCk7XG4gICAgZGVsZXRlIHRleHRQcm9wZXJ0aWVzPy5hbGlnbjtcbiAgICBkZWxldGUgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgYW5nbGU6IDAsXG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIHRleHRIZWlnaHQsXG4gICAgICAgIHRleHQ6IGJ1aWxkVGV4dCh0ZXh0LCBhbGlnbm1lbnQsIHRleHRQcm9wZXJ0aWVzKSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi50ZXh0T3B0aW9ucyxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRzQnlDZW50ZXJQb2ludCA9IChwb2ludDogUG9pbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogW1BvaW50LCBQb2ludF0gPT4ge1xuICAgIGNvbnN0IGxlZnRUb3BQb2ludDogUG9pbnQgPSBbcG9pbnRbMF0gLSB3aWR0aCAvIDIsIHBvaW50WzFdIC0gaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgcmlnaHRCb3R0b21Qb2ludDogUG9pbnQgPSBbcG9pbnRbMF0gKyB3aWR0aCAvIDIsIHBvaW50WzFdICsgaGVpZ2h0IC8gMl07XG5cbiAgICByZXR1cm4gW2xlZnRUb3BQb2ludCwgcmlnaHRCb3R0b21Qb2ludF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dFJlY3RhbmdsZSA9IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgZWxlbWVudFJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LnRleHRIZWlnaHQ7XG4gICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3Qm91bmRNYXNrID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgRyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBQ1RJVkVfU1RST0tFX1dJRFRIKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlKGVsZW1lbnQpO1xuICAgIGNvbnN0IG1hc2tHID0gZHJhd0dlb21ldHJ5KGJvYXJkLCBhY3RpdmVSZWN0YW5nbGUsIHNoYXBlLCB7XG4gICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgIGZpbGw6IFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICB9KTtcbiAgICBHLmFwcGVuZENoaWxkKG1hc2tHKTtcbiAgICBjb25zdCBjb25uZWN0b3JQb2ludHMgPSBnZXRFbmdpbmUoc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhhY3RpdmVSZWN0YW5nbGUpO1xuICAgIGNvbm5lY3RvclBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgY29uc3QgY2lyY2xlRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIHBvaW50LCA2LCB7XG4gICAgICAgICAgICBzdHJva2U6ICcjOTk5OTk5JyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgZmlsbDogJyNGRkYnLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH0pO1xuICAgICAgICBHLmFwcGVuZENoaWxkKGNpcmNsZUcpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIEc7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0dlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBzaGFwZTogR2VvbWV0cnlTaGFwZXMsIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gZ2V0RW5naW5lKHNoYXBlKS5kcmF3KGJvYXJkLCBvdXRlclJlY3RhbmdsZSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmVhcmVzdFBvaW50ID0gKGVsZW1lbnQ6IFBsYWl0U2hhcGUsIHBvaW50OiBQb2ludCwgaW5mbGF0ZURlbHRhID0gMCkgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIGluZmxhdGVEZWx0YSk7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShlbGVtZW50KTtcbiAgICByZXR1cm4gZ2V0RW5naW5lKHNoYXBlKS5nZXROZWFyZXN0UG9pbnQoYWN0aXZlUmVjdGFuZ2xlLCBwb2ludCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2VudGVyUG9pbnRzT25Qb2x5Z29uID0gKHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIGNvbnN0IGNlbnRlclBvaW50OiBQb2ludFtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGogPSBpID09IHBvaW50cy5sZW5ndGggLSAxID8gMCA6IGkgKyAxO1xuICAgICAgICBjZW50ZXJQb2ludC5wdXNoKFsocG9pbnRzW2ldWzBdICsgcG9pbnRzW2pdWzBdKSAvIDIsIChwb2ludHNbaV1bMV0gKyBwb2ludHNbal1bMV0pIC8gMl0pO1xuICAgIH1cbiAgICByZXR1cm4gY2VudGVyUG9pbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWRnZU9uUG9seWdvbkJ5UG9pbnQgPSAoY29ybmVyczogUG9pbnRbXSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8PSBjb3JuZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBsZXQgc3RhcnQgPSBjb3JuZXJzW2luZGV4IC0gMV07XG4gICAgICAgIGxldCBlbmQgPSBpbmRleCA9PT0gY29ybmVycy5sZW5ndGggPyBjb3JuZXJzWzBdIDogY29ybmVyc1tpbmRleF07XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50WzBdLCBwb2ludFsxXSwgc3RhcnRbMF0sIHN0YXJ0WzFdLCBlbmRbMF0sIGVuZFsxXSk7XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBbc3RhcnQsIGVuZF0gYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5ID0gKHN5bWJvbDogRmxvd2NoYXJ0U3ltYm9scykgPT4ge1xuICAgIHJldHVybiBEZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHlNYXBbc3ltYm9sXTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0Rmxvd2NoYXJ0ID0gKHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGRlY2lzaW9uUHJvcGVydHkgPSBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkoRmxvd2NoYXJ0U3ltYm9scy5kZWNpc2lvbik7XG4gICAgY29uc3QgcHJvY2Vzc1Byb3BlcnR5ID0gZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5KEZsb3djaGFydFN5bWJvbHMucHJvY2Vzcyk7XG4gICAgY29uc3QgdGVybWluYWxQcm9wZXJ0eSA9IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIHN0cm9rZVdpZHRoOiBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5LnN0cm9rZVdpZHRoXG4gICAgfTtcblxuICAgIGNvbnN0IGxpbmVPcHRpb25zID0ge1xuICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdExpbmVTdHlsZS5zdHJva2VXaWR0aFxuICAgIH07XG4gICAgY29uc3Qgc3RhcnRFbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCwgcG9pbnQpLFxuICAgICAgICAn5byA5aeLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBwcm9jZXNzUG9pbnQxOiBQb2ludCA9IFtwb2ludFswXSwgcG9pbnRbMV0gKyB0ZXJtaW5hbFByb3BlcnR5LmhlaWdodCAvIDIgKyA1NSArIHByb2Nlc3NQcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBwcm9jZXNzRWxlbWVudDEgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMucHJvY2VzcyxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKEZsb3djaGFydFN5bWJvbHMucHJvY2VzcywgcHJvY2Vzc1BvaW50MSksXG4gICAgICAgICfov4fnqIsnLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGRlY2lzaW9uUG9pbnQ6IFBvaW50ID0gW3Byb2Nlc3NQb2ludDFbMF0sIHByb2Nlc3NQb2ludDFbMV0gKyBwcm9jZXNzUHJvcGVydHkuaGVpZ2h0IC8gMiArIDU1ICsgZGVjaXNpb25Qcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBkZWNpc2lvbkVsZW1lbnQgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMuZGVjaXNpb24sXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLmRlY2lzaW9uLCBkZWNpc2lvblBvaW50KSxcbiAgICAgICAgJ+i/h+eoiycsXG4gICAgICAgIG9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc1BvaW50MjogUG9pbnQgPSBbZGVjaXNpb25Qb2ludFswXSArIGRlY2lzaW9uUHJvcGVydHkud2lkdGggLyAyICsgNzUgKyBwcm9jZXNzUHJvcGVydHkud2lkdGggLyAyLCBkZWNpc2lvblBvaW50WzFdXTtcbiAgICBjb25zdCBwcm9jZXNzRWxlbWVudDIgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMucHJvY2VzcyxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKEZsb3djaGFydFN5bWJvbHMucHJvY2VzcywgcHJvY2Vzc1BvaW50MiksXG4gICAgICAgICfov4fnqIsnLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGVuZFBvaW50OiBQb2ludCA9IFtkZWNpc2lvblBvaW50WzBdLCBkZWNpc2lvblBvaW50WzFdICsgZGVjaXNpb25Qcm9wZXJ0eS5oZWlnaHQgLyAyICsgOTUgKyB0ZXJtaW5hbFByb3BlcnR5LmhlaWdodCAvIDJdO1xuICAgIGNvbnN0IGVuZEVsZW1lbnQgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMudGVybWluYWwsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLCBlbmRQb2ludCksXG4gICAgICAgICfnu5PmnZ8nLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmUxID0gY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgIExpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMC41LCAxXSwgYm91bmRJZDogc3RhcnRFbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzAuNSwgMF0sIGJvdW5kSWQ6IHByb2Nlc3NFbGVtZW50MS5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTIgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDEuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMC41LCAwXSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICBsaW5lT3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBsaW5lMyA9IGNyZWF0ZUxpbmVFbGVtZW50KFxuICAgICAgICBMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogWzAuNSwgMV0sIGJvdW5kSWQ6IGRlY2lzaW9uRWxlbWVudC5pZCB9LFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFswLjUsIDBdLCBib3VuZElkOiBlbmRFbGVtZW50LmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+aYrycpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTQgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFsxLCAwLjVdLCBib3VuZElkOiBkZWNpc2lvbkVsZW1lbnQuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMCwgMC41XSwgYm91bmRJZDogcHJvY2Vzc0VsZW1lbnQyLmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+WQpicpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTUgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDIuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMSwgMC41XSwgYm91bmRJZDogZW5kRWxlbWVudC5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIFtzdGFydEVsZW1lbnQsIHByb2Nlc3NFbGVtZW50MSwgZGVjaXNpb25FbGVtZW50LCBwcm9jZXNzRWxlbWVudDIsIGVuZEVsZW1lbnQsIGxpbmUxLCBsaW5lMiwgbGluZTMsIGxpbmU0LCBsaW5lNV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXV0b0NvbXBsZXRlUG9pbnRzID0gKGVsZW1lbnQ6IFBsYWl0U2hhcGUpID0+IHtcbiAgICBjb25zdCBBdXRvQ29tcGxldGVNYXJnaW4gPSAoMTIgKyBSRVNJWkVfSEFORExFX0RJQU1FVEVSIC8gMikgKiAyO1xuICAgIGxldCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBdXRvQ29tcGxldGVNYXJnaW4pO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCA9IChtb3ZpbmdQb2ludDogUG9pbnQsIHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIHJldHVybiBwb2ludHMuZmluZEluZGV4KHBvaW50ID0+IHtcbiAgICAgICAgY29uc3QgbW92aW5nUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFttb3ZpbmdQb2ludF0pO1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludF0pO1xuICAgICAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIFJFU0laRV9IQU5ETEVfRElBTUVURVIpO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KG1vdmluZ1JlY3RhbmdsZSwgcmVjdGFuZ2xlKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREcmF3RGVmYXVsdFN0cm9rZUNvbG9yID0gKHRoZW1lOiBUaGVtZUNvbG9yTW9kZSkgPT4ge1xuICAgIHJldHVybiBEcmF3VGhlbWVDb2xvcnNbdGhlbWVdLnN0cm9rZUNvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZsb3djaGFydERlZmF1bHRGaWxsID0gKHRoZW1lOiBUaGVtZUNvbG9yTW9kZSkgPT4ge1xuICAgIHJldHVybiBEcmF3VGhlbWVDb2xvcnNbdGhlbWVdLmZpbGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFRleHRTaGFwZVByb3BlcnR5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGZvbnRTaXplID0gZm9udFNpemUgPyBOdW1iZXIoZm9udFNpemUpIDogREVGQVVMVF9GT05UX1NJWkU7XG4gICAgY29uc3QgdGV4dFNpemUgPSBnZXRUZXh0U2l6ZShib2FyZCwgJ+aWh+acrCcsIDEwLCB7IGZvbnRTaXplIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0ZXh0U2l6ZS53aWR0aCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyLFxuICAgICAgICBoZWlnaHQ6IHRleHRTaXplLmhlaWdodCxcbiAgICAgICAgdGV4dDogJ+aWh+acrCdcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyA9IChwb2ludGVyOiBEcmF3UG9pbnRlclR5cGUsIGNlbnRlclBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wZXJ0eSA9IGdldERlZmF1bHRHZW9tZXRyeVByb3BlcnR5KHBvaW50ZXIpO1xuICAgIHJldHVybiBnZXRQb2ludHNCeUNlbnRlclBvaW50KGNlbnRlclBvaW50LCBkZWZhdWx0UHJvcGVydHkud2lkdGgsIGRlZmF1bHRQcm9wZXJ0eS5oZWlnaHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRHZW9tZXRyeVByb3BlcnR5ID0gKHBvaW50ZXI6IERyYXdQb2ludGVyVHlwZSkgPT4ge1xuICAgIGNvbnN0IGlzRmxvd0NoYXJ0ID0gZ2V0Rmxvd2NoYXJ0UG9pbnRlcnMoKS5pbmNsdWRlcyhwb2ludGVyKTtcbiAgICBpZiAoaXNGbG93Q2hhcnQpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShwb2ludGVyIGFzIEZsb3djaGFydFN5bWJvbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5O1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VGV4dFBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgY2VudGVyUG9pbnQ6IFBvaW50LCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0RGVmYXVsdFRleHRTaGFwZVByb3BlcnR5KGJvYXJkLCBmb250U2l6ZSk7XG4gICAgcmV0dXJuIGdldFBvaW50c0J5Q2VudGVyUG9pbnQoY2VudGVyUG9pbnQsIHByb3BlcnR5LndpZHRoLCBwcm9wZXJ0eS5oZWlnaHQpO1xufTtcbiJdfQ==
|
|
212
|
+
export const insertElement = (board, element) => {
|
|
213
|
+
memorizeLatestShape(board, element.shape);
|
|
214
|
+
Transforms.insertNode(board, element, [board.children.length]);
|
|
215
|
+
clearSelectedElement(board);
|
|
216
|
+
addSelectedElement(board, element);
|
|
217
|
+
BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
|
|
218
|
+
};
|
|
219
|
+
export const createDefaultText = (board, points) => {
|
|
220
|
+
const memorizedLatest = getMemorizedLatestByPointer(BasicShapes.text);
|
|
221
|
+
const property = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']);
|
|
222
|
+
return createGeometryElement(BasicShapes.text, points, DefaultTextProperty.text, memorizedLatest.geometryProperties, { ...memorizedLatest.textProperties, textHeight: property.height });
|
|
223
|
+
};
|
|
224
|
+
export const createDefaultGeometry = (board, points, shape) => {
|
|
225
|
+
const memorizedLatest = getMemorizedLatestByPointer(shape);
|
|
226
|
+
const textHeight = getDefaultTextShapeProperty(board, memorizedLatest.textProperties['font-size']).height;
|
|
227
|
+
return createGeometryElement(shape, points, '', {
|
|
228
|
+
strokeWidth: DefaultBasicShapeProperty.strokeWidth,
|
|
229
|
+
...memorizedLatest.geometryProperties
|
|
230
|
+
}, { ...memorizedLatest.textProperties, textHeight });
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixVQUFVLEVBQ1YsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBRXBCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCw4QkFBOEIsRUFDOUIsVUFBVSxFQUNWLFNBQVMsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQWtCLFdBQVcsRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsU0FBUyxFQUFjLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0YsT0FBTyxFQUNILHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBRW5CLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwy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UUFBUSxHQUFHLDJCQUEyQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDakcsT0FBTyxxQkFBcUIsQ0FDeEIsV0FBVyxDQUFDLElBQUksRUFDaEIsTUFBTSxFQUNOLG1CQUFtQixDQUFDLElBQUksRUFDeEIsZUFBZSxDQUFDLGtCQUEwQyxFQUMxRCxFQUFFLEdBQUcsZUFBZSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUNyRSxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsS0FBcUIsRUFBRSxFQUFFO0lBQ3RHLE1BQU0sZUFBZSxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELE1BQU0sVUFBVSxHQUFHLDJCQUEyQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFHLE9BQU8scUJBQXFCLENBQ3hCLEtBQUssRUFDTCxNQUFNLEVBQ04sRUFBRSxFQUNGO1FBQ0ksV0FBVyxFQUFFLHlCQUF5QixDQUFDLFdBQVc7UUFDbEQsR0FBSSxlQUFlLENBQUMsa0JBQTJDO0tBQ2xFLEVBQ0QsRUFBRSxHQUFHLGVBQWUsQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQ3BELENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgQm9hcmRUcmFuc2Zvcm1zLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICBUaGVtZUNvbG9yTW9kZSxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIGFkZFNlbGVjdGVkRWxlbWVudCxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBjcmVhdGVHLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudCxcbiAgICBkcmF3Q2lyY2xlLFxuICAgIGlkQ3JlYXRvclxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBHZW9tZXRyeVNoYXBlcywgQmFzaWNTaGFwZXMsIFBsYWl0R2VvbWV0cnksIEZsb3djaGFydFN5bWJvbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7IEFsaWdubWVudCwgQ3VzdG9tVGV4dCwgREVGQVVMVF9GT05UX1NJWkUsIGJ1aWxkVGV4dCwgZ2V0VGV4dFNpemUgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHtcbiAgICBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5LFxuICAgIERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eU1hcCxcbiAgICBEZWZhdWx0VGV4dFByb3BlcnR5LFxuICAgIERyYXdQb2ludGVyVHlwZSxcbiAgICBEcmF3VGhlbWVDb2xvcnMsXG4gICAgU2hhcGVEZWZhdWx0U3BhY2UsXG4gICAgZ2V0Rmxvd2NoYXJ0UG9pbnRlcnNcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFJFU0laRV9IQU5ETEVfRElBTUVURVIsIGdldFJlY3RhbmdsZUJ5UG9pbnRzIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4vc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0U2hhcGUgfSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGNyZWF0ZUxpbmVFbGVtZW50IH0gZnJvbSAnLi9saW5lJztcbmltcG9ydCB7IExpbmVNYXJrZXJUeXBlLCBMaW5lU2hhcGUsIFBsYWl0U2hhcGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlZmF1bHRMaW5lU3R5bGUgfSBmcm9tICcuLi9jb25zdGFudHMvbGluZSc7XG5pbXBvcnQgeyBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIsIG1lbW9yaXplTGF0ZXN0U2hhcGUgfSBmcm9tICcuL21lbW9yaXplJztcblxuZXhwb3J0IHR5cGUgR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSBQaWNrPFBsYWl0R2VvbWV0cnksICdmaWxsJyB8ICdzdHJva2VDb2xvcicgfCAnc3Ryb2tlV2lkdGgnPjtcblxuZXhwb3J0IHR5cGUgVGV4dFByb3BlcnRpZXMgPSBQYXJ0aWFsPEN1c3RvbVRleHQ+ICYgeyBhbGlnbj86IEFsaWdubWVudDsgdGV4dEhlaWdodD86IG51bWJlciB9O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsXG4gICAgb3B0aW9uczogR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSB7fSxcbiAgICB0ZXh0UHJvcGVydGllczogVGV4dFByb3BlcnRpZXMgPSB7fVxuKTogUGxhaXRHZW9tZXRyeSA9PiB7XG4gICAgbGV0IHRleHRPcHRpb25zID0ge307XG4gICAgbGV0IGFsaWdubWVudDogdW5kZWZpbmVkIHwgQWxpZ25tZW50ID0gQWxpZ25tZW50LmNlbnRlcjtcbiAgICBsZXQgdGV4dEhlaWdodCA9IERlZmF1bHRUZXh0UHJvcGVydHkuaGVpZ2h0O1xuICAgIGlmIChzaGFwZSA9PT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICB0ZXh0T3B0aW9ucyA9IHsgYXV0b1NpemU6IHRydWUgfTtcbiAgICAgICAgYWxpZ25tZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0ZXh0UHJvcGVydGllcyA9IHsgLi4udGV4dFByb3BlcnRpZXMgfTtcbiAgICB0ZXh0UHJvcGVydGllcz8uYWxpZ24gJiYgKGFsaWdubWVudCA9IHRleHRQcm9wZXJ0aWVzPy5hbGlnbik7XG4gICAgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQgJiYgKHRleHRIZWlnaHQgPSB0ZXh0UHJvcGVydGllcz8udGV4dEhlaWdodCk7XG4gICAgZGVsZXRlIHRleHRQcm9wZXJ0aWVzPy5hbGlnbjtcbiAgICBkZWxldGUgdGV4dFByb3BlcnRpZXM/LnRleHRIZWlnaHQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgYW5nbGU6IDAsXG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIHRleHRIZWlnaHQsXG4gICAgICAgIHRleHQ6IGJ1aWxkVGV4dCh0ZXh0LCBhbGlnbm1lbnQsIHRleHRQcm9wZXJ0aWVzKSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi50ZXh0T3B0aW9ucyxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRzQnlDZW50ZXJQb2ludCA9IChwb2ludDogUG9pbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogW1BvaW50LCBQb2ludF0gPT4ge1xuICAgIGNvbnN0IGxlZnRUb3BQb2ludDogUG9pbnQgPSBbcG9pbnRbMF0gLSB3aWR0aCAvIDIsIHBvaW50WzFdIC0gaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgcmlnaHRCb3R0b21Qb2ludDogUG9pbnQgPSBbcG9pbnRbMF0gKyB3aWR0aCAvIDIsIHBvaW50WzFdICsgaGVpZ2h0IC8gMl07XG5cbiAgICByZXR1cm4gW2xlZnRUb3BQb2ludCwgcmlnaHRCb3R0b21Qb2ludF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dFJlY3RhbmdsZSA9IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgZWxlbWVudFJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzISk7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LnRleHRIZWlnaHQ7XG4gICAgY29uc3Qgd2lkdGggPSBlbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCAqIDIgLSBzdHJva2VXaWR0aCAqIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aDogd2lkdGggPiAwID8gd2lkdGggOiAwLFxuICAgICAgICB4OiBlbGVtZW50UmVjdGFuZ2xlLnggKyBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHk6IGVsZW1lbnRSZWN0YW5nbGUueSArIChlbGVtZW50UmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3Qm91bmRNYXNrID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgRyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBQ1RJVkVfU1RST0tFX1dJRFRIKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlKGVsZW1lbnQpO1xuICAgIGNvbnN0IG1hc2tHID0gZHJhd0dlb21ldHJ5KGJvYXJkLCBhY3RpdmVSZWN0YW5nbGUsIHNoYXBlLCB7XG4gICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgIGZpbGw6IFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICB9KTtcbiAgICBHLmFwcGVuZENoaWxkKG1hc2tHKTtcbiAgICBjb25zdCBjb25uZWN0b3JQb2ludHMgPSBnZXRFbmdpbmUoc2hhcGUpLmdldENvbm5lY3RvclBvaW50cyhhY3RpdmVSZWN0YW5nbGUpO1xuICAgIGNvbm5lY3RvclBvaW50cy5mb3JFYWNoKHBvaW50ID0+IHtcbiAgICAgICAgY29uc3QgY2lyY2xlRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIHBvaW50LCA2LCB7XG4gICAgICAgICAgICBzdHJva2U6ICcjOTk5OTk5JyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgZmlsbDogJyNGRkYnLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH0pO1xuICAgICAgICBHLmFwcGVuZENoaWxkKGNpcmNsZUcpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIEc7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0dlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBvdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBzaGFwZTogR2VvbWV0cnlTaGFwZXMsIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gZ2V0RW5naW5lKHNoYXBlKS5kcmF3KGJvYXJkLCBvdXRlclJlY3RhbmdsZSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmVhcmVzdFBvaW50ID0gKGVsZW1lbnQ6IFBsYWl0U2hhcGUsIHBvaW50OiBQb2ludCwgaW5mbGF0ZURlbHRhID0gMCkgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKGVsZW1lbnQucG9pbnRzKTtcbiAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIGluZmxhdGVEZWx0YSk7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShlbGVtZW50KTtcbiAgICByZXR1cm4gZ2V0RW5naW5lKHNoYXBlKS5nZXROZWFyZXN0UG9pbnQoYWN0aXZlUmVjdGFuZ2xlLCBwb2ludCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2VudGVyUG9pbnRzT25Qb2x5Z29uID0gKHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIGNvbnN0IGNlbnRlclBvaW50OiBQb2ludFtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGogPSBpID09IHBvaW50cy5sZW5ndGggLSAxID8gMCA6IGkgKyAxO1xuICAgICAgICBjZW50ZXJQb2ludC5wdXNoKFsocG9pbnRzW2ldWzBdICsgcG9pbnRzW2pdWzBdKSAvIDIsIChwb2ludHNbaV1bMV0gKyBwb2ludHNbal1bMV0pIC8gMl0pO1xuICAgIH1cbiAgICByZXR1cm4gY2VudGVyUG9pbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWRnZU9uUG9seWdvbkJ5UG9pbnQgPSAoY29ybmVyczogUG9pbnRbXSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8PSBjb3JuZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBsZXQgc3RhcnQgPSBjb3JuZXJzW2luZGV4IC0gMV07XG4gICAgICAgIGxldCBlbmQgPSBpbmRleCA9PT0gY29ybmVycy5sZW5ndGggPyBjb3JuZXJzWzBdIDogY29ybmVyc1tpbmRleF07XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50WzBdLCBwb2ludFsxXSwgc3RhcnRbMF0sIHN0YXJ0WzFdLCBlbmRbMF0sIGVuZFsxXSk7XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBbc3RhcnQsIGVuZF0gYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5ID0gKHN5bWJvbDogRmxvd2NoYXJ0U3ltYm9scykgPT4ge1xuICAgIHJldHVybiBEZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHlNYXBbc3ltYm9sXTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0Rmxvd2NoYXJ0ID0gKHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGRlY2lzaW9uUHJvcGVydHkgPSBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkoRmxvd2NoYXJ0U3ltYm9scy5kZWNpc2lvbik7XG4gICAgY29uc3QgcHJvY2Vzc1Byb3BlcnR5ID0gZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5KEZsb3djaGFydFN5bWJvbHMucHJvY2Vzcyk7XG4gICAgY29uc3QgdGVybWluYWxQcm9wZXJ0eSA9IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIHN0cm9rZVdpZHRoOiBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5LnN0cm9rZVdpZHRoXG4gICAgfTtcblxuICAgIGNvbnN0IGxpbmVPcHRpb25zID0ge1xuICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdExpbmVTdHlsZS5zdHJva2VXaWR0aFxuICAgIH07XG4gICAgY29uc3Qgc3RhcnRFbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCwgcG9pbnQpLFxuICAgICAgICAn5byA5aeLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBwcm9jZXNzUG9pbnQxOiBQb2ludCA9IFtwb2ludFswXSwgcG9pbnRbMV0gKyB0ZXJtaW5hbFByb3BlcnR5LmhlaWdodCAvIDIgKyA1NSArIHByb2Nlc3NQcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBwcm9jZXNzRWxlbWVudDEgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMucHJvY2VzcyxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKEZsb3djaGFydFN5bWJvbHMucHJvY2VzcywgcHJvY2Vzc1BvaW50MSksXG4gICAgICAgICfov4fnqIsnLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGRlY2lzaW9uUG9pbnQ6IFBvaW50ID0gW3Byb2Nlc3NQb2ludDFbMF0sIHByb2Nlc3NQb2ludDFbMV0gKyBwcm9jZXNzUHJvcGVydHkuaGVpZ2h0IC8gMiArIDU1ICsgZGVjaXNpb25Qcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBkZWNpc2lvbkVsZW1lbnQgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMuZGVjaXNpb24sXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLmRlY2lzaW9uLCBkZWNpc2lvblBvaW50KSxcbiAgICAgICAgJ+i/h+eoiycsXG4gICAgICAgIG9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc1BvaW50MjogUG9pbnQgPSBbZGVjaXNpb25Qb2ludFswXSArIGRlY2lzaW9uUHJvcGVydHkud2lkdGggLyAyICsgNzUgKyBwcm9jZXNzUHJvcGVydHkud2lkdGggLyAyLCBkZWNpc2lvblBvaW50WzFdXTtcbiAgICBjb25zdCBwcm9jZXNzRWxlbWVudDIgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMucHJvY2VzcyxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKEZsb3djaGFydFN5bWJvbHMucHJvY2VzcywgcHJvY2Vzc1BvaW50MiksXG4gICAgICAgICfov4fnqIsnLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGVuZFBvaW50OiBQb2ludCA9IFtkZWNpc2lvblBvaW50WzBdLCBkZWNpc2lvblBvaW50WzFdICsgZGVjaXNpb25Qcm9wZXJ0eS5oZWlnaHQgLyAyICsgOTUgKyB0ZXJtaW5hbFByb3BlcnR5LmhlaWdodCAvIDJdO1xuICAgIGNvbnN0IGVuZEVsZW1lbnQgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMudGVybWluYWwsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLCBlbmRQb2ludCksXG4gICAgICAgICfnu5PmnZ8nLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmUxID0gY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgIExpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMC41LCAxXSwgYm91bmRJZDogc3RhcnRFbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzAuNSwgMF0sIGJvdW5kSWQ6IHByb2Nlc3NFbGVtZW50MS5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTIgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDEuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMC41LCAwXSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICBsaW5lT3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBsaW5lMyA9IGNyZWF0ZUxpbmVFbGVtZW50KFxuICAgICAgICBMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogWzAuNSwgMV0sIGJvdW5kSWQ6IGRlY2lzaW9uRWxlbWVudC5pZCB9LFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFswLjUsIDBdLCBib3VuZElkOiBlbmRFbGVtZW50LmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+aYrycpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTQgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFsxLCAwLjVdLCBib3VuZElkOiBkZWNpc2lvbkVsZW1lbnQuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMCwgMC41XSwgYm91bmRJZDogcHJvY2Vzc0VsZW1lbnQyLmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+WQpicpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTUgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDIuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMSwgMC41XSwgYm91bmRJZDogZW5kRWxlbWVudC5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIFtzdGFydEVsZW1lbnQsIHByb2Nlc3NFbGVtZW50MSwgZGVjaXNpb25FbGVtZW50LCBwcm9jZXNzRWxlbWVudDIsIGVuZEVsZW1lbnQsIGxpbmUxLCBsaW5lMiwgbGluZTMsIGxpbmU0LCBsaW5lNV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXV0b0NvbXBsZXRlUG9pbnRzID0gKGVsZW1lbnQ6IFBsYWl0U2hhcGUpID0+IHtcbiAgICBjb25zdCBBdXRvQ29tcGxldGVNYXJnaW4gPSAoMTIgKyBSRVNJWkVfSEFORExFX0RJQU1FVEVSIC8gMikgKiAyO1xuICAgIGxldCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBdXRvQ29tcGxldGVNYXJnaW4pO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCA9IChtb3ZpbmdQb2ludDogUG9pbnQsIHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIHJldHVybiBwb2ludHMuZmluZEluZGV4KHBvaW50ID0+IHtcbiAgICAgICAgY29uc3QgbW92aW5nUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFttb3ZpbmdQb2ludF0pO1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludF0pO1xuICAgICAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIFJFU0laRV9IQU5ETEVfRElBTUVURVIpO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KG1vdmluZ1JlY3RhbmdsZSwgcmVjdGFuZ2xlKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREcmF3RGVmYXVsdFN0cm9rZUNvbG9yID0gKHRoZW1lOiBUaGVtZUNvbG9yTW9kZSkgPT4ge1xuICAgIHJldHVybiBEcmF3VGhlbWVDb2xvcnNbdGhlbWVdLnN0cm9rZUNvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZsb3djaGFydERlZmF1bHRGaWxsID0gKHRoZW1lOiBUaGVtZUNvbG9yTW9kZSkgPT4ge1xuICAgIHJldHVybiBEcmF3VGhlbWVDb2xvcnNbdGhlbWVdLmZpbGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFRleHRTaGFwZVByb3BlcnR5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGZvbnRTaXplID0gZm9udFNpemUgPyBOdW1iZXIoZm9udFNpemUpIDogREVGQVVMVF9GT05UX1NJWkU7XG4gICAgY29uc3QgdGV4dFNpemUgPSBnZXRUZXh0U2l6ZShib2FyZCwgJ+aWh+acrCcsIDEwLCB7IGZvbnRTaXplIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0ZXh0U2l6ZS53aWR0aCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyLFxuICAgICAgICBoZWlnaHQ6IHRleHRTaXplLmhlaWdodCxcbiAgICAgICAgdGV4dDogJ+aWh+acrCdcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyA9IChwb2ludGVyOiBEcmF3UG9pbnRlclR5cGUsIGNlbnRlclBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wZXJ0eSA9IGdldERlZmF1bHRHZW9tZXRyeVByb3BlcnR5KHBvaW50ZXIpO1xuICAgIHJldHVybiBnZXRQb2ludHNCeUNlbnRlclBvaW50KGNlbnRlclBvaW50LCBkZWZhdWx0UHJvcGVydHkud2lkdGgsIGRlZmF1bHRQcm9wZXJ0eS5oZWlnaHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRHZW9tZXRyeVByb3BlcnR5ID0gKHBvaW50ZXI6IERyYXdQb2ludGVyVHlwZSkgPT4ge1xuICAgIGNvbnN0IGlzRmxvd0NoYXJ0ID0gZ2V0Rmxvd2NoYXJ0UG9pbnRlcnMoKS5pbmNsdWRlcyhwb2ludGVyKTtcbiAgICBpZiAoaXNGbG93Q2hhcnQpIHtcbiAgICAgICAgcmV0dXJuIGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShwb2ludGVyIGFzIEZsb3djaGFydFN5bWJvbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBEZWZhdWx0QmFzaWNTaGFwZVByb3BlcnR5O1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VGV4dFBvaW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgY2VudGVyUG9pbnQ6IFBvaW50LCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0RGVmYXVsdFRleHRTaGFwZVByb3BlcnR5KGJvYXJkLCBmb250U2l6ZSk7XG4gICAgcmV0dXJuIGdldFBvaW50c0J5Q2VudGVyUG9pbnQoY2VudGVyUG9pbnQsIHByb3BlcnR5LndpZHRoLCBwcm9wZXJ0eS5oZWlnaHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnkpID0+IHtcbiAgICBtZW1vcml6ZUxhdGVzdFNoYXBlKGJvYXJkLCBlbGVtZW50LnNoYXBlKTtcbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIGVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0VGV4dCA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSkgPT4ge1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlcihCYXNpY1NoYXBlcy50ZXh0KTtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGdldERlZmF1bHRUZXh0U2hhcGVQcm9wZXJ0eShib2FyZCwgbWVtb3JpemVkTGF0ZXN0LnRleHRQcm9wZXJ0aWVzWydmb250LXNpemUnXSk7XG4gICAgcmV0dXJuIGNyZWF0ZUdlb21ldHJ5RWxlbWVudChcbiAgICAgICAgQmFzaWNTaGFwZXMudGV4dCxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICBEZWZhdWx0VGV4dFByb3BlcnR5LnRleHQsXG4gICAgICAgIG1lbW9yaXplZExhdGVzdC5nZW9tZXRyeVByb3BlcnRpZXMgYXMgR2VvbWV0cnlTdHlsZU9wdGlvbnMsXG4gICAgICAgIHsgLi4ubWVtb3JpemVkTGF0ZXN0LnRleHRQcm9wZXJ0aWVzLCB0ZXh0SGVpZ2h0OiBwcm9wZXJ0eS5oZWlnaHQgfVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdEdlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludHM6IFtQb2ludCwgUG9pbnRdLCBzaGFwZTogR2VvbWV0cnlTaGFwZXMpID0+IHtcbiAgICBjb25zdCBtZW1vcml6ZWRMYXRlc3QgPSBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIoc2hhcGUpO1xuICAgIGNvbnN0IHRleHRIZWlnaHQgPSBnZXREZWZhdWx0VGV4dFNoYXBlUHJvcGVydHkoYm9hcmQsIG1lbW9yaXplZExhdGVzdC50ZXh0UHJvcGVydGllc1snZm9udC1zaXplJ10pLmhlaWdodDtcbiAgICByZXR1cm4gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAnJyxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHkuc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgICAuLi4obWVtb3JpemVkTGF0ZXN0Lmdlb21ldHJ5UHJvcGVydGllcyBhcyBHZW9tZXRyeVN0eWxlT3B0aW9ucylcbiAgICAgICAgfSxcbiAgICAgICAgeyAuLi5tZW1vcml6ZWRMYXRlc3QudGV4dFByb3BlcnRpZXMsIHRleHRIZWlnaHQgfVxuICAgICk7XG59O1xuIl19
|