@plait/draw 0.53.0 → 0.54.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/constants/geometry.d.ts +3 -1
- package/esm2022/constants/geometry.mjs +4 -2
- package/esm2022/generators/line-auto-complete.generator.mjs +1 -1
- package/esm2022/interfaces/index.mjs +2 -2
- package/esm2022/plugins/with-draw-fragment.mjs +1 -1
- package/esm2022/plugins/with-draw-resize.mjs +56 -9
- package/esm2022/plugins/with-draw.mjs +4 -4
- package/esm2022/plugins/with-geometry-resize.mjs +7 -14
- package/esm2022/plugins/with-line-auto-complete-reaction.mjs +2 -2
- package/esm2022/plugins/with-line-auto-complete.mjs +15 -14
- package/esm2022/plugins/with-line-bound-reaction.mjs +19 -21
- package/esm2022/plugins/with-line-create.mjs +4 -4
- package/esm2022/plugins/with-line-resize.mjs +11 -12
- package/esm2022/transforms/line.mjs +4 -4
- package/esm2022/utils/geometry.mjs +31 -22
- package/esm2022/utils/hit.mjs +26 -26
- package/esm2022/utils/line/elbow.mjs +11 -6
- package/esm2022/utils/line/line-basic.mjs +21 -29
- package/esm2022/utils/line/line-common.mjs +3 -3
- package/esm2022/utils/line/line-resize.mjs +2 -2
- package/esm2022/utils/position/geometry.mjs +51 -21
- package/esm2022/utils/resize-snap.mjs +361 -0
- package/esm2022/utils/shape.mjs +2 -2
- package/fesm2022/plait-draw.mjs +432 -344
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/line-auto-complete.generator.d.ts +3 -3
- package/interfaces/index.d.ts +2 -2
- package/package.json +1 -1
- package/plugins/with-draw-fragment.d.ts +2 -2
- package/plugins/with-draw-resize.d.ts +6 -0
- package/utils/geometry.d.ts +7 -4
- package/utils/hit.d.ts +3 -1
- package/utils/line/elbow.d.ts +3 -0
- package/utils/line/line-basic.d.ts +4 -4
- package/utils/position/geometry.d.ts +10 -2
- package/utils/resize-snap.d.ts +49 -0
- package/utils/shape.d.ts +2 -2
- package/esm2022/utils/resize-align-reaction.mjs +0 -316
- package/esm2022/utils/resize-align.mjs +0 -37
- package/utils/resize-align-reaction.d.ts +0 -42
- package/utils/resize-align.d.ts +0 -8
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { PlaitBoard, PlaitElement, RectangleClient, Transforms, getSelectedElements,
|
|
2
|
-
import { getFirstTextManage, isCornerHandle, normalizeShapePoints, withResize
|
|
1
|
+
import { PlaitBoard, PlaitElement, RectangleClient, Transforms, getSelectedElements, rotateAntiPointsByElement } from '@plait/core';
|
|
2
|
+
import { getFirstTextManage, isCornerHandle, normalizeShapePoints, withResize } from '@plait/common';
|
|
3
3
|
import { getSelectedGeometryElements, getSelectedImageElements } from '../utils/selected';
|
|
4
4
|
import { DrawTransforms } from '../transforms';
|
|
5
5
|
import { PlaitDrawElement } from '../interfaces';
|
|
6
6
|
import { getHitRectangleResizeHandleRef } from '../utils/position/geometry';
|
|
7
7
|
import { getResizeOriginPointAndHandlePoint } from './with-draw-resize';
|
|
8
|
-
import {
|
|
8
|
+
import { getResizeSnapRef } from '../utils/resize-snap';
|
|
9
9
|
export const withGeometryResize = (board) => {
|
|
10
10
|
let alignG;
|
|
11
11
|
const options = {
|
|
@@ -36,26 +36,19 @@ export const withGeometryResize = (board) => {
|
|
|
36
36
|
},
|
|
37
37
|
onResize: (resizeRef, resizeState) => {
|
|
38
38
|
const centerPoint = RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(resizeRef.element.points));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const [rotatedStartPoint, rotateEndPoint] = rotatePoints([resizeState.startPoint, resizeState.endPoint], centerPoint, -resizeRef.element.angle);
|
|
42
|
-
resizeState.startPoint = rotatedStartPoint;
|
|
43
|
-
resizeState.endPoint = rotateEndPoint;
|
|
44
|
-
}
|
|
39
|
+
resizeState.startPoint = rotateAntiPointsByElement(resizeState.startPoint, resizeRef.element) || resizeState.startPoint;
|
|
40
|
+
resizeState.endPoint = rotateAntiPointsByElement(resizeState.endPoint, resizeRef.element) || resizeState.endPoint;
|
|
45
41
|
alignG?.remove();
|
|
46
42
|
const isFromCorner = isCornerHandle(board, resizeRef.handle);
|
|
47
43
|
const isAspectRatio = resizeState.isShift || PlaitDrawElement.isImage(resizeRef.element);
|
|
48
44
|
const { originPoint, handlePoint } = getResizeOriginPointAndHandlePoint(board, resizeRef);
|
|
49
|
-
const resizeAlignRef =
|
|
45
|
+
const resizeAlignRef = getResizeSnapRef(board, resizeRef, resizeState, {
|
|
50
46
|
originPoint,
|
|
51
47
|
handlePoint
|
|
52
48
|
}, isAspectRatio, isFromCorner);
|
|
53
49
|
alignG = resizeAlignRef.alignG;
|
|
54
50
|
PlaitBoard.getElementActiveHost(board).append(alignG);
|
|
55
51
|
let points = resizeAlignRef.activePoints;
|
|
56
|
-
if (angle) {
|
|
57
|
-
points = resetPointsAfterResize(resizeRef.rectangle, RectangleClient.getRectangleByPoints(points), centerPoint, RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(points)), angle);
|
|
58
|
-
}
|
|
59
52
|
if (PlaitDrawElement.isGeometry(resizeRef.element)) {
|
|
60
53
|
const { height: textHeight } = getFirstTextManage(resizeRef.element).getSize();
|
|
61
54
|
DrawTransforms.resizeGeometry(board, points, textHeight, resizeRef.path);
|
|
@@ -73,4 +66,4 @@ export const withGeometryResize = (board) => {
|
|
|
73
66
|
withResize(board, options);
|
|
74
67
|
return board;
|
|
75
68
|
};
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nZW9tZXRyeS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtZ2VvbWV0cnktcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUFTLGVBQWUsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQVUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVJLE9BQU8sRUFJSCxrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixVQUFVLEVBQ1Ysc0JBQXNCLEVBQ3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3BELElBQUksTUFBMEIsQ0FBQztJQUMvQixNQUFNLE9BQU8sR0FBa0Q7UUFDM0QsR0FBRyxFQUFFLGVBQWU7UUFDcEIsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN0QixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLHdCQUF3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YyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUM1RSxLQUFLLENBQ1IsQ0FBQztZQUNOLENBQUM7WUFFRCxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9FLGNBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO1lBQ3JGLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDTCxDQUFDO1FBQ0QsV0FBVyxFQUFFLENBQUMsU0FBZ0QsRUFBRSxFQUFFO1lBQzlELE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUE2QixLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdkQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBUcmFuc2Zvcm1zLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCByb3RhdGUsIHJvdGF0ZVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7XG4gICAgUmVzaXplUmVmLFxuICAgIFJlc2l6ZVN0YXRlLFxuICAgIFdpdGhSZXNpemVPcHRpb25zLFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICBub3JtYWxpemVTaGFwZVBvaW50cyxcbiAgICB3aXRoUmVzaXplLFxuICAgIHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemVcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZEdlb21ldHJ5RWxlbWVudHMsIGdldFNlbGVjdGVkSW1hZ2VFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBHZW9tZXRyeUNvbXBvbmVudCB9IGZyb20gJy4uL2dlb21ldHJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdEltYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbWFnZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50IH0gZnJvbSAnLi93aXRoLWRyYXctcmVzaXplJztcbmltcG9ydCB7IGdldFJlc2l6ZUFsaWduUmVmIH0gZnJvbSAnLi4vdXRpbHMvcmVzaXplLWFsaWduJztcblxuZXhwb3J0IGNvbnN0IHdpdGhHZW9tZXRyeVJlc2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGxldCBhbGlnbkc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctZ2VvbWV0cnknLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gWy4uLmdldFNlbGVjdGVkR2VvbWV0cnlFbGVtZW50cyhib2FyZCksIC4uLmdldFNlbGVjdGVkSW1hZ2VFbGVtZW50cyhib2FyZCldO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICE9PSAxIHx8IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoc2VsZWN0ZWRFbGVtZW50c1swXSkgYXMgR2VvbWV0cnlDb21wb25lbnQ7XG4gICAgICAgICAgICBpZiAodGFyZ2V0Q29tcG9uZW50LmFjdGl2ZUdlbmVyYXRvci5oYXNSZXNpemVIYW5kbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBib2FyZC5nZXRSZWN0YW5nbGUodGFyZ2V0KSBhcyBSZWN0YW5nbGVDbGllbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmID0gZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmKGJvYXJkLCByZWN0YW5nbGUsIHBvaW50LCB0YXJnZXQuYW5nbGUpO1xuICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvckNsYXNzOiBoYW5kbGVSZWYuY3Vyc29yQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc2l6ZVJlZi5lbGVtZW50LnBvaW50cykpO1xuICAgICAgICAgICAgY29uc3QgYW5nbGUgPSByZXNpemVSZWYuZWxlbWVudC5hbmdsZTtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtyb3RhdGVkU3RhcnRQb2ludCwgcm90YXRlRW5kUG9pbnRdID0gcm90YXRlUG9pbnRzKFxuICAgICAgICAgICAgICAgICAgICBbcmVzaXplU3RhdGUuc3RhcnRQb2ludCwgcmVzaXplU3RhdGUuZW5kUG9pbnRdLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgLXJlc2l6ZVJlZi5lbGVtZW50LmFuZ2xlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZS5zdGFydFBvaW50ID0gcm90YXRlZFN0YXJ0UG9pbnQ7XG4gICAgICAgICAgICAgICAgcmVzaXplU3RhdGUuZW5kUG9pbnQgPSByb3RhdGVFbmRQb2ludDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzRnJvbUNvcm5lciA9IGlzQ29ybmVySGFuZGxlKGJvYXJkLCByZXNpemVSZWYuaGFuZGxlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXNwZWN0UmF0aW8gPSByZXNpemVTdGF0ZS5pc1NoaWZ0IHx8IFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShyZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCB7IG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCB9ID0gZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludChib2FyZCwgcmVzaXplUmVmKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc2l6ZUFsaWduUmVmID0gZ2V0UmVzaXplQWxpZ25SZWYoXG4gICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLFxuICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVBvaW50XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc0FzcGVjdFJhdGlvLFxuICAgICAgICAgICAgICAgIGlzRnJvbUNvcm5lclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFsaWduRyA9IHJlc2l6ZUFsaWduUmVmLmFsaWduRztcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChhbGlnbkcpO1xuICAgICAgICAgICAgbGV0IHBvaW50cyA9IHJlc2l6ZUFsaWduUmVmLmFjdGl2ZVBvaW50cyBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemUoXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5yZWN0YW5nbGUhLFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKSksXG4gICAgICAgICAgICAgICAgICAgIGFuZ2xlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShyZXNpemVSZWYuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGhlaWdodDogdGV4dEhlaWdodCB9ID0gZ2V0Rmlyc3RUZXh0TWFuYWdlKHJlc2l6ZVJlZi5lbGVtZW50KS5nZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplR2VvbWV0cnkoYm9hcmQsIHBvaW50cywgdGV4dEhlaWdodCwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IG5vcm1hbGl6ZVNoYXBlUG9pbnRzKHBvaW50cyk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4pID0+IHtcbiAgICAgICAgICAgIGFsaWduRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBhbGlnbkcgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHdpdGhSZXNpemU8UGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2U+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nZW9tZXRyeS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtZ2VvbWV0cnktcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxVQUFVLEVBQ1YsWUFBWSxFQUVaLGVBQWUsRUFDZixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUM1QixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBSUgsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3BELElBQUksTUFBMEIsQ0FBQztJQUMvQixNQUFNLE9BQU8sR0FBa0Q7UUFDM0QsR0FBRyxFQUFFLGVBQWU7UUFDcEIsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN0QixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLHdCQUF3QixDQUFDLEtB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QUM7Z0JBQ0osTUFBTSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFZLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0wsQ0FBQztRQUNELFdBQVcsRUFBRSxDQUFDLFNBQWdELEVBQUUsRUFBRTtZQUM5RCxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBNkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGF0aCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRHZW9tZXRyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHtcbiAgICBSZXNpemVSZWYsXG4gICAgUmVzaXplU3RhdGUsXG4gICAgV2l0aFJlc2l6ZU9wdGlvbnMsXG4gICAgZ2V0Rmlyc3RUZXh0TWFuYWdlLFxuICAgIGlzQ29ybmVySGFuZGxlLFxuICAgIG5vcm1hbGl6ZVNoYXBlUG9pbnRzLFxuICAgIHdpdGhSZXNpemVcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZEdlb21ldHJ5RWxlbWVudHMsIGdldFNlbGVjdGVkSW1hZ2VFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBHZW9tZXRyeUNvbXBvbmVudCB9IGZyb20gJy4uL2dlb21ldHJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdEltYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbWFnZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50IH0gZnJvbSAnLi93aXRoLWRyYXctcmVzaXplJztcbmltcG9ydCB7IGdldFJlc2l6ZVNuYXBSZWYgfSBmcm9tICcuLi91dGlscy9yZXNpemUtc25hcCc7XG5cbmV4cG9ydCBjb25zdCB3aXRoR2VvbWV0cnlSZXNpemUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBsZXQgYWxpZ25HOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2U+ID0ge1xuICAgICAgICBrZXk6ICdkcmF3LWdlb21ldHJ5JyxcbiAgICAgICAgY2FuUmVzaXplOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgaGl0VGVzdDogKHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5nZXRTZWxlY3RlZEdlb21ldHJ5RWxlbWVudHMoYm9hcmQpLCAuLi5nZXRTZWxlY3RlZEltYWdlRWxlbWVudHMoYm9hcmQpXTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCAhPT0gMSB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHNlbGVjdGVkRWxlbWVudHNbMF0pIGFzIEdlb21ldHJ5Q29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKHRhcmdldENvbXBvbmVudC5hY3RpdmVHZW5lcmF0b3IuaGFzUmVzaXplSGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gYm9hcmQuZ2V0UmVjdGFuZ2xlKHRhcmdldCkgYXMgUmVjdGFuZ2xlQ2xpZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgcmVjdGFuZ2xlLCBwb2ludCwgdGFyZ2V0LmFuZ2xlKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB0YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JDbGFzczogaGFuZGxlUmVmLmN1cnNvckNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRHZW9tZXRyeSB8IFBsYWl0SW1hZ2U+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXNpemVSZWYuZWxlbWVudC5wb2ludHMpKTtcbiAgICAgICAgICAgIHJlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQgPSByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KHJlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQsIHJlc2l6ZVJlZi5lbGVtZW50KSB8fCByZXNpemVTdGF0ZS5zdGFydFBvaW50O1xuICAgICAgICAgICAgcmVzaXplU3RhdGUuZW5kUG9pbnQgPSByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KHJlc2l6ZVN0YXRlLmVuZFBvaW50LCByZXNpemVSZWYuZWxlbWVudCkgfHwgcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICBhbGlnbkc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgY29uc3QgaXNGcm9tQ29ybmVyID0gaXNDb3JuZXJIYW5kbGUoYm9hcmQsIHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgY29uc3QgaXNBc3BlY3RSYXRpbyA9IHJlc2l6ZVN0YXRlLmlzU2hpZnQgfHwgUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHsgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50IH0gPSBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50KGJvYXJkLCByZXNpemVSZWYpO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplQWxpZ25SZWYgPSBnZXRSZXNpemVTbmFwUmVmKFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZixcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQb2ludFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNBc3BlY3RSYXRpbyxcbiAgICAgICAgICAgICAgICBpc0Zyb21Db3JuZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhbGlnbkcgPSByZXNpemVBbGlnblJlZi5hbGlnbkc7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoYWxpZ25HKTtcbiAgICAgICAgICAgIGxldCBwb2ludHMgPSByZXNpemVBbGlnblJlZi5hY3RpdmVQb2ludHMgYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHJlc2l6ZVJlZi5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgaGVpZ2h0OiB0ZXh0SGVpZ2h0IH0gPSBnZXRGaXJzdFRleHRNYW5hZ2UocmVzaXplUmVmLmVsZW1lbnQpLmdldFNpemUoKTtcbiAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVHZW9tZXRyeShib2FyZCwgcG9pbnRzLCB0ZXh0SGVpZ2h0LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzID0gbm9ybWFsaXplU2hhcGVQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzIH0sIHJlc2l6ZVJlZi5wYXRoIGFzIFBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0R2VvbWV0cnkgfCBQbGFpdEltYWdlPikgPT4ge1xuICAgICAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGFsaWduRyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdEdlb21ldHJ5IHwgUGxhaXRJbWFnZT4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -12,7 +12,7 @@ export const withLineAutoCompleteReaction = (board) => {
|
|
|
12
12
|
const selectedElements = getSelectedDrawElements(board);
|
|
13
13
|
const targetElement = selectedElements.length === 1 && selectedElements[0];
|
|
14
14
|
const movingPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
15
|
-
if (!PlaitBoard.isReadonly(board) && !isSelectionMoving(board) && targetElement && PlaitDrawElement.
|
|
15
|
+
if (!PlaitBoard.isReadonly(board) && !isSelectionMoving(board) && targetElement && PlaitDrawElement.isShapeElement(targetElement)) {
|
|
16
16
|
const points = getAutoCompletePoints(targetElement);
|
|
17
17
|
const hitIndex = getHitIndexOfAutoCompletePoint(rotateAntiPointsByElement(movingPoint, targetElement) || movingPoint, points);
|
|
18
18
|
const hitPoint = points[hitIndex];
|
|
@@ -36,4 +36,4 @@ export const withLineAutoCompleteReaction = (board) => {
|
|
|
36
36
|
};
|
|
37
37
|
return board;
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUtcmVhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6QixZQUFZLEVBQ1osV0FBVyxFQUNYLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVHLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzlELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDOUIsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztJQUN6QyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNwQixVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ2hJLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsSUFBSSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFzQixDQUFDO1lBQ2hGLFNBQVMsQ0FBQyx5QkFBMEIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ1gsU0FBUyxDQUFDLHlCQUEwQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO29CQUNqRyxNQUFNLEVBQUUsTUFBTTtvQkFDZCxJQUFJLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxrQ0FBa0MsQ0FBQztvQkFDbEUsU0FBUyxFQUFFLE9BQU87aUJBQ3JCLENBQUMsQ0FBQztnQkFDSCxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6RCxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLFlBQVksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNySCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDdXJzb3JDbGFzcyxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgUmdiYVRvSEVYLFxuICAgIGRyYXdDaXJjbGUsXG4gICAgaGFzVmFsaWRBbmdsZSxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50LFxuICAgIHNldEFuZ2xlRm9yRyxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCwgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9tZXRyeUNvbXBvbmVudCB9IGZyb20gJy4uL2dlb21ldHJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQUklNQVJZX0NPTE9SIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBMSU5FX0FVVE9fQ09NUExFVEVfSE9WRVJFRF9ESUFNRVRFUiwgTElORV9BVVRPX0NPTVBMRVRFX0hPVkVSRURfT1BBQ0lUWSB9IGZyb20gJy4uL2NvbnN0YW50cy9saW5lJztcblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lQXV0b0NvbXBsZXRlUmVhY3Rpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJNb3ZlIH0gPSBib2FyZDtcbiAgICBsZXQgcmVhY3Rpb25HOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgcmVhY3Rpb25HPy5yZW1vdmUoKTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZShDdXJzb3JDbGFzcy5jcm9zc2hhaXIpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmICFpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkgJiYgdGFyZ2V0RWxlbWVudCAmJiBQbGFpdERyYXdFbGVtZW50LmlzU2hhcGVFbGVtZW50KHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXRBdXRvQ29tcGxldGVQb2ludHModGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBoaXRJbmRleCA9IGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludChyb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KG1vdmluZ1BvaW50LCB0YXJnZXRFbGVtZW50KSB8fCBtb3ZpbmdQb2ludCwgcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFBvaW50ID0gcG9pbnRzW2hpdEluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0RWxlbWVudCkgYXMgR2VvbWV0cnlDb21wb25lbnQ7XG4gICAgICAgICAgICBjb21wb25lbnQubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciEucmVjb3ZlckF1dG9Db21wbGV0ZUcoKTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yIS5yZW1vdmVBdXRvQ29tcGxldGVHKGhpdEluZGV4KTtcbiAgICAgICAgICAgICAgICByZWFjdGlvbkcgPSBkcmF3Q2lyY2xlKFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLCBoaXRQb2ludCwgTElORV9BVVRPX0NPTVBMRVRFX0hPVkVSRURfRElBTUVURVIsIHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IFJnYmFUb0hFWChQUklNQVJZX0NPTE9SLCBMSU5FX0FVVE9fQ09NUExFVEVfSE9WRVJFRF9PUEFDSVRZKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHJlYWN0aW9uRyk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZChDdXJzb3JDbGFzcy5jcm9zc2hhaXIpO1xuICAgICAgICAgICAgICAgIGlmIChoYXNWYWxpZEFuZ2xlKHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFuZ2xlRm9yRyhyZWFjdGlvbkcsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChib2FyZC5nZXRSZWN0YW5nbGUodGFyZ2V0RWxlbWVudCkhKSwgdGFyZ2V0RWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
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
|
-
import {
|
|
3
|
+
import { getElementShape } from '../utils/shape';
|
|
4
4
|
import { getEngine } from '../engines';
|
|
5
5
|
import { handleLineCreating } from '../utils/line/line-basic';
|
|
6
6
|
import { getSelectedDrawElements } from '../utils/selected';
|
|
@@ -8,7 +8,7 @@ import { getAutoCompletePoints, getHitIndexOfAutoCompletePoint } from '../utils/
|
|
|
8
8
|
export const WithLineAutoCompletePluginKey = 'plait-line-auto-complete-plugin-key';
|
|
9
9
|
export const withLineAutoComplete = (board) => {
|
|
10
10
|
const { pointerDown, pointerMove, globalPointerUp } = board;
|
|
11
|
-
let
|
|
11
|
+
let autoCompletePoint = null;
|
|
12
12
|
let lineShapeG = null;
|
|
13
13
|
let sourceElement;
|
|
14
14
|
let temporaryElement;
|
|
@@ -16,13 +16,13 @@ export const withLineAutoComplete = (board) => {
|
|
|
16
16
|
const selectedElements = getSelectedDrawElements(board);
|
|
17
17
|
const targetElement = selectedElements.length === 1 && selectedElements[0];
|
|
18
18
|
const clickPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
19
|
-
if (!PlaitBoard.isReadonly(board) && targetElement && PlaitDrawElement.
|
|
19
|
+
if (!PlaitBoard.isReadonly(board) && targetElement && PlaitDrawElement.isShapeElement(targetElement)) {
|
|
20
20
|
const points = getAutoCompletePoints(targetElement);
|
|
21
21
|
const index = getHitIndexOfAutoCompletePoint(rotateAntiPointsByElement(clickPoint, targetElement) || clickPoint, points);
|
|
22
22
|
const hitPoint = points[index];
|
|
23
23
|
if (hitPoint) {
|
|
24
24
|
temporaryDisableSelection(board);
|
|
25
|
-
|
|
25
|
+
autoCompletePoint = hitPoint;
|
|
26
26
|
sourceElement = targetElement;
|
|
27
27
|
BoardTransforms.updatePointerType(board, LineShape.elbow);
|
|
28
28
|
}
|
|
@@ -33,18 +33,19 @@ export const withLineAutoComplete = (board) => {
|
|
|
33
33
|
lineShapeG?.remove();
|
|
34
34
|
lineShapeG = createG();
|
|
35
35
|
let movingPoint = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
36
|
-
if (
|
|
37
|
-
const distance = distanceBetweenPointAndPoint(...
|
|
36
|
+
if (autoCompletePoint && sourceElement) {
|
|
37
|
+
const distance = distanceBetweenPointAndPoint(...(rotateAntiPointsByElement(movingPoint, sourceElement) || movingPoint), ...autoCompletePoint);
|
|
38
38
|
if (distance > PRESS_AND_MOVE_BUFFER) {
|
|
39
39
|
const rectangle = RectangleClient.getRectangleByPoints(sourceElement.points);
|
|
40
|
-
const shape =
|
|
40
|
+
const shape = getElementShape(sourceElement);
|
|
41
41
|
const engine = getEngine(shape);
|
|
42
|
-
let sourcePoint = startPoint;
|
|
43
42
|
if (engine.getNearestCrossingPoint) {
|
|
44
|
-
const crossingPoint = engine.getNearestCrossingPoint(rectangle,
|
|
45
|
-
|
|
43
|
+
const crossingPoint = engine.getNearestCrossingPoint(rectangle, autoCompletePoint);
|
|
44
|
+
autoCompletePoint = crossingPoint;
|
|
46
45
|
}
|
|
47
|
-
|
|
46
|
+
// source point must be click point
|
|
47
|
+
const rotatedSourcePoint = rotatePointsByElement(autoCompletePoint, sourceElement) || autoCompletePoint;
|
|
48
|
+
temporaryElement = handleLineCreating(board, LineShape.elbow, rotatedSourcePoint, movingPoint, sourceElement, lineShapeG);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
pointerMove(event);
|
|
@@ -58,9 +59,9 @@ export const withLineAutoComplete = (board) => {
|
|
|
58
59
|
?.afterComplete;
|
|
59
60
|
afterComplete && afterComplete(temporaryElement);
|
|
60
61
|
}
|
|
61
|
-
if (
|
|
62
|
+
if (autoCompletePoint) {
|
|
62
63
|
BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
|
|
63
|
-
|
|
64
|
+
autoCompletePoint = null;
|
|
64
65
|
}
|
|
65
66
|
lineShapeG?.remove();
|
|
66
67
|
lineShapeG = null;
|
|
@@ -70,4 +71,4 @@ export const withLineAutoComplete = (board) => {
|
|
|
70
71
|
};
|
|
71
72
|
return board;
|
|
72
73
|
};
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBRXBCLE9BQU8sRUFDUCw0QkFBNEIsRUFFNUIseUJBQXlCLEVBRXpCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsV0FBVyxFQUNYLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcscUNBQXFDLENBQUM7QUFNbkYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVELElBQUksVUFBVSxHQUFpQixJQUFJLENBQUM7SUFDcEMsSUFBSSxVQUFVLEdBQXVCLElBQUksQ0FBQztJQUMxQyxJQUFJLGFBQWdDLENB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QixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxFQUFFO1FBQzVCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4RSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxNQUFNLGFBQWEsR0FBSSxLQUEyQixDQUFDLGdCQUFnQixDQUEwQiw2QkFBNkIsQ0FBQztnQkFDdkgsRUFBRSxhQUFhLENBQUM7WUFDcEIsYUFBYSxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckIsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUFJFU1NfQU5EX01PVkVfQlVGRkVSLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRPcHRpb25zQm9hcmQsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRGVidWdHZW5lcmF0b3IsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgcm90YXRlQW50aVBvaW50c0J5RWxlbWVudCxcbiAgICByb3RhdGVQb2ludHMsXG4gICAgcm90YXRlUG9pbnRzQnlFbGVtZW50LFxuICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24sXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdExpbmUsIFBsYWl0U2hhcGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi4vdXRpbHMvc2hhcGUnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBoYW5kbGVMaW5lQ3JlYXRpbmcgfSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtYmFzaWMnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZCc7XG5pbXBvcnQgeyBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCB9IGZyb20gJy4uL3V0aWxzL2dlb21ldHJ5JztcblxuZXhwb3J0IGNvbnN0IFdpdGhMaW5lQXV0b0NvbXBsZXRlUGx1Z2luS2V5ID0gJ3BsYWl0LWxpbmUtYXV0by1jb21wbGV0ZS1wbHVnaW4ta2V5JztcblxuZXhwb3J0IGludGVyZmFjZSBMaW5lQXV0b0NvbXBsZXRlT3B0aW9ucyB7XG4gICAgYWZ0ZXJDb21wbGV0ZTogKGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge307XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluZUF1dG9Db21wbGV0ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIHBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAgfSA9IGJvYXJkO1xuXG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmVTaGFwZUc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHNvdXJjZUVsZW1lbnQ6IFBsYWl0U2hhcGUgfCBudWxsO1xuICAgIGxldCB0ZW1wb3JhcnlFbGVtZW50OiBQbGFpdExpbmUgfCBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgY29uc3QgY2xpY2tQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgJiYgdGFyZ2V0RWxlbWVudCAmJiBQbGFpdERyYXdFbGVtZW50LmlzU2hhcGUodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldEF1dG9Db21wbGV0ZVBvaW50cyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50KHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQoY2xpY2tQb2ludCwgdGFyZ2V0RWxlbWVudCkgfHwgY2xpY2tQb2ludCwgcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFBvaW50ID0gcG9pbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24oYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBoaXRQb2ludDtcbiAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gdGFyZ2V0RWxlbWVudDtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIExpbmVTaGFwZS5lbGJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGxpbmVTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBsaW5lU2hhcGVHID0gY3JlYXRlRygpO1xuICAgICAgICBsZXQgbW92aW5nUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQgJiYgc291cmNlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KFxuICAgICAgICAgICAgICAgIC4uLm1vdmluZ1BvaW50LFxuICAgICAgICAgICAgICAgIC4uLihyb3RhdGVQb2ludHNCeUVsZW1lbnQoc3RhcnRQb2ludCwgc291cmNlRWxlbWVudCkgfHwgc3RhcnRQb2ludClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhzb3VyY2VFbGVtZW50LnBvaW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoc2hhcGUpO1xuICAgICAgICAgICAgICAgIGxldCBzb3VyY2VQb2ludCA9IHN0YXJ0UG9pbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGVuZ2luZS5nZXROZWFyZXN0Q3Jvc3NpbmdQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjcm9zc2luZ1BvaW50ID0gZW5naW5lLmdldE5lYXJlc3RDcm9zc2luZ1BvaW50KHJlY3RhbmdsZSwgc3RhcnRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZVBvaW50ID0gY3Jvc3NpbmdQb2ludDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gaGFuZGxlTGluZUNyZWF0aW5nKFxuICAgICAgICAgICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICAgICAgICAgICAgICByb3RhdGVQb2ludHNCeUVsZW1lbnQoc291cmNlUG9pbnQsIHNvdXJjZUVsZW1lbnQpIHx8IHNvdXJjZVBvaW50LFxuICAgICAgICAgICAgICAgICAgICBtb3ZpbmdQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgbGluZVNoYXBlR1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbXBsZXRlID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPExpbmVBdXRvQ29tcGxldGVPcHRpb25zPihXaXRoTGluZUF1dG9Db21wbGV0ZVBsdWdpbktleSlcbiAgICAgICAgICAgICAgICA/LmFmdGVyQ29tcGxldGU7XG4gICAgICAgICAgICBhZnRlckNvbXBsZXRlICYmIGFmdGVyQ29tcGxldGUodGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBudWxsO1xuICAgICAgICBzb3VyY2VFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IG51bGw7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsZUFBZSxFQUNmLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsV0FBVyxFQUNYLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcscUNBQXFDLENBQUM7QUFNbkYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVELElBQUksaUJBQWlCLEdBQWlCLElBQUksQ0FBQztJQUMzQyxJQUFJLFVBQVUsR0FBdUIsSUFBSSxDQUFDO0lBQzFDLElBQUksYUFBdUMs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UUFDRCxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsRUFBRTtRQUM1QixJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDNUMsTUFBTSxhQUFhLEdBQUksS0FBMkIsQ0FBQyxnQkFBZ0IsQ0FBMEIsNkJBQTZCLENBQUM7Z0JBQ3ZILEVBQUUsYUFBYSxDQUFDO1lBQ3BCLGFBQWEsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7UUFDRCxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckIsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUFJFU1NfQU5EX01PVkVfQlVGRkVSLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRPcHRpb25zQm9hcmQsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQsXG4gICAgcm90YXRlUG9pbnRzQnlFbGVtZW50LFxuICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24sXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdERyYXdFbGVtZW50LCBQbGFpdExpbmUsIFBsYWl0U2hhcGVFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi91dGlscy9zaGFwZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IGhhbmRsZUxpbmVDcmVhdGluZyB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IGdldEF1dG9Db21wbGV0ZVBvaW50cywgZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50IH0gZnJvbSAnLi4vdXRpbHMvZ2VvbWV0cnknO1xuXG5leHBvcnQgY29uc3QgV2l0aExpbmVBdXRvQ29tcGxldGVQbHVnaW5LZXkgPSAncGxhaXQtbGluZS1hdXRvLWNvbXBsZXRlLXBsdWdpbi1rZXknO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmVBdXRvQ29tcGxldGVPcHRpb25zIHtcbiAgICBhZnRlckNvbXBsZXRlOiAoZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7fTtcbn1cblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lQXV0b0NvbXBsZXRlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgYXV0b0NvbXBsZXRlUG9pbnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGxpbmVTaGFwZUc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHNvdXJjZUVsZW1lbnQ6IFBsYWl0U2hhcGVFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgdGVtcG9yYXJ5RWxlbWVudDogUGxhaXRMaW5lIHwgbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgIGNvbnN0IGNsaWNrUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmIHRhcmdldEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc1NoYXBlRWxlbWVudCh0YXJnZXRFbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXV0b0NvbXBsZXRlUG9pbnRzKHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQocm90YXRlQW50aVBvaW50c0J5RWxlbWVudChjbGlja1BvaW50LCB0YXJnZXRFbGVtZW50KSB8fCBjbGlja1BvaW50LCBwb2ludHMpO1xuICAgICAgICAgICAgY29uc3QgaGl0UG9pbnQgPSBwb2ludHNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKGhpdFBvaW50KSB7XG4gICAgICAgICAgICAgICAgdGVtcG9yYXJ5RGlzYWJsZVNlbGVjdGlvbihib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCk7XG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlUG9pbnQgPSBoaXRQb2ludDtcbiAgICAgICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gdGFyZ2V0RWxlbWVudDtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIExpbmVTaGFwZS5lbGJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGxpbmVTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBsaW5lU2hhcGVHID0gY3JlYXRlRygpO1xuICAgICAgICBsZXQgbW92aW5nUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgaWYgKGF1dG9Db21wbGV0ZVBvaW50ICYmIHNvdXJjZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChcbiAgICAgICAgICAgICAgICAuLi4ocm90YXRlQW50aVBvaW50c0J5RWxlbWVudChtb3ZpbmdQb2ludCwgc291cmNlRWxlbWVudCkgfHwgbW92aW5nUG9pbnQpLFxuICAgICAgICAgICAgICAgIC4uLmF1dG9Db21wbGV0ZVBvaW50XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHNvdXJjZUVsZW1lbnQucG9pbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaGFwZSA9IGdldEVsZW1lbnRTaGFwZShzb3VyY2VFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoc2hhcGUpO1xuICAgICAgICAgICAgICAgIGlmIChlbmdpbmUuZ2V0TmVhcmVzdENyb3NzaW5nUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3Jvc3NpbmdQb2ludCA9IGVuZ2luZS5nZXROZWFyZXN0Q3Jvc3NpbmdQb2ludChyZWN0YW5nbGUsIGF1dG9Db21wbGV0ZVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlUG9pbnQgPSBjcm9zc2luZ1BvaW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzb3VyY2UgcG9pbnQgbXVzdCBiZSBjbGljayBwb2ludFxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdGF0ZWRTb3VyY2VQb2ludCA9IHJvdGF0ZVBvaW50c0J5RWxlbWVudChhdXRvQ29tcGxldGVQb2ludCwgc291cmNlRWxlbWVudCkgfHwgYXV0b0NvbXBsZXRlUG9pbnQ7XG4gICAgICAgICAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IGhhbmRsZUxpbmVDcmVhdGluZyhib2FyZCwgTGluZVNoYXBlLmVsYm93LCByb3RhdGVkU291cmNlUG9pbnQsIG1vdmluZ1BvaW50LCBzb3VyY2VFbGVtZW50LCBsaW5lU2hhcGVHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnQpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICAgICAgYWRkU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCB0ZW1wb3JhcnlFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyQ29tcGxldGUgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8TGluZUF1dG9Db21wbGV0ZU9wdGlvbnM+KFdpdGhMaW5lQXV0b0NvbXBsZXRlUGx1Z2luS2V5KVxuICAgICAgICAgICAgICAgID8uYWZ0ZXJDb21wbGV0ZTtcbiAgICAgICAgICAgIGFmdGVyQ29tcGxldGUgJiYgYWZ0ZXJDb21wbGV0ZSh0ZW1wb3JhcnlFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0b0NvbXBsZXRlUG9pbnQpIHtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgYXV0b0NvbXBsZXRlUG9pbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBsaW5lU2hhcGVHID0gbnVsbDtcbiAgICAgICAgc291cmNlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SNAPPING_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_BORDER_COLOR, drawCircle, hasValidAngle, setAngleForG, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
2
|
import { LineShape, PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { isResizingByCondition } from '@plait/common';
|
|
4
|
-
import {
|
|
4
|
+
import { getHitGeometry, getSnappingRef } from '../utils/position/geometry';
|
|
5
5
|
import { LineResizeHandle } from '../utils/position/line';
|
|
6
|
-
import {
|
|
7
|
-
import { getHitConnectorPoint } from '../utils/line/line-basic';
|
|
6
|
+
import { drawBoundReaction } from '../utils/geometry';
|
|
8
7
|
export const withLineBoundReaction = (board) => {
|
|
9
8
|
const { pointerMove, pointerUp } = board;
|
|
10
9
|
let boundShapeG = null;
|
|
@@ -23,25 +22,24 @@ export const withLineBoundReaction = (board) => {
|
|
|
23
22
|
return PlaitDrawElement.isLine(element) && isSourceOrTarget;
|
|
24
23
|
});
|
|
25
24
|
if (isLinePointer || isLineResizing) {
|
|
26
|
-
const hitElement =
|
|
25
|
+
const hitElement = getHitGeometry(board, movingPoint);
|
|
27
26
|
if (hitElement) {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
boundShapeG.appendChild(circleG);
|
|
41
|
-
PlaitBoard.getElementActiveHost(board).append(boundShapeG);
|
|
27
|
+
const ref = getSnappingRef(board, hitElement, movingPoint);
|
|
28
|
+
const isSnapping = ref.isHitEdge || ref.isHitConnector;
|
|
29
|
+
boundShapeG = drawBoundReaction(board, hitElement, { hasMask: isSnapping, hasConnector: true });
|
|
30
|
+
if (isSnapping) {
|
|
31
|
+
const circleG = drawCircle(PlaitBoard.getRoughSVG(board), ref.connectorPoint || ref.edgePoint, 6, {
|
|
32
|
+
stroke: SELECTION_BORDER_COLOR,
|
|
33
|
+
strokeWidth: SNAPPING_STROKE_WIDTH,
|
|
34
|
+
fill: SELECTION_BORDER_COLOR,
|
|
35
|
+
fillStyle: 'solid'
|
|
36
|
+
});
|
|
37
|
+
boundShapeG.appendChild(circleG);
|
|
38
|
+
}
|
|
42
39
|
if (hasValidAngle(hitElement)) {
|
|
43
|
-
setAngleForG(boundShapeG, RectangleClient.
|
|
40
|
+
setAngleForG(boundShapeG, RectangleClient.getCenterPointByPoints(hitElement.points), hitElement.angle);
|
|
44
41
|
}
|
|
42
|
+
PlaitBoard.getElementActiveHost(board).append(boundShapeG);
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
45
|
pointerMove(event);
|
|
@@ -53,4 +51,4 @@ export const withLineBoundReaction = (board) => {
|
|
|
53
51
|
};
|
|
54
52
|
return board;
|
|
55
53
|
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWJvdW5kLXJlYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWxpbmUtYm91bmQtcmVhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHFCQUFxQixFQUNyQixVQUFVLEVBRVYsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRXpDLElBQUksV0FBVyxHQUF1QixJQUFJLENBQUM7SUFFM0MsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN4QyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdEIsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBaUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQzVGLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxNQUFNLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQ2xHLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN0RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZELFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDaEcsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDYixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsY0FBYyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO3dCQUM5RixNQUFNLEVBQUUsc0JBQXNCO3dCQUM5QixXQUFXLEVBQUUscUJBQXFCO3dCQUNsQyxJQUFJLEVBQUUsc0JBQXNCO3dCQUM1QixTQUFTLEVBQUUsT0FBTztxQkFDckIsQ0FBQyxDQUFDO29CQUNILFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQ0QsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsWUFBWSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0csQ0FBQztnQkFDRCxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDTCxDQUFDO1FBQ0QsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUU7UUFDdEIsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgU05BUFBJTkdfU1RST0tFX1dJRFRILFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgIGRyYXdDaXJjbGUsXG4gICAgaGFzVmFsaWRBbmdsZSxcbiAgICBzZXRBbmdsZUZvckcsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc1Jlc2l6aW5nQnlDb25kaXRpb24gfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldEhpdEdlb21ldHJ5LCBnZXRTbmFwcGluZ1JlZiB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7IExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IGRyYXdCb3VuZFJlYWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvZ2VvbWV0cnknO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVCb3VuZFJlYWN0aW9uID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyTW92ZSwgcG9pbnRlclVwIH0gPSBib2FyZDtcblxuICAgIGxldCBib3VuZFNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgYm91bmRTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxpbmVQb2ludGVycyA9IE9iamVjdC5rZXlzKExpbmVTaGFwZSk7XG4gICAgICAgIGNvbnN0IGlzTGluZVBvaW50ZXIgPSBQbGFpdEJvYXJkLmlzSW5Qb2ludGVyKGJvYXJkLCBsaW5lUG9pbnRlcnMpO1xuICAgICAgICBjb25zdCBtb3ZpbmdQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBpc0xpbmVSZXNpemluZyA9IGlzUmVzaXppbmdCeUNvbmRpdGlvbjxQbGFpdEVsZW1lbnQsIExpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCByZXNpemVSZWYgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBlbGVtZW50LCBoYW5kbGUgfSA9IHJlc2l6ZVJlZjtcbiAgICAgICAgICAgIGNvbnN0IGlzU291cmNlT3JUYXJnZXQgPSBoYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0IHx8IGhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5zb3VyY2U7XG4gICAgICAgICAgICByZXR1cm4gUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCkgJiYgaXNTb3VyY2VPclRhcmdldDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0xpbmVQb2ludGVyIHx8IGlzTGluZVJlc2l6aW5nKSB7XG4gICAgICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0R2VvbWV0cnkoYm9hcmQsIG1vdmluZ1BvaW50KTtcbiAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gZ2V0U25hcHBpbmdSZWYoYm9hcmQsIGhpdEVsZW1lbnQsIG1vdmluZ1BvaW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1NuYXBwaW5nID0gcmVmLmlzSGl0RWRnZSB8fCByZWYuaXNIaXRDb25uZWN0b3I7XG4gICAgICAgICAgICAgICAgYm91bmRTaGFwZUcgPSBkcmF3Qm91bmRSZWFjdGlvbihib2FyZCwgaGl0RWxlbWVudCwgeyBoYXNNYXNrOiBpc1NuYXBwaW5nLCBoYXNDb25uZWN0b3I6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzU25hcHBpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2lyY2xlRyA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksIHJlZi5jb25uZWN0b3JQb2ludCB8fCByZWYuZWRnZVBvaW50LCA2LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogU05BUFBJTkdfU1RST0tFX1dJRFRILFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYm91bmRTaGFwZUcuYXBwZW5kQ2hpbGQoY2lyY2xlRyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChoYXNWYWxpZEFuZ2xlKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFuZ2xlRm9yRyhib3VuZFNoYXBlRywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50QnlQb2ludHMoaGl0RWxlbWVudC5wb2ludHMpLCBoaXRFbGVtZW50LmFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGJvdW5kU2hhcGVHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IGV2ZW50ID0+IHtcbiAgICAgICAgYm91bmRTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBib3VuZFNoYXBlRyA9IG51bGw7XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, addSelectedElement, clearSelectedElement, createG, preventTouchMove, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { getLinePointers } from '../constants';
|
|
3
|
+
import { getSnappingGeometry } from '../utils/position/geometry';
|
|
4
4
|
import { isDrawingMode } from '@plait/common';
|
|
5
5
|
import { handleLineCreating } from '../utils/line/line-basic';
|
|
6
6
|
export const withLineCreateByDraw = (board) => {
|
|
@@ -15,7 +15,7 @@ export const withLineCreateByDraw = (board) => {
|
|
|
15
15
|
if (!PlaitBoard.isReadonly(board) && isLinePointer && isDrawingMode(board)) {
|
|
16
16
|
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
17
17
|
start = point;
|
|
18
|
-
const hitElement =
|
|
18
|
+
const hitElement = getSnappingGeometry(board, point);
|
|
19
19
|
if (hitElement) {
|
|
20
20
|
sourceElement = hitElement;
|
|
21
21
|
}
|
|
@@ -50,4 +50,4 @@ export const withLineCreateByDraw = (board) => {
|
|
|
50
50
|
};
|
|
51
51
|
return board;
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLWNyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsRUFFaEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVELElBQUksS0FBSyxHQUFpQixJQUFJLENBQUM7SUFFL0IsSUFBSSxhQUFtQyxDQUFDO0lBRXhDLElBQUksVUFBVSxHQUF1QixJQUFJLENBQUM7SUFFMUMsSUFBSSxnQkFBZ0IsR0FBcUIsSUFBSSxDQUFDO0lBRTlDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDeEMsTUFBTSxZQUFZLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFFLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDZCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDYixhQUFhLEdBQUcsVUFBVSxDQUFDO1lBQy9CLENBQUM7WUFDRCxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN4QyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckIsVUFBVSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLElBQUksV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBYyxDQUFDO1lBQzVELGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0csQ0FBQztRQUVELFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQzVDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4RSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckIsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDYixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIFBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNyZWF0ZUcsXG4gICAgcHJldmVudFRvdWNoTW92ZSxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TGluZVBvaW50ZXJzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldFNuYXBwaW5nR2VvbWV0cnkgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBpc0RyYXdpbmdNb2RlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBoYW5kbGVMaW5lQ3JlYXRpbmcgfSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtYmFzaWMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVDcmVhdGVCeURyYXcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwIH0gPSBib2FyZDtcblxuICAgIGxldCBzdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxldCBzb3VyY2VFbGVtZW50OiBQbGFpdEdlb21ldHJ5IHwgbnVsbDtcblxuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IHRlbXBvcmFyeUVsZW1lbnQ6IFBsYWl0TGluZSB8IG51bGwgPSBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBsaW5lUG9pbnRlcnMgPSBnZXRMaW5lUG9pbnRlcnMoKTtcbiAgICAgICAgY29uc3QgaXNMaW5lUG9pbnRlciA9IFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIGxpbmVQb2ludGVycyk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiBpc0xpbmVQb2ludGVyICYmIGlzRHJhd2luZ01vZGUoYm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgc3RhcnQgPSBwb2ludDtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRTbmFwcGluZ0dlb21ldHJ5KGJvYXJkLCBwb2ludCk7XG4gICAgICAgICAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBoaXRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlck1vdmUgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBsaW5lU2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgbGluZVNoYXBlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgbGV0IG1vdmluZ1BvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgICAgY29uc3QgbGluZVNoYXBlID0gUGxhaXRCb2FyZC5nZXRQb2ludGVyKGJvYXJkKSBhcyBMaW5lU2hhcGU7XG4gICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gaGFuZGxlTGluZUNyZWF0aW5nKGJvYXJkLCBsaW5lU2hhcGUsIHN0YXJ0LCBtb3ZpbmdQb2ludCwgc291cmNlRWxlbWVudCwgbGluZVNoYXBlRyk7XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBsaW5lU2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgbGluZVNoYXBlRyA9IG51bGw7XG4gICAgICAgIHNvdXJjZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCBldmVudCwgZmFsc2UpO1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { PlaitNode, Point
|
|
2
|
-
import {
|
|
1
|
+
import { PlaitNode, Point } from '@plait/core';
|
|
2
|
+
import { simplifyOrthogonalPoints, withResize } from '@plait/common';
|
|
3
3
|
import { getSelectedLineElements } from '../utils/selected';
|
|
4
4
|
import { getHitLineResizeHandleRef, LineResizeHandle } from '../utils/position/line';
|
|
5
|
-
import {
|
|
5
|
+
import { getSnappingGeometry } from '../utils/position/geometry';
|
|
6
6
|
import { LineShape } from '../interfaces';
|
|
7
7
|
import { DrawTransforms } from '../transforms';
|
|
8
|
-
import {
|
|
9
|
-
import { getElbowPoints, getNextRenderPoints } from '../utils/line/elbow';
|
|
8
|
+
import { getElbowPoints, getNextRenderPoints, isUseDefaultOrthogonalRoute } from '../utils/line/elbow';
|
|
10
9
|
import { alignElbowSegment, alignPoints, getIndexAndDeleteCountByKeyPoint, getResizedPreviousAndNextPoint, hasIllegalElbowPoint } from '../utils/line/line-resize';
|
|
11
|
-
import {
|
|
10
|
+
import { getHitConnection, getLinePoints } from '../utils/line/line-basic';
|
|
12
11
|
import { getElbowLineRouteOptions } from '../utils/line';
|
|
13
12
|
export const withLineResize = (board) => {
|
|
14
13
|
let elbowLineIndex;
|
|
@@ -44,8 +43,7 @@ export const withLineResize = (board) => {
|
|
|
44
43
|
resizeRef.handle !== LineResizeHandle.source &&
|
|
45
44
|
resizeRef.handle !== LineResizeHandle.target) {
|
|
46
45
|
const params = getElbowLineRouteOptions(board, resizeRef.element);
|
|
47
|
-
|
|
48
|
-
if (isIntersect) {
|
|
46
|
+
if (isUseDefaultOrthogonalRoute(resizeRef.element, params)) {
|
|
49
47
|
return;
|
|
50
48
|
}
|
|
51
49
|
const points = [...resizeRef.element.points];
|
|
@@ -64,12 +62,12 @@ export const withLineResize = (board) => {
|
|
|
64
62
|
let source = { ...resizeRef.element.source };
|
|
65
63
|
let target = { ...resizeRef.element.target };
|
|
66
64
|
let handleIndex = resizeRef.handleIndex;
|
|
67
|
-
const hitElement =
|
|
65
|
+
const hitElement = getSnappingGeometry(board, resizeState.endPoint);
|
|
68
66
|
if (resizeRef.handle === LineResizeHandle.source || resizeRef.handle === LineResizeHandle.target) {
|
|
69
67
|
const object = resizeRef.handle === LineResizeHandle.source ? source : target;
|
|
70
68
|
points[handleIndex] = resizeState.endPoint;
|
|
71
69
|
if (hitElement) {
|
|
72
|
-
object.connection =
|
|
70
|
+
object.connection = getHitConnection(board, resizeState.endPoint, hitElement);
|
|
73
71
|
object.boundId = hitElement.id;
|
|
74
72
|
}
|
|
75
73
|
else {
|
|
@@ -111,7 +109,8 @@ export const withLineResize = (board) => {
|
|
|
111
109
|
const newPoints = [...points];
|
|
112
110
|
newPoints[0] = drawPoints[0];
|
|
113
111
|
newPoints[newPoints.length - 1] = drawPoints[drawPoints.length - 1];
|
|
114
|
-
if (resizeRef.element.shape !== LineShape.elbow
|
|
112
|
+
if (resizeRef.element.shape !== LineShape.elbow ||
|
|
113
|
+
(resizeRef.element.shape === LineShape.elbow && newPoints.length === 2)) {
|
|
115
114
|
newPoints.forEach((point, index) => {
|
|
116
115
|
if (index === handleIndex)
|
|
117
116
|
return;
|
|
@@ -156,4 +155,4 @@ export const withLineResize = (board) => {
|
|
|
156
155
|
withResize(board, options);
|
|
157
156
|
return board;
|
|
158
157
|
};
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQWtDLHlCQUF5QixFQUFnQixNQUFNLGFBQWEsQ0FBQztBQUMxSSxPQUFPLEVBQTZDLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQWMsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNILGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsZ0NBQWdDLEVBQ2hDLDhCQUE4QixFQUM5QixvQkFBb0IsRUFDdkIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNoRCxJQUFJLGNBQTZCLENBQUM7SUFDbEMsSUFBSSxvQkFBbUMsQ0FBQztJ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Q0FBQyxFQUFFLENBQUM7d0JBQzdELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDakIsQ0FBQztvQkFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3RCLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQ2hCLENBQUM7b0JBQ0QsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztvQkFDekQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBWSxDQUFDLENBQUM7Z0JBQ3pFLENBQUM7WUFDTCxDQUFDO1lBQ0QsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0QixvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDNUIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQztLQUNKLENBQUM7SUFFRixVQUFVLENBQThCLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUV4RCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdE5vZGUsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGhhc1ZhbGlkQW5nbGUsIHJvdGF0ZUFudGlQb2ludHNCeUVsZW1lbnQsIHJvdGF0ZVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCBpc1NvdXJjZUFuZFRhcmdldEludGVyc2VjdCwgc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzLCB3aXRoUmVzaXplIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZExpbmVFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkJztcbmltcG9ydCB7IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYsIExpbmVSZXNpemVIYW5kbGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9saW5lJztcbmltcG9ydCB7IGdldEhpdE91dGxpbmVHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7IExpbmVIYW5kbGUsIExpbmVTaGFwZSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgUkVBQ1RJT05fTUFSR0lOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEVsYm93UG9pbnRzLCBnZXROZXh0UmVuZGVyUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9lbGJvdyc7XG5pbXBvcnQge1xuICAgIGFsaWduRWxib3dTZWdtZW50LFxuICAgIGFsaWduUG9pbnRzLFxuICAgIGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50LFxuICAgIGdldFJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludCxcbiAgICBoYXNJbGxlZ2FsRWxib3dQb2ludFxufSBmcm9tICcuLi91dGlscy9saW5lL2xpbmUtcmVzaXplJztcbmltcG9ydCB7IGdldENvbm5lY3Rpb25CeU5lYXJlc3RQb2ludCwgZ2V0TGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzL2xpbmUvbGluZS1iYXNpYyc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9saW5lJztcblxuZXhwb3J0IGNvbnN0IHdpdGhMaW5lUmVzaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgbGV0IGVsYm93TGluZUluZGV4OiBudW1iZXIgfCBudWxsO1xuICAgIGxldCBlbGJvd0xpbmVEZWxldGVDb3VudDogbnVtYmVyIHwgbnVsbDtcbiAgICBsZXQgZWxib3dTb3VyY2VQb2ludDogUG9pbnQgfCBudWxsO1xuICAgIGxldCBlbGJvd1RhcmdldFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGVsYm93TmV4dFJlbmRlclBvaW50czogUG9pbnRbXSB8IG51bGw7XG5cbiAgICBjb25zdCBvcHRpb25zOiBXaXRoUmVzaXplT3B0aW9uczxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+ID0ge1xuICAgICAgICBrZXk6ICdkcmF3LWxpbmUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBoaXRUZXN0OiAocG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZExpbmVFbGVtZW50cyA9IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZExpbmVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRMaW5lRWxlbWVudHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYoYm9hcmQsIHZhbHVlLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5kZXg6IGhhbmRsZVJlZi5oYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgYmVmb3JlUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cgJiZcbiAgICAgICAgICAgICAgICByZXNpemVSZWYuaGFuZGxlICE9PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSAmJlxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5oYW5kbGUgIT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ludGVyc2VjdCA9IGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSW50ZXJzZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50c09uRWxib3cgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQgPSBwb2ludHNPbkVsYm93WzBdO1xuICAgICAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQgPSBwb2ludHNPbkVsYm93W3BvaW50c09uRWxib3cubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzID0gZ2V0TmV4dFJlbmRlclBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIHBvaW50c09uRWxib3cpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludChib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQsIFsuLi5wb2ludHNdLCBlbGJvd05leHRSZW5kZXJQb2ludHMsIGhhbmRsZUluZGV4KTtcbiAgICAgICAgICAgICAgICBlbGJvd0xpbmVJbmRleCA9IHZhbHVlLmluZGV4O1xuICAgICAgICAgICAgICAgIGVsYm93TGluZURlbGV0ZUNvdW50ID0gdmFsdWUuZGVsZXRlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcG9pbnRzOiBQb2ludFtdID0gWy4uLnJlc2l6ZVJlZi5lbGVtZW50LnBvaW50c107XG4gICAgICAgICAgICBsZXQgc291cmNlOiBMaW5lSGFuZGxlID0geyAuLi5yZXNpemVSZWYuZWxlbWVudC5zb3VyY2UgfTtcbiAgICAgICAgICAgIGxldCB0YXJnZXQ6IExpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnRhcmdldCB9O1xuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZUluZGV4ITtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRPdXRsaW5lR2VvbWV0cnkoYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBSRUFDVElPTl9NQVJHSU4pO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlIHx8IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5zb3VyY2UgPyBzb3VyY2UgOiB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgcG9pbnRzW2hhbmRsZUluZGV4XSA9IHJlc2l6ZVN0YXRlLmVuZFBvaW50O1xuICAgICAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gZ2V0Q29ubmVjdGlvbkJ5TmVhcmVzdFBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3RhdGVBbnRpUG9pbnRzQnlFbGVtZW50KHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBoaXRFbGVtZW50KSB8fCByZXNpemVTdGF0ZS5lbmRQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpdEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSBoaXRFbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuYm91bmRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmVsYm93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGJvd05leHRSZW5kZXJQb2ludHMgJiYgZWxib3dTb3VyY2VQb2ludCAmJiBlbGJvd1RhcmdldFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQgPSBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0S2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kS2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF0gPSBhbGlnbkVsYm93U2VnbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaWREYXRhUG9pbnRzOiBQb2ludFtdID0gWy4uLnBvaW50c10uc2xpY2UoMSwgcG9pbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsYm93TGluZUluZGV4ICE9PSBudWxsICYmIGVsYm93TGluZURlbGV0ZUNvdW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0lsbGVnYWxFbGJvd1BvaW50KG1pZERhdGFQb2ludHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMgPSBbbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMuc3BsaWNlKGVsYm93TGluZUluZGV4LCBlbGJvd0xpbmVEZWxldGVDb3VudCwgbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ubWlkRGF0YVBvaW50cywgZWxib3dUYXJnZXRQb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoaGFuZGxlSW5kZXggKyAxLCAwLCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUgPyBoYW5kbGVJbmRleCArIDEgOiBoYW5kbGVJbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmF3UG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IFsuLi5wb2ludHNdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1swXSA9IGRyYXdQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgbmV3UG9pbnRzW25ld1BvaW50cy5sZW5ndGggLSAxXSA9IGRyYXdQb2ludHNbZHJhd1BvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgIT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgICAgICBuZXdQb2ludHMuZm9yRWFjaCgocG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGhhbmRsZUluZGV4KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzW2hhbmRsZUluZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSBhbGlnblBvaW50cyhwb2ludCwgcG9pbnRzW2hhbmRsZUluZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnJlc2l6ZUxpbmUoYm9hcmQsIHsgcG9pbnRzLCBzb3VyY2UsIHRhcmdldCB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnRzID0gZWxlbWVudCAmJiBbLi4uZWxlbWVudC5wb2ludHMhXTtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIgJiYgZWxib3dOZXh0UmVuZGVyUG9pbnRzICYmIGVsYm93U291cmNlUG9pbnQgJiYgZWxib3dUYXJnZXRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0U291cmNlUG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRUYXJnZXRQb2ludCA9IGVsYm93TmV4dFJlbmRlclBvaW50c1tlbGJvd05leHRSZW5kZXJQb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoMCwgMSwgbmV4dFNvdXJjZVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZSgtMSwgMSwgbmV4dFRhcmdldFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKHBvaW50cyEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNFcXVhbHMocG9pbnRzWzBdLCBuZXh0U291cmNlUG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChQb2ludC5pc0VxdWFscyhwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBuZXh0VGFyZ2V0UG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtlbGJvd1NvdXJjZVBvaW50LCAuLi5wb2ludHMsIGVsYm93VGFyZ2V0UG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVMaW5lKGJvYXJkLCB7IHBvaW50cyB9LCByZXNpemVSZWYucGF0aCBhcyBQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGJvd0xpbmVJbmRleCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd0xpbmVEZWxldGVDb3VudCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd1NvdXJjZVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93VGFyZ2V0UG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUE2Qyx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFjLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxnQ0FBZ0MsRUFDaEMsOEJBQThCLEVBQzlCLG9CQUFvQixFQUN2QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELElBQUksY0FBNkIsQ0FBQztJQUNsQyxJQUFJLG9CQUFtQyxDQUFDO0lBQ3hDLElBQUksZ0JBQThCLENBQUM7SUFDbkMsSUFBSSxnQkFBOEIsQ0FBQztJQUNuQyxJQUFJ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R0FBRyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN0QixNQUFNLEdBQUcsRUFBRSxDQUFDO29CQUNoQixDQUFDO29CQUNELE1BQU0sR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7b0JBQ3pELGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQVksQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO1lBQ0wsQ0FBQztZQUNELGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDdEIsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQzVCLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDeEIscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUE4QixLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFeEQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXROb2RlLCBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJlc2l6ZVJlZiwgUmVzaXplU3RhdGUsIFdpdGhSZXNpemVPcHRpb25zLCBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMsIHdpdGhSZXNpemUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFNlbGVjdGVkTGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQnO1xuaW1wb3J0IHsgZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZiwgTGluZVJlc2l6ZUhhbmRsZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2xpbmUnO1xuaW1wb3J0IHsgZ2V0U25hcHBpbmdHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7IExpbmVIYW5kbGUsIExpbmVTaGFwZSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0RWxib3dQb2ludHMsIGdldE5leHRSZW5kZXJQb2ludHMsIGlzVXNlRGVmYXVsdE9ydGhvZ29uYWxSb3V0ZSB9IGZyb20gJy4uL3V0aWxzL2xpbmUvZWxib3cnO1xuaW1wb3J0IHtcbiAgICBhbGlnbkVsYm93U2VnbWVudCxcbiAgICBhbGlnblBvaW50cyxcbiAgICBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludCxcbiAgICBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQsXG4gICAgaGFzSWxsZWdhbEVsYm93UG9pbnRcbn0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRIaXRDb25uZWN0aW9uLCBnZXRMaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvbGluZS9saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2xpbmUnO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVSZXNpemUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBsZXQgZWxib3dMaW5lSW5kZXg6IG51bWJlciB8IG51bGw7XG4gICAgbGV0IGVsYm93TGluZURlbGV0ZUNvdW50OiBudW1iZXIgfCBudWxsO1xuICAgIGxldCBlbGJvd1NvdXJjZVBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGVsYm93VGFyZ2V0UG9pbnQ6IFBvaW50IHwgbnVsbDtcbiAgICBsZXQgZWxib3dOZXh0UmVuZGVyUG9pbnRzOiBQb2ludFtdIHwgbnVsbDtcblxuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0TGluZSwgTGluZVJlc2l6ZUhhbmRsZT4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctbGluZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTGluZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRMaW5lRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGluZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZExpbmVFbGVtZW50cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmID0gZ2V0SGl0TGluZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgdmFsdWUsIHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleDogaGFuZGxlUmVmLmhhbmRsZUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBiZWZvcmVSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLmVsZW1lbnQuc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdyAmJlxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5oYW5kbGUgIT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlICYmXG4gICAgICAgICAgICAgICAgcmVzaXplUmVmLmhhbmRsZSAhPT0gTGluZVJlc2l6ZUhhbmRsZS50YXJnZXRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChpc1VzZURlZmF1bHRPcnRob2dvbmFsUm91dGUocmVzaXplUmVmLmVsZW1lbnQsIHBhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHM6IFBvaW50W10gPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IHJlc2l6ZVJlZi5oYW5kbGVJbmRleCE7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzT25FbGJvdyA9IGdldEVsYm93UG9pbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZWxib3dTb3VyY2VQb2ludCA9IHBvaW50c09uRWxib3dbMF07XG4gICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCA9IHBvaW50c09uRWxib3dbcG9pbnRzT25FbGJvdy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBlbGJvd05leHRSZW5kZXJQb2ludHMgPSBnZXROZXh0UmVuZGVyUG9pbnRzKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgcG9pbnRzT25FbGJvdyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50KGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgWy4uLnBvaW50c10sIGVsYm93TmV4dFJlbmRlclBvaW50cywgaGFuZGxlSW5kZXgpO1xuICAgICAgICAgICAgICAgIGVsYm93TGluZUluZGV4ID0gdmFsdWUuaW5kZXg7XG4gICAgICAgICAgICAgICAgZWxib3dMaW5lRGVsZXRlQ291bnQgPSB2YWx1ZS5kZWxldGVDb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+LCByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGxldCBwb2ludHM6IFBvaW50W10gPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucG9pbnRzXTtcbiAgICAgICAgICAgIGxldCBzb3VyY2U6IExpbmVIYW5kbGUgPSB7IC4uLnJlc2l6ZVJlZi5lbGVtZW50LnNvdXJjZSB9O1xuICAgICAgICAgICAgbGV0IHRhcmdldDogTGluZUhhbmRsZSA9IHsgLi4ucmVzaXplUmVmLmVsZW1lbnQudGFyZ2V0IH07XG4gICAgICAgICAgICBsZXQgaGFuZGxlSW5kZXggPSByZXNpemVSZWYuaGFuZGxlSW5kZXghO1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldFNuYXBwaW5nR2VvbWV0cnkoYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50KTtcbiAgICAgICAgICAgIGlmIChyZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnNvdXJjZSB8fCByZXNpemVSZWYuaGFuZGxlID09PSBMaW5lUmVzaXplSGFuZGxlLnRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHJlc2l6ZVJlZi5oYW5kbGUgPT09IExpbmVSZXNpemVIYW5kbGUuc291cmNlID8gc291cmNlIDogdGFyZ2V0O1xuICAgICAgICAgICAgICAgIHBvaW50c1toYW5kbGVJbmRleF0gPSByZXNpemVTdGF0ZS5lbmRQb2ludDtcbiAgICAgICAgICAgICAgICBpZiAoaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuY29ubmVjdGlvbiA9IGdldEhpdENvbm5lY3Rpb24oYm9hcmQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50LCBoaXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmJvdW5kSWQgPSBoaXRFbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdC5jb25uZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QuYm91bmRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXNpemVSZWYuZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmVsYm93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGJvd05leHRSZW5kZXJQb2ludHMgJiYgZWxib3dTb3VyY2VQb2ludCAmJiBlbGJvd1RhcmdldFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQgPSBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dOZXh0UmVuZGVyUG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYm93U291cmNlUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxib3dUYXJnZXRQb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0S2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kS2V5UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF0gPSBhbGlnbkVsYm93U2VnbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEtleVBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaWREYXRhUG9pbnRzOiBQb2ludFtdID0gWy4uLnBvaW50c10uc2xpY2UoMSwgcG9pbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsYm93TGluZUluZGV4ICE9PSBudWxsICYmIGVsYm93TGluZURlbGV0ZUNvdW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0lsbGVnYWxFbGJvd1BvaW50KG1pZERhdGFQb2ludHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMgPSBbbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZERhdGFQb2ludHMuc3BsaWNlKGVsYm93TGluZUluZGV4LCBlbGJvd0xpbmVEZWxldGVDb3VudCwgbmV3U3RhcnRQb2ludCwgbmV3RW5kUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ubWlkRGF0YVBvaW50cywgZWxib3dUYXJnZXRQb2ludF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoaGFuZGxlSW5kZXggKyAxLCAwLCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gcmVzaXplU3RhdGUuZW5kUG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGl0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gcmVzaXplUmVmLmhhbmRsZSA9PT0gTGluZVJlc2l6ZUhhbmRsZS5hZGRIYW5kbGUgPyBoYW5kbGVJbmRleCArIDEgOiBoYW5kbGVJbmRleDtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmF3UG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IFsuLi5wb2ludHNdO1xuICAgICAgICAgICAgICAgIG5ld1BvaW50c1swXSA9IGRyYXdQb2ludHNbMF07XG4gICAgICAgICAgICAgICAgbmV3UG9pbnRzW25ld1BvaW50cy5sZW5ndGggLSAxXSA9IGRyYXdQb2ludHNbZHJhd1BvaW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlICE9PSBMaW5lU2hhcGUuZWxib3cgfHxcbiAgICAgICAgICAgICAgICAgICAgKHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cgJiYgbmV3UG9pbnRzLmxlbmd0aCA9PT0gMilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3UG9pbnRzLmZvckVhY2goKHBvaW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBoYW5kbGVJbmRleCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50c1toYW5kbGVJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaGFuZGxlSW5kZXhdID0gYWxpZ25Qb2ludHMocG9pbnQsIHBvaW50c1toYW5kbGVJbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVMaW5lKGJvYXJkLCB7IHBvaW50cywgc291cmNlLCB0YXJnZXQgfSwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRMaW5lLCBMaW5lUmVzaXplSGFuZGxlPikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5lbGVtZW50LnNoYXBlID09PSBMaW5lU2hhcGUuZWxib3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICAgICAgbGV0IHBvaW50cyA9IGVsZW1lbnQgJiYgWy4uLmVsZW1lbnQucG9pbnRzIV07XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPiAyICYmIGVsYm93TmV4dFJlbmRlclBvaW50cyAmJiBlbGJvd1NvdXJjZVBvaW50ICYmIGVsYm93VGFyZ2V0UG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFNvdXJjZVBvaW50ID0gZWxib3dOZXh0UmVuZGVyUG9pbnRzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VGFyZ2V0UG9pbnQgPSBlbGJvd05leHRSZW5kZXJQb2ludHNbZWxib3dOZXh0UmVuZGVyUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMuc3BsaWNlKDAsIDEsIG5leHRTb3VyY2VQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5zcGxpY2UoLTEsIDEsIG5leHRUYXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyhwb2ludHMhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFBvaW50LmlzRXF1YWxzKHBvaW50c1swXSwgbmV4dFNvdXJjZVBvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNFcXVhbHMocG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSwgbmV4dFRhcmdldFBvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbZWxib3dTb3VyY2VQb2ludCwgLi4ucG9pbnRzLCBlbGJvd1RhcmdldFBvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMucmVzaXplTGluZShib2FyZCwgeyBwb2ludHMgfSwgcmVzaXplUmVmLnBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxib3dMaW5lSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgZWxib3dMaW5lRGVsZXRlQ291bnQgPSBudWxsO1xuICAgICAgICAgICAgZWxib3dTb3VyY2VQb2ludCA9IG51bGw7XG4gICAgICAgICAgICBlbGJvd1RhcmdldFBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsYm93TmV4dFJlbmRlclBvaW50cyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdExpbmUsIExpbmVSZXNpemVIYW5kbGU+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|