@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
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '../interfaces/board';
|
|
2
|
-
import { Transforms } from '../transforms';
|
|
3
|
-
import { isMainPointer } from '../utils/dom/common';
|
|
4
|
-
import { RectangleClient } from '../interfaces/rectangle-client';
|
|
5
|
-
import { cacheSelectedElements, clearSelectedElement, getHitElementsBySelection, getSelectedElements, isHitElement, removeSelectedElement } from '../utils/selected-element';
|
|
6
|
-
import { PlaitPointerType, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR } from '../interfaces';
|
|
7
|
-
import { ATTACHED_ELEMENT_CLASS_NAME } from '../constants/selection';
|
|
8
|
-
import { clearSelectionMoving, deleteTemporaryElements, drawRectangle, getTemporaryElements, isDragging, isHandleSelection, isSelectionMoving, setSelectionMoving, throttleRAF, toHostPoint, toViewBoxPoint, setSelectedElementsWithGroup, hasSetSelectionOperation, getSelectionOptions, setSelectionOptions, distanceBetweenPointAndPoint, isMobileDeviceEvent, toActivePoint } from '../utils';
|
|
9
|
-
import { Selection } from '../interfaces/selection';
|
|
10
|
-
import { DRAG_SELECTION_PRESS_AND_MOVE_BUFFER } from '../constants';
|
|
11
|
-
export function withSelection(board) {
|
|
12
|
-
const { pointerDown, pointerUp, pointerMove, globalPointerUp, onChange, afterChange, drawSelectionRectangle } = board;
|
|
13
|
-
let screenStart = null;
|
|
14
|
-
let screenEnd = null;
|
|
15
|
-
let selectionMovingG;
|
|
16
|
-
let selectionRectangleG;
|
|
17
|
-
let isShift = false;
|
|
18
|
-
let timerId = null;
|
|
19
|
-
let pointerDownEvent = null;
|
|
20
|
-
board.pointerDown = (event) => {
|
|
21
|
-
if (!isShift && event.shiftKey) {
|
|
22
|
-
isShift = true;
|
|
23
|
-
}
|
|
24
|
-
if (isShift && !event.shiftKey) {
|
|
25
|
-
isShift = false;
|
|
26
|
-
}
|
|
27
|
-
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
28
|
-
const isHitTarget = isHitElement(board, point);
|
|
29
|
-
const options = getSelectionOptions(board);
|
|
30
|
-
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
|
|
31
|
-
isMainPointer(event) &&
|
|
32
|
-
!isHitTarget &&
|
|
33
|
-
options.isMultipleSelection &&
|
|
34
|
-
!options.isDisabledSelection) {
|
|
35
|
-
if (isMobileDeviceEvent(event)) {
|
|
36
|
-
timerId = setTimeout(() => {
|
|
37
|
-
screenStart = [event.x, event.y];
|
|
38
|
-
timerId = null;
|
|
39
|
-
}, 120);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
screenStart = [event.x, event.y];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
pointerDownEvent = event;
|
|
46
|
-
pointerDown(event);
|
|
47
|
-
};
|
|
48
|
-
board.pointerMove = (event) => {
|
|
49
|
-
if (timerId &&
|
|
50
|
-
pointerDownEvent &&
|
|
51
|
-
distanceBetweenPointAndPoint(pointerDownEvent.x, pointerDownEvent.y, event.x, event.y) > DRAG_SELECTION_PRESS_AND_MOVE_BUFFER) {
|
|
52
|
-
clearTimeout(timerId);
|
|
53
|
-
timerId = null;
|
|
54
|
-
}
|
|
55
|
-
if (PlaitBoard.isPointer(board, PlaitPointerType.selection) && screenStart) {
|
|
56
|
-
event.preventDefault();
|
|
57
|
-
screenEnd = [event.x, event.y];
|
|
58
|
-
const rectangle = RectangleClient.getRectangleByPoints([
|
|
59
|
-
toActivePoint(board, ...screenStart),
|
|
60
|
-
toActivePoint(board, ...screenEnd)
|
|
61
|
-
]);
|
|
62
|
-
selectionMovingG?.remove();
|
|
63
|
-
throttleRAF(board, 'with-selection', () => {
|
|
64
|
-
if (screenStart && screenEnd) {
|
|
65
|
-
Transforms.setSelection(board, {
|
|
66
|
-
anchor: toViewBoxPoint(board, toHostPoint(board, screenStart[0], screenStart[1])),
|
|
67
|
-
focus: toViewBoxPoint(board, toHostPoint(board, screenEnd[0], screenEnd[1]))
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
setSelectionMoving(board);
|
|
72
|
-
selectionMovingG = drawRectangle(board, rectangle, {
|
|
73
|
-
stroke: SELECTION_BORDER_COLOR,
|
|
74
|
-
strokeWidth: 1,
|
|
75
|
-
fill: SELECTION_FILL_COLOR,
|
|
76
|
-
fillStyle: 'solid'
|
|
77
|
-
});
|
|
78
|
-
PlaitBoard.getActiveHost(board).append(selectionMovingG);
|
|
79
|
-
}
|
|
80
|
-
pointerMove(event);
|
|
81
|
-
};
|
|
82
|
-
// handle the end of click select
|
|
83
|
-
board.pointerUp = (event) => {
|
|
84
|
-
const isSetSelectionPointer = PlaitBoard.isPointer(board, PlaitPointerType.selection) || PlaitBoard.isPointer(board, PlaitPointerType.hand);
|
|
85
|
-
const isSkip = !isMainPointer(event) || isDragging(board) || !isSetSelectionPointer;
|
|
86
|
-
if (isSkip) {
|
|
87
|
-
pointerUp(event);
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
91
|
-
const selection = { anchor: point, focus: point };
|
|
92
|
-
Transforms.setSelection(board, selection);
|
|
93
|
-
pointerUp(event);
|
|
94
|
-
};
|
|
95
|
-
board.globalPointerUp = (event) => {
|
|
96
|
-
if (screenStart && screenEnd) {
|
|
97
|
-
selectionMovingG?.remove();
|
|
98
|
-
clearSelectionMoving(board);
|
|
99
|
-
Transforms.setSelection(board, {
|
|
100
|
-
anchor: toViewBoxPoint(board, toHostPoint(board, screenStart[0], screenStart[1])),
|
|
101
|
-
focus: toViewBoxPoint(board, toHostPoint(board, screenEnd[0], screenEnd[1]))
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
const options = getSelectionOptions(board);
|
|
105
|
-
if (PlaitBoard.isFocus(board) && !options.isPreventClearSelection) {
|
|
106
|
-
const isInBoard = event.target instanceof Node && PlaitBoard.getBoardContainer(board).contains(event.target);
|
|
107
|
-
const isInDocument = event.target instanceof Node && document.contains(event.target);
|
|
108
|
-
const isAttachedElement = event.target instanceof Element && event.target.closest(`.${ATTACHED_ELEMENT_CLASS_NAME}`);
|
|
109
|
-
// Clear selection when mouse board outside area
|
|
110
|
-
// The framework needs to determine whether the board is focused through selection
|
|
111
|
-
if (!isInBoard && !screenStart && !isAttachedElement && isInDocument) {
|
|
112
|
-
Transforms.setSelection(board, null);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
screenStart = null;
|
|
116
|
-
screenEnd = null;
|
|
117
|
-
if (timerId) {
|
|
118
|
-
clearTimeout(timerId);
|
|
119
|
-
timerId = null;
|
|
120
|
-
}
|
|
121
|
-
pointerDownEvent = null;
|
|
122
|
-
globalPointerUp(event);
|
|
123
|
-
};
|
|
124
|
-
board.onChange = () => {
|
|
125
|
-
const options = getSelectionOptions(board);
|
|
126
|
-
if (options.isDisabledSelection) {
|
|
127
|
-
clearSelectedElement(board);
|
|
128
|
-
}
|
|
129
|
-
// remove selected element if include
|
|
130
|
-
board.operations.forEach((op) => {
|
|
131
|
-
if (op.type === 'remove_node') {
|
|
132
|
-
removeSelectedElement(board, op.node, true);
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
if (isHandleSelection(board) && hasSetSelectionOperation(board)) {
|
|
136
|
-
try {
|
|
137
|
-
if (!isShift) {
|
|
138
|
-
selectionRectangleG?.remove();
|
|
139
|
-
}
|
|
140
|
-
const temporaryElements = getTemporaryElements(board);
|
|
141
|
-
if (temporaryElements) {
|
|
142
|
-
cacheSelectedElements(board, [...temporaryElements]);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
let elements = getHitElementsBySelection(board);
|
|
146
|
-
if (!options.isMultipleSelection && elements.length > 1) {
|
|
147
|
-
elements = [elements[0]];
|
|
148
|
-
}
|
|
149
|
-
const isHitElementWithGroup = elements.some((item) => item.groupId);
|
|
150
|
-
const selectedElements = getSelectedElements(board);
|
|
151
|
-
if (isHitElementWithGroup) {
|
|
152
|
-
setSelectedElementsWithGroup(board, elements, isShift);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
if (board.selection && Selection.isCollapsed(board.selection)) {
|
|
156
|
-
const element = board.getOneHitElement(elements);
|
|
157
|
-
if (element) {
|
|
158
|
-
elements = [element];
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (isShift) {
|
|
162
|
-
const newElements = [...selectedElements];
|
|
163
|
-
if (board.selection && Selection.isCollapsed(board.selection)) {
|
|
164
|
-
elements.forEach((element) => {
|
|
165
|
-
if (newElements.includes(element)) {
|
|
166
|
-
newElements.splice(newElements.indexOf(element), 1);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
newElements.push(element);
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
cacheSelectedElements(board, newElements);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
elements.forEach((element) => {
|
|
176
|
-
if (!newElements.includes(element)) {
|
|
177
|
-
newElements.push(element);
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
cacheSelectedElements(board, [...newElements]);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
cacheSelectedElements(board, [...elements]);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
const newElements = getSelectedElements(board);
|
|
189
|
-
deleteTemporaryElements(board);
|
|
190
|
-
if (!isSelectionMoving(board)) {
|
|
191
|
-
selectionRectangleG?.remove();
|
|
192
|
-
if (newElements.length > 1) {
|
|
193
|
-
selectionRectangleG = board.drawSelectionRectangle();
|
|
194
|
-
PlaitBoard.getActiveHost(board).append(selectionRectangleG);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
console.error(error);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
onChange();
|
|
203
|
-
};
|
|
204
|
-
board.afterChange = () => {
|
|
205
|
-
if (isHandleSelection(board) && !hasSetSelectionOperation(board)) {
|
|
206
|
-
try {
|
|
207
|
-
const currentSelectedElements = getSelectedElements(board);
|
|
208
|
-
if (currentSelectedElements.length && currentSelectedElements.length > 1) {
|
|
209
|
-
selectionRectangleG?.remove();
|
|
210
|
-
selectionRectangleG = board.drawSelectionRectangle();
|
|
211
|
-
PlaitBoard.getActiveHost(board).append(selectionRectangleG);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
selectionRectangleG?.remove();
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
catch (error) {
|
|
218
|
-
console.error(error);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
afterChange();
|
|
222
|
-
};
|
|
223
|
-
setSelectionOptions(board, {
|
|
224
|
-
isMultipleSelection: true,
|
|
225
|
-
isDisabledSelection: false,
|
|
226
|
-
isPreventClearSelection: false
|
|
227
|
-
});
|
|
228
|
-
return board;
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLDRCQUE0QixFQUM1Qix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDaEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRSxNQUFNLFVBQVUsYUFBYSxDQUFDLEtB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LENBQUM7UUFDTCxDQUFDO1FBQ0QsUUFBUSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUNyQixJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUM7Z0JBQ0QsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLElBQUksdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN2RSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDOUIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3JELFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFvQixDQUFDLENBQUM7Z0JBQ2pFLENBQUM7cUJBQU0sQ0FBQztvQkFDSixtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRixtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7UUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLHVCQUF1QixFQUFFLEtBQUs7S0FDakMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc01haW5Qb2ludGVyIH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3RhbmdsZS1jbGllbnQnO1xuaW1wb3J0IHtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbixcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzSGl0RWxlbWVudCxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlLCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLCBTRUxFQ1RJT05fRklMTF9DT0xPUiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3NlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nLFxuICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzLFxuICAgIGRyYXdSZWN0YW5nbGUsXG4gICAgZ2V0VGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgaXNEcmFnZ2luZyxcbiAgICBpc0hhbmRsZVNlbGVjdGlvbixcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgdGhyb3R0bGVSQUYsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cCxcbiAgICBoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24sXG4gICAgZ2V0U2VsZWN0aW9uT3B0aW9ucyxcbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgaXNNb2JpbGVEZXZpY2VFdmVudCxcbiAgICB0b0FjdGl2ZVBvaW50XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcbmltcG9ydCB7IERSQUdfU0VMRUNUSU9OX1BSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2VsZWN0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlclVwLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBvbkNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGRyYXdTZWxlY3Rpb25SZWN0YW5nbGUgfSA9IGJvYXJkO1xuICAgIGxldCBzY3JlZW5TdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2NyZWVuRW5kOiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzZWxlY3Rpb25Nb3ZpbmdHOiBTVkdHRWxlbWVudDtcbiAgICBsZXQgc2VsZWN0aW9uUmVjdGFuZ2xlRzogU1ZHR0VsZW1lbnQgfCBudWxsO1xuICAgIGxldCBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgbGV0IHRpbWVySWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHBvaW50ZXJEb3duRXZlbnQ6IFBvaW50ZXJFdmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzU2hpZnQgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NoaWZ0ICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgaXNTaGlmdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IGlzSGl0VGFyZ2V0ID0gaXNIaXRFbGVtZW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJlxuICAgICAgICAgICAgaXNNYWluUG9pbnRlcihldmVudCkgJiZcbiAgICAgICAgICAgICFpc0hpdFRhcmdldCAmJlxuICAgICAgICAgICAgb3B0aW9ucy5pc011bHRpcGxlU2VsZWN0aW9uICYmXG4gICAgICAgICAgICAhb3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGlzTW9iaWxlRGV2aWNlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzY3JlZW5TdGFydCA9IFtldmVudC54LCBldmVudC55XTtcbiAgICAgICAgICAgICAgICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSwgMTIwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2NyZWVuU3RhcnQgPSBbZXZlbnQueCwgZXZlbnQueV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd25FdmVudCA9IGV2ZW50O1xuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZXJJZCAmJlxuICAgICAgICAgICAgcG9pbnRlckRvd25FdmVudCAmJlxuICAgICAgICAgICAgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChwb2ludGVyRG93bkV2ZW50LngsIHBvaW50ZXJEb3duRXZlbnQueSwgZXZlbnQueCwgZXZlbnQueSkgPiBEUkFHX1NFTEVDVElPTl9QUkVTU19BTkRfTU9WRV9CVUZGRVJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJiBzY3JlZW5TdGFydCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNjcmVlbkVuZCA9IFtldmVudC54LCBldmVudC55XTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbXG4gICAgICAgICAgICAgICAgdG9BY3RpdmVQb2ludChib2FyZCwgLi4uc2NyZWVuU3RhcnQpLFxuICAgICAgICAgICAgICAgIHRvQWN0aXZlUG9pbnQoYm9hcmQsIC4uLnNjcmVlbkVuZClcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aHJvdHRsZVJBRihib2FyZCwgJ3dpdGgtc2VsZWN0aW9uJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzY3JlZW5TdGFydCAmJiBzY3JlZW5FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcjogdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBzY3JlZW5TdGFydFswXSwgc2NyZWVuU3RhcnRbMV0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOiB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIHNjcmVlbkVuZFswXSwgc2NyZWVuRW5kWzFdKSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRyA9IGRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlY3RhbmdsZSwge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uTW92aW5nRyk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICAvLyBoYW5kbGUgdGhlIGVuZCBvZiBjbGljayBzZWxlY3RcbiAgICBib2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc1NldFNlbGVjdGlvblBvaW50ZXIgPVxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSB8fCBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKTtcbiAgICAgICAgY29uc3QgaXNTa2lwID0gIWlzTWFpblBvaW50ZXIoZXZlbnQpIHx8IGlzRHJhZ2dpbmcoYm9hcmQpIHx8ICFpc1NldFNlbGVjdGlvblBvaW50ZXI7XG4gICAgICAgIGlmIChpc1NraXApIHtcbiAgICAgICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0geyBhbmNob3I6IHBvaW50LCBmb2N1czogcG9pbnQgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHNlbGVjdGlvbik7XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzY3JlZW5TdGFydCAmJiBzY3JlZW5FbmQpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0c/LnJlbW92ZSgpO1xuICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHtcbiAgICAgICAgICAgICAgICBhbmNob3I6IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgc2NyZWVuU3RhcnRbMF0sIHNjcmVlblN0YXJ0WzFdKSksXG4gICAgICAgICAgICAgICAgZm9jdXM6IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgc2NyZWVuRW5kWzBdLCBzY3JlZW5FbmRbMV0pKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQpO1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSAmJiAhb3B0aW9ucy5pc1ByZXZlbnRDbGVhclNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzY3JlZW5TdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNjcmVlblN0YXJ0ID0gbnVsbDtcbiAgICAgICAgc2NyZWVuRW5kID0gbnVsbDtcbiAgICAgICAgaWYgKHRpbWVySWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJEb3duRXZlbnQgPSBudWxsO1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQpO1xuICAgICAgICBpZiAob3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgaWYgaW5jbHVkZVxuICAgICAgICBib2FyZC5vcGVyYXRpb25zLmZvckVhY2goKG9wKSA9PiB7XG4gICAgICAgICAgICBpZiAob3AudHlwZSA9PT0gJ3JlbW92ZV9ub2RlJykge1xuICAgICAgICAgICAgICAgIHJlbW92ZVNlbGVjdGVkRWxlbWVudChib2FyZCwgb3Aubm9kZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmIGhhc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1NoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0ZW1wb3JhcnlFbGVtZW50cyA9IGdldFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAodGVtcG9yYXJ5RWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4udGVtcG9yYXJ5RWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHMgPSBnZXRIaXRFbGVtZW50c0J5U2VsZWN0aW9uKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlzTXVsdGlwbGVTZWxlY3Rpb24gJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGl0RWxlbWVudFdpdGhHcm91cCA9IGVsZW1lbnRzLnNvbWUoKGl0ZW0pID0+IGl0ZW0uZ3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSGl0RWxlbWVudFdpdGhHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cChib2FyZCwgZWxlbWVudHMsIGlzU2hpZnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvYXJkLnNlbGVjdGlvbiAmJiBTZWxlY3Rpb24uaXNDb2xsYXBzZWQoYm9hcmQuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBib2FyZC5nZXRPbmVIaXRFbGVtZW50KGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gWy4uLnNlbGVjdGVkRWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMuc3BsaWNlKG5ld0VsZW1lbnRzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBuZXdFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFsuLi5uZXdFbGVtZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4uZWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBib2FyZC5kcmF3U2VsZWN0aW9uUmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmICFoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCAmJiBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHID0gYm9hcmQuZHJhd1NlbGVjdGlvblJlY3RhbmdsZSgpO1xuICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhZnRlckNoYW5nZSgpO1xuICAgIH07XG5cbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkLCB7XG4gICAgICAgIGlzTXVsdGlwbGVTZWxlY3Rpb246IHRydWUsXG4gICAgICAgIGlzRGlzYWJsZWRTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICBpc1ByZXZlbnRDbGVhclNlbGVjdGlvbjogZmFsc2VcbiAgICB9KTtcblxuICAgIHJldHVybiBib2FyZDtcbn1cbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of plait
|
|
3
|
-
*/
|
|
4
|
-
export * from './constants';
|
|
5
|
-
export * from './core/element/context-change';
|
|
6
|
-
export * from './core/element/element-flavour';
|
|
7
|
-
export * from './core/element/element-ref';
|
|
8
|
-
export * from './core/list-render';
|
|
9
|
-
export * from './interfaces';
|
|
10
|
-
export * from './transforms';
|
|
11
|
-
export * from './utils';
|
|
12
|
-
export * from './context';
|
|
13
|
-
export * from './plugins';
|
|
14
|
-
export * from './testing';
|
|
15
|
-
export * from './utils/debug';
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBwbGFpdFxuICovXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUvZWxlbWVudC9jb250ZXh0LWNoYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUvZWxlbWVudC9lbGVtZW50LWZsYXZvdXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2VsZW1lbnQvZWxlbWVudC1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2xpc3QtcmVuZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zZm9ybXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zJztcbmV4cG9ydCAqIGZyb20gJy4vdGVzdGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2RlYnVnJztcbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { createBoard } from '../../plugins/create-board';
|
|
2
|
-
import { KEY_TO_ELEMENT_MAP } from '../../utils';
|
|
3
|
-
/**
|
|
4
|
-
* 1.create board instance
|
|
5
|
-
* 2.build fake node weak map
|
|
6
|
-
*/
|
|
7
|
-
export const createTestingBoard = (plugins, children, options = { readonly: false, hideScrollbar: true, disabledScrollOnNonFocus: false }) => {
|
|
8
|
-
let board = createBoard(children, options);
|
|
9
|
-
plugins.forEach(plugin => {
|
|
10
|
-
board = plugin(board);
|
|
11
|
-
});
|
|
12
|
-
KEY_TO_ELEMENT_MAP.set(board, new Map());
|
|
13
|
-
return board;
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdGVzdGluZy9jb3JlL2NyZWF0ZS1ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWpEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQzlCLE9BQXNCLEVBQ3RCLFFBQXdCLEVBQ3hCLFVBQTZCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxFQUN4RyxFQUFFO0lBQ0EsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3JCLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDSCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6QyxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkT3B0aW9ucywgUGxhaXRFbGVtZW50LCBQbGFpdFBsdWdpbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlQm9hcmQgfSBmcm9tICcuLi8uLi9wbHVnaW5zL2NyZWF0ZS1ib2FyZCc7XG5pbXBvcnQgeyBLRVlfVE9fRUxFTUVOVF9NQVAgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbi8qKlxuICogMS5jcmVhdGUgYm9hcmQgaW5zdGFuY2VcbiAqIDIuYnVpbGQgZmFrZSBub2RlIHdlYWsgbWFwXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVUZXN0aW5nQm9hcmQgPSAoXG4gICAgcGx1Z2luczogUGxhaXRQbHVnaW5bXSxcbiAgICBjaGlsZHJlbjogUGxhaXRFbGVtZW50W10sXG4gICAgb3B0aW9uczogUGxhaXRCb2FyZE9wdGlvbnMgPSB7IHJlYWRvbmx5OiBmYWxzZSwgaGlkZVNjcm9sbGJhcjogdHJ1ZSwgZGlzYWJsZWRTY3JvbGxPbk5vbkZvY3VzOiBmYWxzZSB9XG4pID0+IHtcbiAgICBsZXQgYm9hcmQgPSBjcmVhdGVCb2FyZChjaGlsZHJlbiwgb3B0aW9ucyk7XG4gICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiB7XG4gICAgICAgIGJvYXJkID0gcGx1Z2luKGJvYXJkKTtcbiAgICB9KTtcbiAgICBLRVlfVE9fRUxFTUVOVF9NQVAuc2V0KGJvYXJkLCBuZXcgTWFwKCkpO1xuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NODE_TO_INDEX, NODE_TO_PARENT } from '../../utils/weak-maps';
|
|
2
|
-
export const fakeNodeWeakMap = (object) => {
|
|
3
|
-
const children = object.children || [];
|
|
4
|
-
children.forEach((value, index) => {
|
|
5
|
-
NODE_TO_PARENT.set(value, object);
|
|
6
|
-
NODE_TO_INDEX.set(value, index);
|
|
7
|
-
fakeNodeWeakMap(value);
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export const clearNodeWeakMap = (object) => {
|
|
11
|
-
const children = object.children || [];
|
|
12
|
-
children.forEach(value => {
|
|
13
|
-
NODE_TO_PARENT.delete(value);
|
|
14
|
-
NODE_TO_INDEX.delete(value);
|
|
15
|
-
clearNodeWeakMap(value);
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS13ZWFrLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3Rlc3RpbmcvY29yZS9mYWtlLXdlYWstbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBOEIsRUFBRSxFQUFFO0lBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDdEMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUE4QixFQUFFLEVBQUU7SUFDL0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDdkMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNyQixjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQbGFpdE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTk9ERV9UT19JTkRFWCwgTk9ERV9UT19QQVJFTlQgfSBmcm9tICcuLi8uLi91dGlscy93ZWFrLW1hcHMnO1xuXG5leHBvcnQgY29uc3QgZmFrZU5vZGVXZWFrTWFwID0gKG9iamVjdDogUGxhaXROb2RlIHwgUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gb2JqZWN0LmNoaWxkcmVuIHx8IFtdO1xuICAgIGNoaWxkcmVuLmZvckVhY2goKHZhbHVlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIE5PREVfVE9fUEFSRU5ULnNldCh2YWx1ZSwgb2JqZWN0KTtcbiAgICAgICAgTk9ERV9UT19JTkRFWC5zZXQodmFsdWUsIGluZGV4KTtcbiAgICAgICAgZmFrZU5vZGVXZWFrTWFwKHZhbHVlKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhck5vZGVXZWFrTWFwID0gKG9iamVjdDogUGxhaXROb2RlIHwgUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gb2JqZWN0LmNoaWxkcmVuIHx8IFtdO1xuICAgIGNoaWxkcmVuLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBOT0RFX1RPX1BBUkVOVC5kZWxldGUodmFsdWUpO1xuICAgICAgICBOT0RFX1RPX0lOREVYLmRlbGV0ZSh2YWx1ZSk7XG4gICAgICAgIGNsZWFyTm9kZVdlYWtNYXAodmFsdWUpO1xuICAgIH0pO1xufTtcbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './create-board';
|
|
2
|
-
export * from './fake-weak-map';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90ZXN0aW5nL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtYm9hcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9mYWtlLXdlYWstbWFwJztcbiJdfQ==
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { IS_MAC } from '../../utils/dom/environment';
|
|
9
|
-
/** Used to generate unique IDs for events. */
|
|
10
|
-
let uniqueIds = 0;
|
|
11
|
-
/**
|
|
12
|
-
* Creates a browser MouseEvent with the specified options.
|
|
13
|
-
* @docs-private
|
|
14
|
-
*/
|
|
15
|
-
export function createMouseEvent(type, clientX = 0, clientY = 0, offsetX = 1, offsetY = 1, button = 0, modifiers = {}) {
|
|
16
|
-
// Note: We cannot determine the position of the mouse event based on the screen
|
|
17
|
-
// because the dimensions and position of the browser window are not available
|
|
18
|
-
// To provide reasonable `screenX` and `screenY` coordinates, we simply use the
|
|
19
|
-
// client coordinates as if the browser is opened in fullscreen.
|
|
20
|
-
const screenX = clientX;
|
|
21
|
-
const screenY = clientY;
|
|
22
|
-
const event = new MouseEvent(type, {
|
|
23
|
-
bubbles: true,
|
|
24
|
-
cancelable: true,
|
|
25
|
-
composed: true, // Required for shadow DOM events.
|
|
26
|
-
view: window,
|
|
27
|
-
detail: 0,
|
|
28
|
-
relatedTarget: null,
|
|
29
|
-
screenX,
|
|
30
|
-
screenY,
|
|
31
|
-
clientX,
|
|
32
|
-
clientY,
|
|
33
|
-
ctrlKey: modifiers.control,
|
|
34
|
-
altKey: modifiers.alt,
|
|
35
|
-
shiftKey: modifiers.shift,
|
|
36
|
-
metaKey: modifiers.meta,
|
|
37
|
-
button: button,
|
|
38
|
-
buttons: 1
|
|
39
|
-
});
|
|
40
|
-
// The `MouseEvent` constructor doesn't allow us to pass these properties into the constructor.
|
|
41
|
-
// Override them to `1`, because they're used for fake screen reader event detection.
|
|
42
|
-
if (offsetX != null) {
|
|
43
|
-
defineReadonlyEventProperty(event, 'offsetX', offsetX);
|
|
44
|
-
}
|
|
45
|
-
if (offsetY != null) {
|
|
46
|
-
defineReadonlyEventProperty(event, 'offsetY', offsetY);
|
|
47
|
-
}
|
|
48
|
-
return event;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Creates a browser `PointerEvent` with the specified options. Pointer events
|
|
52
|
-
* by default will appear as if they are the primary pointer of their type.
|
|
53
|
-
* https://www.w3.org/TR/pointerevents2/#dom-pointerevent-isprimary.
|
|
54
|
-
*
|
|
55
|
-
* For example, if pointer events for a multi-touch interaction are created, the non-primary
|
|
56
|
-
* pointer touches would need to be represented by non-primary pointer events.
|
|
57
|
-
*
|
|
58
|
-
* @docs-private
|
|
59
|
-
*/
|
|
60
|
-
export function createPointerEvent(type, clientX = 0, clientY = 0, offsetX, offsetY, options = { isPrimary: true }) {
|
|
61
|
-
const event = new PointerEvent(type, {
|
|
62
|
-
bubbles: true,
|
|
63
|
-
cancelable: true,
|
|
64
|
-
composed: true, // Required for shadow DOM events.
|
|
65
|
-
view: window,
|
|
66
|
-
clientX,
|
|
67
|
-
clientY,
|
|
68
|
-
...options
|
|
69
|
-
});
|
|
70
|
-
if (offsetX != null) {
|
|
71
|
-
defineReadonlyEventProperty(event, 'offsetX', offsetX);
|
|
72
|
-
}
|
|
73
|
-
if (offsetY != null) {
|
|
74
|
-
defineReadonlyEventProperty(event, 'offsetY', offsetY);
|
|
75
|
-
}
|
|
76
|
-
return event;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Creates a browser TouchEvent with the specified pointer coordinates.
|
|
80
|
-
* @docs-private
|
|
81
|
-
*/
|
|
82
|
-
export function createTouchEvent(type, pageX = 0, pageY = 0, clientX = 0, clientY = 0) {
|
|
83
|
-
// We cannot use the `TouchEvent` or `Touch` because Firefox and Safari lack support.
|
|
84
|
-
const event = document.createEvent('UIEvent');
|
|
85
|
-
const touchDetails = { pageX, pageY, clientX, clientY, identifier: uniqueIds++ };
|
|
86
|
-
// TS3.6 removes the initUIEvent method and suggests porting to "new UIEvent()".
|
|
87
|
-
event.initUIEvent(type, true, true, window, 0);
|
|
88
|
-
// Most of the browsers don't have a "initTouchEvent" method that can be used to define
|
|
89
|
-
// the touch details.
|
|
90
|
-
defineReadonlyEventProperty(event, 'touches', [touchDetails]);
|
|
91
|
-
defineReadonlyEventProperty(event, 'targetTouches', [touchDetails]);
|
|
92
|
-
defineReadonlyEventProperty(event, 'changedTouches', [touchDetails]);
|
|
93
|
-
return event;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Creates a keyboard event with the specified key and modifiers.
|
|
97
|
-
* @docs-private
|
|
98
|
-
*/
|
|
99
|
-
export function createKeyboardEvent(type, keyCode = 0, key = '', modifiers = {}) {
|
|
100
|
-
return new KeyboardEvent(type, {
|
|
101
|
-
bubbles: true,
|
|
102
|
-
cancelable: true,
|
|
103
|
-
composed: true, // Required for shadow DOM events.
|
|
104
|
-
view: window,
|
|
105
|
-
keyCode: keyCode,
|
|
106
|
-
key: key,
|
|
107
|
-
shiftKey: modifiers.shift,
|
|
108
|
-
metaKey: modifiers.meta,
|
|
109
|
-
altKey: modifiers.alt,
|
|
110
|
-
ctrlKey: modifiers.control
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Creates a fake event object with any desired event type.
|
|
115
|
-
* @docs-private
|
|
116
|
-
*/
|
|
117
|
-
export function createFakeEvent(type, bubbles = false, cancelable = true, composed = true) {
|
|
118
|
-
return new Event(type, { bubbles, cancelable, composed });
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Defines a readonly property on the given event object. Readonly properties on an event object
|
|
122
|
-
* are always set as configurable as that matches default readonly properties for DOM event objects.
|
|
123
|
-
*/
|
|
124
|
-
function defineReadonlyEventProperty(event, propertyName, value) {
|
|
125
|
-
Object.defineProperty(event, propertyName, { get: () => value, configurable: true });
|
|
126
|
-
}
|
|
127
|
-
export function createModModifierKeys() {
|
|
128
|
-
const modifiers = IS_MAC ? { meta: true } : { control: true };
|
|
129
|
-
return modifiers;
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtb2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3Rlc3RpbmcvZmFrZS1ldmVudHMvZXZlbnQtb2JqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHckQsOENBQThDO0FBQzlDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztBQUVsQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLElBQVksRUFDWixPQUFPLEdBQUcsQ0FBQyxFQUNYLE9BQU8sR0FBRyxDQUFDLEVBQ1gsT0FBTyxHQUFHLENBQUMsRUFDWCxPQUFPLEdBQUcsQ0FBQyxFQUNYLE1BQU0sR0FBRyxDQUFDLEVBQ1YsWUFBMEIsRUFBRTtJQUU1QixnRkFBZ0Y7SUFDaEYsOEVBQThFO0lBQzlFLCtFQUErRTtJQUMvRSxnRUFBZ0U7SUFDaEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUV4QixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsT0FBTyxFQUFFLElBQUk7UUFDYixVQUFVLEVBQUUsSUFBSTtRQUNoQixRQUFRLEVBQUUsSUFBSSxFQUFFLGtDQUFrQztRQUNsRCxJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxDQUFDO1FBQ1QsYUFBYSxFQUFFLElBQUk7UUFDbkIsT0FBTztRQUNQLE9BQU87UUFDUCxPQUFPO1FBQ1AsT0FBTztRQUNQLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztRQUMxQixNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUc7UUFDckIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLO1FBQ3pCLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN2QixNQUFNLEVBQUUs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TyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ3ZCLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRztRQUNyQixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87S0FDN0IsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUM3RixPQUFPLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxLQUFZLEVBQUUsWUFBb0IsRUFBRSxLQUFVO0lBQy9FLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekYsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUI7SUFDakMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJU19NQUMgfSBmcm9tICcuLi8uLi91dGlscy9kb20vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgTW9kaWZpZXJLZXlzIH0gZnJvbSAnLi4vdGVzdC1lbGVtZW50JztcblxuLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcyBmb3IgZXZlbnRzLiAqL1xubGV0IHVuaXF1ZUlkcyA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJyb3dzZXIgTW91c2VFdmVudCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vdXNlRXZlbnQoXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGNsaWVudFggPSAwLFxuICAgIGNsaWVudFkgPSAwLFxuICAgIG9mZnNldFggPSAxLFxuICAgIG9mZnNldFkgPSAxLFxuICAgIGJ1dHRvbiA9IDAsXG4gICAgbW9kaWZpZXJzOiBNb2RpZmllcktleXMgPSB7fVxuKSB7XG4gICAgLy8gTm90ZTogV2UgY2Fubm90IGRldGVybWluZSB0aGUgcG9zaXRpb24gb2YgdGhlIG1vdXNlIGV2ZW50IGJhc2VkIG9uIHRoZSBzY3JlZW5cbiAgICAvLyBiZWNhdXNlIHRoZSBkaW1lbnNpb25zIGFuZCBwb3NpdGlvbiBvZiB0aGUgYnJvd3NlciB3aW5kb3cgYXJlIG5vdCBhdmFpbGFibGVcbiAgICAvLyBUbyBwcm92aWRlIHJlYXNvbmFibGUgYHNjcmVlblhgIGFuZCBgc2NyZWVuWWAgY29vcmRpbmF0ZXMsIHdlIHNpbXBseSB1c2UgdGhlXG4gICAgLy8gY2xpZW50IGNvb3JkaW5hdGVzIGFzIGlmIHRoZSBicm93c2VyIGlzIG9wZW5lZCBpbiBmdWxsc2NyZWVuLlxuICAgIGNvbnN0IHNjcmVlblggPSBjbGllbnRYO1xuICAgIGNvbnN0IHNjcmVlblkgPSBjbGllbnRZO1xuXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0eXBlLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLCAvLyBSZXF1aXJlZCBmb3Igc2hhZG93IERPTSBldmVudHMuXG4gICAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgICAgZGV0YWlsOiAwLFxuICAgICAgICByZWxhdGVkVGFyZ2V0OiBudWxsLFxuICAgICAgICBzY3JlZW5YLFxuICAgICAgICBzY3JlZW5ZLFxuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZLFxuICAgICAgICBjdHJsS2V5OiBtb2RpZmllcnMuY29udHJvbCxcbiAgICAgICAgYWx0S2V5OiBtb2RpZmllcnMuYWx0LFxuICAgICAgICBzaGlmdEtleTogbW9kaWZpZXJzLnNoaWZ0LFxuICAgICAgICBtZXRhS2V5OiBtb2RpZmllcnMubWV0YSxcbiAgICAgICAgYnV0dG9uOiBidXR0b24sXG4gICAgICAgIGJ1dHRvbnM6IDFcbiAgICB9KTtcblxuICAgIC8vIFRoZSBgTW91c2VFdmVudGAgY29uc3RydWN0b3IgZG9lc24ndCBhbGxvdyB1cyB0byBwYXNzIHRoZXNlIHByb3BlcnRpZXMgaW50byB0aGUgY29uc3RydWN0b3IuXG4gICAgLy8gT3ZlcnJpZGUgdGhlbSB0byBgMWAsIGJlY2F1c2UgdGhleSdyZSB1c2VkIGZvciBmYWtlIHNjcmVlbiByZWFkZXIgZXZlbnQgZGV0ZWN0aW9uLlxuICAgIGlmIChvZmZzZXRYICE9IG51bGwpIHtcbiAgICAgICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAnb2Zmc2V0WCcsIG9mZnNldFgpO1xuICAgIH1cblxuICAgIGlmIChvZmZzZXRZICE9IG51bGwpIHtcbiAgICAgICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAnb2Zmc2V0WScsIG9mZnNldFkpO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJvd3NlciBgUG9pbnRlckV2ZW50YCB3aXRoIHRoZSBzcGVjaWZpZWQgb3B0aW9ucy4gUG9pbnRlciBldmVudHNcbiAqIGJ5IGRlZmF1bHQgd2lsbCBhcHBlYXIgYXMgaWYgdGhleSBhcmUgdGhlIHByaW1hcnkgcG9pbnRlciBvZiB0aGVpciB0eXBlLlxuICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3BvaW50ZXJldmVudHMyLyNkb20tcG9pbnRlcmV2ZW50LWlzcHJpbWFyeS5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgaWYgcG9pbnRlciBldmVudHMgZm9yIGEgbXVsdGktdG91Y2ggaW50ZXJhY3Rpb24gYXJlIGNyZWF0ZWQsIHRoZSBub24tcHJpbWFyeVxuICogcG9pbnRlciB0b3VjaGVzIHdvdWxkIG5lZWQgdG8gYmUgcmVwcmVzZW50ZWQgYnkgbm9uLXByaW1hcnkgcG9pbnRlciBldmVudHMuXG4gKlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9pbnRlckV2ZW50KFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjbGllbnRYID0gMCxcbiAgICBjbGllbnRZID0gMCxcbiAgICBvZmZzZXRYPzogbnVtYmVyLFxuICAgIG9mZnNldFk/OiBudW1iZXIsXG4gICAgb3B0aW9uczogUG9pbnRlckV2ZW50SW5pdCA9IHsgaXNQcmltYXJ5OiB0cnVlIH1cbikge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IFBvaW50ZXJFdmVudCh0eXBlLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLCAvLyBSZXF1aXJlZCBmb3Igc2hhZG93IERPTSBldmVudHMuXG4gICAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WSxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuXG4gICAgaWYgKG9mZnNldFggIT0gbnVsbCkge1xuICAgICAgICBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQsICdvZmZzZXRYJywgb2Zmc2V0WCk7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldFkgIT0gbnVsbCkge1xuICAgICAgICBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQsICdvZmZzZXRZJywgb2Zmc2V0WSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBicm93c2VyIFRvdWNoRXZlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIHBvaW50ZXIgY29vcmRpbmF0ZXMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb3VjaEV2ZW50KHR5cGU6IHN0cmluZywgcGFnZVggPSAwLCBwYWdlWSA9IDAsIGNsaWVudFggPSAwLCBjbGllbnRZID0gMCkge1xuICAgIC8vIFdlIGNhbm5vdCB1c2UgdGhlIGBUb3VjaEV2ZW50YCBvciBgVG91Y2hgIGJlY2F1c2UgRmlyZWZveCBhbmQgU2FmYXJpIGxhY2sgc3VwcG9ydC5cbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdVSUV2ZW50Jyk7XG4gICAgY29uc3QgdG91Y2hEZXRhaWxzID0geyBwYWdlWCwgcGFnZVksIGNsaWVudFgsIGNsaWVudFksIGlkZW50aWZpZXI6IHVuaXF1ZUlkcysrIH07XG5cbiAgICAvLyBUUzMuNiByZW1vdmVzIHRoZSBpbml0VUlFdmVudCBtZXRob2QgYW5kIHN1Z2dlc3RzIHBvcnRpbmcgdG8gXCJuZXcgVUlFdmVudCgpXCIuXG4gICAgKGV2ZW50IGFzIGFueSkuaW5pdFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwKTtcblxuICAgIC8vIE1vc3Qgb2YgdGhlIGJyb3dzZXJzIGRvbid0IGhhdmUgYSBcImluaXRUb3VjaEV2ZW50XCIgbWV0aG9kIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lXG4gICAgLy8gdGhlIHRvdWNoIGRldGFpbHMuXG4gICAgZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50LCAndG91Y2hlcycsIFt0b3VjaERldGFpbHNdKTtcbiAgICBkZWZpbmVSZWFkb25seUV2ZW50UHJvcGVydHkoZXZlbnQsICd0YXJnZXRUb3VjaGVzJywgW3RvdWNoRGV0YWlsc10pO1xuICAgIGRlZmluZVJlYWRvbmx5RXZlbnRQcm9wZXJ0eShldmVudCwgJ2NoYW5nZWRUb3VjaGVzJywgW3RvdWNoRGV0YWlsc10pO1xuXG4gICAgcmV0dXJuIGV2ZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBrZXlib2FyZCBldmVudCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFuZCBtb2RpZmllcnMuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVLZXlib2FyZEV2ZW50KHR5cGU6IHN0cmluZywga2V5Q29kZTogbnVtYmVyID0gMCwga2V5OiBzdHJpbmcgPSAnJywgbW9kaWZpZXJzOiBNb2RpZmllcktleXMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgS2V5Ym9hcmRFdmVudCh0eXBlLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLCAvLyBSZXF1aXJlZCBmb3Igc2hhZG93IERPTSBldmVudHMuXG4gICAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgICAga2V5Q29kZToga2V5Q29kZSxcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIHNoaWZ0S2V5OiBtb2RpZmllcnMuc2hpZnQsXG4gICAgICAgIG1ldGFLZXk6IG1vZGlmaWVycy5tZXRhLFxuICAgICAgICBhbHRLZXk6IG1vZGlmaWVycy5hbHQsXG4gICAgICAgIGN0cmxLZXk6IG1vZGlmaWVycy5jb250cm9sXG4gICAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZha2UgZXZlbnQgb2JqZWN0IHdpdGggYW55IGRlc2lyZWQgZXZlbnQgdHlwZS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZha2VFdmVudCh0eXBlOiBzdHJpbmcsIGJ1YmJsZXMgPSBmYWxzZSwgY2FuY2VsYWJsZSA9IHRydWUsIGNvbXBvc2VkID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgRXZlbnQodHlwZSwgeyBidWJibGVzLCBjYW5jZWxhYmxlLCBjb21wb3NlZCB9KTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgcmVhZG9ubHkgcHJvcGVydHkgb24gdGhlIGdpdmVuIGV2ZW50IG9iamVjdC4gUmVhZG9ubHkgcHJvcGVydGllcyBvbiBhbiBldmVudCBvYmplY3RcbiAqIGFyZSBhbHdheXMgc2V0IGFzIGNvbmZpZ3VyYWJsZSBhcyB0aGF0IG1hdGNoZXMgZGVmYXVsdCByZWFkb25seSBwcm9wZXJ0aWVzIGZvciBET00gZXZlbnQgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gZGVmaW5lUmVhZG9ubHlFdmVudFByb3BlcnR5KGV2ZW50OiBFdmVudCwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsIHByb3BlcnR5TmFtZSwgeyBnZXQ6ICgpID0+IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2RNb2RpZmllcktleXMoKSB7XG4gICAgY29uc3QgbW9kaWZpZXJzID0gSVNfTUFDID8geyBtZXRhOiB0cnVlIH0gOiB7IGNvbnRyb2w6IHRydWUgfTtcbiAgICByZXR1cm4gbW9kaWZpZXJzO1xufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './event-objects';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90ZXN0aW5nL2Zha2UtZXZlbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2V2ZW50LW9iamVjdHMnO1xuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './core';
|
|
2
|
-
export * from './fake-events';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90ZXN0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb3JlJztcbmV4cG9ydCAqIGZyb20gJy4vZmFrZS1ldmVudHMnO1xuIl19
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdGVzdGluZy90ZXN0LWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBNb2RpZmllciBrZXlzIHRoYXQgbWF5IGJlIGhlbGQgd2hpbGUgdHlwaW5nLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RpZmllcktleXMge1xuICAgIGNvbnRyb2w/OiBib29sZWFuO1xuICAgIGFsdD86IGJvb2xlYW47XG4gICAgc2hpZnQ/OiBib29sZWFuO1xuICAgIG1ldGE/OiBib29sZWFuO1xufVxuIl19
|