@plait/core 0.44.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/interfaces/board.mjs +1 -1
- package/esm2022/plugins/create-board.mjs +2 -1
- package/esm2022/plugins/with-hotkey.mjs +53 -4
- package/esm2022/plugins/with-moving.mjs +3 -2
- package/esm2022/plugins/with-selection.mjs +39 -34
- package/esm2022/utils/dnd.mjs +8 -0
- package/esm2022/utils/hotkeys.mjs +13 -3
- package/esm2022/utils/index.mjs +2 -1
- package/esm2022/utils/moving-element.mjs +4 -1
- package/fesm2022/plait-core.mjs +112 -37
- package/fesm2022/plait-core.mjs.map +1 -1
- package/interfaces/board.d.ts +1 -0
- package/package.json +1 -1
- package/utils/dnd.d.ts +4 -0
- package/utils/hotkeys.d.ts +5 -0
- package/utils/index.d.ts +1 -0
|
@@ -8,60 +8,50 @@ import { PlaitPointerType, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR } from '
|
|
|
8
8
|
import { getRectangleByElements } from '../utils/element';
|
|
9
9
|
import { BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_TEMPORARY_ELEMENTS } from '../utils/weak-maps';
|
|
10
10
|
import { ACTIVE_STROKE_WIDTH, ATTACHED_ELEMENT_CLASS_NAME, SELECTION_RECTANGLE_CLASS_NAME } from '../constants/selection';
|
|
11
|
-
import { drawRectangle, preventTouchMove, throttleRAF } from '../utils';
|
|
11
|
+
import { drawRectangle, isDragging, preventTouchMove, setDragging, throttleRAF } from '../utils';
|
|
12
12
|
import { PlaitPluginKey } from '../interfaces/plugin-key';
|
|
13
13
|
import { Selection } from '../interfaces/selection';
|
|
14
|
+
import { PRESS_AND_MOVE_BUFFER } from '../constants';
|
|
14
15
|
export function withSelection(board) {
|
|
15
|
-
const { pointerDown,
|
|
16
|
+
const { pointerDown, pointerUp, pointerMove, globalPointerUp, keydown, keyup, onChange, afterChange } = board;
|
|
16
17
|
let start = null;
|
|
17
18
|
let end = null;
|
|
18
19
|
let selectionMovingG;
|
|
19
20
|
let selectionRectangleG;
|
|
20
21
|
let previousSelectedElements;
|
|
21
|
-
// prevent text from being selected when user pressed main pointer and is moving
|
|
22
|
-
let needPreventNativeSelectionWhenMoving = false;
|
|
23
22
|
let isShift = false;
|
|
23
|
+
let isTextSelection = false;
|
|
24
24
|
board.pointerDown = (event) => {
|
|
25
|
-
const isHitText = event.target instanceof Element && event.target.closest('.plait-richtext-container');
|
|
26
|
-
|
|
25
|
+
const isHitText = !!(event.target instanceof Element && event.target.closest('.plait-richtext-container'));
|
|
26
|
+
isTextSelection = isHitText && PlaitBoard.hasBeenTextEditing(board);
|
|
27
|
+
// prevent text from being selected
|
|
28
|
+
if (event.shiftKey && !isTextSelection) {
|
|
27
29
|
event.preventDefault();
|
|
28
|
-
isShift = true;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
isShift = false;
|
|
32
|
-
}
|
|
33
|
-
if (!isHitText) {
|
|
34
|
-
needPreventNativeSelectionWhenMoving = true;
|
|
35
|
-
}
|
|
36
|
-
if (!isMainPointer(event)) {
|
|
37
|
-
pointerDown(event);
|
|
38
|
-
return;
|
|
39
30
|
}
|
|
40
|
-
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
41
31
|
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
42
|
-
const selection = { anchor: point, focus: point };
|
|
43
32
|
const hitElement = getHitElementByPoint(board, point);
|
|
44
|
-
const
|
|
45
|
-
if (!isShift && hitElement && selectedElements.includes(hitElement) && !options.isDisabledSelect) {
|
|
46
|
-
pointerDown(event);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
33
|
+
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
49
34
|
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) && !hitElement && options.isMultiple && !options.isDisabledSelect) {
|
|
50
|
-
selectionRectangleG?.remove();
|
|
51
|
-
start = point;
|
|
52
35
|
preventTouchMove(board, event, true);
|
|
36
|
+
// start rectangle selection
|
|
37
|
+
start = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
53
38
|
}
|
|
54
|
-
Transforms.setSelection(board, selection);
|
|
55
39
|
pointerDown(event);
|
|
56
40
|
};
|
|
41
|
+
board.keydown = (event) => {
|
|
42
|
+
if (!isShift && event.key === 'Shift') {
|
|
43
|
+
isShift = true;
|
|
44
|
+
}
|
|
45
|
+
keydown(event);
|
|
46
|
+
};
|
|
57
47
|
board.keyup = (event) => {
|
|
58
48
|
if (isShift && event.key === 'Shift') {
|
|
59
49
|
isShift = false;
|
|
60
50
|
}
|
|
61
51
|
keyup(event);
|
|
62
52
|
};
|
|
63
|
-
board.
|
|
64
|
-
if (
|
|
53
|
+
board.pointerMove = (event) => {
|
|
54
|
+
if (!isTextSelection) {
|
|
65
55
|
// prevent text from being selected
|
|
66
56
|
event.preventDefault();
|
|
67
57
|
}
|
|
@@ -69,7 +59,7 @@ export function withSelection(board) {
|
|
|
69
59
|
const movedTarget = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
70
60
|
const rectangle = RectangleClient.toRectangleClient([start, movedTarget]);
|
|
71
61
|
selectionMovingG?.remove();
|
|
72
|
-
if (Math.hypot(rectangle.width, rectangle.height) >
|
|
62
|
+
if (Math.hypot(rectangle.width, rectangle.height) > PRESS_AND_MOVE_BUFFER || isSelectionMoving(board)) {
|
|
73
63
|
end = movedTarget;
|
|
74
64
|
throttleRAF(() => {
|
|
75
65
|
if (start && end) {
|
|
@@ -86,7 +76,19 @@ export function withSelection(board) {
|
|
|
86
76
|
PlaitBoard.getElementActiveHost(board).append(selectionMovingG);
|
|
87
77
|
}
|
|
88
78
|
}
|
|
89
|
-
|
|
79
|
+
pointerMove(event);
|
|
80
|
+
};
|
|
81
|
+
// handle the end of click select
|
|
82
|
+
board.pointerUp = (event) => {
|
|
83
|
+
const isSkip = !isMainPointer(event) || isDragging(board) || !PlaitBoard.isPointer(board, PlaitPointerType.selection);
|
|
84
|
+
if (isSkip) {
|
|
85
|
+
pointerDown(event);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
89
|
+
const selection = { anchor: point, focus: point };
|
|
90
|
+
Transforms.setSelection(board, selection);
|
|
91
|
+
pointerUp(event);
|
|
90
92
|
};
|
|
91
93
|
board.globalPointerUp = (event) => {
|
|
92
94
|
if (start && end) {
|
|
@@ -106,7 +108,7 @@ export function withSelection(board) {
|
|
|
106
108
|
}
|
|
107
109
|
start = null;
|
|
108
110
|
end = null;
|
|
109
|
-
|
|
111
|
+
isTextSelection = false;
|
|
110
112
|
preventTouchMove(board, event, false);
|
|
111
113
|
globalPointerUp(event);
|
|
112
114
|
};
|
|
@@ -142,7 +144,8 @@ export function withSelection(board) {
|
|
|
142
144
|
cacheSelectedElements(board, newSelectedElements);
|
|
143
145
|
}
|
|
144
146
|
else {
|
|
145
|
-
|
|
147
|
+
const newSelectedElements = [...elements];
|
|
148
|
+
cacheSelectedElements(board, newSelectedElements);
|
|
146
149
|
}
|
|
147
150
|
const newElements = getSelectedElements(board);
|
|
148
151
|
previousSelectedElements = newElements;
|
|
@@ -213,10 +216,12 @@ export function isSelectionMoving(board) {
|
|
|
213
216
|
export function setSelectionMoving(board) {
|
|
214
217
|
PlaitBoard.getBoardContainer(board).classList.add('selection-moving');
|
|
215
218
|
BOARD_TO_IS_SELECTION_MOVING.set(board, true);
|
|
219
|
+
setDragging(board, true);
|
|
216
220
|
}
|
|
217
221
|
export function clearSelectionMoving(board) {
|
|
218
222
|
PlaitBoard.getBoardContainer(board).classList.remove('selection-moving');
|
|
219
223
|
BOARD_TO_IS_SELECTION_MOVING.delete(board);
|
|
224
|
+
setDragging(board, false);
|
|
220
225
|
}
|
|
221
226
|
export function createSelectionRectangleG(board) {
|
|
222
227
|
const elements = getSelectedElements(board);
|
|
@@ -233,4 +238,4 @@ export function createSelectionRectangleG(board) {
|
|
|
233
238
|
}
|
|
234
239
|
return null;
|
|
235
240
|
}
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQWdCLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFILE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFPcEQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFp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RUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWlCO0lBQ2xELFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekUsNEJBQTRCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsS0FBaUI7SUFDdkQsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RHLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxTQUFTLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUM7UUFDSCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sbUJBQW1CLENBQUM7S0FDOUI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IHRyYW5zZm9ybVBvaW50IH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciwgdG9Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24sXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBsYWl0UG9pbnRlclR5cGUsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsIFNFTEVDVElPTl9GSUxMX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvZWxlbWVudCc7XG5pbXBvcnQgeyBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLCBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQUNUSVZFX1NUUk9LRV9XSURUSCwgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FLCBTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7IGRyYXdSZWN0YW5nbGUsIHByZXZlbnRUb3VjaE1vdmUsIHRocm90dGxlUkFGIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQsIFBsYWl0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0UGx1Z2luS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4ta2V5JztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGx1Z2luT3B0aW9ucyBleHRlbmRzIFBsYWl0UGx1Z2luT3B0aW9ucyB7XG4gICAgaXNNdWx0aXBsZTogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkU2VsZWN0OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNlbGVjdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIGdsb2JhbFBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAsIGtleXVwLCBvbkNoYW5nZSwgYWZ0ZXJDaGFuZ2UgfSA9IGJvYXJkO1xuICAgIGxldCBzdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgZW5kOiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzZWxlY3Rpb25Nb3ZpbmdHOiBTVkdHRWxlbWVudDtcbiAgICBsZXQgc2VsZWN0aW9uUmVjdGFuZ2xlRzogU1ZHR0VsZW1lbnQgfCBudWxsO1xuICAgIGxldCBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdO1xuICAgIC8vIHByZXZlbnQgdGV4dCBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gdXNlciBwcmVzc2VkIG1haW4gcG9pbnRlciBhbmQgaXMgbW92aW5nXG4gICAgbGV0IG5lZWRQcmV2ZW50TmF0aXZlU2VsZWN0aW9uV2hlbk1vdmluZyA9IGZhbHNlO1xuICAgIGxldCBpc1NoaWZ0ID0gZmFsc2U7XG5cbiAgICBib2FyZC5wb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzSGl0VGV4dCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5wbGFpdC1yaWNodGV4dC1jb250YWluZXInKTtcbiAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaXNTaGlmdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzSGl0VGV4dCkge1xuICAgICAgICAgICAgbmVlZFByZXZlbnROYXRpdmVTZWxlY3Rpb25XaGVuTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNNYWluUG9pbnRlcihldmVudCkpIHtcbiAgICAgICAgICAgIHBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0geyBhbmNob3I6IHBvaW50LCBmb2N1czogcG9pbnQgfTtcbiAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcblxuICAgICAgICBpZiAoIWlzU2hpZnQgJiYgaGl0RWxlbWVudCAmJiBzZWxlY3RlZEVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnQpICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QpIHtcbiAgICAgICAgICAgIHBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmICFoaXRFbGVtZW50ICYmIG9wdGlvbnMuaXNNdWx0aXBsZSAmJiAhb3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0KSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHN0YXJ0ID0gcG9pbnQ7XG4gICAgICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCBldmVudCwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgc2VsZWN0aW9uKTtcblxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc1NoaWZ0ICYmIGV2ZW50LmtleSA9PT0gJ1NoaWZ0Jykge1xuICAgICAgICAgICAgaXNTaGlmdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGtleXVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlck1vdmUgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAobmVlZFByZXZlbnROYXRpdmVTZWxlY3Rpb25XaGVuTW92aW5nKSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGFydCAmJiBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICBjb25zdCBtb3ZlZFRhcmdldCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbc3RhcnQsIG1vdmVkVGFyZ2V0XSk7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmIChNYXRoLmh5cG90KHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLmhlaWdodCkgPiA1KSB7XG4gICAgICAgICAgICAgICAgZW5kID0gbW92ZWRUYXJnZXQ7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHID0gZHJhd1JlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uTW92aW5nRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgICBlbmQgPSBudWxsO1xuICAgICAgICBuZWVkUHJldmVudE5hdGl2ZVNlbGVjdGlvbldoZW5Nb3ZpbmcgPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgICAgICBpZiAob3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0KSB7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgaWYgaW5jbHVkZVxuICAgICAgICBib2FyZC5vcGVyYXRpb25zLmZvckVhY2gob3AgPT4ge1xuICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT09ICdyZW1vdmVfbm9kZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG9wLm5vZGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gdGVtcG9yYXJ5RWxlbWVudHMgPyB0ZW1wb3JhcnlFbGVtZW50cyA6IGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24oYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCAmJiBib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5nZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKV07XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMuc3BsaWNlKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gbmV3RWxlbWVudHM7XG4gICAgICAgICAgICAgICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpICYmIG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuYWZ0ZXJDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgIWlzU2V0U2VsZWN0aW9uT3BlcmF0aW9uKGJvYXJkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggJiYgY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLnNvbWUoKGMsIGluZGV4KSA9PiBjICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHNbaW5kZXhdKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gY3VycmVudFNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFmdGVyQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwge1xuICAgICAgICBpc011bHRpcGxlOiB0cnVlLFxuICAgICAgICBpc0Rpc2FibGVkU2VsZWN0OiBmYWxzZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICByZXR1cm4gYm9hcmQucG9pbnRlciAhPT0gUGxhaXRQb2ludGVyVHlwZS5oYW5kICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QgJiYgIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiAhIWJvYXJkLm9wZXJhdGlvbnMuZmluZCh2YWx1ZSA9PiB2YWx1ZS50eXBlID09PSAnc2V0X3NlbGVjdGlvbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCByZWYgPSBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMuZ2V0KGJvYXJkKTtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJldHVybiByZWYuZWxlbWVudHM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wb3JhcnlSZWYoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUy5kZWxldGUoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gISFCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKCdzZWxlY3Rpb24tbW92aW5nJyk7XG4gICAgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORy5zZXQoYm9hcmQsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3Rpb24tbW92aW5nJyk7XG4gICAgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORy5kZWxldGUoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0aW9uUmVjdGFuZ2xlRyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBpZiAocmVjdGFuZ2xlLndpZHRoID4gMCAmJiByZWN0YW5nbGUuaGVpZ2h0ID4gMCAmJiBlbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZUcgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpLCB7XG4gICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRy5jbGFzc0xpc3QuYWRkKFNFTEVDVElPTl9SRUNUQU5HTEVfQ0xBU1NfTkFNRSk7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvblJlY3RhbmdsZUc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuIl19
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQWdCLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFILE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFP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QW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RHLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxTQUFTLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUM7UUFDSCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sbUJBQW1CLENBQUM7S0FDOUI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IHRyYW5zZm9ybVBvaW50IH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciwgdG9Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24sXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBsYWl0UG9pbnRlclR5cGUsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsIFNFTEVDVElPTl9GSUxMX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvZWxlbWVudCc7XG5pbXBvcnQgeyBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLCBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQUNUSVZFX1NUUk9LRV9XSURUSCwgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FLCBTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7IGRyYXdSZWN0YW5nbGUsIGlzRHJhZ2dpbmcsIHByZXZlbnRUb3VjaE1vdmUsIHNldERyYWdnaW5nLCB0aHJvdHRsZVJBRiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBsYWl0T3B0aW9uc0JvYXJkLCBQbGFpdFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3dpdGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbktleSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGx1Z2luLWtleSc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBQUkVTU19BTkRfTU9WRV9CVUZGRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhQbHVnaW5PcHRpb25zIGV4dGVuZHMgUGxhaXRQbHVnaW5PcHRpb25zIHtcbiAgICBpc011bHRpcGxlOiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRTZWxlY3Q6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2VsZWN0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlclVwLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBrZXlkb3duLCBrZXl1cCwgb25DaGFuZ2UsIGFmdGVyQ2hhbmdlIH0gPSBib2FyZDtcbiAgICBsZXQgc3RhcnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVuZDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2VsZWN0aW9uTW92aW5nRzogU1ZHR0VsZW1lbnQ7XG4gICAgbGV0IHNlbGVjdGlvblJlY3RhbmdsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgaXNTaGlmdCA9IGZhbHNlO1xuICAgIGxldCBpc1RleHRTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNIaXRUZXh0ID0gISEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdCgnLnBsYWl0LXJpY2h0ZXh0LWNvbnRhaW5lcicpKTtcbiAgICAgICAgaXNUZXh0U2VsZWN0aW9uID0gaXNIaXRUZXh0ICYmIFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKTtcblxuICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgIWlzVGV4dFNlbGVjdGlvbikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0RWxlbWVudEJ5UG9pbnQoYm9hcmQsIHBvaW50KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbik7XG5cbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiYgIWhpdEVsZW1lbnQgJiYgb3B0aW9ucy5pc011bHRpcGxlICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QpIHtcbiAgICAgICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgIC8vIHN0YXJ0IHJlY3RhbmdsZSBzZWxlY3Rpb25cbiAgICAgICAgICAgIHN0YXJ0ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNTaGlmdCAmJiBldmVudC5rZXkgPT09ICdTaGlmdCcpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIGJvYXJkLmtleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc1NoaWZ0ICYmIGV2ZW50LmtleSA9PT0gJ1NoaWZ0Jykge1xuICAgICAgICAgICAgaXNTaGlmdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGtleXVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlck1vdmUgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzVGV4dFNlbGVjdGlvbikge1xuICAgICAgICAgICAgLy8gcHJldmVudCB0ZXh0IGZyb20gYmVpbmcgc2VsZWN0ZWRcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhcnQgJiYgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgbW92ZWRUYXJnZXQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3N0YXJ0LCBtb3ZlZFRhcmdldF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBpZiAoTWF0aC5oeXBvdChyZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS5oZWlnaHQpID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSIHx8IGlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IG1vdmVkVGFyZ2V0O1xuICAgICAgICAgICAgICAgIHRocm90dGxlUkFGKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHsgYW5jaG9yOiBzdGFydCwgZm9jdXM6IGVuZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRyA9IGRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlY3RhbmdsZSwge1xuICAgICAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHNlbGVjdGlvbk1vdmluZ0cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgLy8gaGFuZGxlIHRoZSBlbmQgb2YgY2xpY2sgc2VsZWN0XG4gICAgYm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNTa2lwID0gIWlzTWFpblBvaW50ZXIoZXZlbnQpIHx8IGlzRHJhZ2dpbmcoYm9hcmQpIHx8ICFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICBpZiAoaXNTa2lwKSB7XG4gICAgICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHsgYW5jaG9yOiBwb2ludCwgZm9jdXM6IHBvaW50IH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBzZWxlY3Rpb24pO1xuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgICBlbmQgPSBudWxsO1xuICAgICAgICBpc1RleHRTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgICAgICBpZiAob3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0KSB7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgaWYgaW5jbHVkZVxuICAgICAgICBib2FyZC5vcGVyYXRpb25zLmZvckVhY2gob3AgPT4ge1xuICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT09ICdyZW1vdmVfbm9kZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG9wLm5vZGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gdGVtcG9yYXJ5RWxlbWVudHMgPyB0ZW1wb3JhcnlFbGVtZW50cyA6IGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24oYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCAmJiBib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5nZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKV07XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMuc3BsaWNlKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5lbGVtZW50c107XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gbmV3RWxlbWVudHM7XG4gICAgICAgICAgICAgICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpICYmIG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuYWZ0ZXJDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgIWlzU2V0U2VsZWN0aW9uT3BlcmF0aW9uKGJvYXJkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggJiYgY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLnNvbWUoKGMsIGluZGV4KSA9PiBjICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHNbaW5kZXhdKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gY3VycmVudFNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFmdGVyQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwge1xuICAgICAgICBpc011bHRpcGxlOiB0cnVlLFxuICAgICAgICBpc0Rpc2FibGVkU2VsZWN0OiBmYWxzZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICByZXR1cm4gYm9hcmQucG9pbnRlciAhPT0gUGxhaXRQb2ludGVyVHlwZS5oYW5kICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QgJiYgIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiAhIWJvYXJkLm9wZXJhdGlvbnMuZmluZCh2YWx1ZSA9PiB2YWx1ZS50eXBlID09PSAnc2V0X3NlbGVjdGlvbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCByZWYgPSBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMuZ2V0KGJvYXJkKTtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJldHVybiByZWYuZWxlbWVudHM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wb3JhcnlSZWYoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUy5kZWxldGUoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gISFCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKCdzZWxlY3Rpb24tbW92aW5nJyk7XG4gICAgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORy5zZXQoYm9hcmQsIHRydWUpO1xuICAgIHNldERyYWdnaW5nKGJvYXJkLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0aW9uLW1vdmluZycpO1xuICAgIEJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcuZGVsZXRlKGJvYXJkKTtcbiAgICBzZXREcmFnZ2luZyhib2FyZCwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0aW9uUmVjdGFuZ2xlRyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBpZiAocmVjdGFuZ2xlLndpZHRoID4gMCAmJiByZWN0YW5nbGUuaGVpZ2h0ID4gMCAmJiBlbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZUcgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpLCB7XG4gICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRy5jbGFzc0xpc3QuYWRkKFNFTEVDVElPTl9SRUNUQU5HTEVfQ0xBU1NfTkFNRSk7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvblJlY3RhbmdsZUc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const IS_DRAGGING = new WeakMap();
|
|
2
|
+
export const isDragging = (board) => {
|
|
3
|
+
return !!IS_DRAGGING.get(board);
|
|
4
|
+
};
|
|
5
|
+
export const setDragging = (board, state) => {
|
|
6
|
+
IS_DRAGGING.set(board, state);
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvZG5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUc5RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDNUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQWMsRUFBRSxFQUFFO0lBQzdELFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9ib2FyZFwiO1xuXG5leHBvcnQgY29uc3QgSVNfRFJBR0dJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5cbmV4cG9ydCBjb25zdCBpc0RyYWdnaW5nID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuICEhSVNfRFJBR0dJTkcuZ2V0KGJvYXJkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXREcmFnZ2luZyA9IChib2FyZDogUGxhaXRCb2FyZCwgc3RhdGU6IGJvb2xlYW4pID0+IHtcbiAgICBJU19EUkFHR0lORy5zZXQoYm9hcmQsIHN0YXRlKTtcbn0iXX0=
|
|
@@ -6,6 +6,8 @@ import { IS_APPLE } from './environment';
|
|
|
6
6
|
const HOTKEYS = {
|
|
7
7
|
bold: 'mod+b',
|
|
8
8
|
compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],
|
|
9
|
+
arrow: ['down', 'left', 'right', 'up'],
|
|
10
|
+
extendArrow: ['shift+down', 'shift+left', 'shift+right', 'shift+up'],
|
|
9
11
|
moveBackward: 'left',
|
|
10
12
|
moveForward: 'right',
|
|
11
13
|
moveUp: 'up',
|
|
@@ -16,9 +18,12 @@ const HOTKEYS = {
|
|
|
16
18
|
deleteForward: 'shift?+delete',
|
|
17
19
|
extendBackward: 'shift+left',
|
|
18
20
|
extendForward: 'shift+right',
|
|
21
|
+
extendUp: 'shift+up',
|
|
22
|
+
extendDown: 'shift+down',
|
|
19
23
|
italic: 'mod+i',
|
|
20
24
|
splitBlock: 'shift?+enter',
|
|
21
|
-
undo: 'mod+z'
|
|
25
|
+
undo: 'mod+z',
|
|
26
|
+
shift: 'shift'
|
|
22
27
|
};
|
|
23
28
|
const APPLE_HOTKEYS = {
|
|
24
29
|
moveLineBackward: 'opt+up',
|
|
@@ -70,6 +75,7 @@ const create = (key) => {
|
|
|
70
75
|
const hotkeys = {
|
|
71
76
|
isBold: create('bold'),
|
|
72
77
|
isCompose: create('compose'),
|
|
78
|
+
isArrow: create('arrow'),
|
|
73
79
|
isMoveBackward: create('moveBackward'),
|
|
74
80
|
isMoveForward: create('moveForward'),
|
|
75
81
|
isMoveUp: create('moveUp'),
|
|
@@ -82,6 +88,9 @@ const hotkeys = {
|
|
|
82
88
|
isDeleteWordForward: create('deleteWordForward'),
|
|
83
89
|
isExtendBackward: create('extendBackward'),
|
|
84
90
|
isExtendForward: create('extendForward'),
|
|
91
|
+
isExtendUp: create('extendUp'),
|
|
92
|
+
isExtendDown: create('extendDown'),
|
|
93
|
+
isExtendArrow: create('extendArrow'),
|
|
85
94
|
isExtendLineBackward: create('extendLineBackward'),
|
|
86
95
|
isExtendLineForward: create('extendLineForward'),
|
|
87
96
|
isItalic: create('italic'),
|
|
@@ -92,8 +101,9 @@ const hotkeys = {
|
|
|
92
101
|
isRedo: create('redo'),
|
|
93
102
|
isSplitBlock: create('splitBlock'),
|
|
94
103
|
isTransposeCharacter: create('transposeCharacter'),
|
|
95
|
-
isUndo: create('undo')
|
|
104
|
+
isUndo: create('undo'),
|
|
105
|
+
isShift: create('shift')
|
|
96
106
|
};
|
|
97
107
|
export default hotkeys;
|
|
98
108
|
export { hotkeys };
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL2hvdGtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDOztHQUVHO0FBRUgsTUFBTSxPQUFPLEdBQVE7SUFDakIsSUFBSSxFQUFFLE9BQU87SUFDYixPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztJQUM5RCxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDdEMsV0FBVyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDO0lBQ3BFLFlBQVksRUFBRSxNQUFNO0lBQ3BCLFdBQVcsRUFBRSxPQUFPO0lBQ3BCLE1BQU0sRUFBRSxJQUFJO0lBQ1osUUFBUSxFQUFFLE1BQU07SUFDaEIsZ0JBQWdCLEVBQUUsV0FBVztJQUM3QixlQUFlLEVBQUUsWUFBWTtJQUM3QixjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLGNBQWMsRUFBRSxZQUFZO0lBQzVCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsVUFBVSxFQUFFLGNBQWM7SUFDMUIsSUFBSSxFQUFFLE9BQU87SUFDYixLQUFLLEVBQUUsT0FBTztDQUNqQixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQVE7SUFDdkIsZ0JBQWdCLEVBQUUsUUFBUTtJQUMxQixlQUFlLEVBQUUsVUFBVTtJQUMzQixnQkFBZ0IsRUFBRSxV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QUNsQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUNwQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CLENBQUM7SUFDbEQsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQ2hELFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzFCLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUM5QyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDNUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQzlDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUM1QyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN0QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CLENBQUM7SUFDbEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7Q0FDM0IsQ0FBQztBQUNGLGVBQWUsT0FBTyxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzS2V5SG90a2V5IH0gZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IElTX0FQUExFIH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5cbi8qKlxuICogSG90a2V5IG1hcHBpbmdzIGZvciBlYWNoIHBsYXRmb3JtLlxuICovXG5cbmNvbnN0IEhPVEtFWVM6IGFueSA9IHtcbiAgICBib2xkOiAnbW9kK2InLFxuICAgIGNvbXBvc2U6IFsnZG93bicsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ2JhY2tzcGFjZScsICdlbnRlciddLFxuICAgIGFycm93OiBbJ2Rvd24nLCAnbGVmdCcsICdyaWdodCcsICd1cCddLFxuICAgIGV4dGVuZEFycm93OiBbJ3NoaWZ0K2Rvd24nLCAnc2hpZnQrbGVmdCcsICdzaGlmdCtyaWdodCcsICdzaGlmdCt1cCddLFxuICAgIG1vdmVCYWNrd2FyZDogJ2xlZnQnLFxuICAgIG1vdmVGb3J3YXJkOiAncmlnaHQnLFxuICAgIG1vdmVVcDogJ3VwJyxcbiAgICBtb3ZlRG93bjogJ2Rvd24nLFxuICAgIG1vdmVXb3JkQmFja3dhcmQ6ICdjdHJsK2xlZnQnLFxuICAgIG1vdmVXb3JkRm9yd2FyZDogJ2N0cmwrcmlnaHQnLFxuICAgIGRlbGV0ZUJhY2t3YXJkOiAnc2hpZnQ/K2JhY2tzcGFjZScsXG4gICAgZGVsZXRlRm9yd2FyZDogJ3NoaWZ0PytkZWxldGUnLFxuICAgIGV4dGVuZEJhY2t3YXJkOiAnc2hpZnQrbGVmdCcsXG4gICAgZXh0ZW5kRm9yd2FyZDogJ3NoaWZ0K3JpZ2h0JyxcbiAgICBleHRlbmRVcDogJ3NoaWZ0K3VwJyxcbiAgICBleHRlbmREb3duOiAnc2hpZnQrZG93bicsXG4gICAgaXRhbGljOiAnbW9kK2knLFxuICAgIHNwbGl0QmxvY2s6ICdzaGlmdD8rZW50ZXInLFxuICAgIHVuZG86ICdtb2QreicsXG4gICAgc2hpZnQ6ICdzaGlmdCdcbn07XG5cbmNvbnN0IEFQUExFX0hPVEtFWVM6IGFueSA9IHtcbiAgICBtb3ZlTGluZUJhY2t3YXJkOiAnb3B0K3VwJyxcbiAgICBtb3ZlTGluZUZvcndhcmQ6ICdvcHQrZG93bicsXG4gICAgbW92ZVdvcmRCYWNrd2FyZDogJ29wdCtsZWZ0JyxcbiAgICBtb3ZlV29yZEZvcndhcmQ6ICdvcHQrcmlnaHQnLFxuICAgIGRlbGV0ZUJhY2t3YXJkOiBbJ2N0cmwrYmFja3NwYWNlJywgJ2N0cmwraCddLFxuICAgIGRlbGV0ZUZvcndhcmQ6IFsnY3RybCtkZWxldGUnLCAnY3RybCtkJ10sXG4gICAgZGVsZXRlTGluZUJhY2t3YXJkOiAnY21kK3NoaWZ0PytiYWNrc3BhY2UnLFxuICAgIGRlbGV0ZUxpbmVGb3J3YXJkOiBbJ2NtZCtzaGlmdD8rZGVsZXRlJywgJ2N0cmwrayddLFxuICAgIGRlbGV0ZVdvcmRCYWNrd2FyZDogJ29wdCtzaGlmdD8rYmFja3NwYWNlJyxcbiAgICBkZWxldGVXb3JkRm9yd2FyZDogJ29wdCtzaGlmdD8rZGVsZXRlJyxcbiAgICBleHRlbmRMaW5lQmFja3dhcmQ6ICdvcHQrc2hpZnQrdXAnLFxuICAgIGV4dGVuZExpbmVGb3J3YXJkOiAnb3B0K3NoaWZ0K2Rvd24nLFxuICAgIHJlZG86ICdjbWQrc2hpZnQreicsXG4gICAgdHJhbnNwb3NlQ2hhcmFjdGVyOiAnY3RybCt0J1xufTtcblxuY29uc3QgV0lORE9XU19IT1RLRVlTOiBhbnkgPSB7XG4gICAgZGVsZXRlV29yZEJhY2t3YXJkOiAnY3RybCtzaGlmdD8rYmFja3NwYWNlJyxcbiAgICBkZWxldGVXb3JkRm9yd2FyZDogJ2N0cmwrc2hpZnQ/K2RlbGV0ZScsXG4gICAgcmVkbzogWydjdHJsK3knLCAnY3RybCtzaGlmdCt6J11cbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgcGxhdGZvcm0tYXdhcmUgaG90a2V5IGNoZWNrZXIuXG4gKi9cblxuY29uc3QgY3JlYXRlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZ2VuZXJpYyA9IEhPVEtFWVNba2V5XTtcbiAgICBjb25zdCBhcHBsZSA9IEFQUExFX0hPVEtFWVNba2V5XTtcbiAgICBjb25zdCB3aW5kb3dzID0gV0lORE9XU19IT1RLRVlTW2tleV07XG4gICAgY29uc3QgaXNHZW5lcmljID0gZ2VuZXJpYyAmJiBpc0tleUhvdGtleShnZW5lcmljKTtcbiAgICBjb25zdCBpc0FwcGxlID0gYXBwbGUgJiYgaXNLZXlIb3RrZXkoYXBwbGUpO1xuICAgIGNvbnN0IGlzV2luZG93cyA9IHdpbmRvd3MgJiYgaXNLZXlIb3RrZXkod2luZG93cyk7XG5cbiAgICByZXR1cm4gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc0dlbmVyaWMgJiYgaXNHZW5lcmljKGV2ZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKElTX0FQUExFICYmIGlzQXBwbGUgJiYgaXNBcHBsZShldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghSVNfQVBQTEUgJiYgaXNXaW5kb3dzICYmIGlzV2luZG93cyhldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBIb3RrZXlzLlxuICovXG5cbmNvbnN0IGhvdGtleXMgPSB7XG4gICAgaXNCb2xkOiBjcmVhdGUoJ2JvbGQnKSxcbiAgICBpc0NvbXBvc2U6IGNyZWF0ZSgnY29tcG9zZScpLFxuICAgIGlzQXJyb3c6IGNyZWF0ZSgnYXJyb3cnKSxcbiAgICBpc01vdmVCYWNrd2FyZDogY3JlYXRlKCdtb3ZlQmFja3dhcmQnKSxcbiAgICBpc01vdmVGb3J3YXJkOiBjcmVhdGUoJ21vdmVGb3J3YXJkJyksXG4gICAgaXNNb3ZlVXA6IGNyZWF0ZSgnbW92ZVVwJyksXG4gICAgaXNNb3ZlRG93bjogY3JlYXRlKCdtb3ZlRG93bicpLFxuICAgIGlzRGVsZXRlQmFja3dhcmQ6IGNyZWF0ZSgnZGVsZXRlQmFja3dhcmQnKSxcbiAgICBpc0RlbGV0ZUZvcndhcmQ6IGNyZWF0ZSgnZGVsZXRlRm9yd2FyZCcpLFxuICAgIGlzRGVsZXRlTGluZUJhY2t3YXJkOiBjcmVhdGUoJ2RlbGV0ZUxpbmVCYWNrd2FyZCcpLFxuICAgIGlzRGVsZXRlTGluZUZvcndhcmQ6IGNyZWF0ZSgnZGVsZXRlTGluZUZvcndhcmQnKSxcbiAgICBpc0RlbGV0ZVdvcmRCYWNrd2FyZDogY3JlYXRlKCdkZWxldGVXb3JkQmFja3dhcmQnKSxcbiAgICBpc0RlbGV0ZVdvcmRGb3J3YXJkOiBjcmVhdGUoJ2RlbGV0ZVdvcmRGb3J3YXJkJyksXG4gICAgaXNFeHRlbmRCYWNrd2FyZDogY3JlYXRlKCdleHRlbmRCYWNrd2FyZCcpLFxuICAgIGlzRXh0ZW5kRm9yd2FyZDogY3JlYXRlKCdleHRlbmRGb3J3YXJkJyksXG4gICAgaXNFeHRlbmRVcDogY3JlYXRlKCdleHRlbmRVcCcpLFxuICAgIGlzRXh0ZW5kRG93bjogY3JlYXRlKCdleHRlbmREb3duJyksXG4gICAgaXNFeHRlbmRBcnJvdzogY3JlYXRlKCdleHRlbmRBcnJvdycpLFxuICAgIGlzRXh0ZW5kTGluZUJhY2t3YXJkOiBjcmVhdGUoJ2V4dGVuZExpbmVCYWNrd2FyZCcpLFxuICAgIGlzRXh0ZW5kTGluZUZvcndhcmQ6IGNyZWF0ZSgnZXh0ZW5kTGluZUZvcndhcmQnKSxcbiAgICBpc0l0YWxpYzogY3JlYXRlKCdpdGFsaWMnKSxcbiAgICBpc01vdmVMaW5lQmFja3dhcmQ6IGNyZWF0ZSgnbW92ZUxpbmVCYWNrd2FyZCcpLFxuICAgIGlzTW92ZUxpbmVGb3J3YXJkOiBjcmVhdGUoJ21vdmVMaW5lRm9yd2FyZCcpLFxuICAgIGlzTW92ZVdvcmRCYWNrd2FyZDogY3JlYXRlKCdtb3ZlV29yZEJhY2t3YXJkJyksXG4gICAgaXNNb3ZlV29yZEZvcndhcmQ6IGNyZWF0ZSgnbW92ZVdvcmRGb3J3YXJkJyksXG4gICAgaXNSZWRvOiBjcmVhdGUoJ3JlZG8nKSxcbiAgICBpc1NwbGl0QmxvY2s6IGNyZWF0ZSgnc3BsaXRCbG9jaycpLFxuICAgIGlzVHJhbnNwb3NlQ2hhcmFjdGVyOiBjcmVhdGUoJ3RyYW5zcG9zZUNoYXJhY3RlcicpLFxuICAgIGlzVW5kbzogY3JlYXRlKCd1bmRvJyksXG4gICAgaXNTaGlmdDogY3JlYXRlKCdzaGlmdCcpXG59O1xuZXhwb3J0IGRlZmF1bHQgaG90a2V5cztcbmV4cG9ydCB7IGhvdGtleXMgfTtcbiJdfQ==
|
package/esm2022/utils/index.mjs
CHANGED
|
@@ -20,4 +20,5 @@ export * from './moving-element';
|
|
|
20
20
|
export * from './to-image';
|
|
21
21
|
export * from './clipboard';
|
|
22
22
|
export * from './touch';
|
|
23
|
-
|
|
23
|
+
export * from './dnd';
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYm9hcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9kb20nO1xuZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2hpc3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9ob3RrZXlzJztcbmV4cG9ydCAqIGZyb20gJy4vaWQtY3JlYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL21hdGgnO1xuZXhwb3J0ICogZnJvbSAnLi93ZWFrLW1hcHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RlZC1lbGVtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZHJhdy9yZWN0YW5nbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmF3L2Fycm93JztcbmV4cG9ydCAqIGZyb20gJy4vZHJhdy9jaXJjbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmF3L2xpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi90cmVlJztcbmV4cG9ydCAqIGZyb20gJy4vZWxlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbW92aW5nLWVsZW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90by1pbWFnZSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaXBib2FyZCc7XG5leHBvcnQgKiBmcm9tICcuL3RvdWNoJztcbmV4cG9ydCAqIGZyb20gJy4vZG5kJztcbiJdfQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { setDragging } from './dnd';
|
|
1
2
|
import { BOARD_TO_MOVING_ELEMENT } from './weak-maps';
|
|
2
3
|
export const getMovingElements = (board) => {
|
|
3
4
|
return BOARD_TO_MOVING_ELEMENT.get(board) || [];
|
|
@@ -9,11 +10,13 @@ export const addMovingElements = (board, elements) => {
|
|
|
9
10
|
const movingElements = getMovingElements(board);
|
|
10
11
|
const newElements = elements.filter(item => !movingElements.find(movingElement => movingElement.key === item.key));
|
|
11
12
|
cacheMovingElements(board, [...movingElements, ...newElements]);
|
|
13
|
+
setDragging(board, true);
|
|
12
14
|
};
|
|
13
15
|
export const removeMovingElements = (board) => {
|
|
14
16
|
BOARD_TO_MOVING_ELEMENT.delete(board);
|
|
17
|
+
setDragging(board, false);
|
|
15
18
|
};
|
|
16
19
|
export const cacheMovingElements = (board, elements) => {
|
|
17
20
|
BOARD_TO_MOVING_ELEMENT.set(board, elements);
|
|
18
21
|
};
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92aW5nLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9tb3ZpbmctZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNuRCxPQUFPLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDbEQsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF3QixFQUFFLEVBQUU7SUFDN0UsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkgsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxjQUFjLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDdEQsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXdCLEVBQUUsRUFBRTtJQUMvRSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgc2V0RHJhZ2dpbmcgfSBmcm9tICcuL2RuZCc7XG5pbXBvcnQgeyBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVCB9IGZyb20gJy4vd2Vhay1tYXBzJztcblxuZXhwb3J0IGNvbnN0IGdldE1vdmluZ0VsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX01PVklOR19FTEVNRU5ULmdldChib2FyZCkgfHwgW107XG59O1xuXG5leHBvcnQgY29uc3QgaXNNb3ZpbmdFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiAoQk9BUkRfVE9fTU9WSU5HX0VMRU1FTlQuZ2V0KGJvYXJkKSB8fCBbXSkubGVuZ3RoID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRNb3ZpbmdFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3QgbW92aW5nRWxlbWVudHMgPSBnZXRNb3ZpbmdFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgbmV3RWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoaXRlbSA9PiAhbW92aW5nRWxlbWVudHMuZmluZChtb3ZpbmdFbGVtZW50ID0+IG1vdmluZ0VsZW1lbnQua2V5ID09PSBpdGVtLmtleSkpO1xuICAgIGNhY2hlTW92aW5nRWxlbWVudHMoYm9hcmQsIFsuLi5tb3ZpbmdFbGVtZW50cywgLi4ubmV3RWxlbWVudHNdKTtcbiAgICBzZXREcmFnZ2luZyhib2FyZCwgdHJ1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTW92aW5nRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVC5kZWxldGUoYm9hcmQpO1xuICAgIHNldERyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FjaGVNb3ZpbmdFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgQk9BUkRfVE9fTU9WSU5HX0VMRU1FTlQuc2V0KGJvYXJkLCBlbGVtZW50cyk7XG59O1xuIl19
|