@plait/core 0.77.3 → 0.78.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/fesm2022/plait-core.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/constants/cursor.mjs +0 -13
- package/esm2022/constants/index.mjs +0 -20
- package/esm2022/constants/keycodes.mjs +0 -127
- package/esm2022/constants/selection.mjs +0 -6
- package/esm2022/constants/zoom.mjs +0 -4
- package/esm2022/context.mjs +0 -23
- package/esm2022/core/element/context-change.mjs +0 -13
- package/esm2022/core/element/context.mjs +0 -2
- package/esm2022/core/element/element-flavour.mjs +0 -140
- package/esm2022/core/element/element-ref.mjs +0 -2
- package/esm2022/core/list-render.mjs +0 -217
- package/esm2022/differs/default_iterable_differ.mjs +0 -614
- package/esm2022/differs/iterable_differs.mjs +0 -9
- package/esm2022/interfaces/board.mjs +0 -108
- package/esm2022/interfaces/custom-types.mjs +0 -5
- package/esm2022/interfaces/direction.mjs +0 -8
- package/esm2022/interfaces/element.mjs +0 -43
- package/esm2022/interfaces/group.mjs +0 -6
- package/esm2022/interfaces/history.mjs +0 -5
- package/esm2022/interfaces/index.mjs +0 -19
- package/esm2022/interfaces/node.mjs +0 -57
- package/esm2022/interfaces/operation.mjs +0 -96
- package/esm2022/interfaces/path-ref.mjs +0 -15
- package/esm2022/interfaces/path.mjs +0 -183
- package/esm2022/interfaces/plugin.mjs +0 -6
- package/esm2022/interfaces/point.mjs +0 -27
- package/esm2022/interfaces/pointer.mjs +0 -6
- package/esm2022/interfaces/rectangle-client.mjs +0 -171
- package/esm2022/interfaces/selection.mjs +0 -13
- package/esm2022/interfaces/svg-arc-command.mjs +0 -2
- package/esm2022/interfaces/theme.mjs +0 -49
- package/esm2022/interfaces/viewport.mjs +0 -7
- package/esm2022/plait-core.mjs +0 -5
- package/esm2022/plugins/create-board.mjs +0 -122
- package/esm2022/plugins/index.mjs +0 -11
- package/esm2022/plugins/with-board.mjs +0 -20
- package/esm2022/plugins/with-hand.mjs +0 -113
- package/esm2022/plugins/with-history.mjs +0 -91
- package/esm2022/plugins/with-hotkey.mjs +0 -96
- package/esm2022/plugins/with-i18n.mjs +0 -13
- package/esm2022/plugins/with-moving.mjs +0 -282
- package/esm2022/plugins/with-options.mjs +0 -13
- package/esm2022/plugins/with-related-fragment.mjs +0 -23
- package/esm2022/plugins/with-selection.mjs +0 -230
- package/esm2022/public-api.mjs +0 -16
- package/esm2022/testing/core/create-board.mjs +0 -15
- package/esm2022/testing/core/fake-weak-map.mjs +0 -18
- package/esm2022/testing/core/index.mjs +0 -3
- package/esm2022/testing/fake-events/event-objects.mjs +0 -131
- package/esm2022/testing/fake-events/index.mjs +0 -2
- package/esm2022/testing/index.mjs +0 -3
- package/esm2022/testing/test-element.mjs +0 -9
- package/esm2022/transforms/board.mjs +0 -137
- package/esm2022/transforms/element.mjs +0 -22
- package/esm2022/transforms/general.mjs +0 -146
- package/esm2022/transforms/group.mjs +0 -64
- package/esm2022/transforms/index.mjs +0 -17
- package/esm2022/transforms/node.mjs +0 -37
- package/esm2022/transforms/selection.mjs +0 -26
- package/esm2022/transforms/theme.mjs +0 -8
- package/esm2022/transforms/viewport.mjs +0 -8
- package/esm2022/transforms/z-index.mjs +0 -20
- package/esm2022/utils/angle.mjs +0 -164
- package/esm2022/utils/board.mjs +0 -18
- package/esm2022/utils/clipboard/clipboard.mjs +0 -40
- package/esm2022/utils/clipboard/common.mjs +0 -82
- package/esm2022/utils/clipboard/data-transfer.mjs +0 -33
- package/esm2022/utils/clipboard/index.mjs +0 -3
- package/esm2022/utils/clipboard/navigator-clipboard.mjs +0 -71
- package/esm2022/utils/clipboard/types.mjs +0 -13
- package/esm2022/utils/common.mjs +0 -79
- package/esm2022/utils/debug.mjs +0 -91
- package/esm2022/utils/dnd.mjs +0 -8
- package/esm2022/utils/dom/common.mjs +0 -75
- package/esm2022/utils/dom/environment.mjs +0 -2
- package/esm2022/utils/dom/foreign.mjs +0 -26
- package/esm2022/utils/dom/index.mjs +0 -4
- package/esm2022/utils/drawing/arrow.mjs +0 -23
- package/esm2022/utils/drawing/circle.mjs +0 -4
- package/esm2022/utils/drawing/line.mjs +0 -47
- package/esm2022/utils/drawing/rectangle.mjs +0 -36
- package/esm2022/utils/element.mjs +0 -90
- package/esm2022/utils/environment.mjs +0 -14
- package/esm2022/utils/fragment.mjs +0 -27
- package/esm2022/utils/group.mjs +0 -239
- package/esm2022/utils/helper.mjs +0 -68
- package/esm2022/utils/history.mjs +0 -96
- package/esm2022/utils/hotkeys.mjs +0 -109
- package/esm2022/utils/id-creator.mjs +0 -11
- package/esm2022/utils/index.mjs +0 -35
- package/esm2022/utils/iterable.mjs +0 -32
- package/esm2022/utils/math.mjs +0 -480
- package/esm2022/utils/mobile.mjs +0 -6
- package/esm2022/utils/moving-element.mjs +0 -17
- package/esm2022/utils/pointer.mjs +0 -13
- package/esm2022/utils/position.mjs +0 -9
- package/esm2022/utils/selected-element.mjs +0 -145
- package/esm2022/utils/selection.mjs +0 -151
- package/esm2022/utils/snap/snap-moving.mjs +0 -199
- package/esm2022/utils/snap/snap.mjs +0 -211
- package/esm2022/utils/to-image.mjs +0 -204
- package/esm2022/utils/to-point.mjs +0 -74
- package/esm2022/utils/tree.mjs +0 -22
- package/esm2022/utils/viewport.mjs +0 -227
- package/esm2022/utils/weak-maps.mjs +0 -27
- package/esm2022/utils/z-index.mjs +0 -166
package/esm2022/utils/group.mjs
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import { ACTIVE_STROKE_WIDTH } from '../constants';
|
|
2
|
-
import { PlaitGroupElement, RectangleClient, SELECTION_BORDER_COLOR } from '../interfaces';
|
|
3
|
-
import { getSelectionAngle, setAngleForG } from './angle';
|
|
4
|
-
import { createG } from './dom';
|
|
5
|
-
import { drawRectangle } from './drawing/rectangle';
|
|
6
|
-
import { getRectangleByElements } from './element';
|
|
7
|
-
import { idCreator } from './id-creator';
|
|
8
|
-
import { getSelectedElements } from './selected-element';
|
|
9
|
-
import { isSelectionMoving } from './selection';
|
|
10
|
-
import { depthFirstRecursion } from './tree';
|
|
11
|
-
import { moveElementsToNewPath } from './common';
|
|
12
|
-
import { sortElements } from './position';
|
|
13
|
-
export const getElementsInGroup = (board, group, recursion, includeGroup) => {
|
|
14
|
-
let result = [];
|
|
15
|
-
const elements = board.children.filter(value => value.groupId === group.id);
|
|
16
|
-
if (recursion) {
|
|
17
|
-
elements.forEach(item => {
|
|
18
|
-
if (PlaitGroupElement.isGroup(item)) {
|
|
19
|
-
if (includeGroup) {
|
|
20
|
-
result.push(item);
|
|
21
|
-
}
|
|
22
|
-
result.push(...getElementsInGroup(board, item, recursion, includeGroup));
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
result.push(item);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
result = includeGroup ? elements : elements.filter(item => !PlaitGroupElement.isGroup(item));
|
|
31
|
-
}
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
export const getAllElementsInGroup = (board, group, recursion, includeGroup) => {
|
|
35
|
-
const elementsInGroup = getElementsInGroup(board, group, recursion, includeGroup);
|
|
36
|
-
const result = [];
|
|
37
|
-
elementsInGroup.forEach(element => {
|
|
38
|
-
depthFirstRecursion(element, node => {
|
|
39
|
-
result.push(node);
|
|
40
|
-
}, () => true);
|
|
41
|
-
});
|
|
42
|
-
return result;
|
|
43
|
-
};
|
|
44
|
-
export const getRectangleByGroup = (board, group, recursion) => {
|
|
45
|
-
const elementsInGroup = getAllElementsInGroup(board, group, recursion);
|
|
46
|
-
return getRectangleByElements(board, elementsInGroup, false);
|
|
47
|
-
};
|
|
48
|
-
export const getGroupByElement = (board, element, recursion, originElements) => {
|
|
49
|
-
const group = (originElements || board.children).find(item => item.id === element?.groupId);
|
|
50
|
-
if (!group) {
|
|
51
|
-
return recursion ? [] : null;
|
|
52
|
-
}
|
|
53
|
-
if (recursion) {
|
|
54
|
-
const groups = [group];
|
|
55
|
-
const grandGroups = getGroupByElement(board, group, recursion, originElements);
|
|
56
|
-
if (grandGroups.length) {
|
|
57
|
-
groups.push(...grandGroups);
|
|
58
|
-
}
|
|
59
|
-
return groups;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
return group;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
export const getHighestGroup = (board, element) => {
|
|
66
|
-
const hitElementGroups = getGroupByElement(board, element, true);
|
|
67
|
-
if (hitElementGroups.length) {
|
|
68
|
-
return hitElementGroups[hitElementGroups.length - 1];
|
|
69
|
-
}
|
|
70
|
-
return null;
|
|
71
|
-
};
|
|
72
|
-
export const getElementsInGroupByElement = (board, element) => {
|
|
73
|
-
const highestGroup = getHighestGroup(board, element);
|
|
74
|
-
if (highestGroup) {
|
|
75
|
-
return getAllElementsInGroup(board, highestGroup, true);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
return [element];
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
export const isSelectedElementOrGroup = (board, element, elements) => {
|
|
82
|
-
const selectedElements = elements?.length ? elements : getSelectedElements(board);
|
|
83
|
-
if (PlaitGroupElement.isGroup(element)) {
|
|
84
|
-
return isSelectedAllElementsInGroup(board, element, elements);
|
|
85
|
-
}
|
|
86
|
-
return selectedElements.map(item => item.id).includes(element.id);
|
|
87
|
-
};
|
|
88
|
-
export const isSelectedAllElementsInGroup = (board, group, elements) => {
|
|
89
|
-
const selectedElements = elements?.length ? elements : getSelectedElements(board);
|
|
90
|
-
const elementsInGroup = getElementsInGroup(board, group, true);
|
|
91
|
-
return elementsInGroup.every(item => selectedElements.map(element => element.id).includes(item.id));
|
|
92
|
-
};
|
|
93
|
-
export const filterSelectedGroups = (board, groups, elements) => {
|
|
94
|
-
const selectedGroups = [];
|
|
95
|
-
groups.forEach(item => {
|
|
96
|
-
if (isSelectedElementOrGroup(board, item, elements)) {
|
|
97
|
-
selectedGroups.push(item);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
return selectedGroups;
|
|
101
|
-
};
|
|
102
|
-
export const getSelectedGroups = (board, elements, originElements) => {
|
|
103
|
-
const highestSelectedGroups = getHighestSelectedGroups(board, elements, originElements);
|
|
104
|
-
const groups = [];
|
|
105
|
-
highestSelectedGroups.forEach(item => {
|
|
106
|
-
groups.push(item);
|
|
107
|
-
const elementsInGroup = getElementsInGroup(board, item, true, true);
|
|
108
|
-
groups.push(...elementsInGroup.filter(item => PlaitGroupElement.isGroup(item)));
|
|
109
|
-
});
|
|
110
|
-
return groups;
|
|
111
|
-
};
|
|
112
|
-
export const getHighestSelectedGroup = (board, element, elements, originElements) => {
|
|
113
|
-
const hitElementGroups = getGroupByElement(board, element, true, originElements);
|
|
114
|
-
const selectedGroups = filterSelectedGroups(board, hitElementGroups, elements);
|
|
115
|
-
if (selectedGroups.length) {
|
|
116
|
-
return selectedGroups[selectedGroups.length - 1];
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
};
|
|
120
|
-
export const getHighestSelectedGroups = (board, elements, originElements) => {
|
|
121
|
-
let result = [];
|
|
122
|
-
const selectedElements = elements?.length ? elements : getSelectedElements(board);
|
|
123
|
-
selectedElements.forEach(item => {
|
|
124
|
-
if (item.groupId) {
|
|
125
|
-
const group = getHighestSelectedGroup(board, item, elements, originElements);
|
|
126
|
-
if (group && !result.includes(group)) {
|
|
127
|
-
result.push(group);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
return result;
|
|
132
|
-
};
|
|
133
|
-
export const getSelectedIsolatedElements = (board, elements) => {
|
|
134
|
-
let result = [];
|
|
135
|
-
const selectedElements = elements?.length ? elements : getSelectedElements(board);
|
|
136
|
-
selectedElements
|
|
137
|
-
.filter(item => !PlaitGroupElement.isGroup(item))
|
|
138
|
-
.forEach(item => {
|
|
139
|
-
if (!item.groupId) {
|
|
140
|
-
result.push(item);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
const group = getHighestSelectedGroup(board, item, elements);
|
|
144
|
-
if (!group) {
|
|
145
|
-
result.push(item);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
return result;
|
|
150
|
-
};
|
|
151
|
-
export const getSelectedIsolatedElementsCanAddToGroup = (board, elements) => {
|
|
152
|
-
const selectedIsolatedElements = getSelectedIsolatedElements(board, elements);
|
|
153
|
-
return selectedIsolatedElements.filter(item => board.canAddToGroup(item));
|
|
154
|
-
};
|
|
155
|
-
export const getHighestSelectedElements = (board, elements) => {
|
|
156
|
-
return [...getHighestSelectedGroups(board, elements), ...getSelectedIsolatedElements(board, elements)];
|
|
157
|
-
};
|
|
158
|
-
export const createGroupRectangleG = (board, elements) => {
|
|
159
|
-
const selectedElementIds = getSelectedElements(board).map(item => item.id);
|
|
160
|
-
let groupRectangleG = null;
|
|
161
|
-
const isMoving = isSelectionMoving(board);
|
|
162
|
-
elements.forEach(item => {
|
|
163
|
-
const isRender = (!selectedElementIds.includes(item.id) && !isMoving) || isMoving;
|
|
164
|
-
if (item.groupId && isRender) {
|
|
165
|
-
if (!groupRectangleG) {
|
|
166
|
-
groupRectangleG = createG();
|
|
167
|
-
}
|
|
168
|
-
const elements = getElementsInGroupByElement(board, item);
|
|
169
|
-
const rectangle = getRectangleByElements(board, elements, false);
|
|
170
|
-
const rectangleG = drawRectangle(board, rectangle, {
|
|
171
|
-
stroke: SELECTION_BORDER_COLOR,
|
|
172
|
-
strokeWidth: ACTIVE_STROKE_WIDTH,
|
|
173
|
-
strokeLineDash: [5]
|
|
174
|
-
});
|
|
175
|
-
const angle = getSelectionAngle(elements);
|
|
176
|
-
if (angle) {
|
|
177
|
-
setAngleForG(rectangleG, RectangleClient.getCenterPoint(rectangle), angle);
|
|
178
|
-
}
|
|
179
|
-
groupRectangleG.append(rectangleG);
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
return groupRectangleG;
|
|
183
|
-
};
|
|
184
|
-
export const createGroup = (groupId) => {
|
|
185
|
-
return groupId
|
|
186
|
-
? {
|
|
187
|
-
id: idCreator(),
|
|
188
|
-
type: 'group',
|
|
189
|
-
groupId
|
|
190
|
-
}
|
|
191
|
-
: {
|
|
192
|
-
id: idCreator(),
|
|
193
|
-
type: 'group'
|
|
194
|
-
};
|
|
195
|
-
};
|
|
196
|
-
export const nonGroupInHighestSelectedElements = (elements) => {
|
|
197
|
-
return elements.every(item => !item.groupId);
|
|
198
|
-
};
|
|
199
|
-
export const hasSelectedElementsInSameGroup = (elements) => {
|
|
200
|
-
return elements.every(item => item.groupId && item.groupId === elements[0].groupId);
|
|
201
|
-
};
|
|
202
|
-
export const canAddGroup = (board, elements) => {
|
|
203
|
-
const highestSelectedElements = getHighestSelectedElements(board, elements);
|
|
204
|
-
const rootElements = highestSelectedElements.filter(item => board.canAddToGroup(item));
|
|
205
|
-
if (rootElements.length > 1) {
|
|
206
|
-
return nonGroupInHighestSelectedElements(rootElements) || hasSelectedElementsInSameGroup(rootElements);
|
|
207
|
-
}
|
|
208
|
-
return false;
|
|
209
|
-
};
|
|
210
|
-
export const canRemoveGroup = (board, elements, originElements) => {
|
|
211
|
-
const selectedGroups = getHighestSelectedGroups(board, elements, originElements);
|
|
212
|
-
const selectedElements = elements?.length ? elements : getSelectedElements(board);
|
|
213
|
-
return selectedElements.length > 0 && selectedGroups.length > 0;
|
|
214
|
-
};
|
|
215
|
-
export const getEditingGroup = (board, element) => {
|
|
216
|
-
const groups = getGroupByElement(board, element, true);
|
|
217
|
-
let editingGroup = null;
|
|
218
|
-
if (groups?.length) {
|
|
219
|
-
for (let i = 0; i < groups?.length; i++) {
|
|
220
|
-
if (!isSelectedAllElementsInGroup(board, groups[i])) {
|
|
221
|
-
editingGroup = groups[i];
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
return editingGroup;
|
|
227
|
-
};
|
|
228
|
-
export const moveElementsToNewPathAfterAddGroup = (board, selectedElements, newPath) => {
|
|
229
|
-
const moveElements = [...selectedElements];
|
|
230
|
-
sortElements(board, moveElements);
|
|
231
|
-
moveElements.pop();
|
|
232
|
-
moveElementsToNewPath(board, moveElements.map(element => {
|
|
233
|
-
return {
|
|
234
|
-
element,
|
|
235
|
-
newPath
|
|
236
|
-
};
|
|
237
|
-
}));
|
|
238
|
-
};
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUE4QyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFpQixFQUFFLFNBQW1CLEVBQUUsWUFBc0IsRUFBRSxFQUFFO0lBQ3BILElBQUksTUFBTSxHQUFtQixFQUFFLENBQUM7SUFDaEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBRSxLQUFzQixDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxD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RUFBRSxPQUFhLEVBQUUsRUFBRTtJQUNySCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUMzQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNuQixxQkFBcUIsQ0FDakIsS0FBSyxFQUNMLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdkIsT0FBTztZQUNILE9BQU87WUFDUCxPQUFPO1NBQ1YsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUNMLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQ1RJVkVfU1RST0tFX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUGxhaXRHcm91cCwgUGxhaXRHcm91cEVsZW1lbnQsIFJlY3RhbmdsZUNsaWVudCwgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0aW9uQW5nbGUsIHNldEFuZ2xlRm9yRyB9IGZyb20gJy4vYW5nbGUnO1xuaW1wb3J0IHsgY3JlYXRlRyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IGRyYXdSZWN0YW5nbGUgfSBmcm9tICcuL2RyYXdpbmcvcmVjdGFuZ2xlJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgaWRDcmVhdG9yIH0gZnJvbSAnLi9pZC1jcmVhdG9yJztcbmltcG9ydCB7IGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICcuL3NlbGVjdGVkLWVsZW1lbnQnO1xuaW1wb3J0IHsgaXNTZWxlY3Rpb25Nb3ZpbmcgfSBmcm9tICcuL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uIH0gZnJvbSAnLi90cmVlJztcbmltcG9ydCB7IG1vdmVFbGVtZW50c1RvTmV3UGF0aCB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IHNvcnRFbGVtZW50cyB9IGZyb20gJy4vcG9zaXRpb24nO1xuXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudHNJbkdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBncm91cDogUGxhaXRHcm91cCwgcmVjdXJzaW9uPzogYm9vbGVhbiwgaW5jbHVkZUdyb3VwPzogYm9vbGVhbikgPT4ge1xuICAgIGxldCByZXN1bHQ6IFBsYWl0RWxlbWVudFtdID0gW107XG4gICAgY29uc3QgZWxlbWVudHMgPSBib2FyZC5jaGlsZHJlbi5maWx0ZXIodmFsdWUgPT4gKHZhbHVlIGFzIFBsYWl0RWxlbWVudCkuZ3JvdXBJZCA9PT0gZ3JvdXAuaWQpIGFzIFBsYWl0RWxlbWVudFtdO1xuICAgIGlmIChyZWN1cnNpb24pIHtcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uZ2V0RWxlbWVudHNJbkdyb3VwKGJvYXJkLCBpdGVtLCByZWN1cnNpb24sIGluY2x1ZGVHcm91cCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gaW5jbHVkZUdyb3VwID8gZWxlbWVudHMgOiAoZWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gIVBsYWl0R3JvdXBFbGVtZW50LmlzR3JvdXAoaXRlbSkpIGFzIFBsYWl0RWxlbWVudFtdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxFbGVtZW50c0luR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdyb3VwOiBQbGFpdEdyb3VwLCByZWN1cnNpb24/OiBib29sZWFuLCBpbmNsdWRlR3JvdXA/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gZ2V0RWxlbWVudHNJbkdyb3VwKGJvYXJkLCBncm91cCwgcmVjdXJzaW9uLCBpbmNsdWRlR3JvdXApO1xuICAgIGNvbnN0IHJlc3VsdDogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICBlbGVtZW50c0luR3JvdXAuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbihcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB0cnVlXG4gICAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWN0YW5nbGVCeUdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBncm91cDogUGxhaXRHcm91cCwgcmVjdXJzaW9uPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRzSW5Hcm91cCA9IGdldEFsbEVsZW1lbnRzSW5Hcm91cChib2FyZCwgZ3JvdXAsIHJlY3Vyc2lvbikgYXMgUGxhaXRFbGVtZW50W107XG4gICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzSW5Hcm91cCwgZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwQnlFbGVtZW50ID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCxcbiAgICByZWN1cnNpb24/OiBib29sZWFuLFxuICAgIG9yaWdpbkVsZW1lbnRzPzogUGxhaXRFbGVtZW50W11cbik6IFBsYWl0R3JvdXAgfCBQbGFpdEdyb3VwW10gfCBudWxsID0+IHtcbiAgICBjb25zdCBncm91cCA9IChvcmlnaW5FbGVtZW50cyB8fCBib2FyZC5jaGlsZHJlbikuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGVsZW1lbnQ/Lmdyb3VwSWQpO1xuICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIHJlY3Vyc2lvbiA/IFtdIDogbnVsbDtcbiAgICB9XG4gICAgaWYgKHJlY3Vyc2lvbikge1xuICAgICAgICBjb25zdCBncm91cHMgPSBbZ3JvdXBdO1xuICAgICAgICBjb25zdCBncmFuZEdyb3VwcyA9IGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBncm91cCwgcmVjdXJzaW9uLCBvcmlnaW5FbGVtZW50cykgYXMgUGxhaXRHcm91cFtdO1xuICAgICAgICBpZiAoZ3JhbmRHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBncm91cHMucHVzaCguLi5ncmFuZEdyb3Vwcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdyb3VwcyBhcyBQbGFpdEdyb3VwW107XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwIGFzIFBsYWl0R3JvdXA7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpZ2hlc3RHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaGl0RWxlbWVudEdyb3VwcyA9IGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50LCB0cnVlKSBhcyBQbGFpdEdyb3VwW107XG4gICAgaWYgKGhpdEVsZW1lbnRHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBoaXRFbGVtZW50R3JvdXBzW2hpdEVsZW1lbnRHcm91cHMubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRzSW5Hcm91cEJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaGlnaGVzdEdyb3VwID0gZ2V0SGlnaGVzdEdyb3VwKGJvYXJkLCBlbGVtZW50KTtcbiAgICBpZiAoaGlnaGVzdEdyb3VwKSB7XG4gICAgICAgIHJldHVybiBnZXRBbGxFbGVtZW50c0luR3JvdXAoYm9hcmQsIGhpZ2hlc3RHcm91cCwgdHJ1ZSkgYXMgUGxhaXRHcm91cFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbZWxlbWVudF07XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ZWRFbGVtZW50T3JHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50LCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGVsZW1lbnRzPy5sZW5ndGggPyBlbGVtZW50cyA6IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGlmIChQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBpc1NlbGVjdGVkQWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBlbGVtZW50LCBlbGVtZW50cyk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLm1hcChpdGVtID0+IGl0ZW0uaWQpLmluY2x1ZGVzKGVsZW1lbnQuaWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ZWRBbGxFbGVtZW50c0luR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdyb3VwOiBQbGFpdEdyb3VwLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGVsZW1lbnRzPy5sZW5ndGggPyBlbGVtZW50cyA6IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IGVsZW1lbnRzSW5Hcm91cCA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgZ3JvdXAsIHRydWUpO1xuICAgIHJldHVybiBlbGVtZW50c0luR3JvdXAuZXZlcnkoaXRlbSA9PiBzZWxlY3RlZEVsZW1lbnRzLm1hcChlbGVtZW50ID0+IGVsZW1lbnQuaWQpLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJTZWxlY3RlZEdyb3VwcyA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXBzOiBQbGFpdEdyb3VwW10sIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pOiBQbGFpdEdyb3VwW10gPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzOiBQbGFpdEdyb3VwW10gPSBbXTtcbiAgICBncm91cHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRFbGVtZW50T3JHcm91cChib2FyZCwgaXRlbSwgZWxlbWVudHMpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEdyb3Vwcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdGVkR3JvdXBzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkR3JvdXBzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdLCBvcmlnaW5FbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKTogUGxhaXRHcm91cFtdID0+IHtcbiAgICBjb25zdCBoaWdoZXN0U2VsZWN0ZWRHcm91cHMgPSBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGVsZW1lbnRzLCBvcmlnaW5FbGVtZW50cyk7XG4gICAgY29uc3QgZ3JvdXBzOiBQbGFpdEdyb3VwW10gPSBbXTtcbiAgICBoaWdoZXN0U2VsZWN0ZWRHcm91cHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgZ3JvdXBzLnB1c2goaXRlbSk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzSW5Hcm91cCA9IGdldEVsZW1lbnRzSW5Hcm91cChib2FyZCwgaXRlbSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIGdyb3Vwcy5wdXNoKC4uLihlbGVtZW50c0luR3JvdXAuZmlsdGVyKGl0ZW0gPT4gUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChpdGVtKSkgYXMgUGxhaXRHcm91cFtdKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3Vwcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdEVsZW1lbnQsXG4gICAgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSxcbiAgICBvcmlnaW5FbGVtZW50cz86IFBsYWl0RWxlbWVudFtdXG4pOiBQbGFpdEdyb3VwIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgaGl0RWxlbWVudEdyb3VwcyA9IGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50LCB0cnVlLCBvcmlnaW5FbGVtZW50cykgYXMgUGxhaXRHcm91cFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZmlsdGVyU2VsZWN0ZWRHcm91cHMoYm9hcmQsIGhpdEVsZW1lbnRHcm91cHMsIGVsZW1lbnRzKTtcbiAgICBpZiAoc2VsZWN0ZWRHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEdyb3Vwc1tzZWxlY3RlZEdyb3Vwcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGlnaGVzdFNlbGVjdGVkR3JvdXBzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdLCBvcmlnaW5FbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKTogUGxhaXRHcm91cFtdID0+IHtcbiAgICBsZXQgcmVzdWx0OiBQbGFpdEdyb3VwW10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHM/Lmxlbmd0aCA/IGVsZW1lbnRzIDogZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5ncm91cElkKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGdldEhpZ2hlc3RTZWxlY3RlZEdyb3VwKGJvYXJkLCBpdGVtLCBlbGVtZW50cywgb3JpZ2luRWxlbWVudHMpO1xuICAgICAgICAgICAgaWYgKGdyb3VwICYmICFyZXN1bHQuaW5jbHVkZXMoZ3JvdXApKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZElzb2xhdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBsZXQgcmVzdWx0OiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBlbGVtZW50cz8ubGVuZ3RoID8gZWxlbWVudHMgOiBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzXG4gICAgICAgIC5maWx0ZXIoaXRlbSA9PiAhUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChpdGVtKSlcbiAgICAgICAgLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uZ3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGdldEhpZ2hlc3RTZWxlY3RlZEdyb3VwKGJvYXJkLCBpdGVtLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRJc29sYXRlZEVsZW1lbnRzQ2FuQWRkVG9Hcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkSXNvbGF0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkSXNvbGF0ZWRFbGVtZW50cyhib2FyZCwgZWxlbWVudHMpO1xuICAgIHJldHVybiBzZWxlY3RlZElzb2xhdGVkRWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gYm9hcmQuY2FuQWRkVG9Hcm91cChpdGVtKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGlnaGVzdFNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gWy4uLmdldEhpZ2hlc3RTZWxlY3RlZEdyb3Vwcyhib2FyZCwgZWxlbWVudHMpLCAuLi5nZXRTZWxlY3RlZElzb2xhdGVkRWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzKV07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR3JvdXBSZWN0YW5nbGVHID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10pOiBTVkdHRWxlbWVudCB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudElkcyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLm1hcChpdGVtID0+IGl0ZW0uaWQpO1xuICAgIGxldCBncm91cFJlY3RhbmdsZUc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3QgaXNNb3ZpbmcgPSBpc1NlbGVjdGlvbk1vdmluZyhib2FyZCk7XG5cbiAgICBlbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBpc1JlbmRlciA9ICghc2VsZWN0ZWRFbGVtZW50SWRzLmluY2x1ZGVzKGl0ZW0uaWQpICYmICFpc01vdmluZykgfHwgaXNNb3Zpbmc7XG4gICAgICAgIGlmIChpdGVtLmdyb3VwSWQgJiYgaXNSZW5kZXIpIHtcbiAgICAgICAgICAgIGlmICghZ3JvdXBSZWN0YW5nbGVHKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBSZWN0YW5nbGVHID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRFbGVtZW50c0luR3JvdXBCeUVsZW1lbnQoYm9hcmQsIGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZUcgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICAgICAgc3Ryb2tlTGluZURhc2g6IFs1XVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIHNldEFuZ2xlRm9yRyhyZWN0YW5nbGVHLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKSwgYW5nbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBSZWN0YW5nbGVHLmFwcGVuZChyZWN0YW5nbGVHKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBncm91cFJlY3RhbmdsZUc7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR3JvdXAgPSAoZ3JvdXBJZD86IHN0cmluZyk6IFBsYWl0R3JvdXAgPT4ge1xuICAgIHJldHVybiBncm91cElkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgICAgICAgIGdyb3VwSWRcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgICAgICAgIHR5cGU6ICdncm91cCdcbiAgICAgICAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG5vbkdyb3VwSW5IaWdoZXN0U2VsZWN0ZWRFbGVtZW50cyA9IChlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gZWxlbWVudHMuZXZlcnkoaXRlbSA9PiAhaXRlbS5ncm91cElkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNTZWxlY3RlZEVsZW1lbnRzSW5TYW1lR3JvdXAgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5ncm91cElkICYmIGl0ZW0uZ3JvdXBJZCA9PT0gZWxlbWVudHNbMF0uZ3JvdXBJZCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FuQWRkR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBoaWdoZXN0U2VsZWN0ZWRFbGVtZW50cyA9IGdldEhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyk7XG4gICAgY29uc3Qgcm9vdEVsZW1lbnRzID0gaGlnaGVzdFNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKGl0ZW0gPT4gYm9hcmQuY2FuQWRkVG9Hcm91cChpdGVtKSk7XG4gICAgaWYgKHJvb3RFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiBub25Hcm91cEluSGlnaGVzdFNlbGVjdGVkRWxlbWVudHMocm9vdEVsZW1lbnRzKSB8fCBoYXNTZWxlY3RlZEVsZW1lbnRzSW5TYW1lR3JvdXAocm9vdEVsZW1lbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhblJlbW92ZUdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdLCBvcmlnaW5FbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGVsZW1lbnRzLCBvcmlnaW5FbGVtZW50cyk7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGVsZW1lbnRzPy5sZW5ndGggPyBlbGVtZW50cyA6IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRHcm91cHMubGVuZ3RoID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0aW5nR3JvdXAgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwcyA9IGdldEdyb3VwQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50LCB0cnVlKSBhcyBQbGFpdEdyb3VwW107XG4gICAgbGV0IGVkaXRpbmdHcm91cCA9IG51bGw7XG4gICAgaWYgKGdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXBzPy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFpc1NlbGVjdGVkQWxsRWxlbWVudHNJbkdyb3VwKGJvYXJkLCBncm91cHNbaV0pKSB7XG4gICAgICAgICAgICAgICAgZWRpdGluZ0dyb3VwID0gZ3JvdXBzW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlZGl0aW5nR3JvdXA7XG59O1xuXG5leHBvcnQgY29uc3QgbW92ZUVsZW1lbnRzVG9OZXdQYXRoQWZ0ZXJBZGRHcm91cCA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W10sIG5ld1BhdGg6IFBhdGgpID0+IHtcbiAgICBjb25zdCBtb3ZlRWxlbWVudHMgPSBbLi4uc2VsZWN0ZWRFbGVtZW50c107XG4gICAgc29ydEVsZW1lbnRzKGJvYXJkLCBtb3ZlRWxlbWVudHMpO1xuICAgIG1vdmVFbGVtZW50cy5wb3AoKTtcbiAgICBtb3ZlRWxlbWVudHNUb05ld1BhdGgoXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBtb3ZlRWxlbWVudHMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIG5ld1BhdGhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgKTtcbn07XG4iXX0=
|
package/esm2022/utils/helper.mjs
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
export function isNullOrUndefined(value) {
|
|
2
|
-
return value === null || value === undefined;
|
|
3
|
-
}
|
|
4
|
-
/**
|
|
5
|
-
* get {x,y} point
|
|
6
|
-
* @param point
|
|
7
|
-
* @returns point
|
|
8
|
-
*/
|
|
9
|
-
export function normalizePoint(point) {
|
|
10
|
-
return Array.isArray(point)
|
|
11
|
-
? {
|
|
12
|
-
x: point[0],
|
|
13
|
-
y: point[1]
|
|
14
|
-
}
|
|
15
|
-
: point;
|
|
16
|
-
}
|
|
17
|
-
export const RgbaToHEX = (Rgb, opacity) => {
|
|
18
|
-
return Rgb + Math.floor(opacity * 255).toString(16);
|
|
19
|
-
};
|
|
20
|
-
export function isContextmenu(event) {
|
|
21
|
-
return event.button === 2;
|
|
22
|
-
}
|
|
23
|
-
export function uniqueById(elements) {
|
|
24
|
-
const uniqueMap = new Map();
|
|
25
|
-
elements.forEach(item => {
|
|
26
|
-
if (!uniqueMap.has(item.id)) {
|
|
27
|
-
uniqueMap.set(item.id, item);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
return Array.from(uniqueMap.values());
|
|
31
|
-
}
|
|
32
|
-
export const findLastIndex = (array, cb, fromIndex = array.length - 1) => {
|
|
33
|
-
if (fromIndex < 0) {
|
|
34
|
-
fromIndex = array.length + fromIndex;
|
|
35
|
-
}
|
|
36
|
-
fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));
|
|
37
|
-
let index = fromIndex + 1;
|
|
38
|
-
while (--index > -1) {
|
|
39
|
-
if (cb(array[index], index, array)) {
|
|
40
|
-
return index;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return -1;
|
|
44
|
-
};
|
|
45
|
-
export const findIndex = (array, cb, fromIndex = 0) => {
|
|
46
|
-
// fromIndex = 2
|
|
47
|
-
if (fromIndex < 0) {
|
|
48
|
-
fromIndex = array.length + fromIndex;
|
|
49
|
-
}
|
|
50
|
-
fromIndex = Math.min(array.length, Math.max(fromIndex, 0));
|
|
51
|
-
let index = fromIndex - 1;
|
|
52
|
-
while (++index < array.length) {
|
|
53
|
-
if (cb(array[index], index, array)) {
|
|
54
|
-
return index;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return -1;
|
|
58
|
-
};
|
|
59
|
-
export const isIndicesContinuous = (indexes) => {
|
|
60
|
-
indexes.sort((a, b) => a - b);
|
|
61
|
-
for (let i = 1; i < indexes.length; i++) {
|
|
62
|
-
if (indexes[i] !== indexes[i - 1] + 1) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return true;
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFVO0lBQ3hDLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQ2pELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFlO0lBQzFDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDO1lBQ0ksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNkO1FBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQWUsRUFBRSxFQUFFO0lBQ3RELE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWlCO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBd0I7SUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUU1QixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUN6QixLQUFtQixFQUNuQixFQUErRCxFQUMvRCxZQUFvQixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDdEMsRUFBRTtJQUNBLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hCLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3JCLEtBQW1CLEVBQ25CLEVBQStELEVBQy9ELFlBQW9CLENBQUMsRUFDdkIsRUFBRTtJQUNBLGdCQUFnQjtJQUNoQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoQixTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDekMsQ0FBQztJQUNELFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxJQUFJLEtBQUssR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWlCLEVBQVcsRUFBRTtJQUM5RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQodmFsdWU6IGFueSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIGdldCB7eCx5fSBwb2ludFxuICogQHBhcmFtIHBvaW50XG4gKiBAcmV0dXJucyBwb2ludFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUG9pbnQocG9pbnQ6IG51bWJlcltdKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocG9pbnQpXG4gICAgICAgID8ge1xuICAgICAgICAgICAgICB4OiBwb2ludFswXSxcbiAgICAgICAgICAgICAgeTogcG9pbnRbMV1cbiAgICAgICAgICB9XG4gICAgICAgIDogcG9pbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBSZ2JhVG9IRVggPSAoUmdiOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBSZ2IgKyBNYXRoLmZsb29yKG9wYWNpdHkgKiAyNTUpLnRvU3RyaW5nKDE2KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRleHRtZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gMjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZUJ5SWQoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSB7XG4gICAgY29uc3QgdW5pcXVlTWFwID0gbmV3IE1hcCgpO1xuXG4gICAgZWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKCF1bmlxdWVNYXAuaGFzKGl0ZW0uaWQpKSB7XG4gICAgICAgICAgICB1bmlxdWVNYXAuc2V0KGl0ZW0uaWQsIGl0ZW0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh1bmlxdWVNYXAudmFsdWVzKCkpO1xufVxuXG5leHBvcnQgY29uc3QgZmluZExhc3RJbmRleCA9IDxUPihcbiAgICBhcnJheTogcmVhZG9ubHkgVFtdLFxuICAgIGNiOiAoZWxlbWVudDogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHJlYWRvbmx5IFRbXSkgPT4gYm9vbGVhbixcbiAgICBmcm9tSW5kZXg6IG51bWJlciA9IGFycmF5Lmxlbmd0aCAtIDFcbikgPT4ge1xuICAgIGlmIChmcm9tSW5kZXggPCAwKSB7XG4gICAgICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgICB9XG4gICAgZnJvbUluZGV4ID0gTWF0aC5taW4oYXJyYXkubGVuZ3RoIC0gMSwgTWF0aC5tYXgoZnJvbUluZGV4LCAwKSk7XG4gICAgbGV0IGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoLS1pbmRleCA+IC0xKSB7XG4gICAgICAgIGlmIChjYihhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZEluZGV4ID0gPFQ+KFxuICAgIGFycmF5OiByZWFkb25seSBUW10sXG4gICAgY2I6IChlbGVtZW50OiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogcmVhZG9ubHkgVFtdKSA9PiBib29sZWFuLFxuICAgIGZyb21JbmRleDogbnVtYmVyID0gMFxuKSA9PiB7XG4gICAgLy8gZnJvbUluZGV4ID0gMlxuICAgIGlmIChmcm9tSW5kZXggPCAwKSB7XG4gICAgICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgICB9XG4gICAgZnJvbUluZGV4ID0gTWF0aC5taW4oYXJyYXkubGVuZ3RoLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgICBsZXQgaW5kZXggPSBmcm9tSW5kZXggLSAxO1xuICAgIHdoaWxlICgrK2luZGV4IDwgYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgIGlmIChjYihhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJbmRpY2VzQ29udGludW91cyA9IChpbmRleGVzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgIGluZGV4ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgaW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5kZXhlc1tpXSAhPT0gaW5kZXhlc1tpIC0gMV0gKyAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIl19
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
// Credits to slate - https://github.com/ianstormtaylor/slate
|
|
2
|
-
import { MERGING, SAVING, SPLITTING_ONCE } from '../interfaces';
|
|
3
|
-
/**
|
|
4
|
-
* Check whether to merge an operation into the previous operation.
|
|
5
|
-
*/
|
|
6
|
-
export const shouldMerge = (op, prev) => {
|
|
7
|
-
if (op.type === 'set_viewport' && op.type === prev?.type) {
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
return false;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Check whether an operation needs to be saved to the history.
|
|
14
|
-
*/
|
|
15
|
-
export const shouldSave = (op, prev) => {
|
|
16
|
-
if (op.type === 'set_selection' || op.type === 'set_viewport') {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
return true;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Check whether an operation should clear the redos stack.
|
|
23
|
-
*/
|
|
24
|
-
export const shouldClear = (op) => {
|
|
25
|
-
if (op.type === 'set_selection') {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
return true;
|
|
29
|
-
};
|
|
30
|
-
export const PlaitHistoryBoard = {
|
|
31
|
-
/**
|
|
32
|
-
* Get the saving flag's current value.
|
|
33
|
-
*/
|
|
34
|
-
isSaving(board) {
|
|
35
|
-
return SAVING.get(board);
|
|
36
|
-
},
|
|
37
|
-
/**
|
|
38
|
-
* Get the merge flag's current value.
|
|
39
|
-
*/
|
|
40
|
-
isMerging(board) {
|
|
41
|
-
return MERGING.get(board);
|
|
42
|
-
},
|
|
43
|
-
/**
|
|
44
|
-
* Get the splitting once flag's current value.
|
|
45
|
-
*/
|
|
46
|
-
isSplittingOnce(board) {
|
|
47
|
-
return SPLITTING_ONCE.get(board);
|
|
48
|
-
},
|
|
49
|
-
setSplittingOnce(board, value) {
|
|
50
|
-
SPLITTING_ONCE.set(board, value);
|
|
51
|
-
},
|
|
52
|
-
/**
|
|
53
|
-
* Apply a series of changes inside a synchronous `fn`, These operations will
|
|
54
|
-
* be merged into the previous history.
|
|
55
|
-
*/
|
|
56
|
-
withMerging(board, fn) {
|
|
57
|
-
const prev = PlaitHistoryBoard.isMerging(board);
|
|
58
|
-
MERGING.set(board, true);
|
|
59
|
-
fn();
|
|
60
|
-
MERGING.set(board, prev);
|
|
61
|
-
},
|
|
62
|
-
/**
|
|
63
|
-
* Apply a series of changes inside a synchronous `fn`, ensuring that the first
|
|
64
|
-
* operation starts a new batch in the history. Subsequent operations will be
|
|
65
|
-
* merged as usual.
|
|
66
|
-
*/
|
|
67
|
-
withNewBatch(board, fn) {
|
|
68
|
-
const prev = PlaitHistoryBoard.isMerging(board);
|
|
69
|
-
MERGING.set(board, true);
|
|
70
|
-
SPLITTING_ONCE.set(board, true);
|
|
71
|
-
fn();
|
|
72
|
-
MERGING.set(board, prev);
|
|
73
|
-
SPLITTING_ONCE.delete(board);
|
|
74
|
-
},
|
|
75
|
-
/**
|
|
76
|
-
* Apply a series of changes inside a synchronous `fn`, without merging any of
|
|
77
|
-
* the new operations into previous save point in the history.
|
|
78
|
-
*/
|
|
79
|
-
withoutMerging(board, fn) {
|
|
80
|
-
const prev = PlaitHistoryBoard.isMerging(board);
|
|
81
|
-
MERGING.set(board, false);
|
|
82
|
-
fn();
|
|
83
|
-
MERGING.set(board, prev);
|
|
84
|
-
},
|
|
85
|
-
/**
|
|
86
|
-
* Apply a series of changes inside a synchronous `fn`, without saving any of
|
|
87
|
-
* their operations into the history.
|
|
88
|
-
*/
|
|
89
|
-
withoutSaving(board, fn) {
|
|
90
|
-
const prev = PlaitHistoryBoard.isSaving(board);
|
|
91
|
-
SAVING.set(board, false);
|
|
92
|
-
fn();
|
|
93
|
-
SAVING.set(board, prev);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL2hpc3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQThCLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUY7O0dBRUc7QUFFSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFrQixFQUFFLElBQWdDLEVBQVcsRUFBRTtJQUN6RixJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUVILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEVBQWtCLEVBQUUsSUFBZ0MsRUFBVyxFQUFFO0lBQ3hGLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxlQUFlLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFrQixFQUFXLEVBQUU7SUFDdkQsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUM3Qjs7T0FFRztJQUNILFFBQVEsQ0FBQyxLQUFpQjtRQUN0QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBRUgsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFFSCxlQUFlLENBQUMsS0FBaUI7UUFDN0IsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFpQixFQUFFLEtBQTBCO1FBQzFELGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBaUIsRUFBRSxFQUFjO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QixFQUFFLEVBQUUsQ0FBQztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEtBQWlCLEVBQUUsRUFBYztRQUMxQyxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsRUFBRSxFQUFFLENBQUM7UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QixjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFFSCxjQUFjLENBQUMsS0FBaUIsRUFBRSxFQUFjO1FBQzVDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQixFQUFFLEVBQUUsQ0FBQztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRDs7O09BR0c7SUFFSCxhQUFhLENBQUMsS0FBaUIsRUFBRSxFQUFjO1FBQzNDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QixFQUFFLEVBQUUsQ0FBQztRQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ3JlZGl0cyB0byBzbGF0ZSAtIGh0dHBzOi8vZ2l0aHViLmNvbS9pYW5zdG9ybXRheWxvci9zbGF0ZVxuXG5pbXBvcnQgeyBNRVJHSU5HLCBQbGFpdEJvYXJkLCBQbGFpdE9wZXJhdGlvbiwgU0FWSU5HLCBTUExJVFRJTkdfT05DRSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdG8gbWVyZ2UgYW4gb3BlcmF0aW9uIGludG8gdGhlIHByZXZpb3VzIG9wZXJhdGlvbi5cbiAqL1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkTWVyZ2UgPSAob3A6IFBsYWl0T3BlcmF0aW9uLCBwcmV2OiBQbGFpdE9wZXJhdGlvbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChvcC50eXBlID09PSAnc2V0X3ZpZXdwb3J0JyAmJiBvcC50eXBlID09PSBwcmV2Py50eXBlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYW4gb3BlcmF0aW9uIG5lZWRzIHRvIGJlIHNhdmVkIHRvIHRoZSBoaXN0b3J5LlxuICovXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTYXZlID0gKG9wOiBQbGFpdE9wZXJhdGlvbiwgcHJldjogUGxhaXRPcGVyYXRpb24gfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgICBpZiAob3AudHlwZSA9PT0gJ3NldF9zZWxlY3Rpb24nIHx8IG9wLnR5cGUgPT09ICdzZXRfdmlld3BvcnQnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhbiBvcGVyYXRpb24gc2hvdWxkIGNsZWFyIHRoZSByZWRvcyBzdGFjay5cbiAqL1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkQ2xlYXIgPSAob3A6IFBsYWl0T3BlcmF0aW9uKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKG9wLnR5cGUgPT09ICdzZXRfc2VsZWN0aW9uJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgY29uc3QgUGxhaXRIaXN0b3J5Qm9hcmQgPSB7XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBzYXZpbmcgZmxhZydzIGN1cnJlbnQgdmFsdWUuXG4gICAgICovXG4gICAgaXNTYXZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFNBVklORy5nZXQoYm9hcmQpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG1lcmdlIGZsYWcncyBjdXJyZW50IHZhbHVlLlxuICAgICAqL1xuXG4gICAgaXNNZXJnaW5nKGJvYXJkOiBQbGFpdEJvYXJkKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBNRVJHSU5HLmdldChib2FyZCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc3BsaXR0aW5nIG9uY2UgZmxhZydzIGN1cnJlbnQgdmFsdWUuXG4gICAgICovXG5cbiAgICBpc1NwbGl0dGluZ09uY2UoYm9hcmQ6IFBsYWl0Qm9hcmQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFNQTElUVElOR19PTkNFLmdldChib2FyZCk7XG4gICAgfSxcblxuICAgIHNldFNwbGl0dGluZ09uY2UoYm9hcmQ6IFBsYWl0Qm9hcmQsIHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIFNQTElUVElOR19PTkNFLnNldChib2FyZCwgdmFsdWUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBcHBseSBhIHNlcmllcyBvZiBjaGFuZ2VzIGluc2lkZSBhIHN5bmNocm9ub3VzIGBmbmAsIFRoZXNlIG9wZXJhdGlvbnMgd2lsbFxuICAgICAqIGJlIG1lcmdlZCBpbnRvIHRoZSBwcmV2aW91cyBoaXN0b3J5LlxuICAgICAqL1xuICAgIHdpdGhNZXJnaW5nKGJvYXJkOiBQbGFpdEJvYXJkLCBmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2ID0gUGxhaXRIaXN0b3J5Qm9hcmQuaXNNZXJnaW5nKGJvYXJkKTtcbiAgICAgICAgTUVSR0lORy5zZXQoYm9hcmQsIHRydWUpO1xuICAgICAgICBmbigpO1xuICAgICAgICBNRVJHSU5HLnNldChib2FyZCwgcHJldik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFwcGx5IGEgc2VyaWVzIG9mIGNoYW5nZXMgaW5zaWRlIGEgc3luY2hyb25vdXMgYGZuYCwgZW5zdXJpbmcgdGhhdCB0aGUgZmlyc3RcbiAgICAgKiBvcGVyYXRpb24gc3RhcnRzIGEgbmV3IGJhdGNoIGluIHRoZSBoaXN0b3J5LiBTdWJzZXF1ZW50IG9wZXJhdGlvbnMgd2lsbCBiZVxuICAgICAqIG1lcmdlZCBhcyB1c3VhbC5cbiAgICAgKi9cbiAgICB3aXRoTmV3QmF0Y2goYm9hcmQ6IFBsYWl0Qm9hcmQsIGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBQbGFpdEhpc3RvcnlCb2FyZC5pc01lcmdpbmcoYm9hcmQpO1xuICAgICAgICBNRVJHSU5HLnNldChib2FyZCwgdHJ1ZSk7XG4gICAgICAgIFNQTElUVElOR19PTkNFLnNldChib2FyZCwgdHJ1ZSk7XG4gICAgICAgIGZuKCk7XG4gICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCBwcmV2KTtcbiAgICAgICAgU1BMSVRUSU5HX09OQ0UuZGVsZXRlKGJvYXJkKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgYSBzZXJpZXMgb2YgY2hhbmdlcyBpbnNpZGUgYSBzeW5jaHJvbm91cyBgZm5gLCB3aXRob3V0IG1lcmdpbmcgYW55IG9mXG4gICAgICogdGhlIG5ldyBvcGVyYXRpb25zIGludG8gcHJldmlvdXMgc2F2ZSBwb2ludCBpbiB0aGUgaGlzdG9yeS5cbiAgICAgKi9cblxuICAgIHdpdGhvdXRNZXJnaW5nKGJvYXJkOiBQbGFpdEJvYXJkLCBmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2ID0gUGxhaXRIaXN0b3J5Qm9hcmQuaXNNZXJnaW5nKGJvYXJkKTtcbiAgICAgICAgTUVSR0lORy5zZXQoYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgZm4oKTtcbiAgICAgICAgTUVSR0lORy5zZXQoYm9hcmQsIHByZXYpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQXBwbHkgYSBzZXJpZXMgb2YgY2hhbmdlcyBpbnNpZGUgYSBzeW5jaHJvbm91cyBgZm5gLCB3aXRob3V0IHNhdmluZyBhbnkgb2ZcbiAgICAgKiB0aGVpciBvcGVyYXRpb25zIGludG8gdGhlIGhpc3RvcnkuXG4gICAgICovXG5cbiAgICB3aXRob3V0U2F2aW5nKGJvYXJkOiBQbGFpdEJvYXJkLCBmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2ID0gUGxhaXRIaXN0b3J5Qm9hcmQuaXNTYXZpbmcoYm9hcmQpO1xuICAgICAgICBTQVZJTkcuc2V0KGJvYXJkLCBmYWxzZSk7XG4gICAgICAgIGZuKCk7XG4gICAgICAgIFNBVklORy5zZXQoYm9hcmQsIHByZXYpO1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { isKeyHotkey } from 'is-hotkey';
|
|
2
|
-
import { IS_APPLE } from './environment';
|
|
3
|
-
/**
|
|
4
|
-
* Hotkey mappings for each platform.
|
|
5
|
-
*/
|
|
6
|
-
const HOTKEYS = {
|
|
7
|
-
bold: 'mod+b',
|
|
8
|
-
compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],
|
|
9
|
-
arrow: ['down', 'left', 'right', 'up'],
|
|
10
|
-
extendArrow: ['shift+down', 'shift+left', 'shift+right', 'shift+up'],
|
|
11
|
-
moveBackward: 'left',
|
|
12
|
-
moveForward: 'right',
|
|
13
|
-
moveUp: 'up',
|
|
14
|
-
moveDown: 'down',
|
|
15
|
-
moveWordBackward: 'ctrl+left',
|
|
16
|
-
moveWordForward: 'ctrl+right',
|
|
17
|
-
deleteBackward: 'shift?+backspace',
|
|
18
|
-
deleteForward: 'shift?+delete',
|
|
19
|
-
extendBackward: 'shift+left',
|
|
20
|
-
extendForward: 'shift+right',
|
|
21
|
-
extendUp: 'shift+up',
|
|
22
|
-
extendDown: 'shift+down',
|
|
23
|
-
italic: 'mod+i',
|
|
24
|
-
splitBlock: 'shift?+enter',
|
|
25
|
-
undo: 'mod+z',
|
|
26
|
-
shift: 'shift'
|
|
27
|
-
};
|
|
28
|
-
const APPLE_HOTKEYS = {
|
|
29
|
-
moveLineBackward: 'opt+up',
|
|
30
|
-
moveLineForward: 'opt+down',
|
|
31
|
-
moveWordBackward: 'opt+left',
|
|
32
|
-
moveWordForward: 'opt+right',
|
|
33
|
-
deleteBackward: ['ctrl+backspace', 'ctrl+h'],
|
|
34
|
-
deleteForward: ['ctrl+delete', 'ctrl+d'],
|
|
35
|
-
deleteLineBackward: 'cmd+shift?+backspace',
|
|
36
|
-
deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],
|
|
37
|
-
deleteWordBackward: 'opt+shift?+backspace',
|
|
38
|
-
deleteWordForward: 'opt+shift?+delete',
|
|
39
|
-
extendLineBackward: 'opt+shift+up',
|
|
40
|
-
extendLineForward: 'opt+shift+down',
|
|
41
|
-
redo: 'cmd+shift+z',
|
|
42
|
-
transposeCharacter: 'ctrl+t'
|
|
43
|
-
};
|
|
44
|
-
const WINDOWS_HOTKEYS = {
|
|
45
|
-
deleteWordBackward: 'ctrl+shift?+backspace',
|
|
46
|
-
deleteWordForward: 'ctrl+shift?+delete',
|
|
47
|
-
redo: ['ctrl+y', 'ctrl+shift+z']
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Create a platform-aware hotkey checker.
|
|
51
|
-
*/
|
|
52
|
-
const create = (key) => {
|
|
53
|
-
const generic = HOTKEYS[key];
|
|
54
|
-
const apple = APPLE_HOTKEYS[key];
|
|
55
|
-
const windows = WINDOWS_HOTKEYS[key];
|
|
56
|
-
const isGeneric = generic && isKeyHotkey(generic);
|
|
57
|
-
const isApple = apple && isKeyHotkey(apple);
|
|
58
|
-
const isWindows = windows && isKeyHotkey(windows);
|
|
59
|
-
return (event) => {
|
|
60
|
-
if (isGeneric && isGeneric(event)) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
if (IS_APPLE && isApple && isApple(event)) {
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
if (!IS_APPLE && isWindows && isWindows(event)) {
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
return false;
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* Hotkeys.
|
|
74
|
-
*/
|
|
75
|
-
const hotkeys = {
|
|
76
|
-
isBold: create('bold'),
|
|
77
|
-
isCompose: create('compose'),
|
|
78
|
-
isArrow: create('arrow'),
|
|
79
|
-
isMoveBackward: create('moveBackward'),
|
|
80
|
-
isMoveForward: create('moveForward'),
|
|
81
|
-
isMoveUp: create('moveUp'),
|
|
82
|
-
isMoveDown: create('moveDown'),
|
|
83
|
-
isDeleteBackward: create('deleteBackward'),
|
|
84
|
-
isDeleteForward: create('deleteForward'),
|
|
85
|
-
isDeleteLineBackward: create('deleteLineBackward'),
|
|
86
|
-
isDeleteLineForward: create('deleteLineForward'),
|
|
87
|
-
isDeleteWordBackward: create('deleteWordBackward'),
|
|
88
|
-
isDeleteWordForward: create('deleteWordForward'),
|
|
89
|
-
isExtendBackward: create('extendBackward'),
|
|
90
|
-
isExtendForward: create('extendForward'),
|
|
91
|
-
isExtendUp: create('extendUp'),
|
|
92
|
-
isExtendDown: create('extendDown'),
|
|
93
|
-
isExtendArrow: create('extendArrow'),
|
|
94
|
-
isExtendLineBackward: create('extendLineBackward'),
|
|
95
|
-
isExtendLineForward: create('extendLineForward'),
|
|
96
|
-
isItalic: create('italic'),
|
|
97
|
-
isMoveLineBackward: create('moveLineBackward'),
|
|
98
|
-
isMoveLineForward: create('moveLineForward'),
|
|
99
|
-
isMoveWordBackward: create('moveWordBackward'),
|
|
100
|
-
isMoveWordForward: create('moveWordForward'),
|
|
101
|
-
isRedo: create('redo'),
|
|
102
|
-
isSplitBlock: create('splitBlock'),
|
|
103
|
-
isTransposeCharacter: create('transposeCharacter'),
|
|
104
|
-
isUndo: create('undo'),
|
|
105
|
-
isShift: create('shift')
|
|
106
|
-
};
|
|
107
|
-
export default hotkeys;
|
|
108
|
-
export { hotkeys };
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL2hvdGtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDOztHQUVHO0FBRUgsTUFBTSxPQUFPLEdBQVE7SUFDakIsSUFBSSxFQUFFLE9BQU87SUFDYixPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztJQUM5RCxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDdEMsV0FBVyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDO0lBQ3BFLFlBQVksRUFBRSxNQUFNO0lBQ3BCLFdBQVcsRUFBRSxPQUFPO0lBQ3BCLE1BQU0sRUFBRSxJQUFJO0lBQ1osUUFBUSxFQUFFLE1BQU07SUFDaEIsZ0JBQWdCLEVBQUUsV0FBVztJQUM3QixlQUFlLEVBQUUsWUFBWTtJQUM3QixjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLGNBQWMsRUFBRSxZQUFZO0lBQzVCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsVUFBVSxFQUFFLGNBQWM7SUFDMUIsSUFBSSxFQUFFLE9BQU87SUFDYixLQUFLLEVBQUUsT0FBTztDQUNqQixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQVE7SUFDdkIsZ0JBQWdCLEVBQUUsUUFBUTtJQUMxQixlQUFlLEVBQUUsVUFBVTtJQUMzQixnQkFBZ0IsRUFBRSxV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QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUNwQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CLENBQUM7SUFDbEQsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQ2hELFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzFCLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUM5QyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDNUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQzlDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUM1QyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN0QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CLENBQUM7SUFDbEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7Q0FDM0IsQ0FBQztBQUNGLGVBQWUsT0FBTyxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzS2V5SG90a2V5IH0gZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IElTX0FQUExFIH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5cbi8qKlxuICogSG90a2V5IG1hcHBpbmdzIGZvciBlYWNoIHBsYXRmb3JtLlxuICovXG5cbmNvbnN0IEhPVEtFWVM6IGFueSA9IHtcbiAgICBib2xkOiAnbW9kK2InLFxuICAgIGNvbXBvc2U6IFsnZG93bicsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ2JhY2tzcGFjZScsICdlbnRlciddLFxuICAgIGFycm93OiBbJ2Rvd24nLCAnbGVmdCcsICdyaWdodCcsICd1cCddLFxuICAgIGV4dGVuZEFycm93OiBbJ3NoaWZ0K2Rvd24nLCAnc2hpZnQrbGVmdCcsICdzaGlmdCtyaWdodCcsICdzaGlmdCt1cCddLFxuICAgIG1vdmVCYWNrd2FyZDogJ2xlZnQnLFxuICAgIG1vdmVGb3J3YXJkOiAncmlnaHQnLFxuICAgIG1vdmVVcDogJ3VwJyxcbiAgICBtb3ZlRG93bjogJ2Rvd24nLFxuICAgIG1vdmVXb3JkQmFja3dhcmQ6ICdjdHJsK2xlZnQnLFxuICAgIG1vdmVXb3JkRm9yd2FyZDogJ2N0cmwrcmlnaHQnLFxuICAgIGRlbGV0ZUJhY2t3YXJkOiAnc2hpZnQ/K2JhY2tzcGFjZScsXG4gICAgZGVsZXRlRm9yd2FyZDogJ3NoaWZ0PytkZWxldGUnLFxuICAgIGV4dGVuZEJhY2t3YXJkOiAnc2hpZnQrbGVmdCcsXG4gICAgZXh0ZW5kRm9yd2FyZDogJ3NoaWZ0K3JpZ2h0JyxcbiAgICBleHRlbmRVcDogJ3NoaWZ0K3VwJyxcbiAgICBleHRlbmREb3duOiAnc2hpZnQrZG93bicsXG4gICAgaXRhbGljOiAnbW9kK2knLFxuICAgIHNwbGl0QmxvY2s6ICdzaGlmdD8rZW50ZXInLFxuICAgIHVuZG86ICdtb2QreicsXG4gICAgc2hpZnQ6ICdzaGlmdCdcbn07XG5cbmNvbnN0IEFQUExFX0hPVEtFWVM6IGFueSA9IHtcbiAgICBtb3ZlTGluZUJhY2t3YXJkOiAnb3B0K3VwJyxcbiAgICBtb3ZlTGluZUZvcndhcmQ6ICdvcHQrZG93bicsXG4gICAgbW92ZVdvcmRCYWNrd2FyZDogJ29wdCtsZWZ0JyxcbiAgICBtb3ZlV29yZEZvcndhcmQ6ICdvcHQrcmlnaHQnLFxuICAgIGRlbGV0ZUJhY2t3YXJkOiBbJ2N0cmwrYmFja3NwYWNlJywgJ2N0cmwraCddLFxuICAgIGRlbGV0ZUZvcndhcmQ6IFsnY3RybCtkZWxldGUnLCAnY3RybCtkJ10sXG4gICAgZGVsZXRlTGluZUJhY2t3YXJkOiAnY21kK3NoaWZ0PytiYWNrc3BhY2UnLFxuICAgIGRlbGV0ZUxpbmVGb3J3YXJkOiBbJ2NtZCtzaGlmdD8rZGVsZXRlJywgJ2N0cmwrayddLFxuICAgIGRlbGV0ZVdvcmRCYWNrd2FyZDogJ29wdCtzaGlmdD8rYmFja3NwYWNlJyxcbiAgICBkZWxldGVXb3JkRm9yd2FyZDogJ29wdCtzaGlmdD8rZGVsZXRlJyxcbiAgICBleHRlbmRMaW5lQmFja3dhcmQ6ICdvcHQrc2hpZnQrdXAnLFxuICAgIGV4dGVuZExpbmVGb3J3YXJkOiAnb3B0K3NoaWZ0K2Rvd24nLFxuICAgIHJlZG86ICdjbWQrc2hpZnQreicsXG4gICAgdHJhbnNwb3NlQ2hhcmFjdGVyOiAnY3RybCt0J1xufTtcblxuY29uc3QgV0lORE9XU19IT1RLRVlTOiBhbnkgPSB7XG4gICAgZGVsZXRlV29yZEJhY2t3YXJkOiAnY3RybCtzaGlmdD8rYmFja3NwYWNlJyxcbiAgICBkZWxldGVXb3JkRm9yd2FyZDogJ2N0cmwrc2hpZnQ/K2RlbGV0ZScsXG4gICAgcmVkbzogWydjdHJsK3knLCAnY3RybCtzaGlmdCt6J11cbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgcGxhdGZvcm0tYXdhcmUgaG90a2V5IGNoZWNrZXIuXG4gKi9cblxuY29uc3QgY3JlYXRlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZ2VuZXJpYyA9IEhPVEtFWVNba2V5XTtcbiAgICBjb25zdCBhcHBsZSA9IEFQUExFX0hPVEtFWVNba2V5XTtcbiAgICBjb25zdCB3aW5kb3dzID0gV0lORE9XU19IT1RLRVlTW2tleV07XG4gICAgY29uc3QgaXNHZW5lcmljID0gZ2VuZXJpYyAmJiBpc0tleUhvdGtleShnZW5lcmljKTtcbiAgICBjb25zdCBpc0FwcGxlID0gYXBwbGUgJiYgaXNLZXlIb3RrZXkoYXBwbGUpO1xuICAgIGNvbnN0IGlzV2luZG93cyA9IHdpbmRvd3MgJiYgaXNLZXlIb3RrZXkod2luZG93cyk7XG5cbiAgICByZXR1cm4gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc0dlbmVyaWMgJiYgaXNHZW5lcmljKGV2ZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKElTX0FQUExFICYmIGlzQXBwbGUgJiYgaXNBcHBsZShldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghSVNfQVBQTEUgJiYgaXNXaW5kb3dzICYmIGlzV2luZG93cyhldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBIb3RrZXlzLlxuICovXG5cbmNvbnN0IGhvdGtleXMgPSB7XG4gICAgaXNCb2xkOiBjcmVhdGUoJ2JvbGQnKSxcbiAgICBpc0NvbXBvc2U6IGNyZWF0ZSgnY29tcG9zZScpLFxuICAgIGlzQXJyb3c6IGNyZWF0ZSgnYXJyb3cnKSxcbiAgICBpc01vdmVCYWNrd2FyZDogY3JlYXRlKCdtb3ZlQmFja3dhcmQnKSxcbiAgICBpc01vdmVGb3J3YXJkOiBjcmVhdGUoJ21vdmVGb3J3YXJkJyksXG4gICAgaXNNb3ZlVXA6IGNyZWF0ZSgnbW92ZVVwJyksXG4gICAgaXNNb3ZlRG93bjogY3JlYXRlKCdtb3ZlRG93bicpLFxuICAgIGlzRGVsZXRlQmFja3dhcmQ6IGNyZWF0ZSgnZGVsZXRlQmFja3dhcmQnKSxcbiAgICBpc0RlbGV0ZUZvcndhcmQ6IGNyZWF0ZSgnZGVsZXRlRm9yd2FyZCcpLFxuICAgIGlzRGVsZXRlTGluZUJhY2t3YXJkOiBjcmVhdGUoJ2RlbGV0ZUxpbmVCYWNrd2FyZCcpLFxuICAgIGlzRGVsZXRlTGluZUZvcndhcmQ6IGNyZWF0ZSgnZGVsZXRlTGluZUZvcndhcmQnKSxcbiAgICBpc0RlbGV0ZVdvcmRCYWNrd2FyZDogY3JlYXRlKCdkZWxldGVXb3JkQmFja3dhcmQnKSxcbiAgICBpc0RlbGV0ZVdvcmRGb3J3YXJkOiBjcmVhdGUoJ2RlbGV0ZVdvcmRGb3J3YXJkJyksXG4gICAgaXNFeHRlbmRCYWNrd2FyZDogY3JlYXRlKCdleHRlbmRCYWNrd2FyZCcpLFxuICAgIGlzRXh0ZW5kRm9yd2FyZDogY3JlYXRlKCdleHRlbmRGb3J3YXJkJyksXG4gICAgaXNFeHRlbmRVcDogY3JlYXRlKCdleHRlbmRVcCcpLFxuICAgIGlzRXh0ZW5kRG93bjogY3JlYXRlKCdleHRlbmREb3duJyksXG4gICAgaXNFeHRlbmRBcnJvdzogY3JlYXRlKCdleHRlbmRBcnJvdycpLFxuICAgIGlzRXh0ZW5kTGluZUJhY2t3YXJkOiBjcmVhdGUoJ2V4dGVuZExpbmVCYWNrd2FyZCcpLFxuICAgIGlzRXh0ZW5kTGluZUZvcndhcmQ6IGNyZWF0ZSgnZXh0ZW5kTGluZUZvcndhcmQnKSxcbiAgICBpc0l0YWxpYzogY3JlYXRlKCdpdGFsaWMnKSxcbiAgICBpc01vdmVMaW5lQmFja3dhcmQ6IGNyZWF0ZSgnbW92ZUxpbmVCYWNrd2FyZCcpLFxuICAgIGlzTW92ZUxpbmVGb3J3YXJkOiBjcmVhdGUoJ21vdmVMaW5lRm9yd2FyZCcpLFxuICAgIGlzTW92ZVdvcmRCYWNrd2FyZDogY3JlYXRlKCdtb3ZlV29yZEJhY2t3YXJkJyksXG4gICAgaXNNb3ZlV29yZEZvcndhcmQ6IGNyZWF0ZSgnbW92ZVdvcmRGb3J3YXJkJyksXG4gICAgaXNSZWRvOiBjcmVhdGUoJ3JlZG8nKSxcbiAgICBpc1NwbGl0QmxvY2s6IGNyZWF0ZSgnc3BsaXRCbG9jaycpLFxuICAgIGlzVHJhbnNwb3NlQ2hhcmFjdGVyOiBjcmVhdGUoJ3RyYW5zcG9zZUNoYXJhY3RlcicpLFxuICAgIGlzVW5kbzogY3JlYXRlKCd1bmRvJyksXG4gICAgaXNTaGlmdDogY3JlYXRlKCdzaGlmdCcpXG59O1xuZXhwb3J0IGRlZmF1bHQgaG90a2V5cztcbmV4cG9ydCB7IGhvdGtleXMgfTtcbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function idCreator(length = 5) {
|
|
2
|
-
// remove numeral
|
|
3
|
-
const $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz'; /**** Easily confusing characters are removed by default oOLl,9gq,Vv,Uu,I1****/
|
|
4
|
-
const maxPosition = $chars.length;
|
|
5
|
-
let key = '';
|
|
6
|
-
for (let i = 0; i < length; i++) {
|
|
7
|
-
key += $chars.charAt(Math.floor(Math.random() * maxPosition));
|
|
8
|
-
}
|
|
9
|
-
return key;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL2lkLWNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsTUFBTSxNQUFNLEdBQUcsMkNBQTJDLENBQUMsQ0FBQywrRUFBK0U7SUFDM0ksTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDOUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlkQ3JlYXRvcihsZW5ndGggPSA1KSB7XG4gICAgLy8gcmVtb3ZlIG51bWVyYWxcbiAgICBjb25zdCAkY2hhcnMgPSAnQUJDREVGR0hKS01OUFFSU1RXWFlaYWJjZGVmaGlqa21ucHJzdHd4eXonOyAvKioqKiBFYXNpbHkgY29uZnVzaW5nIGNoYXJhY3RlcnMgYXJlIHJlbW92ZWQgYnkgZGVmYXVsdCBvT0xsLDlncSxWdixVdSxJMSoqKiovXG4gICAgY29uc3QgbWF4UG9zaXRpb24gPSAkY2hhcnMubGVuZ3RoO1xuICAgIGxldCBrZXkgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGtleSArPSAkY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG1heFBvc2l0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG59XG4iXX0=
|