@plait/core 0.59.0 → 0.60.1
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.
|
@@ -17,7 +17,6 @@ export function withSelection(board) {
|
|
|
17
17
|
let selectionRectangleG;
|
|
18
18
|
let previousSelectedElements;
|
|
19
19
|
let isShift = false;
|
|
20
|
-
let isTextSelection = false;
|
|
21
20
|
board.pointerDown = (event) => {
|
|
22
21
|
if (!isShift && event.shiftKey) {
|
|
23
22
|
isShift = true;
|
|
@@ -26,11 +25,6 @@ export function withSelection(board) {
|
|
|
26
25
|
isShift = false;
|
|
27
26
|
}
|
|
28
27
|
const isHitText = !!(event.target instanceof Element && event.target.closest('.plait-richtext-container'));
|
|
29
|
-
isTextSelection = isHitText && PlaitBoard.hasBeenTextEditing(board);
|
|
30
|
-
// prevent text from being selected
|
|
31
|
-
if (event.shiftKey && !isTextSelection) {
|
|
32
|
-
event.preventDefault();
|
|
33
|
-
}
|
|
34
28
|
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
35
29
|
const isHitTarget = isHitElement(board, point);
|
|
36
30
|
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
@@ -42,10 +36,6 @@ export function withSelection(board) {
|
|
|
42
36
|
pointerDown(event);
|
|
43
37
|
};
|
|
44
38
|
board.pointerMove = (event) => {
|
|
45
|
-
if (!isTextSelection) {
|
|
46
|
-
// prevent text from being selected
|
|
47
|
-
event.preventDefault();
|
|
48
|
-
}
|
|
49
39
|
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) && start) {
|
|
50
40
|
const movedTarget = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
51
41
|
const rectangle = RectangleClient.getRectangleByPoints([start, movedTarget]);
|
|
@@ -100,7 +90,6 @@ export function withSelection(board) {
|
|
|
100
90
|
}
|
|
101
91
|
start = null;
|
|
102
92
|
end = null;
|
|
103
|
-
isTextSelection = false;
|
|
104
93
|
preventTouchMove(board, event, false);
|
|
105
94
|
globalPointerUp(event);
|
|
106
95
|
};
|
|
@@ -209,4 +198,4 @@ export function withSelection(board) {
|
|
|
209
198
|
});
|
|
210
199
|
return board;
|
|
211
200
|
}
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFnQixnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLDRCQUE0QixFQUMvQixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU9yRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWlCO0lB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LENBQUMsTUFBTSxDQUFDLG1CQUFvQixDQUFDLENBQUM7d0JBQ3BFLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDO29CQUN2RCxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDSixtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRCxLQUEyQixDQUFDLGdCQUFnQixDQUFvQixjQUFjLENBQUMsYUFBYSxFQUFFO1FBQzNGLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLGdCQUFnQixFQUFFLEtBQUs7S0FDMUIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc01haW5Qb2ludGVyIH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbixcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzSGl0RWxlbWVudCxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBsYWl0UG9pbnRlclR5cGUsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsIFNFTEVDVElPTl9GSUxMX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7XG4gICAgY2xlYXJTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgZHJhd1JlY3RhbmdsZSxcbiAgICBnZXRUZW1wb3JhcnlFbGVtZW50cyxcbiAgICBpc0RyYWdnaW5nLFxuICAgIGlzSGFuZGxlU2VsZWN0aW9uLFxuICAgIGlzU2VsZWN0aW9uTW92aW5nLFxuICAgIGlzU2V0U2VsZWN0aW9uT3BlcmF0aW9uLFxuICAgIHByZXZlbnRUb3VjaE1vdmUsXG4gICAgc2V0U2VsZWN0aW9uTW92aW5nLFxuICAgIHRocm90dGxlUkFGLFxuICAgIHRvSG9zdFBvaW50LFxuICAgIHRvVmlld0JveFBvaW50LFxuICAgIHNldFNlbGVjdGVkRWxlbWVudHNXaXRoR3JvdXBcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQsIFBsYWl0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0UGx1Z2luS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4ta2V5JztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFBsdWdpbk9wdGlvbnMgZXh0ZW5kcyBQbGFpdFBsdWdpbk9wdGlvbnMge1xuICAgIGlzTXVsdGlwbGU6IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZFNlbGVjdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyVXAsIHBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAsIG9uQ2hhbmdlLCBhZnRlckNoYW5nZSwgZHJhd0FjdGl2ZVJlY3RhbmdsZSB9ID0gYm9hcmQ7XG4gICAgbGV0IHN0YXJ0OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBlbmQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHNlbGVjdGlvbk1vdmluZ0c6IFNWR0dFbGVtZW50O1xuICAgIGxldCBzZWxlY3Rpb25SZWN0YW5nbGVHOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbGV0IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W107XG4gICAgbGV0IGlzU2hpZnQgPSBmYWxzZTtcbiAgICBsZXQgaXNUZXh0U2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICBib2FyZC5wb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNTaGlmdCAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgaXNTaGlmdCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2hpZnQgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNIaXRUZXh0ID0gISEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdCgnLnBsYWl0LXJpY2h0ZXh0LWNvbnRhaW5lcicpKTtcbiAgICAgICAgaXNUZXh0U2VsZWN0aW9uID0gaXNIaXRUZXh0ICYmIFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKTtcblxuICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgIWlzVGV4dFNlbGVjdGlvbikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IGlzSGl0VGFyZ2V0ID0gaXNIaXRFbGVtZW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJiAhaXNIaXRUYXJnZXQgJiYgb3B0aW9ucy5pc011bHRpcGxlICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QpIHtcbiAgICAgICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgIC8vIHN0YXJ0IHJlY3RhbmdsZSBzZWxlY3Rpb25cbiAgICAgICAgICAgIHN0YXJ0ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNUZXh0U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJiBzdGFydCkge1xuICAgICAgICAgICAgY29uc3QgbW92ZWRUYXJnZXQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc3RhcnQsIG1vdmVkVGFyZ2V0XSk7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmIChNYXRoLmh5cG90KHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLmhlaWdodCkgPiBQUkVTU19BTkRfTU9WRV9CVUZGRVIgfHwgaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgZW5kID0gbW92ZWRUYXJnZXQ7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoYm9hcmQsICd3aXRoLXNlbGVjdGlvbicsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHsgYW5jaG9yOiBzdGFydCwgZm9jdXM6IGVuZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRyA9IGRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlY3RhbmdsZSwge1xuICAgICAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHNlbGVjdGlvbk1vdmluZ0cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgLy8gaGFuZGxlIHRoZSBlbmQgb2YgY2xpY2sgc2VsZWN0XG4gICAgYm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNTZXRTZWxlY3Rpb25Qb2ludGVyID1cbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgfHwgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuaGFuZCk7XG4gICAgICAgIGNvbnN0IGlzU2tpcCA9ICFpc01haW5Qb2ludGVyKGV2ZW50KSB8fCBpc0RyYWdnaW5nKGJvYXJkKSB8fCAhaXNTZXRTZWxlY3Rpb25Qb2ludGVyO1xuICAgICAgICBpZiAoaXNTa2lwKSB7XG4gICAgICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHsgYW5jaG9yOiBwb2ludCwgZm9jdXM6IHBvaW50IH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBzZWxlY3Rpb24pO1xuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgICAgZW5kID0gbnVsbDtcbiAgICAgICAgaXNUZXh0U2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCkge1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBlbGVtZW50IGlmIGluY2x1ZGVcbiAgICAgICAgYm9hcmQub3BlcmF0aW9ucy5mb3JFYWNoKG9wID0+IHtcbiAgICAgICAgICAgIGlmIChvcC50eXBlID09PSAncmVtb3ZlX25vZGUnKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBvcC5ub2RlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgaXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLnRlbXBvcmFyeUVsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbihib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hpdEVsZW1lbnRXaXRoR3JvdXAgPSBlbGVtZW50cy5zb21lKGl0ZW0gPT4gaXRlbS5ncm91cElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIaXRFbGVtZW50V2l0aEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEVsZW1lbnRzV2l0aEdyb3VwKGJvYXJkLCBlbGVtZW50cywgaXNTaGlmdCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gWy4uLnNlbGVjdGVkRWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnNwbGljZShuZXdFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3RWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld0VsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLm5ld0VsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFsuLi5lbGVtZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gbmV3RWxlbWVudHM7XG4gICAgICAgICAgICAgICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3RWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGJvYXJkLmRyYXdBY3RpdmVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmICFpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICYmIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRWxlbWVudHMuc29tZSgoYywgaW5kZXgpID0+IGMgIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50c1tpbmRleF0pKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGJvYXJkLmRyYXdBY3RpdmVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgPSBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWZ0ZXJDaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzTXVsdGlwbGU6IHRydWUsXG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFnQixnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLDRCQUE0QixFQUMvQixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU9yRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWlCO0lB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Q0FBQyxhQUFhLEVBQUU7UUFDM0YsVUFBVSxFQUFFLElBQUk7UUFDaEIsZ0JBQWdCLEVBQUUsS0FBSztLQUMxQixDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGlzTWFpblBvaW50ZXIgfSBmcm9tICcuLi91dGlscy9kb20vY29tbW9uJztcbmltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdGFuZ2xlLWNsaWVudCc7XG5pbXBvcnQge1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBnZXRIaXRFbGVtZW50c0J5U2VsZWN0aW9uLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaXNIaXRFbGVtZW50LFxuICAgIHJlbW92ZVNlbGVjdGVkRWxlbWVudFxufSBmcm9tICcuLi91dGlscy9zZWxlY3RlZC1lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCwgUGxhaXRQb2ludGVyVHlwZSwgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUiwgU0VMRUNUSU9OX0ZJTExfQ09MT1IgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFUVEFDSEVEX0VMRU1FTlRfQ0xBU1NfTkFNRSB9IGZyb20gJy4uL2NvbnN0YW50cy9zZWxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgICBjbGVhclNlbGVjdGlvbk1vdmluZyxcbiAgICBkZWxldGVUZW1wb3JhcnlFbGVtZW50cyxcbiAgICBkcmF3UmVjdGFuZ2xlLFxuICAgIGdldFRlbXBvcmFyeUVsZW1lbnRzLFxuICAgIGlzRHJhZ2dpbmcsXG4gICAgaXNIYW5kbGVTZWxlY3Rpb24sXG4gICAgaXNTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgaXNTZXRTZWxlY3Rpb25PcGVyYXRpb24sXG4gICAgcHJldmVudFRvdWNoTW92ZSxcbiAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgdGhyb3R0bGVSQUYsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQbGFpdE9wdGlvbnNCb2FyZCwgUGxhaXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi93aXRoLW9wdGlvbnMnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW5LZXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsdWdpbi1rZXknO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgUFJFU1NfQU5EX01PVkVfQlVGRkVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGx1Z2luT3B0aW9ucyBleHRlbmRzIFBsYWl0UGx1Z2luT3B0aW9ucyB7XG4gICAgaXNNdWx0aXBsZTogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkU2VsZWN0OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNlbGVjdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIHBvaW50ZXJVcCwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgb25DaGFuZ2UsIGFmdGVyQ2hhbmdlLCBkcmF3QWN0aXZlUmVjdGFuZ2xlIH0gPSBib2FyZDtcbiAgICBsZXQgc3RhcnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVuZDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2VsZWN0aW9uTW92aW5nRzogU1ZHR0VsZW1lbnQ7XG4gICAgbGV0IHNlbGVjdGlvblJlY3RhbmdsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgaXNTaGlmdCA9IGZhbHNlO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzU2hpZnQgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NoaWZ0ICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgaXNTaGlmdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzSGl0VGV4dCA9ICEhKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5wbGFpdC1yaWNodGV4dC1jb250YWluZXInKSk7XG5cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3QgaXNIaXRUYXJnZXQgPSBpc0hpdEVsZW1lbnQoYm9hcmQsIHBvaW50KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbik7XG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmICFpc0hpdFRhcmdldCAmJiBvcHRpb25zLmlzTXVsdGlwbGUgJiYgIW9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCkge1xuICAgICAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgLy8gc3RhcnQgcmVjdGFuZ2xlIHNlbGVjdGlvblxuICAgICAgICAgICAgc3RhcnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiYgc3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vdmVkVGFyZ2V0ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3N0YXJ0LCBtb3ZlZFRhcmdldF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBpZiAoTWF0aC5oeXBvdChyZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS5oZWlnaHQpID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSIHx8IGlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IG1vdmVkVGFyZ2V0O1xuICAgICAgICAgICAgICAgIHRocm90dGxlUkFGKGJvYXJkLCAnd2l0aC1zZWxlY3Rpb24nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0cgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25Nb3ZpbmdHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIC8vIGhhbmRsZSB0aGUgZW5kIG9mIGNsaWNrIHNlbGVjdFxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0U2VsZWN0aW9uUG9pbnRlciA9XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpO1xuICAgICAgICBjb25zdCBpc1NraXAgPSAhaXNNYWluUG9pbnRlcihldmVudCkgfHwgaXNEcmFnZ2luZyhib2FyZCkgfHwgIWlzU2V0U2VsZWN0aW9uUG9pbnRlcjtcbiAgICAgICAgaWYgKGlzU2tpcCkge1xuICAgICAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9O1xuICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgc2VsZWN0aW9uKTtcbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNGb2N1cyhib2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Cb2FyZCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Eb2N1bWVudCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgZG9jdW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXR0YWNoZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdChgLiR7QVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FfWApO1xuICAgICAgICAgICAgLy8gQ2xlYXIgc2VsZWN0aW9uIHdoZW4gbW91c2UgYm9hcmQgb3V0c2lkZSBhcmVhXG4gICAgICAgICAgICAvLyBUaGUgZnJhbWV3b3JrIG5lZWRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBib2FyZCBpcyBmb2N1c2VkIHRocm91Z2ggc2VsZWN0aW9uXG4gICAgICAgICAgICBpZiAoIWlzSW5Cb2FyZCAmJiAhc3RhcnQgJiYgIWlzQXR0YWNoZWRFbGVtZW50ICYmIGlzSW5Eb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgIGVuZCA9IG51bGw7XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCkge1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBlbGVtZW50IGlmIGluY2x1ZGVcbiAgICAgICAgYm9hcmQub3BlcmF0aW9ucy5mb3JFYWNoKG9wID0+IHtcbiAgICAgICAgICAgIGlmIChvcC50eXBlID09PSAncmVtb3ZlX25vZGUnKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBvcC5ub2RlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgaXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLnRlbXBvcmFyeUVsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbihib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hpdEVsZW1lbnRXaXRoR3JvdXAgPSBlbGVtZW50cy5zb21lKGl0ZW0gPT4gaXRlbS5ncm91cElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIaXRFbGVtZW50V2l0aEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEVsZW1lbnRzV2l0aEdyb3VwKGJvYXJkLCBlbGVtZW50cywgaXNTaGlmdCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gWy4uLnNlbGVjdGVkRWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnNwbGljZShuZXdFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3RWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld0VsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLm5ld0VsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFsuLi5lbGVtZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gbmV3RWxlbWVudHM7XG4gICAgICAgICAgICAgICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3RWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGJvYXJkLmRyYXdBY3RpdmVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmICFpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICYmIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRWxlbWVudHMuc29tZSgoYywgaW5kZXgpID0+IGMgIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50c1tpbmRleF0pKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGJvYXJkLmRyYXdBY3RpdmVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgPSBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWZ0ZXJDaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5zZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uLCB7XG4gICAgICAgIGlzTXVsdGlwbGU6IHRydWUsXG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Q6IGZhbHNlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
|
|
@@ -119,7 +119,7 @@ function getGapLinesAndDelta(activeRectangle, snapRectangles, isHorizontal) {
|
|
|
119
119
|
const distanceRight = after[axis] - (before[axis] + before[side]);
|
|
120
120
|
_center = after[axis] + after[side] + distanceRight + activeRectangle[side] / 2;
|
|
121
121
|
dif = Math.abs(_center - activeRectangleCenter);
|
|
122
|
-
if (!gapDistance && dif < SNAP_TOLERANCE) {
|
|
122
|
+
if ((!gapDistance || gapDistance !== distanceRight) && dif < SNAP_TOLERANCE) {
|
|
123
123
|
gapDistance = distanceRight;
|
|
124
124
|
beforeIndex = j;
|
|
125
125
|
delta = _center - activeRectangleCenter;
|
|
@@ -196,4 +196,4 @@ function isHorizontalCross(rectangle, other) {
|
|
|
196
196
|
function isVerticalCross(rectangle, other) {
|
|
197
197
|
return !(rectangle.x + rectangle.width < other.x || rectangle.x > other.x + other.width);
|
|
198
198
|
}
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcC1tb3ZpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9zbmFwL3NuYXAtbW92aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFTLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsY0FBYyxFQUVkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGNBQWMsRUFHakIsTUFBTSxRQUFRLENBQUM7QUFFaEIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsZUFBZ0MsRUFBRSxjQUE4QjtJQUNoSCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDaEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDeEIsSUFBSSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLHdCQUF3QixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2hHLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUIsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUYsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLGtCQUFrQixD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QyxTQUEwQixFQUFFLEtBQXNCO0lBQ3pFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0YsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBc0I7SUFDdkUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgY3JlYXRlRyB9IGZyb20gJy4uL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgZHJhd1BvaW50U25hcExpbmVzLFxuICAgIGRyYXdTb2xpZExpbmVzLFxuICAgIEdhcFNuYXBSZWYsXG4gICAgZ2V0TWluUG9pbnREZWx0YSxcbiAgICBnZXRTbmFwUmVjdGFuZ2xlcyxcbiAgICBnZXRUcmlwbGVBeGlzLFxuICAgIFNOQVBfVE9MRVJBTkNFLFxuICAgIFNuYXBEZWx0YSxcbiAgICBTbmFwUmVmXG59IGZyb20gJy4vc25hcCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbmFwTW92aW5nUmVmKGJvYXJkOiBQbGFpdEJvYXJkLCBhY3RpdmVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgYWN0aXZlRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKTogU25hcFJlZiB7XG4gICAgY29uc3Qgc25hcFJlY3RhbmdsZXMgPSBnZXRTbmFwUmVjdGFuZ2xlcyhib2FyZCwgYWN0aXZlRWxlbWVudHMpO1xuICAgIGNvbnN0IHNuYXBHID0gY3JlYXRlRygpO1xuICAgIGxldCBzbmFwRGVsdGEgPSBnZXRQb2ludExpbmVEZWx0YShhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzKTtcbiAgICBjb25zdCBwb2ludExpbmVzRyA9IGRyYXdNb3ZpbmdQb2ludFNuYXBMaW5lcyhib2FyZCwgc25hcERlbHRhLCBhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzKTtcbiAgICBzbmFwRy5hcHBlbmQocG9pbnRMaW5lc0cpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGdldEdhcFNuYXBMaW5lc0FuZERlbHRhKGJvYXJkLCBzbmFwRGVsdGEsIGFjdGl2ZVJlY3RhbmdsZSwgc25hcFJlY3RhbmdsZXMpO1xuICAgIHNuYXBEZWx0YSA9IHJlc3VsdC5zbmFwRGVsdGE7XG4gICAgc25hcEcuYXBwZW5kKHJlc3VsdC5zbmFwRyk7XG4gICAgcmV0dXJuIHsgLi4uc25hcERlbHRhLCBzbmFwRyB9O1xufVxuXG5mdW5jdGlvbiBnZXRQb2ludExpbmVEZWx0YXMoYWN0aXZlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHNuYXBSZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXSwgaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgY29uc3QgYXhpcyA9IGdldFRyaXBsZUF4aXMoYWN0aXZlUmVjdGFuZ2xlLCBpc0hvcml6b250YWwpO1xuICAgIGNvbnN0IGRlbHRhU3RhcnQgPSBnZXRNaW5Qb2ludERlbHRhKHNuYXBSZWN0YW5nbGVzLCBheGlzWzBdLCBpc0hvcml6b250YWwpO1xuICAgIGNvbnN0IGRlbHRhTWlkZGxlID0gZ2V0TWluUG9pbnREZWx0YShzbmFwUmVjdGFuZ2xlcywgYXhpc1sxXSwgaXNIb3Jpem9udGFsKTtcbiAgICBjb25zdCBkZWx0YUVuZCA9IGdldE1pblBvaW50RGVsdGEoc25hcFJlY3RhbmdsZXMsIGF4aXNbMl0sIGlzSG9yaXpvbnRhbCk7XG4gICAgcmV0dXJuIFtkZWx0YVN0YXJ0LCBkZWx0YU1pZGRsZSwgZGVsdGFFbmRdO1xufVxuXG5mdW5jdGlvbiBnZXRQb2ludExpbmVEZWx0YShhY3RpdmVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgc25hcFJlY3RhbmdsZXM6IFJlY3RhbmdsZUNsaWVudFtdKSB7XG4gICAgbGV0IHNuYXBEZWx0YTogU25hcERlbHRhID0ge1xuICAgICAgICBkZWx0YVg6IDAsXG4gICAgICAgIGRlbHRhWTogMFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0RGVsdGEoaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgICAgIGxldCBkZWx0YSA9IDA7XG4gICAgICAgIGNvbnN0IGRlbHRhcyA9IGdldFBvaW50TGluZURlbHRhcyhhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzLCBpc0hvcml6b250YWwpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbHRhcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhc1tpXSkgPCBTTkFQX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgIGRlbHRhID0gZGVsdGFzW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWx0YTtcbiAgICB9XG4gICAgc25hcERlbHRhLmRlbHRhWCA9IGdldERlbHRhKHRydWUpO1xuICAgIHNuYXBEZWx0YS5kZWx0YVkgPSBnZXREZWx0YShmYWxzZSk7XG4gICAgcmV0dXJuIHNuYXBEZWx0YTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQWN0aXZlUmVjdGFuZ2xlKHNuYXBEZWx0YTogU25hcERlbHRhLCBhY3RpdmVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgIGNvbnN0IHsgZGVsdGFYLCBkZWx0YVkgfSA9IHNuYXBEZWx0YTtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGFjdGl2ZVJlY3RhbmdsZTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGVsdGFYLFxuICAgICAgICB5OiB5ICsgZGVsdGFZLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZHJhd01vdmluZ1BvaW50U25hcExpbmVzKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHNuYXBEZWx0YTogU25hcERlbHRhLFxuICAgIGFjdGl2ZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIHNuYXBSZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXVxuKSB7XG4gICAgY29uc3QgbmV3QWN0aXZlUmVjdGFuZ2xlID0gdXBkYXRlQWN0aXZlUmVjdGFuZ2xlKHNuYXBEZWx0YSwgYWN0aXZlUmVjdGFuZ2xlKTtcbiAgICByZXR1cm4gZHJhd1BvaW50U25hcExpbmVzKGJvYXJkLCBuZXdBY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzLCB0cnVlLCB0cnVlLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2FwU25hcExpbmVzQW5kRGVsdGEoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgc25hcERlbHRhOiBTbmFwRGVsdGEsXG4gICAgYWN0aXZlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgc25hcFJlY3RhbmdsZXM6IFJlY3RhbmdsZUNsaWVudFtdXG4pIHtcbiAgICBsZXQgZGVsdGFYID0gc25hcERlbHRhLmRlbHRhWDtcbiAgICBsZXQgZGVsdGFZID0gc25hcERlbHRhLmRlbHRhWTtcbiAgICBjb25zdCBnYXBIb3Jpem9udGFsUmVzdWx0ID0gZ2V0R2FwTGluZXNBbmREZWx0YShhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzLCB0cnVlKTtcbiAgICBjb25zdCBnYXBWZXJ0aWNhbFJlc3VsdCA9IGdldEdhcExpbmVzQW5kRGVsdGEoYWN0aXZlUmVjdGFuZ2xlLCBzbmFwUmVjdGFuZ2xlcywgZmFsc2UpO1xuICAgIGNvbnN0IGdhcFNuYXBMaW5lczogUG9pbnRbXVtdID0gWy4uLmdhcEhvcml6b250YWxSZXN1bHQubGluZXMsIC4uLmdhcFZlcnRpY2FsUmVzdWx0LmxpbmVzXTtcbiAgICBpZiAoZ2FwSG9yaXpvbnRhbFJlc3VsdC5kZWx0YSkge1xuICAgICAgICBkZWx0YVggPSBnYXBIb3Jpem9udGFsUmVzdWx0LmRlbHRhO1xuICAgIH1cbiAgICBpZiAoZ2FwVmVydGljYWxSZXN1bHQuZGVsdGEpIHtcbiAgICAgICAgZGVsdGFZID0gZ2FwVmVydGljYWxSZXN1bHQuZGVsdGE7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNuYXBEZWx0YTogeyBkZWx0YVgsIGRlbHRhWSB9LFxuICAgICAgICBzbmFwRzogZHJhd1NvbGlkTGluZXMoYm9hcmQsIGdhcFNuYXBMaW5lcylcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRHYXBMaW5lc0FuZERlbHRhKGFjdGl2ZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBzbmFwUmVjdGFuZ2xlczogUmVjdGFuZ2xlQ2xpZW50W10sIGlzSG9yaXpvbnRhbDogYm9vbGVhbikge1xuICAgIGxldCBsaW5lczogYW55W10gPSBbXTtcbiAgICBsZXQgZGVsdGEgPSAwO1xuICAgIGxldCByZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXSA9IFtdO1xuICAgIGNvbnN0IGF4aXMgPSBpc0hvcml6b250YWwgPyAneCcgOiAneSc7XG4gICAgY29uc3Qgc2lkZSA9IGlzSG9yaXpvbnRhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcblxuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZUNlbnRlciA9IGFjdGl2ZVJlY3RhbmdsZVtheGlzXSArIGFjdGl2ZVJlY3RhbmdsZVtzaWRlXSAvIDI7XG4gICAgc25hcFJlY3RhbmdsZXMuZm9yRWFjaChyZWMgPT4ge1xuICAgICAgICBjb25zdCBpc0Nyb3NzID0gaXNIb3Jpem9udGFsID8gaXNIb3Jpem9udGFsQ3Jvc3MocmVjLCBhY3RpdmVSZWN0YW5nbGUpIDogaXNWZXJ0aWNhbENyb3NzKHJlYywgYWN0aXZlUmVjdGFuZ2xlKTtcbiAgICAgICAgaWYgKGlzQ3Jvc3MgJiYgIVJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWMsIGFjdGl2ZVJlY3RhbmdsZSkpIHtcbiAgICAgICAgICAgIHJlY3RhbmdsZXMucHVzaChyZWMpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmVjdGFuZ2xlcyA9IFsuLi5yZWN0YW5nbGVzLCBhY3RpdmVSZWN0YW5nbGVdLnNvcnQoKGEsIGIpID0+IGFbYXhpc10gLSBiW2F4aXNdKTtcblxuICAgIGNvbnN0IHJlZkFycmF5OiBHYXBTbmFwUmVmW10gPSBbXTtcbiAgICBsZXQgZ2FwRGlzdGFuY2UgPSAwO1xuICAgIGxldCBiZWZvcmVJbmRleCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgYWZ0ZXJJbmRleCA9IHVuZGVmaW5lZDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjdGFuZ2xlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCByZWN0YW5nbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmUgPSByZWN0YW5nbGVzW2ldO1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXIgPSByZWN0YW5nbGVzW2pdO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBhZnRlcltheGlzXSAtIChiZWZvcmVbYXhpc10gKyBiZWZvcmVbc2lkZV0pO1xuICAgICAgICAgICAgbGV0IGRpZiA9IEluZmluaXR5O1xuICAgICAgICAgICAgaWYgKHJlZkFycmF5W2ldPy5hZnRlcikge1xuICAgICAgICAgICAgICAgIHJlZkFycmF5W2ldLmFmdGVyLnB1c2goeyBkaXN0YW5jZSwgaW5kZXg6IGogfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZkFycmF5W2ldID0geyAuLi5yZWZBcnJheVtpXSwgYWZ0ZXI6IFt7IGRpc3RhbmNlLCBpbmRleDogaiB9XSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVmQXJyYXlbal0/LmJlZm9yZSkge1xuICAgICAgICAgICAgICAgIHJlZkFycmF5W2pdLmJlZm9yZS5wdXNoKHsgZGlzdGFuY2UsIGluZGV4OiBpIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWZBcnJheVtqXSA9IHsgLi4ucmVmQXJyYXlbal0sIGJlZm9yZTogW3sgZGlzdGFuY2UsIGluZGV4OiBpIH1dIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vbWlkZGxlXG4gICAgICAgICAgICBsZXQgX2NlbnRlciA9IChiZWZvcmVbYXhpc10gKyBiZWZvcmVbc2lkZV0gKyBhZnRlcltheGlzXSkgLyAyO1xuICAgICAgICAgICAgZGlmID0gTWF0aC5hYnMoX2NlbnRlciAtIGFjdGl2ZVJlY3RhbmdsZUNlbnRlcik7XG4gICAgICAgICAgICBpZiAoZGlmIDwgU05BUF9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICBnYXBEaXN0YW5jZSA9IChhZnRlcltheGlzXSAtIChiZWZvcmVbYXhpc10gKyBiZWZvcmVbc2lkZV0pIC0gYWN0aXZlUmVjdGFuZ2xlW3NpZGVdKSAvIDI7XG4gICAgICAgICAgICAgICAgZGVsdGEgPSBfY2VudGVyIC0gYWN0aXZlUmVjdGFuZ2xlQ2VudGVyO1xuICAgICAgICAgICAgICAgIGJlZm9yZUluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBhZnRlckluZGV4ID0gajtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9hZnRlclxuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VSaWdodCA9IGFmdGVyW2F4aXNdIC0gKGJlZm9yZVtheGlzXSArIGJlZm9yZVtzaWRlXSk7XG4gICAgICAgICAgICBfY2VudGVyID0gYWZ0ZXJbYXhpc10gKyBhZnRlcltzaWRlXSArIGRpc3RhbmNlUmlnaHQgKyBhY3RpdmVSZWN0YW5nbGVbc2lkZV0gLyAyO1xuICAgICAgICAgICAgZGlmID0gTWF0aC5hYnMoX2NlbnRlciAtIGFjdGl2ZVJlY3RhbmdsZUNlbnRlcik7XG4gICAgICAgICAgICBpZiAoIWdhcERpc3RhbmNlICYmIGRpZiA8IFNOQVBfVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICAgICAgZ2FwRGlzdGFuY2UgPSBkaXN0YW5jZVJpZ2h0O1xuICAgICAgICAgICAgICAgIGJlZm9yZUluZGV4ID0gajtcbiAgICAgICAgICAgICAgICBkZWx0YSA9IF9jZW50ZXIgLSBhY3RpdmVSZWN0YW5nbGVDZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vYmVmb3JlXG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZUJlZm9yZSA9IGFmdGVyW2F4aXNdIC0gKGJlZm9yZVtheGlzXSArIGJlZm9yZVtzaWRlXSk7XG4gICAgICAgICAgICBfY2VudGVyID0gYmVmb3JlW2F4aXNdIC0gZGlzdGFuY2VCZWZvcmUgLSBhY3RpdmVSZWN0YW5nbGVbc2lkZV0gLyAyO1xuICAgICAgICAgICAgZGlmID0gTWF0aC5hYnMoX2NlbnRlciAtIGFjdGl2ZVJlY3RhbmdsZUNlbnRlcik7XG5cbiAgICAgICAgICAgIGlmICghZ2FwRGlzdGFuY2UgJiYgZGlmIDwgU05BUF9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICBnYXBEaXN0YW5jZSA9IGRpc3RhbmNlQmVmb3JlO1xuICAgICAgICAgICAgICAgIGFmdGVySW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGRlbHRhID0gX2NlbnRlciAtIGFjdGl2ZVJlY3RhbmdsZUNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gcmVjdGFuZ2xlcy5pbmRleE9mKGFjdGl2ZVJlY3RhbmdsZSk7XG4gICAgbGV0IGJlZm9yZUluZGV4ZXM6IG51bWJlcltdID0gW107XG4gICAgbGV0IGFmdGVySW5kZXhlczogbnVtYmVyW10gPSBbXTtcbiAgICBpZiAoYmVmb3JlSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiZWZvcmVJbmRleGVzLnB1c2goYmVmb3JlSW5kZXgpO1xuICAgICAgICBmaW5kUmVjdGFuZ2xlKGdhcERpc3RhbmNlLCByZWZBcnJheVtiZWZvcmVJbmRleF0sICdiZWZvcmUnLCBiZWZvcmVJbmRleGVzKTtcbiAgICB9XG5cbiAgICBpZiAoYWZ0ZXJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFmdGVySW5kZXhlcy5wdXNoKGFmdGVySW5kZXgpO1xuICAgICAgICBmaW5kUmVjdGFuZ2xlKGdhcERpc3RhbmNlLCByZWZBcnJheVthZnRlckluZGV4XSwgJ2FmdGVyJywgYWZ0ZXJJbmRleGVzKTtcbiAgICB9XG5cbiAgICBpZiAoYmVmb3JlSW5kZXhlcy5sZW5ndGggfHwgYWZ0ZXJJbmRleGVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBpbmRleEFyciA9IFsuLi5iZWZvcmVJbmRleGVzLnJldmVyc2UoKSwgYWN0aXZlSW5kZXgsIC4uLmFmdGVySW5kZXhlc107XG4gICAgICAgIGFjdGl2ZVJlY3RhbmdsZVtheGlzXSArPSBkZWx0YTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBpbmRleEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGluZXMucHVzaChnZXRMaW5lUG9pbnRzKHJlY3RhbmdsZXNbaW5kZXhBcnJbaSAtIDFdXSwgcmVjdGFuZ2xlc1tpbmRleEFycltpXV0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmRSZWN0YW5nbGUoZGlzdGFuY2U6IG51bWJlciwgcmVmOiBHYXBTbmFwUmVmLCBkaXJlY3Rpb246IHN0cmluZywgcmVjdGFuZ2xlSW5kZXhlczogbnVtYmVyW10pIHtcbiAgICAgICAgY29uc3QgYXJyID0gcmVmW2RpcmVjdGlvbiBhcyBrZXlvZiBHYXBTbmFwUmVmXTtcbiAgICAgICAgY29uc3QgaW5kZXggPSByZWZBcnJheS5pbmRleE9mKHJlZik7XG4gICAgICAgIGlmICgoaW5kZXggPT09IDAgJiYgZGlyZWN0aW9uID09PSAnYmVmb3JlJykgfHwgKGluZGV4ID09PSByZWZBcnJheS5sZW5ndGggLSAxICYmIGRpcmVjdGlvbiA9PT0gJ2FmdGVyJykpIHJldHVybjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyhhcnJbaV0uZGlzdGFuY2UgLSBkaXN0YW5jZSkgPCAwLjEpIHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGVJbmRleGVzLnB1c2goYXJyW2ldLmluZGV4KTtcbiAgICAgICAgICAgICAgICBmaW5kUmVjdGFuZ2xlKGRpc3RhbmNlLCByZWZBcnJheVthcnJbaV0uaW5kZXhdLCBkaXJlY3Rpb24sIHJlY3RhbmdsZUluZGV4ZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldExpbmVQb2ludHMoYmVmb3JlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGFmdGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVBeGlzID0gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xuICAgICAgICBjb25zdCBvcHBvc2l0ZVNpZGUgPSBzaWRlID09PSAnd2lkdGgnID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBzbmFwID0gW1xuICAgICAgICAgICAgYmVmb3JlUmVjdGFuZ2xlW29wcG9zaXRlQXhpc10sXG4gICAgICAgICAgICBiZWZvcmVSZWN0YW5nbGVbb3Bwb3NpdGVBeGlzXSArIGJlZm9yZVJlY3RhbmdsZVtvcHBvc2l0ZVNpZGVdLFxuICAgICAgICAgICAgYWZ0ZXJSZWN0YW5nbGVbb3Bwb3NpdGVBeGlzXSxcbiAgICAgICAgICAgIGFmdGVyUmVjdGFuZ2xlW29wcG9zaXRlQXhpc10gKyBhZnRlclJlY3RhbmdsZVtvcHBvc2l0ZVNpZGVdXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHNvcnRBcnIgPSBzbmFwLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgICAgY29uc3QgYXZlcmFnZSA9IChzb3J0QXJyWzFdICsgc29ydEFyclsyXSkgLyAyO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAzO1xuICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsXG4gICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIFtiZWZvcmVSZWN0YW5nbGUueCArIGJlZm9yZVJlY3RhbmdsZS53aWR0aCArIG9mZnNldCwgYXZlcmFnZV0sXG4gICAgICAgICAgICAgICAgICBbYWZ0ZXJSZWN0YW5nbGUueCAtIG9mZnNldCwgYXZlcmFnZV1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICBbYXZlcmFnZSwgYmVmb3JlUmVjdGFuZ2xlLnkgKyBiZWZvcmVSZWN0YW5nbGUuaGVpZ2h0ICsgb2Zmc2V0XSxcbiAgICAgICAgICAgICAgICAgIFthdmVyYWdlLCBhZnRlclJlY3RhbmdsZS55IC0gb2Zmc2V0XVxuICAgICAgICAgICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4geyBkZWx0YSwgbGluZXMgfTtcbn1cblxuZnVuY3Rpb24gaXNIb3Jpem9udGFsQ3Jvc3MocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG90aGVyOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICByZXR1cm4gIShyZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgPCBvdGhlci55IHx8IHJlY3RhbmdsZS55ID4gb3RoZXIueSArIG90aGVyLmhlaWdodCk7XG59XG5cbmZ1bmN0aW9uIGlzVmVydGljYWxDcm9zcyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3RoZXI6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgIHJldHVybiAhKHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIDwgb3RoZXIueCB8fCByZWN0YW5nbGUueCA+IG90aGVyLnggKyBvdGhlci53aWR0aCk7XG59XG4iXX0=
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcC1tb3ZpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9zbmFwL3NuYXAtbW92aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFTLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsY0FBYyxFQUVkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGNBQWMsRUFHakIsTUFBTSxRQUFRLENBQUM7QUFFaEIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsZUFBZ0MsRUFBRSxjQUE4QjtJQUNoSCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDaEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDeEIsSUFBSSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLHdCQUF3QixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2hHLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUIsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUYsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDN0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLGtCQUFrQixD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QUM1QixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxTQUEwQixFQUFFLEtBQXNCO0lBQ3pFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0YsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFNBQTBCLEVBQUUsS0FBc0I7SUFDdkUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgY3JlYXRlRyB9IGZyb20gJy4uL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgZHJhd1BvaW50U25hcExpbmVzLFxuICAgIGRyYXdTb2xpZExpbmVzLFxuICAgIEdhcFNuYXBSZWYsXG4gICAgZ2V0TWluUG9pbnREZWx0YSxcbiAgICBnZXRTbmFwUmVjdGFuZ2xlcyxcbiAgICBnZXRUcmlwbGVBeGlzLFxuICAgIFNOQVBfVE9MRVJBTkNFLFxuICAgIFNuYXBEZWx0YSxcbiAgICBTbmFwUmVmXG59IGZyb20gJy4vc25hcCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbmFwTW92aW5nUmVmKGJvYXJkOiBQbGFpdEJvYXJkLCBhY3RpdmVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgYWN0aXZlRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKTogU25hcFJlZiB7XG4gICAgY29uc3Qgc25hcFJlY3RhbmdsZXMgPSBnZXRTbmFwUmVjdGFuZ2xlcyhib2FyZCwgYWN0aXZlRWxlbWVudHMpO1xuICAgIGNvbnN0IHNuYXBHID0gY3JlYXRlRygpO1xuICAgIGxldCBzbmFwRGVsdGEgPSBnZXRQb2ludExpbmVEZWx0YShhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzKTtcbiAgICBjb25zdCBwb2ludExpbmVzRyA9IGRyYXdNb3ZpbmdQb2ludFNuYXBMaW5lcyhib2FyZCwgc25hcERlbHRhLCBhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzKTtcbiAgICBzbmFwRy5hcHBlbmQocG9pbnRMaW5lc0cpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGdldEdhcFNuYXBMaW5lc0FuZERlbHRhKGJvYXJkLCBzbmFwRGVsdGEsIGFjdGl2ZVJlY3RhbmdsZSwgc25hcFJlY3RhbmdsZXMpO1xuICAgIHNuYXBEZWx0YSA9IHJlc3VsdC5zbmFwRGVsdGE7XG4gICAgc25hcEcuYXBwZW5kKHJlc3VsdC5zbmFwRyk7XG4gICAgcmV0dXJuIHsgLi4uc25hcERlbHRhLCBzbmFwRyB9O1xufVxuXG5mdW5jdGlvbiBnZXRQb2ludExpbmVEZWx0YXMoYWN0aXZlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHNuYXBSZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXSwgaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgY29uc3QgYXhpcyA9IGdldFRyaXBsZUF4aXMoYWN0aXZlUmVjdGFuZ2xlLCBpc0hvcml6b250YWwpO1xuICAgIGNvbnN0IGRlbHRhU3RhcnQgPSBnZXRNaW5Qb2ludERlbHRhKHNuYXBSZWN0YW5nbGVzLCBheGlzWzBdLCBpc0hvcml6b250YWwpO1xuICAgIGNvbnN0IGRlbHRhTWlkZGxlID0gZ2V0TWluUG9pbnREZWx0YShzbmFwUmVjdGFuZ2xlcywgYXhpc1sxXSwgaXNIb3Jpem9udGFsKTtcbiAgICBjb25zdCBkZWx0YUVuZCA9IGdldE1pblBvaW50RGVsdGEoc25hcFJlY3RhbmdsZXMsIGF4aXNbMl0sIGlzSG9yaXpvbnRhbCk7XG4gICAgcmV0dXJuIFtkZWx0YVN0YXJ0LCBkZWx0YU1pZGRsZSwgZGVsdGFFbmRdO1xufVxuXG5mdW5jdGlvbiBnZXRQb2ludExpbmVEZWx0YShhY3RpdmVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgc25hcFJlY3RhbmdsZXM6IFJlY3RhbmdsZUNsaWVudFtdKSB7XG4gICAgbGV0IHNuYXBEZWx0YTogU25hcERlbHRhID0ge1xuICAgICAgICBkZWx0YVg6IDAsXG4gICAgICAgIGRlbHRhWTogMFxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0RGVsdGEoaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgICAgIGxldCBkZWx0YSA9IDA7XG4gICAgICAgIGNvbnN0IGRlbHRhcyA9IGdldFBvaW50TGluZURlbHRhcyhhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzLCBpc0hvcml6b250YWwpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbHRhcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhc1tpXSkgPCBTTkFQX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgIGRlbHRhID0gZGVsdGFzW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWx0YTtcbiAgICB9XG4gICAgc25hcERlbHRhLmRlbHRhWCA9IGdldERlbHRhKHRydWUpO1xuICAgIHNuYXBEZWx0YS5kZWx0YVkgPSBnZXREZWx0YShmYWxzZSk7XG4gICAgcmV0dXJuIHNuYXBEZWx0YTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQWN0aXZlUmVjdGFuZ2xlKHNuYXBEZWx0YTogU25hcERlbHRhLCBhY3RpdmVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgIGNvbnN0IHsgZGVsdGFYLCBkZWx0YVkgfSA9IHNuYXBEZWx0YTtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGFjdGl2ZVJlY3RhbmdsZTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGVsdGFYLFxuICAgICAgICB5OiB5ICsgZGVsdGFZLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZHJhd01vdmluZ1BvaW50U25hcExpbmVzKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHNuYXBEZWx0YTogU25hcERlbHRhLFxuICAgIGFjdGl2ZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIHNuYXBSZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXVxuKSB7XG4gICAgY29uc3QgbmV3QWN0aXZlUmVjdGFuZ2xlID0gdXBkYXRlQWN0aXZlUmVjdGFuZ2xlKHNuYXBEZWx0YSwgYWN0aXZlUmVjdGFuZ2xlKTtcbiAgICByZXR1cm4gZHJhd1BvaW50U25hcExpbmVzKGJvYXJkLCBuZXdBY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzLCB0cnVlLCB0cnVlLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2FwU25hcExpbmVzQW5kRGVsdGEoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgc25hcERlbHRhOiBTbmFwRGVsdGEsXG4gICAgYWN0aXZlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgc25hcFJlY3RhbmdsZXM6IFJlY3RhbmdsZUNsaWVudFtdXG4pIHtcbiAgICBsZXQgZGVsdGFYID0gc25hcERlbHRhLmRlbHRhWDtcbiAgICBsZXQgZGVsdGFZID0gc25hcERlbHRhLmRlbHRhWTtcbiAgICBjb25zdCBnYXBIb3Jpem9udGFsUmVzdWx0ID0gZ2V0R2FwTGluZXNBbmREZWx0YShhY3RpdmVSZWN0YW5nbGUsIHNuYXBSZWN0YW5nbGVzLCB0cnVlKTtcbiAgICBjb25zdCBnYXBWZXJ0aWNhbFJlc3VsdCA9IGdldEdhcExpbmVzQW5kRGVsdGEoYWN0aXZlUmVjdGFuZ2xlLCBzbmFwUmVjdGFuZ2xlcywgZmFsc2UpO1xuICAgIGNvbnN0IGdhcFNuYXBMaW5lczogUG9pbnRbXVtdID0gWy4uLmdhcEhvcml6b250YWxSZXN1bHQubGluZXMsIC4uLmdhcFZlcnRpY2FsUmVzdWx0LmxpbmVzXTtcbiAgICBpZiAoZ2FwSG9yaXpvbnRhbFJlc3VsdC5kZWx0YSkge1xuICAgICAgICBkZWx0YVggPSBnYXBIb3Jpem9udGFsUmVzdWx0LmRlbHRhO1xuICAgIH1cbiAgICBpZiAoZ2FwVmVydGljYWxSZXN1bHQuZGVsdGEpIHtcbiAgICAgICAgZGVsdGFZID0gZ2FwVmVydGljYWxSZXN1bHQuZGVsdGE7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNuYXBEZWx0YTogeyBkZWx0YVgsIGRlbHRhWSB9LFxuICAgICAgICBzbmFwRzogZHJhd1NvbGlkTGluZXMoYm9hcmQsIGdhcFNuYXBMaW5lcylcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRHYXBMaW5lc0FuZERlbHRhKGFjdGl2ZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBzbmFwUmVjdGFuZ2xlczogUmVjdGFuZ2xlQ2xpZW50W10sIGlzSG9yaXpvbnRhbDogYm9vbGVhbikge1xuICAgIGxldCBsaW5lczogYW55W10gPSBbXTtcbiAgICBsZXQgZGVsdGEgPSAwO1xuICAgIGxldCByZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXSA9IFtdO1xuICAgIGNvbnN0IGF4aXMgPSBpc0hvcml6b250YWwgPyAneCcgOiAneSc7XG4gICAgY29uc3Qgc2lkZSA9IGlzSG9yaXpvbnRhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcblxuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZUNlbnRlciA9IGFjdGl2ZVJlY3RhbmdsZVtheGlzXSArIGFjdGl2ZVJlY3RhbmdsZVtzaWRlXSAvIDI7XG4gICAgc25hcFJlY3RhbmdsZXMuZm9yRWFjaChyZWMgPT4ge1xuICAgICAgICBjb25zdCBpc0Nyb3NzID0gaXNIb3Jpem9udGFsID8gaXNIb3Jpem9udGFsQ3Jvc3MocmVjLCBhY3RpdmVSZWN0YW5nbGUpIDogaXNWZXJ0aWNhbENyb3NzKHJlYywgYWN0aXZlUmVjdGFuZ2xlKTtcbiAgICAgICAgaWYgKGlzQ3Jvc3MgJiYgIVJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWMsIGFjdGl2ZVJlY3RhbmdsZSkpIHtcbiAgICAgICAgICAgIHJlY3RhbmdsZXMucHVzaChyZWMpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmVjdGFuZ2xlcyA9IFsuLi5yZWN0YW5nbGVzLCBhY3RpdmVSZWN0YW5nbGVdLnNvcnQoKGEsIGIpID0+IGFbYXhpc10gLSBiW2F4aXNdKTtcblxuICAgIGNvbnN0IHJlZkFycmF5OiBHYXBTbmFwUmVmW10gPSBbXTtcbiAgICBsZXQgZ2FwRGlzdGFuY2UgPSAwO1xuICAgIGxldCBiZWZvcmVJbmRleCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgYWZ0ZXJJbmRleCA9IHVuZGVmaW5lZDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjdGFuZ2xlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCByZWN0YW5nbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBiZWZvcmUgPSByZWN0YW5nbGVzW2ldO1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXIgPSByZWN0YW5nbGVzW2pdO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBhZnRlcltheGlzXSAtIChiZWZvcmVbYXhpc10gKyBiZWZvcmVbc2lkZV0pO1xuICAgICAgICAgICAgbGV0IGRpZiA9IEluZmluaXR5O1xuICAgICAgICAgICAgaWYgKHJlZkFycmF5W2ldPy5hZnRlcikge1xuICAgICAgICAgICAgICAgIHJlZkFycmF5W2ldLmFmdGVyLnB1c2goeyBkaXN0YW5jZSwgaW5kZXg6IGogfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZkFycmF5W2ldID0geyAuLi5yZWZBcnJheVtpXSwgYWZ0ZXI6IFt7IGRpc3RhbmNlLCBpbmRleDogaiB9XSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVmQXJyYXlbal0/LmJlZm9yZSkge1xuICAgICAgICAgICAgICAgIHJlZkFycmF5W2pdLmJlZm9yZS5wdXNoKHsgZGlzdGFuY2UsIGluZGV4OiBpIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWZBcnJheVtqXSA9IHsgLi4ucmVmQXJyYXlbal0sIGJlZm9yZTogW3sgZGlzdGFuY2UsIGluZGV4OiBpIH1dIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vbWlkZGxlXG4gICAgICAgICAgICBsZXQgX2NlbnRlciA9IChiZWZvcmVbYXhpc10gKyBiZWZvcmVbc2lkZV0gKyBhZnRlcltheGlzXSkgLyAyO1xuICAgICAgICAgICAgZGlmID0gTWF0aC5hYnMoX2NlbnRlciAtIGFjdGl2ZVJlY3RhbmdsZUNlbnRlcik7XG4gICAgICAgICAgICBpZiAoZGlmIDwgU05BUF9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICBnYXBEaXN0YW5jZSA9IChhZnRlcltheGlzXSAtIChiZWZvcmVbYXhpc10gKyBiZWZvcmVbc2lkZV0pIC0gYWN0aXZlUmVjdGFuZ2xlW3NpZGVdKSAvIDI7XG4gICAgICAgICAgICAgICAgZGVsdGEgPSBfY2VudGVyIC0gYWN0aXZlUmVjdGFuZ2xlQ2VudGVyO1xuICAgICAgICAgICAgICAgIGJlZm9yZUluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBhZnRlckluZGV4ID0gajtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9hZnRlclxuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VSaWdodCA9IGFmdGVyW2F4aXNdIC0gKGJlZm9yZVtheGlzXSArIGJlZm9yZVtzaWRlXSk7XG4gICAgICAgICAgICBfY2VudGVyID0gYWZ0ZXJbYXhpc10gKyBhZnRlcltzaWRlXSArIGRpc3RhbmNlUmlnaHQgKyBhY3RpdmVSZWN0YW5nbGVbc2lkZV0gLyAyO1xuICAgICAgICAgICAgZGlmID0gTWF0aC5hYnMoX2NlbnRlciAtIGFjdGl2ZVJlY3RhbmdsZUNlbnRlcik7XG4gICAgICAgICAgICBpZiAoKCFnYXBEaXN0YW5jZSB8fCBnYXBEaXN0YW5jZSAhPT0gZGlzdGFuY2VSaWdodCkgJiYgZGlmIDwgU05BUF9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICBnYXBEaXN0YW5jZSA9IGRpc3RhbmNlUmlnaHQ7XG4gICAgICAgICAgICAgICAgYmVmb3JlSW5kZXggPSBqO1xuICAgICAgICAgICAgICAgIGRlbHRhID0gX2NlbnRlciAtIGFjdGl2ZVJlY3RhbmdsZUNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9iZWZvcmVcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlQmVmb3JlID0gYWZ0ZXJbYXhpc10gLSAoYmVmb3JlW2F4aXNdICsgYmVmb3JlW3NpZGVdKTtcbiAgICAgICAgICAgIF9jZW50ZXIgPSBiZWZvcmVbYXhpc10gLSBkaXN0YW5jZUJlZm9yZSAtIGFjdGl2ZVJlY3RhbmdsZVtzaWRlXSAvIDI7XG4gICAgICAgICAgICBkaWYgPSBNYXRoLmFicyhfY2VudGVyIC0gYWN0aXZlUmVjdGFuZ2xlQ2VudGVyKTtcblxuICAgICAgICAgICAgaWYgKCFnYXBEaXN0YW5jZSAmJiBkaWYgPCBTTkFQX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgIGdhcERpc3RhbmNlID0gZGlzdGFuY2VCZWZvcmU7XG4gICAgICAgICAgICAgICAgYWZ0ZXJJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgZGVsdGEgPSBfY2VudGVyIC0gYWN0aXZlUmVjdGFuZ2xlQ2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSByZWN0YW5nbGVzLmluZGV4T2YoYWN0aXZlUmVjdGFuZ2xlKTtcbiAgICBsZXQgYmVmb3JlSW5kZXhlczogbnVtYmVyW10gPSBbXTtcbiAgICBsZXQgYWZ0ZXJJbmRleGVzOiBudW1iZXJbXSA9IFtdO1xuICAgIGlmIChiZWZvcmVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJlZm9yZUluZGV4ZXMucHVzaChiZWZvcmVJbmRleCk7XG4gICAgICAgIGZpbmRSZWN0YW5nbGUoZ2FwRGlzdGFuY2UsIHJlZkFycmF5W2JlZm9yZUluZGV4XSwgJ2JlZm9yZScsIGJlZm9yZUluZGV4ZXMpO1xuICAgIH1cblxuICAgIGlmIChhZnRlckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWZ0ZXJJbmRleGVzLnB1c2goYWZ0ZXJJbmRleCk7XG4gICAgICAgIGZpbmRSZWN0YW5nbGUoZ2FwRGlzdGFuY2UsIHJlZkFycmF5W2FmdGVySW5kZXhdLCAnYWZ0ZXInLCBhZnRlckluZGV4ZXMpO1xuICAgIH1cblxuICAgIGlmIChiZWZvcmVJbmRleGVzLmxlbmd0aCB8fCBhZnRlckluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGluZGV4QXJyID0gWy4uLmJlZm9yZUluZGV4ZXMucmV2ZXJzZSgpLCBhY3RpdmVJbmRleCwgLi4uYWZ0ZXJJbmRleGVzXTtcbiAgICAgICAgYWN0aXZlUmVjdGFuZ2xlW2F4aXNdICs9IGRlbHRhO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGluZGV4QXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGdldExpbmVQb2ludHMocmVjdGFuZ2xlc1tpbmRleEFycltpIC0gMV1dLCByZWN0YW5nbGVzW2luZGV4QXJyW2ldXSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmluZFJlY3RhbmdsZShkaXN0YW5jZTogbnVtYmVyLCByZWY6IEdhcFNuYXBSZWYsIGRpcmVjdGlvbjogc3RyaW5nLCByZWN0YW5nbGVJbmRleGVzOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBhcnIgPSByZWZbZGlyZWN0aW9uIGFzIGtleW9mIEdhcFNuYXBSZWZdO1xuICAgICAgICBjb25zdCBpbmRleCA9IHJlZkFycmF5LmluZGV4T2YocmVmKTtcbiAgICAgICAgaWYgKChpbmRleCA9PT0gMCAmJiBkaXJlY3Rpb24gPT09ICdiZWZvcmUnKSB8fCAoaW5kZXggPT09IHJlZkFycmF5Lmxlbmd0aCAtIDEgJiYgZGlyZWN0aW9uID09PSAnYWZ0ZXInKSkgcmV0dXJuO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGFycltpXS5kaXN0YW5jZSAtIGRpc3RhbmNlKSA8IDAuMSkge1xuICAgICAgICAgICAgICAgIHJlY3RhbmdsZUluZGV4ZXMucHVzaChhcnJbaV0uaW5kZXgpO1xuICAgICAgICAgICAgICAgIGZpbmRSZWN0YW5nbGUoZGlzdGFuY2UsIHJlZkFycmF5W2FycltpXS5pbmRleF0sIGRpcmVjdGlvbiwgcmVjdGFuZ2xlSW5kZXhlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TGluZVBvaW50cyhiZWZvcmVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgYWZ0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICBjb25zdCBvcHBvc2l0ZUF4aXMgPSBheGlzID09PSAneCcgPyAneScgOiAneCc7XG4gICAgICAgIGNvbnN0IG9wcG9zaXRlU2lkZSA9IHNpZGUgPT09ICd3aWR0aCcgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IHNuYXAgPSBbXG4gICAgICAgICAgICBiZWZvcmVSZWN0YW5nbGVbb3Bwb3NpdGVBeGlzXSxcbiAgICAgICAgICAgIGJlZm9yZVJlY3RhbmdsZVtvcHBvc2l0ZUF4aXNdICsgYmVmb3JlUmVjdGFuZ2xlW29wcG9zaXRlU2lkZV0sXG4gICAgICAgICAgICBhZnRlclJlY3RhbmdsZVtvcHBvc2l0ZUF4aXNdLFxuICAgICAgICAgICAgYWZ0ZXJSZWN0YW5nbGVbb3Bwb3NpdGVBeGlzXSArIGFmdGVyUmVjdGFuZ2xlW29wcG9zaXRlU2lkZV1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3Qgc29ydEFyciA9IHNuYXAuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgICBjb25zdCBhdmVyYWdlID0gKHNvcnRBcnJbMV0gKyBzb3J0QXJyWzJdKSAvIDI7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDM7XG4gICAgICAgIHJldHVybiBpc0hvcml6b250YWxcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgW2JlZm9yZVJlY3RhbmdsZS54ICsgYmVmb3JlUmVjdGFuZ2xlLndpZHRoICsgb2Zmc2V0LCBhdmVyYWdlXSxcbiAgICAgICAgICAgICAgICAgIFthZnRlclJlY3RhbmdsZS54IC0gb2Zmc2V0LCBhdmVyYWdlXVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgIFthdmVyYWdlLCBiZWZvcmVSZWN0YW5nbGUueSArIGJlZm9yZVJlY3RhbmdsZS5oZWlnaHQgKyBvZmZzZXRdLFxuICAgICAgICAgICAgICAgICAgW2F2ZXJhZ2UsIGFmdGVyUmVjdGFuZ2xlLnkgLSBvZmZzZXRdXG4gICAgICAgICAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiB7IGRlbHRhLCBsaW5lcyB9O1xufVxuXG5mdW5jdGlvbiBpc0hvcml6b250YWxDcm9zcyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3RoZXI6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgIHJldHVybiAhKHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCA8IG90aGVyLnkgfHwgcmVjdGFuZ2xlLnkgPiBvdGhlci55ICsgb3RoZXIuaGVpZ2h0KTtcbn1cblxuZnVuY3Rpb24gaXNWZXJ0aWNhbENyb3NzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvdGhlcjogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgcmV0dXJuICEocmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggPCBvdGhlci54IHx8IHJlY3RhbmdsZS54ID4gb3RoZXIueCArIG90aGVyLndpZHRoKTtcbn1cbiJdfQ==
|
package/fesm2022/plait-core.mjs
CHANGED
|
@@ -4404,7 +4404,6 @@ function withSelection(board) {
|
|
|
4404
4404
|
let selectionRectangleG;
|
|
4405
4405
|
let previousSelectedElements;
|
|
4406
4406
|
let isShift = false;
|
|
4407
|
-
let isTextSelection = false;
|
|
4408
4407
|
board.pointerDown = (event) => {
|
|
4409
4408
|
if (!isShift && event.shiftKey) {
|
|
4410
4409
|
isShift = true;
|
|
@@ -4413,11 +4412,6 @@ function withSelection(board) {
|
|
|
4413
4412
|
isShift = false;
|
|
4414
4413
|
}
|
|
4415
4414
|
const isHitText = !!(event.target instanceof Element && event.target.closest('.plait-richtext-container'));
|
|
4416
|
-
isTextSelection = isHitText && PlaitBoard.hasBeenTextEditing(board);
|
|
4417
|
-
// prevent text from being selected
|
|
4418
|
-
if (event.shiftKey && !isTextSelection) {
|
|
4419
|
-
event.preventDefault();
|
|
4420
|
-
}
|
|
4421
4415
|
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
4422
4416
|
const isHitTarget = isHitElement(board, point);
|
|
4423
4417
|
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
@@ -4429,10 +4423,6 @@ function withSelection(board) {
|
|
|
4429
4423
|
pointerDown(event);
|
|
4430
4424
|
};
|
|
4431
4425
|
board.pointerMove = (event) => {
|
|
4432
|
-
if (!isTextSelection) {
|
|
4433
|
-
// prevent text from being selected
|
|
4434
|
-
event.preventDefault();
|
|
4435
|
-
}
|
|
4436
4426
|
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) && start) {
|
|
4437
4427
|
const movedTarget = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
4438
4428
|
const rectangle = RectangleClient.getRectangleByPoints([start, movedTarget]);
|
|
@@ -4487,7 +4477,6 @@ function withSelection(board) {
|
|
|
4487
4477
|
}
|
|
4488
4478
|
start = null;
|
|
4489
4479
|
end = null;
|
|
4490
|
-
isTextSelection = false;
|
|
4491
4480
|
preventTouchMove(board, event, false);
|
|
4492
4481
|
globalPointerUp(event);
|
|
4493
4482
|
};
|
|
@@ -4743,7 +4732,7 @@ function getGapLinesAndDelta(activeRectangle, snapRectangles, isHorizontal) {
|
|
|
4743
4732
|
const distanceRight = after[axis] - (before[axis] + before[side]);
|
|
4744
4733
|
_center = after[axis] + after[side] + distanceRight + activeRectangle[side] / 2;
|
|
4745
4734
|
dif = Math.abs(_center - activeRectangleCenter);
|
|
4746
|
-
if (!gapDistance && dif < SNAP_TOLERANCE) {
|
|
4735
|
+
if ((!gapDistance || gapDistance !== distanceRight) && dif < SNAP_TOLERANCE) {
|
|
4747
4736
|
gapDistance = distanceRight;
|
|
4748
4737
|
beforeIndex = j;
|
|
4749
4738
|
delta = _center - activeRectangleCenter;
|