@plait/draw 0.52.0-next.0 → 0.53.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/interfaces/line.mjs +20 -8
- package/esm2022/line.component.mjs +5 -17
- package/esm2022/plugins/with-draw-fragment.mjs +1 -1
- package/esm2022/plugins/with-draw-hotkey.mjs +9 -7
- package/esm2022/plugins/with-draw-resize.mjs +63 -9
- package/esm2022/plugins/with-draw.mjs +2 -9
- package/esm2022/plugins/with-geometry-resize.mjs +14 -4
- package/esm2022/plugins/with-line-auto-complete-reaction.mjs +6 -3
- package/esm2022/plugins/with-line-auto-complete.mjs +5 -5
- package/esm2022/plugins/with-line-bound-reaction.mjs +7 -4
- package/esm2022/plugins/with-line-resize.mjs +3 -3
- package/esm2022/utils/hit.mjs +7 -5
- package/esm2022/utils/line/elbow.mjs +12 -4
- package/esm2022/utils/line/line-basic.mjs +9 -5
- package/esm2022/utils/line/line-common.mjs +25 -13
- package/esm2022/utils/line/line-resize.mjs +6 -10
- package/esm2022/utils/position/geometry.mjs +8 -6
- package/fesm2022/plait-draw.mjs +167 -136
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/with-draw-resize.d.ts +6 -0
- package/utils/line/elbow.d.ts +3 -13
- package/utils/line/line-common.d.ts +3 -13
- package/utils/position/geometry.d.ts +2 -3
- package/esm2022/generators/group.generator.mjs +0 -20
- package/esm2022/group.component.mjs +0 -47
- package/generators/group.generator.d.ts +0 -6
- package/group.component.d.ts +0 -17
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RectangleClient, getSelectedElements } from '@plait/core';
|
|
2
2
|
import { GeometryComponent } from '../geometry.component';
|
|
3
3
|
import { LineComponent } from '../line.component';
|
|
4
4
|
import { PlaitDrawElement } from '../interfaces';
|
|
@@ -17,7 +17,6 @@ import { withLineTextMove } from './with-line-text-move';
|
|
|
17
17
|
import { withDrawResize } from './with-draw-resize';
|
|
18
18
|
import { isHitDrawElement, isHitElementInside, isRectangleHitDrawElement } from '../utils/hit';
|
|
19
19
|
import { getLinePoints, getLineTextRectangle } from '../utils/line/line-basic';
|
|
20
|
-
import { GroupComponent } from '../group.component';
|
|
21
20
|
export const withDraw = (board) => {
|
|
22
21
|
const { drawElement, getRectangle, isRectangleHit, isHit, isInsidePoint, isMovable, isAlign, getRelatedFragment } = board;
|
|
23
22
|
board.drawElement = (context) => {
|
|
@@ -30,9 +29,6 @@ export const withDraw = (board) => {
|
|
|
30
29
|
else if (PlaitDrawElement.isImage(context.element)) {
|
|
31
30
|
return ImageComponent;
|
|
32
31
|
}
|
|
33
|
-
else if (PlaitGroupElement.isGroup(context.element)) {
|
|
34
|
-
return GroupComponent;
|
|
35
|
-
}
|
|
36
32
|
return drawElement(context);
|
|
37
33
|
};
|
|
38
34
|
board.getRectangle = (element) => {
|
|
@@ -51,9 +47,6 @@ export const withDraw = (board) => {
|
|
|
51
47
|
if (PlaitDrawElement.isImage(element)) {
|
|
52
48
|
return RectangleClient.getRectangleByPoints(element.points);
|
|
53
49
|
}
|
|
54
|
-
if (PlaitGroupElement.isGroup(element)) {
|
|
55
|
-
return getRectangleByGroup(board, element);
|
|
56
|
-
}
|
|
57
50
|
return getRectangle(element);
|
|
58
51
|
};
|
|
59
52
|
board.isRectangleHit = (element, selection) => {
|
|
@@ -121,4 +114,4 @@ export const withDraw = (board) => {
|
|
|
121
114
|
};
|
|
122
115
|
return withDrawResize(withLineTextMove(withLineAutoCompleteReaction(withLineText(withLineBoundReaction(withLineResize(withGeometryResize(withLineCreateByDraw(withLineAutoComplete(withGeometryCreateByDrag(withGeometryCreateByDrawing(withDrawFragment(withDrawHotkey(board)))))))))))));
|
|
123
116
|
};
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILGlCQUFpQixFQUdqQixlQUFlLEVBRWYsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUN0QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxP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Q0FDVixrQkFBa0IsQ0FDZCxvQkFBb0IsQ0FDaEIsb0JBQW9CLENBQ2hCLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakcsQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0R3JvdXBFbGVtZW50LFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNlbGVjdGlvbixcbiAgICBnZXRSZWN0YW5nbGVCeUdyb3VwLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlDb21wb25lbnQgfSBmcm9tICcuLi9nZW9tZXRyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2xpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHdpdGhEcmF3SG90a2V5IH0gZnJvbSAnLi93aXRoLWRyYXctaG90a2V5JztcbmltcG9ydCB7IHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhd2luZywgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmFnIH0gZnJvbSAnLi93aXRoLWdlb21ldHJ5LWNyZWF0ZSc7XG5pbXBvcnQgeyB3aXRoRHJhd0ZyYWdtZW50IH0gZnJvbSAnLi93aXRoLWRyYXctZnJhZ21lbnQnO1xuaW1wb3J0IHsgd2l0aExpbmVDcmVhdGVCeURyYXcgfSBmcm9tICcuL3dpdGgtbGluZS1jcmVhdGUnO1xuaW1wb3J0IHsgd2l0aEdlb21ldHJ5UmVzaXplIH0gZnJvbSAnLi93aXRoLWdlb21ldHJ5LXJlc2l6ZSc7XG5pbXBvcnQgeyB3aXRoTGluZVJlc2l6ZSB9IGZyb20gJy4vd2l0aC1saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyB3aXRoTGluZUJvdW5kUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtbGluZS1ib3VuZC1yZWFjdGlvbic7XG5pbXBvcnQgeyB3aXRoTGluZVRleHQgfSBmcm9tICcuL3dpdGgtbGluZS10ZXh0JztcbmltcG9ydCB7IEltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IHdpdGhMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhMaW5lQXV0b0NvbXBsZXRlIH0gZnJvbSAnLi93aXRoLWxpbmUtYXV0by1jb21wbGV0ZSc7XG5pbXBvcnQgeyB3aXRoTGluZVRleHRNb3ZlIH0gZnJvbSAnLi93aXRoLWxpbmUtdGV4dC1tb3ZlJztcbmltcG9ydCB7IHdpdGhEcmF3UmVzaXplIH0gZnJvbSAnLi93aXRoLWRyYXctcmVzaXplJztcbmltcG9ydCB7IGlzSGl0RHJhd0VsZW1lbnQsIGlzSGl0RWxlbWVudEluc2lkZSwgaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2hpdCc7XG5pbXBvcnQgeyBnZXRMaW5lUG9pbnRzLCBnZXRMaW5lVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBHcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2dyb3VwLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCB3aXRoRHJhdyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgZHJhd0VsZW1lbnQsIGdldFJlY3RhbmdsZSwgaXNSZWN0YW5nbGVIaXQsIGlzSGl0LCBpc0luc2lkZVBvaW50LCBpc01vdmFibGUsIGlzQWxpZ24sIGdldFJlbGF0ZWRGcmFnbWVudCB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBMaW5lQ29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VDb21wb25lbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gR3JvdXBDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRyYXdFbGVtZW50KGNvbnRleHQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nZXRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBsaW5lVGV4dFJlY3RhbmdsZXMgPSBlbGVtZW50LnRleHRzLm1hcCgodGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRMaW5lVGV4dFJlY3RhbmdsZShib2FyZCwgZWxlbWVudCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWN0YW5nbGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVQb2ludHNSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoW2xpbmVQb2ludHNSZWN0YW5nbGUsIC4uLmxpbmVUZXh0UmVjdGFuZ2xlc10pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlQnlHcm91cChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNSZWN0YW5nbGVIaXQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpc1JlY3RhbmdsZUhpdERyYXdFbGVtZW50KGJvYXJkLCBlbGVtZW50LCBzZWxlY3Rpb24pO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1JlY3RhbmdsZUhpdChlbGVtZW50LCBzZWxlY3Rpb24pO1xuICAgIH07XG5cbiAgICBib2FyZC5pc0hpdCA9IChlbGVtZW50LCBwb2ludCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpc0hpdERyYXdFbGVtZW50KGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSGl0KGVsZW1lbnQsIHBvaW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNJbnNpZGVQb2ludCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpc0hpdEVsZW1lbnRJbnNpZGUoYm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNJbnNpZGVQb2ludChlbGVtZW50LCBwb2ludCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzTW92YWJsZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gKGJvdW5kSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIXNlbGVjdGVkRWxlbWVudHMuZmluZCh2YWx1ZSA9PiB2YWx1ZS5pZCA9PT0gYm91bmRJZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50LnNvdXJjZS5ib3VuZElkICYmICFlbGVtZW50LnRhcmdldC5ib3VuZElkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5zb3VyY2UuYm91bmRJZCAmJiBpc1NlbGVjdGVkKGVsZW1lbnQuc291cmNlLmJvdW5kSWQpICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnRhcmdldC5ib3VuZElkICYmIGlzU2VsZWN0ZWQoZWxlbWVudC50YXJnZXQuYm91bmRJZCkgJiYgc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc01vdmFibGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzQWxpZ24gPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkgfHwgUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBbGlnbihlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVsYXRlZEZyYWdtZW50ID0gKGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGxpbmVFbGVtZW50cyA9IGJvYXJkLmNoaWxkcmVuLmZpbHRlcihlbGVtZW50ID0+IFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpKTtcbiAgICAgICAgY29uc3QgYWN0aXZlTGluZXMgPSBsaW5lRWxlbWVudHMuZmlsdGVyKGxpbmUgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gc2VsZWN0ZWRFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gbGluZS5zb3VyY2UuYm91bmRJZCk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzZWxlY3RlZEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmlkID09PSBsaW5lLnRhcmdldC5ib3VuZElkKTtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGxpbmUpO1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZSAmJiB0YXJnZXQgJiYgIWlzU2VsZWN0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZ2V0UmVsYXRlZEZyYWdtZW50KFsuLi5lbGVtZW50cywgLi4uYWN0aXZlTGluZXNdKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHdpdGhEcmF3UmVzaXplKFxuICAgICAgICB3aXRoTGluZVRleHRNb3ZlKFxuICAgICAgICAgICAgd2l0aExpbmVBdXRvQ29tcGxldGVSZWFjdGlvbihcbiAgICAgICAgICAgICAgICB3aXRoTGluZVRleHQoXG4gICAgICAgICAgICAgICAgICAgIHdpdGhMaW5lQm91bmRSZWFjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhMaW5lUmVzaXplKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhHZW9tZXRyeVJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aExpbmVDcmVhdGVCeURyYXcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoTGluZUF1dG9Db21wbGV0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYWcod2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmF3aW5nKHdpdGhEcmF3RnJhZ21lbnQod2l0aERyYXdIb3RrZXkoYm9hcmQpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xufTtcbiJdfQ==
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtILGVBQWUsRUFFZixtQkFBbUIsRUFDdEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9C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RUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BGLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsT0FBTyxNQUFNLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7SUFFRixPQUFPLGNBQWMsQ0FDakIsZ0JBQWdCLENBQ1osNEJBQTRCLENBQ3hCLFlBQVksQ0FDUixxQkFBcUIsQ0FDakIsY0FBYyxDQUNWLGtCQUFrQixDQUNkLG9CQUFvQixDQUNoQixvQkFBb0IsQ0FDaEIsd0JBQXdCLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqRyxDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU2VsZWN0aW9uLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlDb21wb25lbnQgfSBmcm9tICcuLi9nZW9tZXRyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2xpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHdpdGhEcmF3SG90a2V5IH0gZnJvbSAnLi93aXRoLWRyYXctaG90a2V5JztcbmltcG9ydCB7IHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhd2luZywgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmFnIH0gZnJvbSAnLi93aXRoLWdlb21ldHJ5LWNyZWF0ZSc7XG5pbXBvcnQgeyB3aXRoRHJhd0ZyYWdtZW50IH0gZnJvbSAnLi93aXRoLWRyYXctZnJhZ21lbnQnO1xuaW1wb3J0IHsgd2l0aExpbmVDcmVhdGVCeURyYXcgfSBmcm9tICcuL3dpdGgtbGluZS1jcmVhdGUnO1xuaW1wb3J0IHsgd2l0aEdlb21ldHJ5UmVzaXplIH0gZnJvbSAnLi93aXRoLWdlb21ldHJ5LXJlc2l6ZSc7XG5pbXBvcnQgeyB3aXRoTGluZVJlc2l6ZSB9IGZyb20gJy4vd2l0aC1saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyB3aXRoTGluZUJvdW5kUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtbGluZS1ib3VuZC1yZWFjdGlvbic7XG5pbXBvcnQgeyB3aXRoTGluZVRleHQgfSBmcm9tICcuL3dpdGgtbGluZS10ZXh0JztcbmltcG9ydCB7IEltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IHdpdGhMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24gfSBmcm9tICcuL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uJztcbmltcG9ydCB7IHdpdGhMaW5lQXV0b0NvbXBsZXRlIH0gZnJvbSAnLi93aXRoLWxpbmUtYXV0by1jb21wbGV0ZSc7XG5pbXBvcnQgeyB3aXRoTGluZVRleHRNb3ZlIH0gZnJvbSAnLi93aXRoLWxpbmUtdGV4dC1tb3ZlJztcbmltcG9ydCB7IHdpdGhEcmF3UmVzaXplIH0gZnJvbSAnLi93aXRoLWRyYXctcmVzaXplJztcbmltcG9ydCB7IGlzSGl0RHJhd0VsZW1lbnQsIGlzSGl0RWxlbWVudEluc2lkZSwgaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2hpdCc7XG5pbXBvcnQgeyBnZXRMaW5lUG9pbnRzLCBnZXRMaW5lVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoRHJhdyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgZHJhd0VsZW1lbnQsIGdldFJlY3RhbmdsZSwgaXNSZWN0YW5nbGVIaXQsIGlzSGl0LCBpc0luc2lkZVBvaW50LCBpc01vdmFibGUsIGlzQWxpZ24sIGdldFJlbGF0ZWRGcmFnbWVudCB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBMaW5lQ29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRyYXdFbGVtZW50KGNvbnRleHQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nZXRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBsaW5lVGV4dFJlY3RhbmdsZXMgPSBlbGVtZW50LnRleHRzLm1hcCgodGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRMaW5lVGV4dFJlY3RhbmdsZShib2FyZCwgZWxlbWVudCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZWN0YW5nbGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVQb2ludHNSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoW2xpbmVQb2ludHNSZWN0YW5nbGUsIC4uLmxpbmVUZXh0UmVjdGFuZ2xlc10pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzUmVjdGFuZ2xlSGl0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNSZWN0YW5nbGVIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXQoZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNIaXQgPSAoZWxlbWVudCwgcG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNIaXREcmF3RWxlbWVudChib2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdChlbGVtZW50LCBwb2ludCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzSW5zaWRlUG9pbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNIaXRFbGVtZW50SW5zaWRlKGJvYXJkLCBlbGVtZW50LCBwb2ludCk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSW5zaWRlUG9pbnQoZWxlbWVudCwgcG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc01vdmFibGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IChib3VuZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFzZWxlY3RlZEVsZW1lbnRzLmZpbmQodmFsdWUgPT4gdmFsdWUuaWQgPT09IGJvdW5kSWQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICghZWxlbWVudC5zb3VyY2UuYm91bmRJZCAmJiAhZWxlbWVudC50YXJnZXQuYm91bmRJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuc291cmNlLmJvdW5kSWQgJiYgaXNTZWxlY3RlZChlbGVtZW50LnNvdXJjZS5ib3VuZElkKSAmJiBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC50YXJnZXQuYm91bmRJZCAmJiBpc1NlbGVjdGVkKGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNNb3ZhYmxlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc0FsaWduID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KGVsZW1lbnQpIHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQWxpZ24oZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdldFJlbGF0ZWRGcmFnbWVudCA9IChlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBsaW5lRWxlbWVudHMgPSBib2FyZC5jaGlsZHJlbi5maWx0ZXIoZWxlbWVudCA9PiBQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUxpbmVzID0gbGluZUVsZW1lbnRzLmZpbHRlcihsaW5lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHNlbGVjdGVkRWxlbWVudHMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGxpbmUuc291cmNlLmJvdW5kSWQpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2VsZWN0ZWRFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gbGluZS50YXJnZXQuYm91bmRJZCk7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhsaW5lKTtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UgJiYgdGFyZ2V0ICYmICFpc1NlbGVjdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdldFJlbGF0ZWRGcmFnbWVudChbLi4uZWxlbWVudHMsIC4uLmFjdGl2ZUxpbmVzXSk7XG4gICAgfTtcblxuICAgIHJldHVybiB3aXRoRHJhd1Jlc2l6ZShcbiAgICAgICAgd2l0aExpbmVUZXh0TW92ZShcbiAgICAgICAgICAgIHdpdGhMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24oXG4gICAgICAgICAgICAgICAgd2l0aExpbmVUZXh0KFxuICAgICAgICAgICAgICAgICAgICB3aXRoTGluZUJvdW5kUmVhY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoTGluZVJlc2l6ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoR2VvbWV0cnlSZXNpemUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhMaW5lQ3JlYXRlQnlEcmF3KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aExpbmVBdXRvQ29tcGxldGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmFnKHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhd2luZyh3aXRoRHJhd0ZyYWdtZW50KHdpdGhEcmF3SG90a2V5KGJvYXJkKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcbn07XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PlaitBoard, PlaitElement, Transforms, getSelectedElements } from '@plait/core';
|
|
2
|
-
import { getFirstTextManage, isCornerHandle, normalizeShapePoints, withResize } from '@plait/common';
|
|
1
|
+
import { PlaitBoard, PlaitElement, RectangleClient, Transforms, getSelectedElements, rotatePoints } from '@plait/core';
|
|
2
|
+
import { getFirstTextManage, isCornerHandle, normalizeShapePoints, withResize, resetPointsAfterResize } from '@plait/common';
|
|
3
3
|
import { getSelectedGeometryElements, getSelectedImageElements } from '../utils/selected';
|
|
4
4
|
import { DrawTransforms } from '../transforms';
|
|
5
5
|
import { PlaitDrawElement } from '../interfaces';
|
|
@@ -22,7 +22,7 @@ export const withGeometryResize = (board) => {
|
|
|
22
22
|
const targetComponent = PlaitElement.getComponent(selectedElements[0]);
|
|
23
23
|
if (targetComponent.activeGenerator.hasResizeHandle) {
|
|
24
24
|
const rectangle = board.getRectangle(target);
|
|
25
|
-
const handleRef = getHitRectangleResizeHandleRef(board, rectangle, point);
|
|
25
|
+
const handleRef = getHitRectangleResizeHandleRef(board, rectangle, point, target.angle);
|
|
26
26
|
if (handleRef) {
|
|
27
27
|
return {
|
|
28
28
|
element: target,
|
|
@@ -35,6 +35,13 @@ export const withGeometryResize = (board) => {
|
|
|
35
35
|
return null;
|
|
36
36
|
},
|
|
37
37
|
onResize: (resizeRef, resizeState) => {
|
|
38
|
+
const centerPoint = RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(resizeRef.element.points));
|
|
39
|
+
const angle = resizeRef.element.angle;
|
|
40
|
+
if (angle) {
|
|
41
|
+
const [rotatedStartPoint, rotateEndPoint] = rotatePoints([resizeState.startPoint, resizeState.endPoint], centerPoint, -resizeRef.element.angle);
|
|
42
|
+
resizeState.startPoint = rotatedStartPoint;
|
|
43
|
+
resizeState.endPoint = rotateEndPoint;
|
|
44
|
+
}
|
|
38
45
|
alignG?.remove();
|
|
39
46
|
const isFromCorner = isCornerHandle(board, resizeRef.handle);
|
|
40
47
|
const isAspectRatio = resizeState.isShift || PlaitDrawElement.isImage(resizeRef.element);
|
|
@@ -46,6 +53,9 @@ export const withGeometryResize = (board) => {
|
|
|
46
53
|
alignG = resizeAlignRef.alignG;
|
|
47
54
|
PlaitBoard.getElementActiveHost(board).append(alignG);
|
|
48
55
|
let points = resizeAlignRef.activePoints;
|
|
56
|
+
if (angle) {
|
|
57
|
+
points = resetPointsAfterResize(resizeRef.rectangle, RectangleClient.getRectangleByPoints(points), centerPoint, RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(points)), angle);
|
|
58
|
+
}
|
|
49
59
|
if (PlaitDrawElement.isGeometry(resizeRef.element)) {
|
|
50
60
|
const { height: textHeight } = getFirstTextManage(resizeRef.element).getSize();
|
|
51
61
|
DrawTransforms.resizeGeometry(board, points, textHeight, resizeRef.path);
|
|
@@ -63,4 +73,4 @@ export const withGeometryResize = (board) => {
|
|
|
63
73
|
withResize(board, options);
|
|
64
74
|
return board;
|
|
65
75
|
};
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nZW9tZXRyeS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtZ2VvbWV0cnktcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUEwQixVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEgsT0FBTyxFQUlILGtCQUFrQixFQUNsQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0NBQWtDLEVBQWdELE1BQU0sb0JBQW9CLENBQUM7QUFDdEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDcEQsSUFBSSxNQUEwQixDQUFDO0lBQy9CLE1BQU0sT0FBTyxHQUFrRDtRQUMzRCxHQUFHLEVBQUUsZUFBZTtRQUNwQixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3RCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNy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b250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgVHJhbnNmb3JtcywgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7XG4gICAgUmVzaXplUmVmLFxuICAgIFJlc2l6ZVN0YXRlLFxuICAgIFdpdGhSZXNpemVPcHRpb25zLFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICBub3JtYWxpemVTaGFwZVBvaW50cyxcbiAgICB3aXRoUmVzaXplXG59IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRHZW9tZXRyeUVsZW1lbnRzLCBnZXRTZWxlY3RlZEltYWdlRWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZCc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgR2VvbWV0cnlDb21wb25lbnQgfSBmcm9tICcuLi9nZW9tZXRyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhaXRJbWFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW1hZ2UnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmIH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludCwgZ2V0UmVzaXplWm9vbSwgbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQgfSBmcm9tICcuL3dpdGgtZHJhdy1yZXNpemUnO1xuaW1wb3J0IHsgZ2V0UmVzaXplQWxpZ25SZWYgfSBmcm9tICcuLi91dGlscy9yZXNpemUtYWxpZ24nO1xuXG5leHBvcnQgY29uc3Qgd2l0aEdlb21ldHJ5UmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IGFsaWduRzogU1ZHR0VsZW1lbnQgfCBudWxsO1xuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0R2VvbWV0cnkgfCBQbGFpdEltYWdlPiA9IHtcbiAgICAgICAga2V5OiAnZHJhdy1nZW9tZXRyeScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBbLi4uZ2V0U2VsZWN0ZWRHZW9tZXRyeUVsZW1lbnRzKGJvYXJkKSwgLi4uZ2V0U2VsZWN0ZWRJbWFnZUVsZW1lbnRzKGJvYXJkKV07XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggIT09IDEgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBzZWxlY3RlZEVsZW1lbnRzWzBdO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChzZWxlY3RlZEVsZW1lbnRzWzBdKSBhcyBHZW9tZXRyeUNvbXBvbmVudDtcbiAgICAgICAgICAgIGlmICh0YXJnZXRDb21wb25lbnQuYWN0aXZlR2VuZXJhdG9yLmhhc1Jlc2l6ZUhhbmRsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGJvYXJkLmdldFJlY3RhbmdsZSh0YXJnZXQpIGFzIFJlY3RhbmdsZUNsaWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVSZWYgPSBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIHJlY3RhbmdsZSwgcG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvckNsYXNzOiBoYW5kbGVSZWYuY3Vyc29yQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzRnJvbUNvcm5lciA9IGlzQ29ybmVySGFuZGxlKGJvYXJkLCByZXNpemVSZWYuaGFuZGxlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXNwZWN0UmF0aW8gPSByZXNpemVTdGF0ZS5pc1NoaWZ0IHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShyZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCB7IG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCB9ID0gZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludChib2FyZCwgcmVzaXplUmVmKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzaXplQWxpZ25SZWYgPSBnZXRSZXNpemVBbGlnblJlZihcbiAgICAgICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgICAgICByZXNpemVSZWYsXG4gICAgICAgICAgICAgICAgcmVzaXplU3RhdGUsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUG9pbnRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlzQXNwZWN0UmF0aW8sXG4gICAgICAgICAgICAgICAgaXNGcm9tQ29ybmVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYWxpZ25HID0gcmVzaXplQWxpZ25SZWYuYWxpZ25HO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGFsaWduRyk7XG4gICAgICAgICAgICBsZXQgcG9pbnRzID0gcmVzaXplQWxpZ25SZWYuYWN0aXZlUG9pbnRzIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShyZXNpemVSZWYuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGhlaWdodDogdGV4dEhlaWdodCB9ID0gZ2V0Rmlyc3RUZXh0TWFuYWdlKHJlc2l6ZVJlZi5lbGVtZW50KS5nZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplR2VvbWV0cnkoYm9hcmQsIHBvaW50cywgdGV4dEhlaWdodCwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IG5vcm1hbGl6ZVNoYXBlUG9pbnRzKHBvaW50cyk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4pID0+IHtcbiAgICAgICAgICAgIGFsaWduRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBhbGlnbkcgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHdpdGhSZXNpemU8UGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2U+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nZW9tZXRyeS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtZ2VvbWV0cnktcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUFTLGVBQWUsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQVUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVJLE9BQU8sRUFJSCxrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixVQUFVLEVBQ1Ysc0JBQXNCLEVBQ3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3BELElBQUksTUFBMEIsQ0FBQztJQUMvQixNQUFNLE9BQU8sR0FBa0Q7UUFDM0QsR0FBRyxFQUFFLGVBQWU7UUFDcEIsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN0QixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLHdCQUF3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YyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUM1RSxLQUFLLENBQ1IsQ0FBQztZQUNOLENBQUM7WUFFRCxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9FLGNBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO1lBQ3JGLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDTCxDQUFDO1FBQ0QsV0FBVyxFQUFFLENBQUMsU0FBZ0QsRUFBRSxFQUFFO1lBQzlELE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUE2QixLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdkQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBUcmFuc2Zvcm1zLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCByb3RhdGUsIHJvdGF0ZVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7XG4gICAgUmVzaXplUmVmLFxuICAgIFJlc2l6ZVN0YXRlLFxuICAgIFdpdGhSZXNpemVPcHRpb25zLFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICBub3JtYWxpemVTaGFwZVBvaW50cyxcbiAgICB3aXRoUmVzaXplLFxuICAgIHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemVcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZEdlb21ldHJ5RWxlbWVudHMsIGdldFNlbGVjdGVkSW1hZ2VFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBHZW9tZXRyeUNvbXBvbmVudCB9IGZyb20gJy4uL2dlb21ldHJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdEltYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbWFnZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50IH0gZnJvbSAnLi93aXRoLWRyYXctcmVzaXplJztcbmltcG9ydCB7IGdldFJlc2l6ZUFsaWduUmVmIH0gZnJvbSAnLi4vdXRpbHMvcmVzaXplLWFsaWduJztcblxuZXhwb3J0IGNvbnN0IHdpdGhHZW9tZXRyeVJlc2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGxldCBhbGlnbkc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctZ2VvbWV0cnknLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gWy4uLmdldFNlbGVjdGVkR2VvbWV0cnlFbGVtZW50cyhib2FyZCksIC4uLmdldFNlbGVjdGVkSW1hZ2VFbGVtZW50cyhib2FyZCldO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICE9PSAxIHx8IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoc2VsZWN0ZWRFbGVtZW50c1swXSkgYXMgR2VvbWV0cnlDb21wb25lbnQ7XG4gICAgICAgICAgICBpZiAodGFyZ2V0Q29tcG9uZW50LmFjdGl2ZUdlbmVyYXRvci5oYXNSZXNpemVIYW5kbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBib2FyZC5nZXRSZWN0YW5nbGUodGFyZ2V0KSBhcyBSZWN0YW5nbGVDbGllbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmID0gZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmKGJvYXJkLCByZWN0YW5nbGUsIHBvaW50LCB0YXJnZXQuYW5nbGUpO1xuICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvckNsYXNzOiBoYW5kbGVSZWYuY3Vyc29yQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc2l6ZVJlZi5lbGVtZW50LnBvaW50cykpO1xuICAgICAgICAgICAgY29uc3QgYW5nbGUgPSByZXNpemVSZWYuZWxlbWVudC5hbmdsZTtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtyb3RhdGVkU3RhcnRQb2ludCwgcm90YXRlRW5kUG9pbnRdID0gcm90YXRlUG9pbnRzKFxuICAgICAgICAgICAgICAgICAgICBbcmVzaXplU3RhdGUuc3RhcnRQb2ludCwgcmVzaXplU3RhdGUuZW5kUG9pbnRdLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgLXJlc2l6ZVJlZi5lbGVtZW50LmFuZ2xlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZS5zdGFydFBvaW50ID0gcm90YXRlZFN0YXJ0UG9pbnQ7XG4gICAgICAgICAgICAgICAgcmVzaXplU3RhdGUuZW5kUG9pbnQgPSByb3RhdGVFbmRQb2ludDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzRnJvbUNvcm5lciA9IGlzQ29ybmVySGFuZGxlKGJvYXJkLCByZXNpemVSZWYuaGFuZGxlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXNwZWN0UmF0aW8gPSByZXNpemVTdGF0ZS5pc1NoaWZ0IHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShyZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCB7IG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCB9ID0gZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludChib2FyZCwgcmVzaXplUmVmKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc2l6ZUFsaWduUmVmID0gZ2V0UmVzaXplQWxpZ25SZWYoXG4gICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLFxuICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVBvaW50XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc0FzcGVjdFJhdGlvLFxuICAgICAgICAgICAgICAgIGlzRnJvbUNvcm5lclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFsaWduRyA9IHJlc2l6ZUFsaWduUmVmLmFsaWduRztcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChhbGlnbkcpO1xuICAgICAgICAgICAgbGV0IHBvaW50cyA9IHJlc2l6ZUFsaWduUmVmLmFjdGl2ZVBvaW50cyBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemUoXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5yZWN0YW5nbGUhLFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKSksXG4gICAgICAgICAgICAgICAgICAgIGFuZ2xlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShyZXNpemVSZWYuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGhlaWdodDogdGV4dEhlaWdodCB9ID0gZ2V0Rmlyc3RUZXh0TWFuYWdlKHJlc2l6ZVJlZi5lbGVtZW50KS5nZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplR2VvbWV0cnkoYm9hcmQsIHBvaW50cywgdGV4dEhlaWdodCwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IG5vcm1hbGl6ZVNoYXBlUG9pbnRzKHBvaW50cyk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4pID0+IHtcbiAgICAgICAgICAgIGFsaWduRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBhbGlnbkcgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHdpdGhSZXNpemU8UGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2U+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CursorClass, PlaitBoard, PlaitElement, RgbaToHEX, drawCircle, isSelectionMoving, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
1
|
+
import { CursorClass, PlaitBoard, PlaitElement, RectangleClient, RgbaToHEX, drawCircle, hasValidAngle, isSelectionMoving, rotateAntiPointsByElement, setAngleForG, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
2
|
import { PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { getAutoCompletePoints, getHitIndexOfAutoCompletePoint, getSelectedDrawElements } from '../utils';
|
|
4
4
|
import { PRIMARY_COLOR } from '@plait/common';
|
|
@@ -14,7 +14,7 @@ export const withLineAutoCompleteReaction = (board) => {
|
|
|
14
14
|
const movingPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
15
15
|
if (!PlaitBoard.isReadonly(board) && !isSelectionMoving(board) && targetElement && PlaitDrawElement.isShape(targetElement)) {
|
|
16
16
|
const points = getAutoCompletePoints(targetElement);
|
|
17
|
-
const hitIndex = getHitIndexOfAutoCompletePoint(movingPoint, points);
|
|
17
|
+
const hitIndex = getHitIndexOfAutoCompletePoint(rotateAntiPointsByElement(movingPoint, targetElement) || movingPoint, points);
|
|
18
18
|
const hitPoint = points[hitIndex];
|
|
19
19
|
const component = PlaitElement.getComponent(targetElement);
|
|
20
20
|
component.lineAutoCompleteGenerator.recoverAutoCompleteG();
|
|
@@ -27,10 +27,13 @@ export const withLineAutoCompleteReaction = (board) => {
|
|
|
27
27
|
});
|
|
28
28
|
PlaitBoard.getElementActiveHost(board).append(reactionG);
|
|
29
29
|
PlaitBoard.getBoardContainer(board).classList.add(CursorClass.crosshair);
|
|
30
|
+
if (hasValidAngle(targetElement)) {
|
|
31
|
+
setAngleForG(reactionG, RectangleClient.getCenterPoint(board.getRectangle(targetElement)), targetElement.angle);
|
|
32
|
+
}
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
35
|
pointerMove(event);
|
|
33
36
|
};
|
|
34
37
|
return board;
|
|
35
38
|
};
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUtcmVhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6QixZQUFZLEVBQ1osV0FBVyxFQUNYLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVHLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzlELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDOUIsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztJQUN6QyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNwQixVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3pILE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsSUFBSSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFzQixDQUFDO1lBQ2hGLFNBQVMsQ0FBQyx5QkFBMEIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ1gsU0FBUyxDQUFDLHlCQUEwQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO29CQUNqRyxNQUFNLEVBQUUsTUFBTTtvQkFDZCxJQUFJLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxrQ0FBa0MsQ0FBQztvQkFDbEUsU0FBUyxFQUFFLE9BQU87aUJBQ3JCLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6RCxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLFlBQVksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNySCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDdXJzb3JDbGFzcyxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgUmdiYVRvSEVYLFxuICAgIGRyYXdDaXJjbGUsXG4gICAgaGFzVmFsaWRBbmdsZSxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50LFxuICAgIHNldEFuZ2xlRm9yRyxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCwgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9tZXRyeUNvbXBvbmVudCB9IGZyb20gJy4uL2dlb21ldHJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQUklNQVJZX0NPTE9SIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBMSU5FX0FVVE9fQ09NUExFVEVfSE9WRVJFRF9ESUFNRVRFUiwgTElORV9BVVRPX0NPTVBMRVRFX0hPVkVSRURfT1BBQ0lUWSB9IGZyb20gJy4uL2NvbnN0YW50cy9saW5lJztcblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJNb3ZlIH0gPSBib2FyZDtcbiAgICBsZXQgcmVhY3Rpb25HOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgcmVhY3Rpb25HPy5yZW1vdmUoKTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZShDdXJzb3JDbGFzcy5jcm9zc2hhaXIpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmICFpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkgJiYgdGFyZ2V0RWxlbWVudCAmJiBQbGFpdERyYXdFbGVtZW50LmlzU2hhcGUodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldEF1dG9Db21wbGV0ZVBvaW50cyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEluZGV4ID0gZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50KHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQobW92aW5nUG9pbnQsIHRhcmdldEVsZW1lbnQpIHx8IG1vdmluZ1BvaW50LCBwb2ludHMpO1xuICAgICAgICAgICAgY29uc3QgaGl0UG9pbnQgPSBwb2ludHNbaGl0SW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRFbGVtZW50KSBhcyBHZW9tZXRyeUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbXBvbmVudC5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yIS5yZWNvdmVyQXV0b0NvbXBsZXRlRygpO1xuICAgICAgICAgICAgaWYgKGhpdFBvaW50KSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IhLnJlbW92ZUF1dG9Db21wbGV0ZUcoaGl0SW5kZXgpO1xuICAgICAgICAgICAgICAgIHJlYWN0aW9uRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIGhpdFBvaW50LCBMSU5FX0FVVE9fQ09NUExFVEVfSE9WRVJFRF9ESUFNRVRFUiwge1xuICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogUmdiYVRvSEVYKFBSSU1BUllfQ09MT1IsIExJTkVfQVVUT19DT01QTEVURV9IT1ZFUkVEX09QQUNJVFkpLFxuICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQocmVhY3Rpb25HKTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKEN1cnNvckNsYXNzLmNyb3NzaGFpcik7XG4gICAgICAgICAgICAgICAgaWYgKGhhc1ZhbGlkQW5nbGUodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0QW5nbGVGb3JHKHJlYWN0aW9uRywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KGJvYXJkLmdldFJlY3RhbmdsZSh0YXJnZXRFbGVtZW50KSEpLCB0YXJnZXRFbGVtZW50LmFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BoardTransforms, PRESS_AND_MOVE_BUFFER, PlaitBoard, PlaitPointerType, RectangleClient, Transforms, addSelectedElement, clearSelectedElement, createG, distanceBetweenPointAndPoint, temporaryDisableSelection, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
1
|
+
import { BoardTransforms, PRESS_AND_MOVE_BUFFER, PlaitBoard, PlaitPointerType, RectangleClient, Transforms, addSelectedElement, clearSelectedElement, createG, distanceBetweenPointAndPoint, rotateAntiPointsByElement, rotatePointsByElement, temporaryDisableSelection, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
2
|
import { LineShape, PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { getShape } from '../utils/shape';
|
|
4
4
|
import { getEngine } from '../engines';
|
|
@@ -18,7 +18,7 @@ export const withLineAutoComplete = (board) => {
|
|
|
18
18
|
const clickPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
19
19
|
if (!PlaitBoard.isReadonly(board) && targetElement && PlaitDrawElement.isShape(targetElement)) {
|
|
20
20
|
const points = getAutoCompletePoints(targetElement);
|
|
21
|
-
const index = getHitIndexOfAutoCompletePoint(clickPoint, points);
|
|
21
|
+
const index = getHitIndexOfAutoCompletePoint(rotateAntiPointsByElement(clickPoint, targetElement) || clickPoint, points);
|
|
22
22
|
const hitPoint = points[index];
|
|
23
23
|
if (hitPoint) {
|
|
24
24
|
temporaryDisableSelection(board);
|
|
@@ -34,7 +34,7 @@ export const withLineAutoComplete = (board) => {
|
|
|
34
34
|
lineShapeG = createG();
|
|
35
35
|
let movingPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
36
36
|
if (startPoint && sourceElement) {
|
|
37
|
-
const distance = distanceBetweenPointAndPoint(...movingPoint, ...startPoint);
|
|
37
|
+
const distance = distanceBetweenPointAndPoint(...movingPoint, ...(rotatePointsByElement(startPoint, sourceElement) || startPoint));
|
|
38
38
|
if (distance > PRESS_AND_MOVE_BUFFER) {
|
|
39
39
|
const rectangle = RectangleClient.getRectangleByPoints(sourceElement.points);
|
|
40
40
|
const shape = getShape(sourceElement);
|
|
@@ -44,7 +44,7 @@ export const withLineAutoComplete = (board) => {
|
|
|
44
44
|
const crossingPoint = engine.getNearestCrossingPoint(rectangle, startPoint);
|
|
45
45
|
sourcePoint = crossingPoint;
|
|
46
46
|
}
|
|
47
|
-
temporaryElement = handleLineCreating(board, LineShape.elbow, sourcePoint, movingPoint, sourceElement, lineShapeG);
|
|
47
|
+
temporaryElement = handleLineCreating(board, LineShape.elbow, rotatePointsByElement(sourcePoint, sourceElement) || sourcePoint, movingPoint, sourceElement, lineShapeG);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
pointerMove(event);
|
|
@@ -70,4 +70,4 @@ export const withLineAutoComplete = (board) => {
|
|
|
70
70
|
};
|
|
71
71
|
return board;
|
|
72
72
|
};
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxjQUFjLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLHFDQUFxQyxDQUFDO0FBTW5GLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3RELE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUU1RCxJQUFJLFVBQVUsR0FBaUIsSUFBSSxDQUFDO0lBQ3BDLElBQUksVUFBVSxHQUF1QixJQUFJLENBQUM7SUFDMUMsSUFBSSxhQUFnQyxDQUFDO0lBQ3JDLElBQUksZ0JBQWtDLENBQUM7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QUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDNUMsTUFBTSxhQUFhLEdBQUksS0FBMkIsQ0FBQyxnQkFBZ0IsQ0FBMEIsNkJBQTZCLENBQUM7Z0JBQ3ZILEVBQUUsYUFBYSxDQUFDO1lBQ3BCLGFBQWEsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckUsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO1FBQ0QsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQm9hcmRUcmFuc2Zvcm1zLFxuICAgIFBSRVNTX0FORF9NT1ZFX0JVRkZFUixcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNyZWF0ZUcsXG4gICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCxcbiAgICB0ZW1wb3JhcnlEaXNhYmxlU2VsZWN0aW9uLFxuICAgIHRvSG9zdFBvaW50LFxuICAgIHRvVmlld0JveFBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IExpbmVTaGFwZSwgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRMaW5lLCBQbGFpdFNoYXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRTaGFwZSB9IGZyb20gJy4uL3V0aWxzL3NoYXBlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgaGFuZGxlTGluZUNyZWF0aW5nIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0QXV0b0NvbXBsZXRlUG9pbnRzLCBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQgfSBmcm9tICcuLi91dGlscy9nZW9tZXRyeSc7XG5cbmV4cG9ydCBjb25zdCBXaXRoTGluZUF1dG9Db21wbGV0ZVBsdWdpbktleSA9ICdwbGFpdC1saW5lLWF1dG8tY29tcGxldGUtcGx1Z2luLWtleSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZUF1dG9Db21wbGV0ZU9wdGlvbnMge1xuICAgIGFmdGVyQ29tcGxldGU6IChlbGVtZW50OiBQbGFpdExpbmUpID0+IHt9O1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVBdXRvQ29tcGxldGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwIH0gPSBib2FyZDtcblxuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlIHwgbnVsbDtcbiAgICBsZXQgdGVtcG9yYXJ5RWxlbWVudDogUGxhaXRMaW5lIHwgbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgIGNvbnN0IGNsaWNrUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmIHRhcmdldEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc1NoYXBlKHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRBdXRvQ29tcGxldGVQb2ludHModGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludChjbGlja1BvaW50LCBwb2ludHMpO1xuICAgICAgICAgICAgY29uc3QgaGl0UG9pbnQgPSBwb2ludHNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKGhpdFBvaW50KSB7XG4gICAgICAgICAgICAgICAgdGVtcG9yYXJ5RGlzYWJsZVNlbGVjdGlvbihib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCk7XG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IGhpdFBvaW50O1xuICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSB0YXJnZXRFbGVtZW50O1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgTGluZVNoYXBlLmVsYm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBpZiAoc3RhcnRQb2ludCAmJiBzb3VyY2VFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4ubW92aW5nUG9pbnQsIC4uLnN0YXJ0UG9pbnQpO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHNvdXJjZUVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlKHNvdXJjZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZShzaGFwZSk7XG4gICAgICAgICAgICAgICAgbGV0IHNvdXJjZVBvaW50ID0gc3RhcnRQb2ludDtcbiAgICAgICAgICAgICAgICBpZiAoZW5naW5lLmdldE5lYXJlc3RDcm9zc2luZ1BvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNyb3NzaW5nUG9pbnQgPSBlbmdpbmUuZ2V0TmVhcmVzdENyb3NzaW5nUG9pbnQocmVjdGFuZ2xlLCBzdGFydFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlUG9pbnQgPSBjcm9zc2luZ1BvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gaGFuZGxlTGluZUNyZWF0aW5nKGJvYXJkLCBMaW5lU2hhcGUuZWxib3csIHNvdXJjZVBvaW50LCBtb3ZpbmdQb2ludCwgc291cmNlRWxlbWVudCwgbGluZVNoYXBlRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbXBsZXRlID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPExpbmVBdXRvQ29tcGxldGVPcHRpb25zPihXaXRoTGluZUF1dG9Db21wbGV0ZVBsdWdpbktleSlcbiAgICAgICAgICAgICAgICA/LmFmdGVyQ29tcGxldGU7XG4gICAgICAgICAgICBhZnRlckNvbXBsZXRlICYmIGFmdGVyQ29tcGxldGUodGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBudWxsO1xuICAgICAgICBzb3VyY2VFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IG51bGw7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBRXBCLE9BQU8sRUFDUCw0QkFBNEIsRUFFNUIseUJBQXlCLEVBRXpCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsV0FBVyxFQUNYLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcscUNBQXFDLENBQUM7QUFNbkYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVELElBQUksVUFBVSxHQUFpQixJQUFJLENBQUM7SUFDcEMsSUFBSSxVQUFVLEdBQXVCLElBQUksQ0FBQztJQUMxQyxJQUFJLGFBQWdDLENB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QixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxFQUFFO1FBQzVCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4RSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxNQUFNLGFBQWEsR0FBSSxLQUEyQixDQUFDLGdCQUFnQixDQUEwQiw2QkFBNkIsQ0FBQztnQkFDdkgsRUFBRSxhQUFhLENBQUM7WUFDcEIsYUFBYSxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckIsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUFJFU1NfQU5EX01PVkVfQlVGRkVSLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRPcHRpb25zQm9hcmQsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRGVidWdHZW5lcmF0b3IsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudCxcbiAgICByb3RhdGVQb2ludHMsXG4gICAgcm90YXRlUG9pbnRzQnlFbGVtZW50LFxuICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24sXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdExpbmUsIFBsYWl0U2hhcGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi4vdXRpbHMvc2hhcGUnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBoYW5kbGVMaW5lQ3JlYXRpbmcgfSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtYmFzaWMnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZCc7XG5pbXBvcnQgeyBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCB9IGZyb20gJy4uL3V0aWxzL2dlb21ldHJ5JztcblxuZXhwb3J0IGNvbnN0IFdpdGhMaW5lQXV0b0NvbXBsZXRlUGx1Z2luS2V5ID0gJ3BsYWl0LWxpbmUtYXV0by1jb21wbGV0ZS1wbHVnaW4ta2V5JztcblxuZXhwb3J0IGludGVyZmFjZSBMaW5lQXV0b0NvbXBsZXRlT3B0aW9ucyB7XG4gICAgYWZ0ZXJDb21wbGV0ZTogKGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge307XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluZUF1dG9Db21wbGV0ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIHBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAgfSA9IGJvYXJkO1xuXG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmVTaGFwZUc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHNvdXJjZUVsZW1lbnQ6IFBsYWl0U2hhcGUgfCBudWxsO1xuICAgIGxldCB0ZW1wb3JhcnlFbGVtZW50OiBQbGFpdExpbmUgfCBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgY29uc3QgY2xpY2tQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgJiYgdGFyZ2V0RWxlbWVudCAmJiBQbGFpdERyYXdFbGVtZW50LmlzU2hhcGUodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldEF1dG9Db21wbGV0ZVBvaW50cyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50KHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQoY2xpY2tQb2ludCwgdGFyZ2V0RWxlbWVudCkgfHwgY2xpY2tQb2ludCwgcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFBvaW50ID0gcG9pbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24oYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBoaXRQb2ludDtcbiAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gdGFyZ2V0RWxlbWVudDtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIExpbmVTaGFwZS5lbGJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGxpbmVTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBsaW5lU2hhcGVHID0gY3JlYXRlRygpO1xuICAgICAgICBsZXQgbW92aW5nUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQgJiYgc291cmNlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KFxuICAgICAgICAgICAgICAgIC4uLm1vdmluZ1BvaW50LFxuICAgICAgICAgICAgICAgIC4uLihyb3RhdGVQb2ludHNCeUVsZW1lbnQoc3RhcnRQb2ludCwgc291cmNlRWxlbWVudCkgfHwgc3RhcnRQb2ludClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhzb3VyY2VFbGVtZW50LnBvaW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoc2hhcGUpO1xuICAgICAgICAgICAgICAgIGxldCBzb3VyY2VQb2ludCA9IHN0YXJ0UG9pbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGVuZ2luZS5nZXROZWFyZXN0Q3Jvc3NpbmdQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjcm9zc2luZ1BvaW50ID0gZW5naW5lLmdldE5lYXJlc3RDcm9zc2luZ1BvaW50KHJlY3RhbmdsZSwgc3RhcnRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZVBvaW50ID0gY3Jvc3NpbmdQb2ludDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gaGFuZGxlTGluZUNyZWF0aW5nKFxuICAgICAgICAgICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICAgICAgICAgICAgICByb3RhdGVQb2ludHNCeUVsZW1lbnQoc291cmNlUG9pbnQsIHNvdXJjZUVsZW1lbnQpIHx8IHNvdXJjZVBvaW50LFxuICAgICAgICAgICAgICAgICAgICBtb3ZpbmdQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgbGluZVNoYXBlR1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbXBsZXRlID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPExpbmVBdXRvQ29tcGxldGVPcHRpb25zPihXaXRoTGluZUF1dG9Db21wbGV0ZVBsdWdpbktleSlcbiAgICAgICAgICAgICAgICA/LmFmdGVyQ29tcGxldGU7XG4gICAgICAgICAgICBhZnRlckNvbXBsZXRlICYmIGFmdGVyQ29tcGxldGUodGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBudWxsO1xuICAgICAgICBzb3VyY2VFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IG51bGw7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_BORDER_COLOR, drawCircle, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
1
|
+
import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_BORDER_COLOR, drawCircle, hasValidAngle, rotateAntiPointsByElement, setAngleForG, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
2
|
import { LineShape, PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { isResizingByCondition } from '@plait/common';
|
|
4
4
|
import { getHitOutlineGeometry } from '../utils/position/geometry';
|
|
@@ -25,9 +25,9 @@ export const withLineBoundReaction = (board) => {
|
|
|
25
25
|
if (isLinePointer || isLineResizing) {
|
|
26
26
|
const hitElement = getHitOutlineGeometry(board, movingPoint, -4);
|
|
27
27
|
if (hitElement) {
|
|
28
|
-
boundShapeG = drawBoundMask(board, hitElement);
|
|
29
|
-
let nearestPoint = getNearestPoint(hitElement, movingPoint);
|
|
30
28
|
const rectangle = RectangleClient.getRectangleByPoints(hitElement.points);
|
|
29
|
+
boundShapeG = drawBoundMask(board, hitElement);
|
|
30
|
+
let nearestPoint = getNearestPoint(hitElement, rotateAntiPointsByElement(movingPoint, hitElement) || movingPoint);
|
|
31
31
|
const activeRectangle = RectangleClient.inflate(rectangle, ACTIVE_STROKE_WIDTH);
|
|
32
32
|
const hitConnector = getHitConnectorPoint(nearestPoint, hitElement, activeRectangle);
|
|
33
33
|
nearestPoint = hitConnector ? hitConnector : nearestPoint;
|
|
@@ -39,6 +39,9 @@ export const withLineBoundReaction = (board) => {
|
|
|
39
39
|
});
|
|
40
40
|
boundShapeG.appendChild(circleG);
|
|
41
41
|
PlaitBoard.getElementActiveHost(board).append(boundShapeG);
|
|
42
|
+
if (hasValidAngle(hitElement)) {
|
|
43
|
+
setAngleForG(boundShapeG, RectangleClient.getCenterPoint(rectangle), hitElement.angle);
|
|
44
|
+
}
|
|
42
45
|
}
|
|
43
46
|
}
|
|
44
47
|
pointerMove(event);
|
|
@@ -50,4 +53,4 @@ export const withLineBoundReaction = (board) => {
|
|
|
50
53
|
};
|
|
51
54
|
return board;
|
|
52
55
|
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWJvdW5kLXJlYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWxpbmUtYm91bmQtcmVhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILG1CQUFtQixFQUNuQixVQUFVLEVBRVYsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsYUFBYSxFQUNiLHlCQUF5QixFQUN6QixZQUFZLEVBQ1osV0FBVyxFQUNYLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN2RCxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUV6QyxJQUFJLFdBQVcsR0FBdUIsSUFBSSxDQUFDO0lBRTNDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDeEMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixPQUFP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ICAgQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICBkcmF3Q2lyY2xlLFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudCxcbiAgICBzZXRBbmdsZUZvckcsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc1Jlc2l6aW5nQnlDb25kaXRpb24gfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldEhpdE91dGxpbmVHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7IExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IGRyYXdCb3VuZE1hc2ssIGdldE5lYXJlc3RQb2ludCB9IGZyb20gJy4uL3V0aWxzL2dlb21ldHJ5JztcbmltcG9ydCB7IGdldEhpdENvbm5lY3RvclBvaW50IH0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLWJhc2ljJztcblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lQm91bmRSZWFjdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlck1vdmUsIHBvaW50ZXJVcCB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgYm91bmRTaGFwZUc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGJvdW5kU2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkpIHtcbiAgICAgICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsaW5lUG9pbnRlcnMgPSBPYmplY3Qua2V5cyhMaW5lU2hhcGUpO1xuICAgICAgICBjb25zdCBpc0xpbmVQb2ludGVyID0gUGxhaXRCb2FyZC5pc0luUG9pbnRlcihib2FyZCwgbGluZVBvaW50ZXJzKTtcbiAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3QgaXNMaW5lUmVzaXppbmcgPSBpc1Jlc2l6aW5nQnlDb25kaXRpb248UGxhaXRFbGVtZW50LCBMaW5lUmVzaXplSGFuZGxlPihib2FyZCwgcmVzaXplUmVmID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZWxlbWVudCwgaGFuZGxlIH0gPSByZXNpemVSZWY7XG4gICAgICAgICAgICBjb25zdCBpc1NvdXJjZU9yVGFyZ2V0ID0gaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCB8fCBoYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlO1xuICAgICAgICAgICAgcmV0dXJuIFBsYWl0RHJhd0VsZW1lbnQuaXNMaW5lKGVsZW1lbnQpICYmIGlzU291cmNlT3JUYXJnZXQ7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNMaW5lUG9pbnRlciB8fCBpc0xpbmVSZXNpemluZykge1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdE91dGxpbmVHZW9tZXRyeShib2FyZCwgbW92aW5nUG9pbnQsIC00KTtcbiAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGhpdEVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgICAgICAgICBib3VuZFNoYXBlRyA9IGRyYXdCb3VuZE1hc2soYm9hcmQsIGhpdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGxldCBuZWFyZXN0UG9pbnQgPSBnZXROZWFyZXN0UG9pbnQoaGl0RWxlbWVudCwgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudChtb3ZpbmdQb2ludCwgaGl0RWxlbWVudCkgfHwgbW92aW5nUG9pbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGl0Q29ubmVjdG9yID0gZ2V0SGl0Q29ubmVjdG9yUG9pbnQobmVhcmVzdFBvaW50LCBoaXRFbGVtZW50LCBhY3RpdmVSZWN0YW5nbGUpO1xuICAgICAgICAgICAgICAgIG5lYXJlc3RQb2ludCA9IGhpdENvbm5lY3RvciA/IGhpdENvbm5lY3RvciA6IG5lYXJlc3RQb2ludDtcbiAgICAgICAgICAgICAgICBjb25zdCBjaXJjbGVHID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSwgbmVhcmVzdFBvaW50LCA2LCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJvdW5kU2hhcGVHLmFwcGVuZENoaWxkKGNpcmNsZUcpO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChib3VuZFNoYXBlRyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc1ZhbGlkQW5nbGUoaGl0RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0QW5nbGVGb3JHKGJvdW5kU2hhcGVHLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKSwgaGl0RWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlclVwID0gZXZlbnQgPT4ge1xuICAgICAgICBib3VuZFNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGJvdW5kU2hhcGVHID0gbnVsbDtcbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PlaitNode, Point } from '@plait/core';
|
|
1
|
+
import { PlaitNode, Point, rotateAntiPointsByElement } from '@plait/core';
|
|
2
2
|
import { isSourceAndTargetIntersect, simplifyOrthogonalPoints, withResize } from '@plait/common';
|
|
3
3
|
import { getSelectedLineElements } from '../utils/selected';
|
|
4
4
|
import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
|
|
@@ -69,7 +69,7 @@ export const withLineResize = (board) => {
|
|
|
69
69
|
const object = resizeRef.handle === LineResizeHandle.source ? source : target;
|
|
70
70
|
points[handleIndex] = resizeState.endPoint;
|
|
71
71
|
if (hitElement) {
|
|
72
|
-
object.connection = getConnectionByNearestPoint(board, resizeState.endPoint, hitElement);
|
|
72
|
+
object.connection = getConnectionByNearestPoint(board, rotateAntiPointsByElement(resizeState.endPoint, hitElement) || resizeState.endPoint, hitElement);
|
|
73
73
|
object.boundId = hitElement.id;
|
|
74
74
|
}
|
|
75
75
|
else {
|
|
@@ -156,4 +156,4 @@ export const withLineResize = (board) => {
|
|
|
156
156
|
withResize(board, options);
|
|
157
157
|
return board;
|
|
158
158
|
};
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUE2QywwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFjLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGdDQUFnQyxFQUNoQyw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3ZCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDaEQsSUFBSSxjQUE2QixDQUFDO0lBQ2xDLElBQUksb0JBQW1DLENBQUM7SUFDeEMsSUFBSSxnQkFBOEIsQ0FBQztJQUNuQyxJQUFJLGdCQUE4QixDQUFDO0lBQ25DLElBQUkscUJBQXFDLENBQUM7SUFFMUMsTUFBTSxPQUFPLEdBQW1EO1FBQzVELEdBQUcsRUFBRSxXQUFXO1FBQ2hCLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDdEIsTUFBTSxvQkFBb0IsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixvQkFBb0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2pDLE1BQU0sU0FBUyxHQUFHLHlCQUF5QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pFLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ1osTUFBTSxHQUFHOzRCQUNMLE9BQU8sRUFBRSxLQUFLOzRCQUNkLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTs0QkFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO3lCQUNyQyxDQUFDO29CQUNOLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxZQUFZLEVBQUUsQ0FBQyxTQUFpRCxFQUFFLEVBQUU7WUFDaEUsSUFDSSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSztnQkFDM0MsU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUM1QyxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFDOUMsQ0FBQztnQkFDQyxNQUFNLE1BQU0sR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDZCxPQUFPO2dCQUNYLENBQUM7Z0JBQ0QsTUFBTSxNQUFNLEdBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFZLENBQUM7Z0JBQzNDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMvRCxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFFckYsTUFBTSxLQUFLLEdBQUcsZ0NBQWdDLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUMxSCxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDN0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUM3QyxDQUFDO1FBQ0wsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLFNBQWlELEVBQUUsV0FBd0IsRUFBRSxFQUFFO1lBQ3RGLElBQUksTUFBTSxHQUFZLENBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELElBQUksTUFBTSxHQUFlLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pELElBQUksTUFBTSxHQUFlLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pELElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFZLENBQUM7WUFDekMsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDdkYsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMvRixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQzlFLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUMzQyxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUNiLE1BQU0sQ0FBQyxVQUFVLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQ3pGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO29CQUM5QixNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztnQkFDL0IsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxxQkFBcUIsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUNoRSxNQUFNLDJCQUEyQixHQUFHLDhCQUE4QixDQUM5RCxxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixXQUFXLENBQ2QsQ0FBQzt3QkFDRixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDekQsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUMzRCxNQUFNLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxHQUFHLGlCQUFpQixDQUNsRCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFdBQVcsRUFDWCwyQkFBMkIsQ0FDOUIsQ0FBQzt3QkFDRixJQUFJLGFBQWEsR0FBWSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUNyRSxJQUFJLGNBQWMsS0FBSyxJQUFJLElBQUksb0JBQW9CLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQzNELElBQUksb0JBQW9CLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQ0FDdEMsYUFBYSxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDOzRCQUNqRCxDQUFDO2lDQUFNLENBQUM7Z0NBQ0osYUFBYSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDOzRCQUMzRixDQUFDOzRCQUNELE1BQU0sR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7d0JBQ3BFLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUMvQyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNkLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUM5RixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzlDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQy9CLElBQUksS0FBSyxLQUFLLFdBQVc7NEJBQUUsT0FBTzt3QkFDbEMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzs0QkFDdEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7d0JBQ2xFLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUM7WUFDRCxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFDRCxXQUFXLEVBQUUsQ0FBQyxTQUFpRCxFQUFFLEVBQUU7WUFDL0QsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFZLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTyxDQUFDLENBQUM7Z0JBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUkscUJBQXFCLElBQUksZ0JBQWdCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztvQkFDckYsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDaEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO29CQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztvQkFDdEMsTUFBTSxHQUFHLHdCQUF3QixDQUFDLE1BQU8sQ0FBQyxDQUFDO29CQUMzQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUM7d0JBQzdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN4QixDQUFDO29CQUNELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDO3dCQUM3RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN0QixNQUFNLEdBQUcsRUFBRSxDQUFDO29CQUNoQixDQUFDO29CQUNELE1BQU0sR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7b0JBQ3pELGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO1lBQ0wsQ0FBQztZQUNELGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDdEIsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQzVCLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDeEIscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUE4QixLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFeEQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXROb2RlLCBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCBpc1NvdXJjZUFuZFRhcmdldEludGVyc2VjdCwgc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZExpbmVFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYsIExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IGdldEhpdE91dGxpbmVHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7IExpbmVIYW5kbGUsIExpbmVTaGFwZSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgUkVBQ1RJT05fTUFSR0lOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEVsYm93UG9pbnRzLCBnZXROZXh0UmVuZGVyUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9lbGJvdyc7XG5pbXBvcnQge1xuICAgIGFsaWduRWxib3dTZWdtZW50LFxuICAgIGFsaWduUG9pbnRzLFxuICAgIGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50LFxuICAgIGdldFJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludCxcbiAgICBoYXNJbGxlZ2FsRWxib3dQb2ludFxufSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtcmVzaXplJztcbmltcG9ydCB7IGdldENvbm5lY3Rpb25CeU5lYXJlc3RQb2ludCwgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9saW5lJztcblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lUmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IGVsYm93TGluZUluZGV4OiBudW1iZXIgfCBudWxsO1xuICAgIGxldCBlbGJvd0xpbmVEZWxldGVDb3VudDogbnVtYmVyIHwgbnVsbDtcbiAgICBsZXQgZWxib3dTb3VyY2VQb2ludDogUG9pbnQgfCBudWxsO1xuICAgIGxldCBlbGJvd1RhcmdldFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGVsYm93TmV4dFJlbmRlclBvaW50czogUG9pbnRbXSB8IG51bGw7XG5cbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+ID0ge1xuICAgICAgICBrZXk6ICdkcmF3LWxpbmUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZExpbmVFbGVtZW50cyA9IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZExpbmVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRMaW5lRWxlbWVudHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIHZhbHVlLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXg6IGhhbmRsZVJlZi5oYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgYmVmb3JlUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cgJiZcbiAgICAgICAgICAgICAgICByZXNpemVSZWYuaGFuZGxlICE9PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSAmJlxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5oYW5kbGUgIT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ludGVyc2VjdCA9IGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSW50ZXJzZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50c09uRWxib3cgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQgPSBwb2ludHNPbkVsYm93WzBdO1xuICAgICAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQgPSBwb2ludHNPbkVsYm93W3BvaW50c09uRWxib3cubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzID0gZ2V0TmV4dFJlbmRlclBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIHBvaW50c09uRWxib3cpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludChib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIFsuLi5wb2ludHNdLCBlbGJvd05leHRSZW5kZXJQb2ludHMsIGhhbmRsZUluZGV4KTtcbiAgICAgICAgICAgICAgICBlbGJvd0xpbmVJbmRleCA9IHZhbHVlLmluZGV4O1xuICAgICAgICAgICAgICAgIGVsYm93TGluZURlbGV0ZUNvdW50ID0gdmFsdWUuZGVsZXRlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBsZXQgc291cmNlOiBMaW5lSGFuZGxlID0geyAuLi5yZXNpemVSZWYuZWxlbWVudC5zb3VyY2UgfTtcbiAgICAgICAgICAgIGxldCB0YXJnZXQ6IExpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnRhcmdldCB9O1xuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZUluZGV4ITtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRPdXRsaW5lR2VvbWV0cnkoYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBSRUFDVElPTl9NQVJHSU4pO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlIHx8IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5zb3VyY2UgPyBzb3VyY2UgOiB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gZ2V0Q29ubmVjdGlvbkJ5TmVhcmVzdFBvaW50KGJvYXJkLCByZXNpemVTdGF0ZS5lbmRQb2ludCwgaGl0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5ib3VuZElkID0gaGl0RWxlbWVudC5pZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuY29ubmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxib3dOZXh0UmVuZGVyUG9pbnRzICYmIGVsYm93U291cmNlUG9pbnQgJiYgZWxib3dUYXJnZXRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50ID0gZ2V0UmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGJvd1NvdXJjZVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydEtleVBvaW50ID0gZWxib3dOZXh0UmVuZGVyUG9pbnRzW2hhbmRsZUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZEtleVBvaW50ID0gZWxib3dOZXh0UmVuZGVyUG9pbnRzW2hhbmRsZUluZGV4ICsgMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnRdID0gYWxpZ25FbGJvd1NlZ21lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRLZXlQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRLZXlQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWlkRGF0YVBvaW50czogUG9pbnRbXSA9IFsuLi5wb2ludHNdLnNsaWNlKDEsIHBvaW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGJvd0xpbmVJbmRleCAhPT0gbnVsbCAmJiBlbGJvd0xpbmVEZWxldGVDb3VudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbGxlZ2FsRWxib3dQb2ludChtaWREYXRhUG9pbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWREYXRhUG9pbnRzID0gW25ld1N0YXJ0UG9pbnQsIG5ld0VuZFBvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWREYXRhUG9pbnRzLnNwbGljZShlbGJvd0xpbmVJbmRleCwgZWxib3dMaW5lRGVsZXRlQ291bnQsIG5ld1N0YXJ0UG9pbnQsIG5ld0VuZFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gW2VsYm93U291cmNlUG9pbnQsIC4uLm1pZERhdGFQb2ludHMsIGVsYm93VGFyZ2V0UG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKGhhbmRsZUluZGV4ICsgMSwgMCwgcmVzaXplU3RhdGUuZW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhpdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVJbmRleCA9IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlID8gaGFuZGxlSW5kZXggKyAxIDogaGFuZGxlSW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhd1BvaW50cyA9IGdldExpbmVQb2ludHMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQb2ludHMgPSBbLi4ucG9pbnRzXTtcbiAgICAgICAgICAgICAgICBuZXdQb2ludHNbMF0gPSBkcmF3UG9pbnRzWzBdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1tuZXdQb2ludHMubGVuZ3RoIC0gMV0gPSBkcmF3UG9pbnRzW2RyYXdQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlICE9PSBMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3UG9pbnRzLmZvckVhY2goKHBvaW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBoYW5kbGVJbmRleCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50c1toYW5kbGVJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gYWxpZ25Qb2ludHMocG9pbnQsIHBvaW50c1toYW5kbGVJbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVMaW5lKGJvYXJkLCB7IHBvaW50cywgc291cmNlLCB0YXJnZXQgfSwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICAgICAgbGV0IHBvaW50cyA9IGVsZW1lbnQgJiYgWy4uLmVsZW1lbnQucG9pbnRzIV07XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAyICYmIGVsYm93TmV4dFJlbmRlclBvaW50cyAmJiBlbGJvd1NvdXJjZVBvaW50ICYmIGVsYm93VGFyZ2V0UG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFNvdXJjZVBvaW50ID0gZWxib3dOZXh0UmVuZGVyUG9pbnRzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VGFyZ2V0UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbZWxib3dOZXh0UmVuZGVyUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKDAsIDEsIG5leHRTb3VyY2VQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoLTEsIDEsIG5leHRUYXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyhwb2ludHMhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFBvaW50LmlzRXF1YWxzKHBvaW50c1swXSwgbmV4dFNvdXJjZVBvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNFcXVhbHMocG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSwgbmV4dFRhcmdldFBvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ucG9pbnRzLCBlbGJvd1RhcmdldFBvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplTGluZShib2FyZCwgeyBwb2ludHMgfSwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxib3dMaW5lSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgZWxib3dMaW5lRGVsZXRlQ291bnQgPSBudWxsO1xuICAgICAgICAgICAgZWxib3dTb3VyY2VQb2ludCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd1RhcmdldFBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQWtDLHlCQUF5QixFQUFnQixNQUFNLGFBQWEsQ0FBQztBQUMxSSxPQUFPLEVBQTZDLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQWMsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNILGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsZ0NBQWdDLEVBQ2hDLDhCQUE4QixFQUM5QixvQkFBb0IsRUFDdkIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNoRCxJQUFJLGNBQTZCLENBQUM7SUFDbEMsSUFBSSxvQkFBbUMsQ0FBQztJ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Q0FBQyxFQUFFLENBQUM7d0JBQzdELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDakIsQ0FBQztvQkFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3RCLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQ2hCLENBQUM7b0JBQ0QsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztvQkFDekQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBWSxDQUFDLENBQUM7Z0JBQ3pFLENBQUM7WUFDTCxDQUFDO1lBQ0QsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0QixvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDNUIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQztLQUNKLENBQUM7SUFFRixVQUFVLENBQThCLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV4RCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdE5vZGUsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGhhc1ZhbGlkQW5nbGUsIHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQsIHJvdGF0ZVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCBpc1NvdXJjZUFuZFRhcmdldEludGVyc2VjdCwgc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZExpbmVFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYsIExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IGdldEhpdE91dGxpbmVHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7IExpbmVIYW5kbGUsIExpbmVTaGFwZSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgUkVBQ1RJT05fTUFSR0lOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEVsYm93UG9pbnRzLCBnZXROZXh0UmVuZGVyUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9lbGJvdyc7XG5pbXBvcnQge1xuICAgIGFsaWduRWxib3dTZWdtZW50LFxuICAgIGFsaWduUG9pbnRzLFxuICAgIGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50LFxuICAgIGdldFJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludCxcbiAgICBoYXNJbGxlZ2FsRWxib3dQb2ludFxufSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtcmVzaXplJztcbmltcG9ydCB7IGdldENvbm5lY3Rpb25CeU5lYXJlc3RQb2ludCwgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9saW5lJztcblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lUmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IGVsYm93TGluZUluZGV4OiBudW1iZXIgfCBudWxsO1xuICAgIGxldCBlbGJvd0xpbmVEZWxldGVDb3VudDogbnVtYmVyIHwgbnVsbDtcbiAgICBsZXQgZWxib3dTb3VyY2VQb2ludDogUG9pbnQgfCBudWxsO1xuICAgIGxldCBlbGJvd1RhcmdldFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGVsYm93TmV4dFJlbmRlclBvaW50czogUG9pbnRbXSB8IG51bGw7XG5cbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+ID0ge1xuICAgICAgICBrZXk6ICdkcmF3LWxpbmUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZExpbmVFbGVtZW50cyA9IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZExpbmVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRMaW5lRWxlbWVudHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIHZhbHVlLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXg6IGhhbmRsZVJlZi5oYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgYmVmb3JlUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cgJiZcbiAgICAgICAgICAgICAgICByZXNpemVSZWYuaGFuZGxlICE9PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSAmJlxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5oYW5kbGUgIT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ludGVyc2VjdCA9IGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSW50ZXJzZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50c09uRWxib3cgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQgPSBwb2ludHNPbkVsYm93WzBdO1xuICAgICAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQgPSBwb2ludHNPbkVsYm93W3BvaW50c09uRWxib3cubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzID0gZ2V0TmV4dFJlbmRlclBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIHBvaW50c09uRWxib3cpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludChib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIFsuLi5wb2ludHNdLCBlbGJvd05leHRSZW5kZXJQb2ludHMsIGhhbmRsZUluZGV4KTtcbiAgICAgICAgICAgICAgICBlbGJvd0xpbmVJbmRleCA9IHZhbHVlLmluZGV4O1xuICAgICAgICAgICAgICAgIGVsYm93TGluZURlbGV0ZUNvdW50ID0gdmFsdWUuZGVsZXRlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBsZXQgc291cmNlOiBMaW5lSGFuZGxlID0geyAuLi5yZXNpemVSZWYuZWxlbWVudC5zb3VyY2UgfTtcbiAgICAgICAgICAgIGxldCB0YXJnZXQ6IExpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnRhcmdldCB9O1xuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZUluZGV4ITtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRPdXRsaW5lR2VvbWV0cnkoYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBSRUFDVElPTl9NQVJHSU4pO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlIHx8IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5zb3VyY2UgPyBzb3VyY2UgOiB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gZ2V0Q29ubmVjdGlvbkJ5TmVhcmVzdFBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBoaXRFbGVtZW50KSB8fCByZXNpemVTdGF0ZS5lbmRQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpdEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSBoaXRFbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuYm91bmRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmVsYm93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGJvd05leHRSZW5kZXJQb2ludHMgJiYgZWxib3dTb3VyY2VQb2ludCAmJiBlbGJvd1RhcmdldFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQgPSBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0S2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kS2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF0gPSBhbGlnbkVsYm93U2VnbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaWREYXRhUG9pbnRzOiBQb2ludFtdID0gWy4uLnBvaW50c10uc2xpY2UoMSwgcG9pbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsYm93TGluZUluZGV4ICE9PSBudWxsICYmIGVsYm93TGluZURlbGV0ZUNvdW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0lsbGVnYWxFbGJvd1BvaW50KG1pZERhdGFQb2ludHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMgPSBbbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMuc3BsaWNlKGVsYm93TGluZUluZGV4LCBlbGJvd0xpbmVEZWxldGVDb3VudCwgbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ubWlkRGF0YVBvaW50cywgZWxib3dUYXJnZXRQb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoaGFuZGxlSW5kZXggKyAxLCAwLCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUgPyBoYW5kbGVJbmRleCArIDEgOiBoYW5kbGVJbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmF3UG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IFsuLi5wb2ludHNdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1swXSA9IGRyYXdQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgbmV3UG9pbnRzW25ld1BvaW50cy5sZW5ndGggLSAxXSA9IGRyYXdQb2ludHNbZHJhd1BvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgIT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgICAgICBuZXdQb2ludHMuZm9yRWFjaCgocG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGhhbmRsZUluZGV4KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzW2hhbmRsZUluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSBhbGlnblBvaW50cyhwb2ludCwgcG9pbnRzW2hhbmRsZUluZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUxpbmUoYm9hcmQsIHsgcG9pbnRzLCBzb3VyY2UsIHRhcmdldCB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnRzID0gZWxlbWVudCAmJiBbLi4uZWxlbWVudC5wb2ludHMhXTtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIgJiYgZWxib3dOZXh0UmVuZGVyUG9pbnRzICYmIGVsYm93U291cmNlUG9pbnQgJiYgZWxib3dUYXJnZXRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0U291cmNlUG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRUYXJnZXRQb2ludCA9IGVsYm93TmV4dFJlbmRlclBvaW50c1tlbGJvd05leHRSZW5kZXJQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoMCwgMSwgbmV4dFNvdXJjZVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZSgtMSwgMSwgbmV4dFRhcmdldFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKHBvaW50cyEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNFcXVhbHMocG9pbnRzWzBdLCBuZXh0U291cmNlUG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChQb2ludC5pc0VxdWFscyhwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBuZXh0VGFyZ2V0UG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtlbGJvd1NvdXJjZVBvaW50LCAuLi5wb2ludHMsIGVsYm93VGFyZ2V0UG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVMaW5lKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGJvd0xpbmVJbmRleCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd0xpbmVEZWxldGVDb3VudCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd1NvdXJjZVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|