@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,137 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '../interfaces/board';
|
|
2
|
-
import { getRectangleByElements } from '../utils/element';
|
|
3
|
-
import { distanceBetweenPointAndRectangle } from '../utils/math';
|
|
4
|
-
import { clampZoomLevel, clearViewportOrigination, getViewBoxCenterPoint, getViewportOrigination, initializeViewportContainer } from '../utils/viewport';
|
|
5
|
-
import { setViewport } from './viewport';
|
|
6
|
-
import { depthFirstRecursion, getRealScrollBarWidth, getSelectedElements } from '../utils';
|
|
7
|
-
import { setTheme } from './theme';
|
|
8
|
-
function updateViewport(board, origination, zoom) {
|
|
9
|
-
zoom = zoom ?? board.viewport.zoom;
|
|
10
|
-
setViewport(board, {
|
|
11
|
-
...board.viewport,
|
|
12
|
-
zoom,
|
|
13
|
-
origination
|
|
14
|
-
});
|
|
15
|
-
clearViewportOrigination(board);
|
|
16
|
-
}
|
|
17
|
-
function updateZoom(board, newZoom, center) {
|
|
18
|
-
newZoom = clampZoomLevel(newZoom);
|
|
19
|
-
const nativeElement = PlaitBoard.getBoardContainer(board);
|
|
20
|
-
const nativeElementRect = nativeElement.getBoundingClientRect();
|
|
21
|
-
const boardContainerRect = PlaitBoard.getBoardContainer(board).getBoundingClientRect();
|
|
22
|
-
let focusPoint = [boardContainerRect.width / 2, boardContainerRect.height / 2];
|
|
23
|
-
if (center && distanceBetweenPointAndRectangle(center[0], center[1], nativeElementRect) === 0) {
|
|
24
|
-
focusPoint = [center[0] - nativeElementRect.x, center[1] - nativeElementRect.y];
|
|
25
|
-
}
|
|
26
|
-
const zoom = board.viewport.zoom;
|
|
27
|
-
const origination = getViewportOrigination(board);
|
|
28
|
-
const centerX = origination[0] + focusPoint[0] / zoom;
|
|
29
|
-
const centerY = origination[1] + focusPoint[1] / zoom;
|
|
30
|
-
const newOrigination = [centerX - focusPoint[0] / newZoom, centerY - focusPoint[1] / newZoom];
|
|
31
|
-
updateViewport(board, newOrigination, newZoom);
|
|
32
|
-
}
|
|
33
|
-
function fitViewport(board) {
|
|
34
|
-
let scrollBarWidth = getRealScrollBarWidth(board);
|
|
35
|
-
const boardContainerRect = PlaitBoard.getBoardContainer(board).getBoundingClientRect();
|
|
36
|
-
const elementHostBox = getRectangleByElements(board, board.children, true);
|
|
37
|
-
const zoom = board.viewport.zoom;
|
|
38
|
-
const autoFitPadding = 16;
|
|
39
|
-
const viewportWidth = boardContainerRect.width - 2 * autoFitPadding;
|
|
40
|
-
const viewportHeight = boardContainerRect.height - 2 * autoFitPadding;
|
|
41
|
-
let newZoom = zoom;
|
|
42
|
-
if (viewportWidth < elementHostBox.width || viewportHeight < elementHostBox.height) {
|
|
43
|
-
newZoom = Math.min(viewportWidth / elementHostBox.width, viewportHeight / elementHostBox.height);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
newZoom = 1;
|
|
47
|
-
}
|
|
48
|
-
const centerPoint = getViewBoxCenterPoint(board);
|
|
49
|
-
const newOrigination = [
|
|
50
|
-
centerPoint[0] - boardContainerRect.width / 2 / newZoom + scrollBarWidth / 2 / zoom,
|
|
51
|
-
centerPoint[1] - boardContainerRect.height / 2 / newZoom + scrollBarWidth / 2 / zoom
|
|
52
|
-
];
|
|
53
|
-
updateViewport(board, newOrigination, newZoom);
|
|
54
|
-
}
|
|
55
|
-
function fitViewportWidth(board, options) {
|
|
56
|
-
let scrollBarWidth = getRealScrollBarWidth(board);
|
|
57
|
-
const boardContainer = PlaitBoard.getBoardContainer(board);
|
|
58
|
-
const boardContainerRectangle = boardContainer.getBoundingClientRect();
|
|
59
|
-
let finalWidth = 0;
|
|
60
|
-
if (options.maxWidth) {
|
|
61
|
-
finalWidth = options.maxWidth;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
finalWidth = boardContainerRectangle.width;
|
|
65
|
-
}
|
|
66
|
-
const elementHostBox = getRectangleByElements(board, board.children, true);
|
|
67
|
-
const contentWidth = finalWidth - 2 * options.autoFitPadding;
|
|
68
|
-
let newZoom = 0;
|
|
69
|
-
if (contentWidth < elementHostBox.width) {
|
|
70
|
-
newZoom = Math.min(contentWidth / elementHostBox.width);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
newZoom = 1;
|
|
74
|
-
}
|
|
75
|
-
let finalHeight = elementHostBox.height * newZoom + 2 * options.autoFitPadding;
|
|
76
|
-
if (finalHeight > options.limitHeight) {
|
|
77
|
-
const containerEl = boardContainer.closest(`.${options.containerClass}`);
|
|
78
|
-
containerEl.style.height = `${finalHeight}px`;
|
|
79
|
-
initializeViewportContainer(board);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
finalHeight = options.limitHeight;
|
|
83
|
-
}
|
|
84
|
-
const centerX = elementHostBox.x + elementHostBox.width / 2;
|
|
85
|
-
const centerY = elementHostBox.y + elementHostBox.height / 2;
|
|
86
|
-
const newOrigination = [
|
|
87
|
-
centerX - finalWidth / 2 / newZoom + scrollBarWidth / 2 / newZoom,
|
|
88
|
-
centerY - finalHeight / 2 / newZoom + scrollBarWidth / 2 / newZoom
|
|
89
|
-
];
|
|
90
|
-
updateViewport(board, newOrigination, newZoom);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* apply theme to every element (remove element custom properties)
|
|
94
|
-
* invoke applyThemeColor
|
|
95
|
-
*/
|
|
96
|
-
function updateThemeColor(board, mode) {
|
|
97
|
-
mode = mode ?? board.theme.themeColorMode;
|
|
98
|
-
setTheme(board, { themeColorMode: mode });
|
|
99
|
-
depthFirstRecursion(board, element => {
|
|
100
|
-
board.applyTheme(element);
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
const updatePointerType = (board, pointer) => {
|
|
104
|
-
if (board.pointer === pointer)
|
|
105
|
-
return;
|
|
106
|
-
board.pointer = pointer;
|
|
107
|
-
};
|
|
108
|
-
function moveToCenter(board, centerPoint) {
|
|
109
|
-
const plaitElement = getSelectedElements(board)?.[0];
|
|
110
|
-
if (plaitElement) {
|
|
111
|
-
const boardContainerRect = PlaitBoard.getBoardContainer(board).getBoundingClientRect();
|
|
112
|
-
const scrollBarWidth = getRealScrollBarWidth(board);
|
|
113
|
-
const oldCenterPoint = getViewBoxCenterPoint(board);
|
|
114
|
-
const left = centerPoint[0] - oldCenterPoint[0];
|
|
115
|
-
const top = centerPoint[1] - oldCenterPoint[1];
|
|
116
|
-
const zoom = board.viewport.zoom;
|
|
117
|
-
const origination = [
|
|
118
|
-
left - boardContainerRect.width / 2 / zoom + scrollBarWidth / 2 / zoom,
|
|
119
|
-
top - boardContainerRect.height / 2 / zoom + scrollBarWidth / 2 / zoom
|
|
120
|
-
];
|
|
121
|
-
setViewport(board, {
|
|
122
|
-
...board.viewport,
|
|
123
|
-
origination
|
|
124
|
-
});
|
|
125
|
-
clearViewportOrigination(board);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
export const BoardTransforms = {
|
|
129
|
-
updatePointerType,
|
|
130
|
-
updateViewport,
|
|
131
|
-
fitViewport,
|
|
132
|
-
updateZoom,
|
|
133
|
-
updateThemeColor,
|
|
134
|
-
fitViewportWidth,
|
|
135
|
-
moveToCenter
|
|
136
|
-
};
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNILGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSW5DLFNBQVMsY0FBYyxDQUFDLEtBQWlCLEVBQUUsV0FBa0IsRUFBRSxJQUFhO0lBQ3hFLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUNmLEdBQUcsS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSTtRQUNKLFdBQVc7S0FDZCxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFlLEVBQUUsTUFBYztJQUNsRSxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWxDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2hFLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdkYsSUFBSSxVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUUvRSxJQUFJLE1BQU0sSUFBSSxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUYsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2pDLE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLFdBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLFdBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3ZELE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQVUsQ0FBQztJQUN2RyxjQUFjLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBaUI7SUFDbEMsSUFBSSxjQUFjLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbEQsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN2RixNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNqQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDMUIsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDcEUsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUM7SUFFdEUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ25CLElBQUksYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLElBQUksY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRixPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JHLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsTUFBTSxjQUFjLEdBQUc7UUFDbkIsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxHQUFHLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSTtRQUNuRixXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLEdBQUcsY0FBYyxHQUFHLENBQUMsR0FBRyxJQUFJO0tBQzlFLENBQUM7SUFDWCxjQUFjLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFpQixFQUFFLE9BQTJCO0lBQ3BFLElBQUksY0FBYyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWxELE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRXZFLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuQixVQUFVLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO1NBQU0sQ0FBQztRQUNKLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNFLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUM3RCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDaEIsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUMvRSxJQUFJLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBZ0IsQ0FBQztRQUN4RixXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLFdBQVcsSUFBSSxDQUFDO1FBQzlDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxDQUFDO1FBQ0osV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDNUQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3RCxNQUFNLGNBQWMsR0FBRztRQUNuQixPQUFPLEdBQUcsVUFBVSxHQUFHLENBQUMsR0FBRyxPQUFPLEdBQUcsY0FBYyxHQUFHLENBQUMsR0FBRyxPQUFPO1FBQ2pFLE9BQU8sR0FBRyxXQUFXLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxjQUFjLEdBQUcsQ0FBQyxHQUFHLE9BQU87S0FDNUQsQ0FBQztJQUNYLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsSUFBb0I7SUFDN0QsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUMxQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUMsbUJBQW1CLENBQUUsS0FBaUMsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUM5RCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0saUJBQWlCLEdBQUcsQ0FBc0MsS0FBaUIsRUFBRSxPQUFVLEVBQUUsRUFBRTtJQUM3RixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTztRQUFFLE9BQU87SUFDdEMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsU0FBUyxZQUFZLENBQUMsS0FBaUIsRUFBRSxXQUFrQjtJQUN2RCxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksWUFBWSxFQUFFLENBQUM7UUFDZixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3ZGLE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUVqQyxNQUFNLFdBQVcsR0FBRztZQUNoQixJQUFJLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsY0FBYyxHQUFHLENBQUMsR0FBRyxJQUFJO1lBQ3RFLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUk7U0FDaEUsQ0FBQztRQUVYLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDZixHQUFHLEtBQUssQ0FBQyxRQUFRO1lBQ2pCLFdBQVc7U0FDZCxDQUFDLENBQUM7UUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVc7SUFDWCxVQUFVO0lBQ1YsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixZQUFZO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lQ29sb3JNb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aGVtZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL2VsZW1lbnQnO1xuaW1wb3J0IHsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUgfSBmcm9tICcuLi91dGlscy9tYXRoJztcbmltcG9ydCB7XG4gICAgY2xhbXBab29tTGV2ZWwsXG4gICAgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uLFxuICAgIGdldFZpZXdCb3hDZW50ZXJQb2ludCxcbiAgICBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uLFxuICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lclxufSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyBzZXRWaWV3cG9ydCB9IGZyb20gJy4vdmlld3BvcnQnO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiwgZ2V0UmVhbFNjcm9sbEJhcldpZHRoLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnLi90aGVtZSc7XG5pbXBvcnQgeyBGaXRWaWV3cG9ydE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0JztcbmltcG9ydCB7IFBsYWl0UG9pbnRlclR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50ZXInO1xuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChib2FyZDogUGxhaXRCb2FyZCwgb3JpZ2luYXRpb246IFBvaW50LCB6b29tPzogbnVtYmVyKSB7XG4gICAgem9vbSA9IHpvb20gPz8gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBzZXRWaWV3cG9ydChib2FyZCwge1xuICAgICAgICAuLi5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgem9vbSxcbiAgICAgICAgb3JpZ2luYXRpb25cbiAgICB9KTtcbiAgICBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVab29tKGJvYXJkOiBQbGFpdEJvYXJkLCBuZXdab29tOiBudW1iZXIsIGNlbnRlcj86IFBvaW50KSB7XG4gICAgbmV3Wm9vbSA9IGNsYW1wWm9vbUxldmVsKG5ld1pvb20pO1xuXG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRSZWN0ID0gbmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBsZXQgZm9jdXNQb2ludCA9IFtib2FyZENvbnRhaW5lclJlY3Qud2lkdGggLyAyLCBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMl07XG5cbiAgICBpZiAoY2VudGVyICYmIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKGNlbnRlclswXSwgY2VudGVyWzFdLCBuYXRpdmVFbGVtZW50UmVjdCkgPT09IDApIHtcbiAgICAgICAgZm9jdXNQb2ludCA9IFtjZW50ZXJbMF0gLSBuYXRpdmVFbGVtZW50UmVjdC54LCBjZW50ZXJbMV0gLSBuYXRpdmVFbGVtZW50UmVjdC55XTtcbiAgICB9XG5cbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBvcmlnaW5hdGlvbiA9IGdldFZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xuICAgIGNvbnN0IGNlbnRlclggPSBvcmlnaW5hdGlvbiFbMF0gKyBmb2N1c1BvaW50WzBdIC8gem9vbTtcbiAgICBjb25zdCBjZW50ZXJZID0gb3JpZ2luYXRpb24hWzFdICsgZm9jdXNQb2ludFsxXSAvIHpvb207XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbY2VudGVyWCAtIGZvY3VzUG9pbnRbMF0gLyBuZXdab29tLCBjZW50ZXJZIC0gZm9jdXNQb2ludFsxXSAvIG5ld1pvb21dIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbmZ1bmN0aW9uIGZpdFZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgbGV0IHNjcm9sbEJhcldpZHRoID0gZ2V0UmVhbFNjcm9sbEJhcldpZHRoKGJvYXJkKTtcblxuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsZW1lbnRIb3N0Qm94ID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IGF1dG9GaXRQYWRkaW5nID0gMTY7XG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGJvYXJkQ29udGFpbmVyUmVjdC53aWR0aCAtIDIgKiBhdXRvRml0UGFkZGluZztcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IGJvYXJkQ29udGFpbmVyUmVjdC5oZWlnaHQgLSAyICogYXV0b0ZpdFBhZGRpbmc7XG5cbiAgICBsZXQgbmV3Wm9vbSA9IHpvb207XG4gICAgaWYgKHZpZXdwb3J0V2lkdGggPCBlbGVtZW50SG9zdEJveC53aWR0aCB8fCB2aWV3cG9ydEhlaWdodCA8IGVsZW1lbnRIb3N0Qm94LmhlaWdodCkge1xuICAgICAgICBuZXdab29tID0gTWF0aC5taW4odmlld3BvcnRXaWR0aCAvIGVsZW1lbnRIb3N0Qm94LndpZHRoLCB2aWV3cG9ydEhlaWdodCAvIGVsZW1lbnRIb3N0Qm94LmhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Wm9vbSA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgY2VudGVyUG9pbnQgPSBnZXRWaWV3Qm94Q2VudGVyUG9pbnQoYm9hcmQpO1xuICAgIGNvbnN0IG5ld09yaWdpbmF0aW9uID0gW1xuICAgICAgICBjZW50ZXJQb2ludFswXSAtIGJvYXJkQ29udGFpbmVyUmVjdC53aWR0aCAvIDIgLyBuZXdab29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gem9vbSxcbiAgICAgICAgY2VudGVyUG9pbnRbMV0gLSBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyB6b29tXG4gICAgXSBhcyBQb2ludDtcbiAgICB1cGRhdGVWaWV3cG9ydChib2FyZCwgbmV3T3JpZ2luYXRpb24sIG5ld1pvb20pO1xufVxuXG5mdW5jdGlvbiBmaXRWaWV3cG9ydFdpZHRoKGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zOiBGaXRWaWV3cG9ydE9wdGlvbnMpIHtcbiAgICBsZXQgc2Nyb2xsQmFyV2lkdGggPSBnZXRSZWFsU2Nyb2xsQmFyV2lkdGgoYm9hcmQpO1xuXG4gICAgY29uc3QgYm9hcmRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKTtcbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3RhbmdsZSA9IGJvYXJkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgbGV0IGZpbmFsV2lkdGggPSAwO1xuICAgIGlmIChvcHRpb25zLm1heFdpZHRoKSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBvcHRpb25zLm1heFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBib2FyZENvbnRhaW5lclJlY3RhbmdsZS53aWR0aDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50SG9zdEJveCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSBmaW5hbFdpZHRoIC0gMiAqIG9wdGlvbnMuYXV0b0ZpdFBhZGRpbmc7XG4gICAgbGV0IG5ld1pvb20gPSAwO1xuICAgIGlmIChjb250ZW50V2lkdGggPCBlbGVtZW50SG9zdEJveC53aWR0aCkge1xuICAgICAgICBuZXdab29tID0gTWF0aC5taW4oY29udGVudFdpZHRoIC8gZWxlbWVudEhvc3RCb3gud2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1pvb20gPSAxO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEhlaWdodCA9IGVsZW1lbnRIb3N0Qm94LmhlaWdodCAqIG5ld1pvb20gKyAyICogb3B0aW9ucy5hdXRvRml0UGFkZGluZztcbiAgICBpZiAoZmluYWxIZWlnaHQgPiBvcHRpb25zLmxpbWl0SGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckVsID0gYm9hcmRDb250YWluZXIuY2xvc2VzdChgLiR7b3B0aW9ucy5jb250YWluZXJDbGFzc31gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29udGFpbmVyRWwuc3R5bGUuaGVpZ2h0ID0gYCR7ZmluYWxIZWlnaHR9cHhgO1xuICAgICAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIoYm9hcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsSGVpZ2h0ID0gb3B0aW9ucy5saW1pdEhlaWdodDtcbiAgICB9XG5cbiAgICBjb25zdCBjZW50ZXJYID0gZWxlbWVudEhvc3RCb3gueCArIGVsZW1lbnRIb3N0Qm94LndpZHRoIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gZWxlbWVudEhvc3RCb3gueSArIGVsZW1lbnRIb3N0Qm94LmhlaWdodCAvIDI7XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbXG4gICAgICAgIGNlbnRlclggLSBmaW5hbFdpZHRoIC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyBuZXdab29tLFxuICAgICAgICBjZW50ZXJZIC0gZmluYWxIZWlnaHQgLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIG5ld1pvb21cbiAgICBdIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbi8qKlxuICogYXBwbHkgdGhlbWUgdG8gZXZlcnkgZWxlbWVudCAocmVtb3ZlIGVsZW1lbnQgY3VzdG9tIHByb3BlcnRpZXMpXG4gKiBpbnZva2UgYXBwbHlUaGVtZUNvbG9yXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVRoZW1lQ29sb3IoYm9hcmQ6IFBsYWl0Qm9hcmQsIG1vZGU6IFRoZW1lQ29sb3JNb2RlKSB7XG4gICAgbW9kZSA9IG1vZGUgPz8gYm9hcmQudGhlbWUudGhlbWVDb2xvck1vZGU7XG4gICAgc2V0VGhlbWUoYm9hcmQsIHsgdGhlbWVDb2xvck1vZGU6IG1vZGUgfSk7XG5cbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKChib2FyZCBhcyB1bmtub3duKSBhcyBQbGFpdEVsZW1lbnQsIGVsZW1lbnQgPT4ge1xuICAgICAgICBib2FyZC5hcHBseVRoZW1lKGVsZW1lbnQpO1xuICAgIH0pO1xufVxuXG5jb25zdCB1cGRhdGVQb2ludGVyVHlwZSA9IDxUIGV4dGVuZHMgc3RyaW5nID0gUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFQpID0+IHtcbiAgICBpZiAoYm9hcmQucG9pbnRlciA9PT0gcG9pbnRlcikgcmV0dXJuO1xuICAgIGJvYXJkLnBvaW50ZXIgPSBwb2ludGVyO1xufTtcblxuZnVuY3Rpb24gbW92ZVRvQ2VudGVyKGJvYXJkOiBQbGFpdEJvYXJkLCBjZW50ZXJQb2ludDogUG9pbnQpIHtcbiAgICBjb25zdCBwbGFpdEVsZW1lbnQgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKT8uWzBdO1xuICAgIGlmIChwbGFpdEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYm9hcmRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gZ2V0UmVhbFNjcm9sbEJhcldpZHRoKGJvYXJkKTtcbiAgICAgICAgY29uc3Qgb2xkQ2VudGVyUG9pbnQgPSBnZXRWaWV3Qm94Q2VudGVyUG9pbnQoYm9hcmQpO1xuICAgICAgICBjb25zdCBsZWZ0ID0gY2VudGVyUG9pbnRbMF0gLSBvbGRDZW50ZXJQb2ludFswXTtcbiAgICAgICAgY29uc3QgdG9wID0gY2VudGVyUG9pbnRbMV0gLSBvbGRDZW50ZXJQb2ludFsxXTtcbiAgICAgICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luYXRpb24gPSBbXG4gICAgICAgICAgICBsZWZ0IC0gYm9hcmRDb250YWluZXJSZWN0LndpZHRoIC8gMiAvIHpvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyB6b29tLFxuICAgICAgICAgICAgdG9wIC0gYm9hcmRDb250YWluZXJSZWN0LmhlaWdodCAvIDIgLyB6b29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gem9vbVxuICAgICAgICBdIGFzIFBvaW50O1xuXG4gICAgICAgIHNldFZpZXdwb3J0KGJvYXJkLCB7XG4gICAgICAgICAgICAuLi5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgICAgIG9yaWdpbmF0aW9uXG4gICAgICAgIH0pO1xuICAgICAgICBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEJvYXJkVHJhbnNmb3JtcyA9IHtcbiAgICB1cGRhdGVQb2ludGVyVHlwZSxcbiAgICB1cGRhdGVWaWV3cG9ydCxcbiAgICBmaXRWaWV3cG9ydCxcbiAgICB1cGRhdGVab29tLFxuICAgIHVwZGF0ZVRoZW1lQ29sb3IsXG4gICAgZml0Vmlld3BvcnRXaWR0aCxcbiAgICBtb3ZlVG9DZW50ZXJcbn07XG4iXX0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '../interfaces/board';
|
|
2
|
-
import { removeSelectedElement } from '../utils/selected-element';
|
|
3
|
-
import { removeNode } from './node';
|
|
4
|
-
export const removeElements = (board, elements) => {
|
|
5
|
-
elements
|
|
6
|
-
.map(element => {
|
|
7
|
-
const path = PlaitBoard.findPath(board, element);
|
|
8
|
-
const ref = board.pathRef(path);
|
|
9
|
-
return () => {
|
|
10
|
-
ref.current && removeNode(board, ref.current);
|
|
11
|
-
ref.unref();
|
|
12
|
-
removeSelectedElement(board, element, true);
|
|
13
|
-
};
|
|
14
|
-
})
|
|
15
|
-
.forEach(action => {
|
|
16
|
-
action();
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
export const CoreTransforms = {
|
|
20
|
-
removeElements
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3RyYW5zZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXdCLEVBQUUsRUFBRTtJQUMxRSxRQUFRO1NBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1gsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxPQUFPLEdBQUcsRUFBRTtZQUNSLEdBQUcsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1oscUJBQXFCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7U0FDRCxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDZCxNQUFNLEVBQUUsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLGNBQWM7Q0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyByZW1vdmVTZWxlY3RlZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZC1lbGVtZW50JztcbmltcG9ydCB7IHJlbW92ZU5vZGUgfSBmcm9tICcuL25vZGUnO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGVsZW1lbnRzXG4gICAgICAgIC5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCByZWYgPSBib2FyZC5wYXRoUmVmKHBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICByZWYuY3VycmVudCAmJiByZW1vdmVOb2RlKGJvYXJkLCByZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgcmVmLnVucmVmKCk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBlbGVtZW50LCB0cnVlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICAgICAgICBhY3Rpb24oKTtcbiAgICAgICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgQ29yZVRyYW5zZm9ybXMgPSB7XG4gICAgcmVtb3ZlRWxlbWVudHNcbn07XG4iXX0=
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { createDraft, finishDraft, isDraft } from 'immer';
|
|
2
|
-
import { Viewport } from '../interfaces/viewport';
|
|
3
|
-
import { PlaitNode } from '../interfaces/node';
|
|
4
|
-
import { Path } from '../interfaces/path';
|
|
5
|
-
const applyToDraft = (board, selection, viewport, theme, op) => {
|
|
6
|
-
switch (op.type) {
|
|
7
|
-
case 'insert_node': {
|
|
8
|
-
const { path, node } = op;
|
|
9
|
-
const parent = PlaitNode.parent(board, path);
|
|
10
|
-
const index = path[path.length - 1];
|
|
11
|
-
if (!parent.children || index > parent.children.length) {
|
|
12
|
-
throw new Error(`Cannot apply an "insert_node" operation at path [${path}] because the destination is past the end of the node.`);
|
|
13
|
-
}
|
|
14
|
-
parent.children.splice(index, 0, node);
|
|
15
|
-
break;
|
|
16
|
-
}
|
|
17
|
-
case 'remove_node': {
|
|
18
|
-
const { path } = op;
|
|
19
|
-
const parent = PlaitNode.parent(board, path);
|
|
20
|
-
const index = path[path.length - 1];
|
|
21
|
-
if (!parent.children || index > parent.children.length) {
|
|
22
|
-
throw new Error(`Cannot apply an "insert_node" operation at path [${path}] because the destination is past the end of the node.`);
|
|
23
|
-
}
|
|
24
|
-
parent.children.splice(index, 1);
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
case 'move_node': {
|
|
28
|
-
const { path, newPath } = op;
|
|
29
|
-
if (Path.isAncestor(path, newPath)) {
|
|
30
|
-
throw new Error(`Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`);
|
|
31
|
-
}
|
|
32
|
-
const node = PlaitNode.get(board, path);
|
|
33
|
-
const parent = PlaitNode.parent(board, path);
|
|
34
|
-
const index = path[path.length - 1];
|
|
35
|
-
// This is tricky, but since the `path` and `newPath` both refer to
|
|
36
|
-
// the same snapshot in time, there's a mismatch. After either
|
|
37
|
-
// removing the original position, the second step's path can be out
|
|
38
|
-
// of date. So instead of using the `op.newPath` directly, we
|
|
39
|
-
// transform `op.path` to ascertain what the `newPath` would be after
|
|
40
|
-
// the operation was applied.
|
|
41
|
-
parent.children?.splice(index, 1);
|
|
42
|
-
const truePath = Path.transform(path, op);
|
|
43
|
-
const newParent = PlaitNode.get(board, Path.parent(truePath));
|
|
44
|
-
const newIndex = truePath[truePath.length - 1];
|
|
45
|
-
newParent.children?.splice(newIndex, 0, node);
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
case 'set_node': {
|
|
49
|
-
const { path, properties, newProperties } = op;
|
|
50
|
-
if (path.length === 0) {
|
|
51
|
-
throw new Error(`Cannot set properties on the root node!`);
|
|
52
|
-
}
|
|
53
|
-
const node = PlaitNode.get(board, path);
|
|
54
|
-
for (const key in newProperties) {
|
|
55
|
-
const value = newProperties[key];
|
|
56
|
-
if (value == null) {
|
|
57
|
-
delete node[key];
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
node[key] = value;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// properties that were previously defined, but are now missing, must be deleted
|
|
64
|
-
for (const key in properties) {
|
|
65
|
-
if (!newProperties.hasOwnProperty(key)) {
|
|
66
|
-
delete node[key];
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
case 'set_viewport': {
|
|
72
|
-
const { newProperties } = op;
|
|
73
|
-
if (newProperties == null) {
|
|
74
|
-
viewport = newProperties;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
if (viewport == null) {
|
|
78
|
-
if (!Viewport.isViewport(newProperties)) {
|
|
79
|
-
throw new Error(`Cannot apply an incomplete "set_viewport" operation properties ${JSON.stringify(newProperties)} when there is no current viewport.`);
|
|
80
|
-
}
|
|
81
|
-
viewport = { ...newProperties };
|
|
82
|
-
}
|
|
83
|
-
for (const key in newProperties) {
|
|
84
|
-
const value = newProperties[key];
|
|
85
|
-
if (value == null) {
|
|
86
|
-
delete viewport[key];
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
viewport[key] = value;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
case 'set_selection': {
|
|
96
|
-
const { newProperties } = op;
|
|
97
|
-
if (newProperties == null) {
|
|
98
|
-
selection = newProperties;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
if (selection === null) {
|
|
102
|
-
selection = op.newProperties;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
selection = newProperties;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
case 'set_theme': {
|
|
111
|
-
const { newProperties } = op;
|
|
112
|
-
theme = newProperties;
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return { selection, viewport, theme };
|
|
117
|
-
};
|
|
118
|
-
export const GeneralTransforms = {
|
|
119
|
-
/**
|
|
120
|
-
* Transform the board by an operation.
|
|
121
|
-
*/
|
|
122
|
-
transform(board, op) {
|
|
123
|
-
board.children = createDraft(board.children);
|
|
124
|
-
let viewport = board.viewport && createDraft(board.viewport);
|
|
125
|
-
let selection = board.selection && createDraft(board.selection);
|
|
126
|
-
let theme = board.theme && createDraft(board.theme);
|
|
127
|
-
try {
|
|
128
|
-
const state = applyToDraft(board, selection, viewport, theme, op);
|
|
129
|
-
viewport = state.viewport;
|
|
130
|
-
selection = state.selection;
|
|
131
|
-
theme = state.theme;
|
|
132
|
-
}
|
|
133
|
-
finally {
|
|
134
|
-
board.children = finishDraft(board.children);
|
|
135
|
-
if (selection) {
|
|
136
|
-
board.selection = isDraft(selection) ? finishDraft(selection) : selection;
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
board.selection = null;
|
|
140
|
-
}
|
|
141
|
-
board.viewport = isDraft(viewport) ? finishDraft(viewport) : viewport;
|
|
142
|
-
board.theme = isDraft(theme) ? finishDraft(theme) : theme;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3RyYW5zZm9ybXMvZ2VuZXJhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFPMUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFNBQTJCLEVBQUUsUUFBa0IsRUFBRSxLQUFpQixFQUFFLEVBQWtCLEVBQUUsRUFBRTtJQUMvSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNqQixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDckQsTUFBTSxJQUFJLEtBQUssQ0FDWCxvREFBb0QsSUFBSSx3REFBd0QsQ0FDbkgsQ0FBQztZQUNOLENBQUM7WUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE1BQU07UUFDVixDQUFD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QUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEUsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDMUIsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEIsQ0FBQztnQkFBUyxDQUFDO1lBQ1AsS0FBSyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTdDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ1osS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLFdBQVcsQ0FBQyxTQUFTLENBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzdGLENBQUM7aUJBQU0sQ0FBQztnQkFDSixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMzQixDQUFDO1lBRUQsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFFLFdBQVcsQ0FBQyxRQUFRLENBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3BGLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5RCxDQUFDO0lBQ0wsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdE9wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3BlcmF0aW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGNyZWF0ZURyYWZ0LCBmaW5pc2hEcmFmdCwgaXNEcmFmdCB9IGZyb20gJ2ltbWVyJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydCc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBBbmNlc3RvciwgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BhdGgnO1xuaW1wb3J0IHsgUGxhaXRUaGVtZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGhlbWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYWxUcmFuc2Zvcm1zIHtcbiAgICB0cmFuc2Zvcm06IChib2FyZDogUGxhaXRCb2FyZCwgb3A6IFBsYWl0T3BlcmF0aW9uKSA9PiB2b2lkO1xufVxuXG5jb25zdCBhcHBseVRvRHJhZnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCwgdmlld3BvcnQ6IFZpZXdwb3J0LCB0aGVtZTogUGxhaXRUaGVtZSwgb3A6IFBsYWl0T3BlcmF0aW9uKSA9PiB7XG4gICAgc3dpdGNoIChvcC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2luc2VydF9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBub2RlIH0gPSBvcDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuIHx8IGluZGV4ID4gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYENhbm5vdCBhcHBseSBhbiBcImluc2VydF9ub2RlXCIgb3BlcmF0aW9uIGF0IHBhdGggWyR7cGF0aH1dIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgbm9kZS5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShpbmRleCwgMCwgbm9kZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdyZW1vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0aCB9ID0gb3A7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUucGFyZW50KGJvYXJkLCBwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICBpZiAoIXBhcmVudC5jaGlsZHJlbiB8fCBpbmRleCA+IHBhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDYW5ub3QgYXBwbHkgYW4gXCJpbnNlcnRfbm9kZVwiIG9wZXJhdGlvbiBhdCBwYXRoIFske3BhdGh9XSBiZWNhdXNlIHRoZSBkZXN0aW5hdGlvbiBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlIG5vZGUuYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ21vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0aCwgbmV3UGF0aCB9ID0gb3A7XG5cbiAgICAgICAgICAgIGlmIChQYXRoLmlzQW5jZXN0b3IocGF0aCwgbmV3UGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBtb3ZlIGEgcGF0aCBbJHtwYXRofV0gdG8gbmV3IHBhdGggWyR7bmV3UGF0aH1dIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGlzIGluc2lkZSBpdHNlbGYuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdHJpY2t5LCBidXQgc2luY2UgdGhlIGBwYXRoYCBhbmQgYG5ld1BhdGhgIGJvdGggcmVmZXIgdG9cbiAgICAgICAgICAgIC8vIHRoZSBzYW1lIHNuYXBzaG90IGluIHRpbWUsIHRoZXJlJ3MgYSBtaXNtYXRjaC4gQWZ0ZXIgZWl0aGVyXG4gICAgICAgICAgICAvLyByZW1vdmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb24sIHRoZSBzZWNvbmQgc3RlcCdzIHBhdGggY2FuIGJlIG91dFxuICAgICAgICAgICAgLy8gb2YgZGF0ZS4gU28gaW5zdGVhZCBvZiB1c2luZyB0aGUgYG9wLm5ld1BhdGhgIGRpcmVjdGx5LCB3ZVxuICAgICAgICAgICAgLy8gdHJhbnNmb3JtIGBvcC5wYXRoYCB0byBhc2NlcnRhaW4gd2hhdCB0aGUgYG5ld1BhdGhgIHdvdWxkIGJlIGFmdGVyXG4gICAgICAgICAgICAvLyB0aGUgb3BlcmF0aW9uIHdhcyBhcHBsaWVkLlxuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuPy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgY29uc3QgdHJ1ZVBhdGggPSBQYXRoLnRyYW5zZm9ybShwYXRoLCBvcCkhO1xuICAgICAgICAgICAgY29uc3QgbmV3UGFyZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wYXJlbnQodHJ1ZVBhdGgpKSBhcyBBbmNlc3RvcjtcbiAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdHJ1ZVBhdGhbdHJ1ZVBhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIG5ld1BhcmVudC5jaGlsZHJlbj8uc3BsaWNlKG5ld0luZGV4LCAwLCBub2RlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3NldF9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBwcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcblxuICAgICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IHByb3BlcnRpZXMgb24gdGhlIHJvb3Qgbm9kZSFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXdQcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZWZpbmVkLCBidXQgYXJlIG5vdyBtaXNzaW5nLCBtdXN0IGJlIGRlbGV0ZWRcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3ZpZXdwb3J0Jzoge1xuICAgICAgICAgICAgY29uc3QgeyBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0aWVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IG5ld1Byb3BlcnRpZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVmlld3BvcnQuaXNWaWV3cG9ydChuZXdQcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDYW5ub3QgYXBwbHkgYW4gaW5jb21wbGV0ZSBcInNldF92aWV3cG9ydFwiIG9wZXJhdGlvbiBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSB3aGVuIHRoZXJlIGlzIG5vIGN1cnJlbnQgdmlld3BvcnQuYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IHsgLi4ubmV3UHJvcGVydGllcyB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXdQcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2aWV3cG9ydFtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3NlbGVjdGlvbic6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmV3UHJvcGVydGllcyB9ID0gb3A7XG4gICAgICAgICAgICBpZiAobmV3UHJvcGVydGllcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gbmV3UHJvcGVydGllcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBvcC5uZXdQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IG5ld1Byb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3RoZW1lJzoge1xuICAgICAgICAgICAgY29uc3QgeyBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcbiAgICAgICAgICAgIHRoZW1lID0gbmV3UHJvcGVydGllcyBhcyBQbGFpdFRoZW1lO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgc2VsZWN0aW9uLCB2aWV3cG9ydCwgdGhlbWUgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBHZW5lcmFsVHJhbnNmb3JtczogR2VuZXJhbFRyYW5zZm9ybXMgPSB7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBib2FyZCBieSBhbiBvcGVyYXRpb24uXG4gICAgICovXG4gICAgdHJhbnNmb3JtKGJvYXJkOiBQbGFpdEJvYXJkLCBvcDogUGxhaXRPcGVyYXRpb24pOiB2b2lkIHtcbiAgICAgICAgYm9hcmQuY2hpbGRyZW4gPSBjcmVhdGVEcmFmdChib2FyZC5jaGlsZHJlbik7XG4gICAgICAgIGxldCB2aWV3cG9ydCA9IGJvYXJkLnZpZXdwb3J0ICYmIGNyZWF0ZURyYWZ0KGJvYXJkLnZpZXdwb3J0KTtcbiAgICAgICAgbGV0IHNlbGVjdGlvbiA9IGJvYXJkLnNlbGVjdGlvbiAmJiBjcmVhdGVEcmFmdChib2FyZC5zZWxlY3Rpb24pO1xuICAgICAgICBsZXQgdGhlbWUgPSBib2FyZC50aGVtZSAmJiBjcmVhdGVEcmFmdChib2FyZC50aGVtZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gYXBwbHlUb0RyYWZ0KGJvYXJkLCBzZWxlY3Rpb24sIHZpZXdwb3J0LCB0aGVtZSwgb3ApO1xuICAgICAgICAgICAgdmlld3BvcnQgPSBzdGF0ZS52aWV3cG9ydDtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgICAgICAgICAgIHRoZW1lID0gc3RhdGUudGhlbWU7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBib2FyZC5jaGlsZHJlbiA9IGZpbmlzaERyYWZ0KGJvYXJkLmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGJvYXJkLnNlbGVjdGlvbiA9IGlzRHJhZnQoc2VsZWN0aW9uKSA/IChmaW5pc2hEcmFmdChzZWxlY3Rpb24pIGFzIFNlbGVjdGlvbikgOiBzZWxlY3Rpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJvYXJkLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJvYXJkLnZpZXdwb3J0ID0gaXNEcmFmdCh2aWV3cG9ydCkgPyAoZmluaXNoRHJhZnQodmlld3BvcnQpIGFzIFZpZXdwb3J0KSA6IHZpZXdwb3J0O1xuICAgICAgICAgICAgYm9hcmQudGhlbWUgPSBpc0RyYWZ0KHRoZW1lKSA/IGZpbmlzaERyYWZ0KHRoZW1lKSA6IHRoZW1lO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '../interfaces';
|
|
2
|
-
import { getHighestSelectedGroups, getSelectedIsolatedElementsCanAddToGroup, createGroup, canAddGroup, hasSelectedElementsInSameGroup, canRemoveGroup, findElements, getElementsIndices, isIndicesContinuous, getSelectedElements, getHighestIndexOfElement, moveElementsToNewPathAfterAddGroup } from '../utils';
|
|
3
|
-
import { NodeTransforms } from './node';
|
|
4
|
-
export const addGroup = (board, elements) => {
|
|
5
|
-
const selectedGroups = getHighestSelectedGroups(board, elements);
|
|
6
|
-
const selectedIsolatedElements = getSelectedIsolatedElementsCanAddToGroup(board);
|
|
7
|
-
const highestSelectedElements = [...selectedGroups, ...selectedIsolatedElements];
|
|
8
|
-
const group = createGroup();
|
|
9
|
-
if (canAddGroup(board)) {
|
|
10
|
-
highestSelectedElements.forEach(item => {
|
|
11
|
-
const path = PlaitBoard.findPath(board, item);
|
|
12
|
-
NodeTransforms.setNode(board, { groupId: group.id }, path);
|
|
13
|
-
});
|
|
14
|
-
const selectedElements = getSelectedElements(board);
|
|
15
|
-
const highestIndexOfSelectedElement = getHighestIndexOfElement(board, selectedElements);
|
|
16
|
-
const indices = getElementsIndices(board, highestSelectedElements);
|
|
17
|
-
const isContinuous = isIndicesContinuous(indices);
|
|
18
|
-
if (!isContinuous) {
|
|
19
|
-
moveElementsToNewPathAfterAddGroup(board, selectedElements, [highestIndexOfSelectedElement - 1]);
|
|
20
|
-
}
|
|
21
|
-
if (hasSelectedElementsInSameGroup(highestSelectedElements)) {
|
|
22
|
-
const newGroupId = selectedIsolatedElements[0].groupId;
|
|
23
|
-
NodeTransforms.insertNode(board, {
|
|
24
|
-
...group,
|
|
25
|
-
groupId: newGroupId
|
|
26
|
-
}, [board.children.length]);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
NodeTransforms.insertNode(board, group, [board.children.length]);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
export const removeGroup = (board, elements) => {
|
|
34
|
-
const selectedGroups = getHighestSelectedGroups(board, elements);
|
|
35
|
-
if (canRemoveGroup(board)) {
|
|
36
|
-
selectedGroups.forEach(group => {
|
|
37
|
-
const elementsInGroup = findElements(board, {
|
|
38
|
-
match: item => item.groupId === group.id,
|
|
39
|
-
recursion: () => false
|
|
40
|
-
});
|
|
41
|
-
elementsInGroup.forEach(element => {
|
|
42
|
-
const path = PlaitBoard.findPath(board, element);
|
|
43
|
-
NodeTransforms.setNode(board, { groupId: group.groupId || undefined }, path);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
selectedGroups
|
|
47
|
-
.map(group => {
|
|
48
|
-
const groupPath = PlaitBoard.findPath(board, group);
|
|
49
|
-
const groupRef = board.pathRef(groupPath);
|
|
50
|
-
return () => {
|
|
51
|
-
groupRef.current && NodeTransforms.removeNode(board, groupRef.current);
|
|
52
|
-
groupRef.unref();
|
|
53
|
-
};
|
|
54
|
-
})
|
|
55
|
-
.forEach(action => {
|
|
56
|
-
action();
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
export const GroupTransforms = {
|
|
61
|
-
addGroup,
|
|
62
|
-
removeGroup
|
|
63
|
-
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2dyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsd0NBQXdDLEVBQ3hDLFdBQVcsRUFDWCxXQUFXLEVBQ1gsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCxZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLGtDQUFrQyxFQUNyQyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBeUIsRUFBRSxFQUFFO0lBQ3JFLE1BQU0sY0FBYyxHQUFHLHdCQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRSxNQUFNLHdCQUF3QixHQUFHLHdDQUF3QyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLHdCQUF3QixDQUFDLENBQUM7SUFDakYsTUFBTSxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7SUFDNUIsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyQix1QkFBdUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxD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LGVBQWUsR0FBRztJQUMzQixRQUFRO0lBQ1IsV0FBVztDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgZ2V0SGlnaGVzdFNlbGVjdGVkR3JvdXBzLFxuICAgIGdldFNlbGVjdGVkSXNvbGF0ZWRFbGVtZW50c0NhbkFkZFRvR3JvdXAsXG4gICAgY3JlYXRlR3JvdXAsXG4gICAgY2FuQWRkR3JvdXAsXG4gICAgaGFzU2VsZWN0ZWRFbGVtZW50c0luU2FtZUdyb3VwLFxuICAgIGNhblJlbW92ZUdyb3VwLFxuICAgIGZpbmRFbGVtZW50cyxcbiAgICBnZXRFbGVtZW50c0luZGljZXMsXG4gICAgaXNJbmRpY2VzQ29udGludW91cyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGdldEhpZ2hlc3RJbmRleE9mRWxlbWVudCxcbiAgICBtb3ZlRWxlbWVudHNUb05ld1BhdGhBZnRlckFkZEdyb3VwXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE5vZGVUcmFuc2Zvcm1zIH0gZnJvbSAnLi9ub2RlJztcblxuZXhwb3J0IGNvbnN0IGFkZEdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICBjb25zdCBzZWxlY3RlZElzb2xhdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZElzb2xhdGVkRWxlbWVudHNDYW5BZGRUb0dyb3VwKGJvYXJkKTtcbiAgICBjb25zdCBoaWdoZXN0U2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5zZWxlY3RlZEdyb3VwcywgLi4uc2VsZWN0ZWRJc29sYXRlZEVsZW1lbnRzXTtcbiAgICBjb25zdCBncm91cCA9IGNyZWF0ZUdyb3VwKCk7XG4gICAgaWYgKGNhbkFkZEdyb3VwKGJvYXJkKSkge1xuICAgICAgICBoaWdoZXN0U2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGl0ZW0pO1xuICAgICAgICAgICAgTm9kZVRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBncm91cElkOiBncm91cC5pZCB9LCBwYXRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaGlnaGVzdEluZGV4T2ZTZWxlY3RlZEVsZW1lbnQgPSBnZXRIaWdoZXN0SW5kZXhPZkVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICBjb25zdCBpbmRpY2VzID0gZ2V0RWxlbWVudHNJbmRpY2VzKGJvYXJkLCBoaWdoZXN0U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgIGNvbnN0IGlzQ29udGludW91cyA9IGlzSW5kaWNlc0NvbnRpbnVvdXMoaW5kaWNlcyk7XG4gICAgICAgIGlmICghaXNDb250aW51b3VzKSB7XG4gICAgICAgICAgICBtb3ZlRWxlbWVudHNUb05ld1BhdGhBZnRlckFkZEdyb3VwKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzLCBbaGlnaGVzdEluZGV4T2ZTZWxlY3RlZEVsZW1lbnQgLSAxXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc1NlbGVjdGVkRWxlbWVudHNJblNhbWVHcm91cChoaWdoZXN0U2VsZWN0ZWRFbGVtZW50cykpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0dyb3VwSWQgPSBzZWxlY3RlZElzb2xhdGVkRWxlbWVudHNbMF0uZ3JvdXBJZDtcbiAgICAgICAgICAgIE5vZGVUcmFuc2Zvcm1zLmluc2VydE5vZGUoXG4gICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZDogbmV3R3JvdXBJZFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBOb2RlVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBncm91cCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUdyb3VwID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBnZXRIaWdoZXN0U2VsZWN0ZWRHcm91cHMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICBpZiAoY2FuUmVtb3ZlR3JvdXAoYm9hcmQpKSB7XG4gICAgICAgIHNlbGVjdGVkR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gZmluZEVsZW1lbnRzKGJvYXJkLCB7XG4gICAgICAgICAgICAgICAgbWF0Y2g6IGl0ZW0gPT4gaXRlbS5ncm91cElkID09PSBncm91cC5pZCxcbiAgICAgICAgICAgICAgICByZWN1cnNpb246ICgpID0+IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVsZW1lbnRzSW5Hcm91cC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBOb2RlVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGdyb3VwSWQ6IGdyb3VwLmdyb3VwSWQgfHwgdW5kZWZpbmVkIH0sIHBhdGgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxlY3RlZEdyb3Vwc1xuICAgICAgICAgICAgLm1hcChncm91cCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBQYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZ3JvdXApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwUmVmID0gYm9hcmQucGF0aFJlZihncm91cFBhdGgpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwUmVmLmN1cnJlbnQgJiYgTm9kZVRyYW5zZm9ybXMucmVtb3ZlTm9kZShib2FyZCwgZ3JvdXBSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwUmVmLnVucmVmKCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgICAgICAgICAgIGFjdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBHcm91cFRyYW5zZm9ybXMge1xuICAgIGFkZEdyb3VwOiAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHZvaWQ7XG4gICAgcmVtb3ZlR3JvdXA6IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IEdyb3VwVHJhbnNmb3JtcyA9IHtcbiAgICBhZGRHcm91cCxcbiAgICByZW1vdmVHcm91cFxufTtcbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { GeneralTransforms } from './general';
|
|
2
|
-
import { GroupTransforms } from './group';
|
|
3
|
-
import { NodeTransforms } from './node';
|
|
4
|
-
import { SelectionTransforms } from './selection';
|
|
5
|
-
import { ViewportTransforms } from './viewport';
|
|
6
|
-
import { ZIndexTransforms } from './z-index';
|
|
7
|
-
export { BoardTransforms } from './board';
|
|
8
|
-
export { CoreTransforms } from './element';
|
|
9
|
-
export const Transforms = {
|
|
10
|
-
...GeneralTransforms,
|
|
11
|
-
...ViewportTransforms,
|
|
12
|
-
...SelectionTransforms,
|
|
13
|
-
...NodeTransforms,
|
|
14
|
-
...GroupTransforms,
|
|
15
|
-
...ZIndexTransforms
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FLQTtJQUNuQixHQUFHLGlCQUFpQjtJQUNwQixHQUFHLGtCQUFrQjtJQUNyQixHQUFHLG1CQUFtQjtJQUN0QixHQUFHLGNBQWM7SUFDakIsR0FBRyxlQUFlO0lBQ2xCLEdBQUcsZ0JBQWdCO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmFsVHJhbnNmb3JtcyB9IGZyb20gJy4vZ2VuZXJhbCc7XG5pbXBvcnQgeyBHcm91cFRyYW5zZm9ybXMgfSBmcm9tICcuL2dyb3VwJztcbmltcG9ydCB7IE5vZGVUcmFuc2Zvcm1zIH0gZnJvbSAnLi9ub2RlJztcbmltcG9ydCB7IFNlbGVjdGlvblRyYW5zZm9ybXMgfSBmcm9tICcuL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBWaWV3cG9ydFRyYW5zZm9ybXMgfSBmcm9tICcuL3ZpZXdwb3J0JztcbmltcG9ydCB7IFpJbmRleFRyYW5zZm9ybXMgfSBmcm9tICcuL3otaW5kZXgnO1xuXG5leHBvcnQgeyBCb2FyZFRyYW5zZm9ybXMgfSBmcm9tICcuL2JvYXJkJztcbmV4cG9ydCB7IENvcmVUcmFuc2Zvcm1zIH0gZnJvbSAnLi9lbGVtZW50JztcblxuZXhwb3J0IGNvbnN0IFRyYW5zZm9ybXM6IEdlbmVyYWxUcmFuc2Zvcm1zICZcbiAgICBWaWV3cG9ydFRyYW5zZm9ybXMgJlxuICAgIFNlbGVjdGlvblRyYW5zZm9ybXMgJlxuICAgIE5vZGVUcmFuc2Zvcm1zICZcbiAgICBHcm91cFRyYW5zZm9ybXMgJlxuICAgIFpJbmRleFRyYW5zZm9ybXMgPSB7XG4gICAgLi4uR2VuZXJhbFRyYW5zZm9ybXMsXG4gICAgLi4uVmlld3BvcnRUcmFuc2Zvcm1zLFxuICAgIC4uLlNlbGVjdGlvblRyYW5zZm9ybXMsXG4gICAgLi4uTm9kZVRyYW5zZm9ybXMsXG4gICAgLi4uR3JvdXBUcmFuc2Zvcm1zLFxuICAgIC4uLlpJbmRleFRyYW5zZm9ybXNcbn07XG4iXX0=
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { PlaitNode } from '../interfaces/node';
|
|
2
|
-
export function insertNode(board, node, path) {
|
|
3
|
-
const operation = { type: 'insert_node', node, path };
|
|
4
|
-
board.apply(operation);
|
|
5
|
-
}
|
|
6
|
-
export function setNode(board, props, path) {
|
|
7
|
-
const properties = {};
|
|
8
|
-
const newProperties = {};
|
|
9
|
-
const node = PlaitNode.get(board, path);
|
|
10
|
-
for (const k in props) {
|
|
11
|
-
if (node[k] !== props[k]) {
|
|
12
|
-
if (node.hasOwnProperty(k)) {
|
|
13
|
-
properties[k] = node[k];
|
|
14
|
-
}
|
|
15
|
-
if (props[k] != null)
|
|
16
|
-
newProperties[k] = props[k];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
const operation = { type: 'set_node', properties, newProperties, path };
|
|
20
|
-
board.apply(operation);
|
|
21
|
-
}
|
|
22
|
-
export function removeNode(board, path) {
|
|
23
|
-
const node = PlaitNode.get(board, path);
|
|
24
|
-
const operation = { type: 'remove_node', path, node };
|
|
25
|
-
board.apply(operation);
|
|
26
|
-
}
|
|
27
|
-
export function moveNode(board, path, newPath) {
|
|
28
|
-
const operation = { type: 'move_node', path, newPath };
|
|
29
|
-
board.apply(operation);
|
|
30
|
-
}
|
|
31
|
-
export const NodeTransforms = {
|
|
32
|
-
insertNode,
|
|
33
|
-
setNode,
|
|
34
|
-
removeNode,
|
|
35
|
-
moveNode
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3RyYW5zZm9ybXMvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0MsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFpQixFQUFFLElBQWUsRUFBRSxJQUFVO0lBQ3JFLE1BQU0sU0FBUyxHQUF3QixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNFLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBaUIsRUFBRSxLQUF5QixFQUFFLElBQVU7SUFDNUUsTUFBTSxVQUFVLEdBQXVCLEVBQUUsQ0FBQztJQUMxQyxNQUFNLGFBQWEsR0FBdUIsRUFBRSxDQUFDO0lBQzdDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUk7Z0JBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFxQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWlCLEVBQUUsSUFBVTtJQUNwRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLFNBQVMsR0FBd0IsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWlCLEVBQUUsSUFBVSxFQUFFLE9BQWE7SUFDakUsTUFBTSxTQUFTLEdBQXNCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBU0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQjtJQUMxQyxVQUFVO0lBQ1YsT0FBTztJQUNQLFVBQVU7SUFDVixRQUFRO0NBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluc2VydE5vZGVPcGVyYXRpb24sIE1vdmVOb2RlT3BlcmF0aW9uLCBSZW1vdmVOb2RlT3BlcmF0aW9uLCBTZXROb2RlT3BlcmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9vcGVyYXRpb24nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BhdGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Tm9kZShib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogUGxhaXROb2RlLCBwYXRoOiBQYXRoKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBJbnNlcnROb2RlT3BlcmF0aW9uID0geyB0eXBlOiAnaW5zZXJ0X25vZGUnLCBub2RlLCBwYXRoIH07XG4gICAgYm9hcmQuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIHByb3BzOiBQYXJ0aWFsPFBsYWl0Tm9kZT4sIHBhdGg6IFBhdGgpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBQYXJ0aWFsPFBsYWl0Tm9kZT4gPSB7fTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPFBsYWl0Tm9kZT4gPSB7fTtcbiAgICBjb25zdCBub2RlID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCk7XG4gICAgZm9yIChjb25zdCBrIGluIHByb3BzKSB7XG4gICAgICAgIGlmIChub2RlW2tdICE9PSBwcm9wc1trXSkge1xuICAgICAgICAgICAgaWYgKG5vZGUuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW2tdID0gbm9kZVtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wc1trXSAhPSBudWxsKSBuZXdQcm9wZXJ0aWVzW2tdID0gcHJvcHNba107XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBTZXROb2RlT3BlcmF0aW9uID0geyB0eXBlOiAnc2V0X25vZGUnLCBwcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzLCBwYXRoIH07XG4gICAgYm9hcmQuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhdGg6IFBhdGgpIHtcbiAgICBjb25zdCBub2RlID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBSZW1vdmVOb2RlT3BlcmF0aW9uID0geyB0eXBlOiAncmVtb3ZlX25vZGUnLCBwYXRoLCBub2RlIH07XG4gICAgYm9hcmQuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVOb2RlKGJvYXJkOiBQbGFpdEJvYXJkLCBwYXRoOiBQYXRoLCBuZXdQYXRoOiBQYXRoKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBNb3ZlTm9kZU9wZXJhdGlvbiA9IHsgdHlwZTogJ21vdmVfbm9kZScsIHBhdGgsIG5ld1BhdGggfTtcbiAgICBib2FyZC5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVUcmFuc2Zvcm1zIHtcbiAgICBpbnNlcnROb2RlOiAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IFBsYWl0Tm9kZSwgcGF0aDogUGF0aCkgPT4gdm9pZDtcbiAgICBzZXROb2RlOiAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IFBhcnRpYWw8UGxhaXROb2RlPiwgcGF0aDogUGF0aCkgPT4gdm9pZDtcbiAgICByZW1vdmVOb2RlOiAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhdGg6IFBhdGgpID0+IHZvaWQ7XG4gICAgbW92ZU5vZGU6IChib2FyZDogUGxhaXRCb2FyZCwgcGF0aDogUGF0aCwgbmV3UGF0aDogUGF0aCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IE5vZGVUcmFuc2Zvcm1zOiBOb2RlVHJhbnNmb3JtcyA9IHtcbiAgICBpbnNlcnROb2RlLFxuICAgIHNldE5vZGUsXG4gICAgcmVtb3ZlTm9kZSxcbiAgICBtb3ZlTm9kZVxufTtcbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { BOARD_TO_TEMPORARY_ELEMENTS } from '../utils/weak-maps';
|
|
2
|
-
import { getTemporaryRef } from '../utils';
|
|
3
|
-
export function setSelection(board, selection) {
|
|
4
|
-
const operation = { type: 'set_selection', properties: board.selection, newProperties: selection };
|
|
5
|
-
board.apply(operation);
|
|
6
|
-
}
|
|
7
|
-
export const SelectionTransforms = {
|
|
8
|
-
setSelection,
|
|
9
|
-
addSelectionWithTemporaryElements
|
|
10
|
-
};
|
|
11
|
-
export function addSelectionWithTemporaryElements(board, elements) {
|
|
12
|
-
const timeoutId = setTimeout(() => {
|
|
13
|
-
setSelection(board, { anchor: [0, 0], focus: [0, 0] });
|
|
14
|
-
}, 0);
|
|
15
|
-
let ref = getTemporaryRef(board);
|
|
16
|
-
if (ref) {
|
|
17
|
-
clearTimeout(ref.timeoutId);
|
|
18
|
-
const currentElements = ref.elements;
|
|
19
|
-
ref.elements.push(...elements.filter(element => !currentElements.includes(element)));
|
|
20
|
-
ref.timeoutId = timeoutId;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
BOARD_TO_TEMPORARY_ELEMENTS.set(board, { timeoutId, elements });
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdHJhbnNmb3Jtcy9zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUzQyxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWlCLEVBQUUsU0FBMkI7SUFDdkUsTUFBTSxTQUFTLEdBQTBCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDMUgsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBT0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXdCO0lBQ3BELFlBQVk7SUFDWixpQ0FBaUM7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxLQUFpQixFQUFFLFFBQXdCO0lBQ3pGLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDOUIsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNOLElBQUksR0FBRyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ04sWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckYsR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztTQUFNLENBQUM7UUFDSiwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXRTZWxlY3Rpb25PcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IGdldFRlbXBvcmFyeVJlZiB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlbGVjdGlvbihib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBTZXRTZWxlY3Rpb25PcGVyYXRpb24gPSB7IHR5cGU6ICdzZXRfc2VsZWN0aW9uJywgcHJvcGVydGllczogYm9hcmQuc2VsZWN0aW9uLCBuZXdQcm9wZXJ0aWVzOiBzZWxlY3Rpb24gfTtcbiAgICBib2FyZC5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvblRyYW5zZm9ybXMge1xuICAgIHNldFNlbGVjdGlvbjogKGJvYXJkOiBQbGFpdEJvYXJkLCBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwpID0+IHZvaWQ7XG4gICAgYWRkU2VsZWN0aW9uV2l0aFRlbXBvcmFyeUVsZW1lbnRzOiAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IFNlbGVjdGlvblRyYW5zZm9ybXM6IFNlbGVjdGlvblRyYW5zZm9ybXMgPSB7XG4gICAgc2V0U2VsZWN0aW9uLFxuICAgIGFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50c1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSB7XG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IFswLCAwXSwgZm9jdXM6IFswLCAwXSB9KTtcbiAgICB9LCAwKTtcbiAgICBsZXQgcmVmID0gZ2V0VGVtcG9yYXJ5UmVmKGJvYXJkKTtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChyZWYudGltZW91dElkKTtcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRzID0gcmVmLmVsZW1lbnRzO1xuICAgICAgICByZWYuZWxlbWVudHMucHVzaCguLi5lbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiAhY3VycmVudEVsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSk7XG4gICAgICAgIHJlZi50aW1lb3V0SWQgPSB0aW1lb3V0SWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLnNldChib2FyZCwgeyB0aW1lb3V0SWQsIGVsZW1lbnRzIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export function setTheme(board, themeColorMode) {
|
|
2
|
-
const operation = { type: 'set_theme', properties: board.theme, newProperties: themeColorMode };
|
|
3
|
-
board.apply(operation);
|
|
4
|
-
}
|
|
5
|
-
export const ViewportTransforms = {
|
|
6
|
-
setTheme
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL3RoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBaUIsRUFBRSxjQUEwQjtJQUNsRSxNQUFNLFNBQVMsR0FBc0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUNuSCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFNRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBb0I7SUFDL0MsUUFBUTtDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXRUaGVtZU9wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3BlcmF0aW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0VGhlbWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRoZW1lKGJvYXJkOiBQbGFpdEJvYXJkLCB0aGVtZUNvbG9yTW9kZTogUGxhaXRUaGVtZSkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogU2V0VGhlbWVPcGVyYXRpb24gPSB7IHR5cGU6ICdzZXRfdGhlbWUnLCBwcm9wZXJ0aWVzOiBib2FyZC50aGVtZSwgbmV3UHJvcGVydGllczogdGhlbWVDb2xvck1vZGUgfTtcbiAgICBib2FyZC5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lVHJhbnNmb3JtcyB7XG4gICAgc2V0VGhlbWU6IChib2FyZDogUGxhaXRCb2FyZCwgdGhlbWVDb2xvck1vZGU6IFBsYWl0VGhlbWUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBWaWV3cG9ydFRyYW5zZm9ybXM6IFRoZW1lVHJhbnNmb3JtcyA9IHtcbiAgICBzZXRUaGVtZVxufTtcbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export function setViewport(board, viewport) {
|
|
2
|
-
const operation = { type: 'set_viewport', properties: board.viewport, newProperties: viewport };
|
|
3
|
-
board.apply(operation);
|
|
4
|
-
}
|
|
5
|
-
export const ViewportTransforms = {
|
|
6
|
-
setViewport
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL3ZpZXdwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBaUIsRUFBRSxRQUFrQjtJQUM3RCxNQUFNLFNBQVMsR0FBeUIsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUN0SCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFNRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBdUI7SUFDbEQsV0FBVztDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXRWaWV3cG9ydE9wZXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3BlcmF0aW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRWaWV3cG9ydChib2FyZDogUGxhaXRCb2FyZCwgdmlld3BvcnQ6IFZpZXdwb3J0KSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBTZXRWaWV3cG9ydE9wZXJhdGlvbiA9IHsgdHlwZTogJ3NldF92aWV3cG9ydCcsIHByb3BlcnRpZXM6IGJvYXJkLnZpZXdwb3J0LCBuZXdQcm9wZXJ0aWVzOiB2aWV3cG9ydCB9O1xuICAgIGJvYXJkLmFwcGx5KG9wZXJhdGlvbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRUcmFuc2Zvcm1zIHtcbiAgICBzZXRWaWV3cG9ydDogKGJvYXJkOiBQbGFpdEJvYXJkLCB2aWV3cG9ydDogVmlld3BvcnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBWaWV3cG9ydFRyYW5zZm9ybXM6IFZpZXdwb3J0VHJhbnNmb3JtcyA9IHtcbiAgICBzZXRWaWV3cG9ydFxufTtcbiJdfQ==
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { moveElementsToNewPath } from '../utils';
|
|
2
|
-
import { getAllMoveOptions, getOneMoveOptions } from '../utils/z-index';
|
|
3
|
-
const moveToTop = (board) => {
|
|
4
|
-
const moveOptions = getAllMoveOptions(board, 'up');
|
|
5
|
-
moveElementsToNewPath(board, moveOptions);
|
|
6
|
-
};
|
|
7
|
-
const moveToBottom = (board) => {
|
|
8
|
-
const moveOptions = getAllMoveOptions(board, 'down');
|
|
9
|
-
moveElementsToNewPath(board, moveOptions);
|
|
10
|
-
};
|
|
11
|
-
const moveUp = (board) => {
|
|
12
|
-
const moveOptions = getOneMoveOptions(board, 'up');
|
|
13
|
-
moveElementsToNewPath(board, moveOptions);
|
|
14
|
-
};
|
|
15
|
-
const moveDown = (board) => {
|
|
16
|
-
const moveOptions = getOneMoveOptions(board, 'down');
|
|
17
|
-
moveElementsToNewPath(board, moveOptions);
|
|
18
|
-
};
|
|
19
|
-
export const ZIndexTransforms = { moveUp, moveDown, moveToTop, moveToBottom };
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiei1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3RyYW5zZm9ybXMvei1pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDcEMsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELHFCQUFxQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN2QyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQscUJBQXFCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUVGLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2pDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDbkMsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELHFCQUFxQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgbW92ZUVsZW1lbnRzVG9OZXdQYXRoIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0QWxsTW92ZU9wdGlvbnMsIGdldE9uZU1vdmVPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvei1pbmRleCc7XG5cbmNvbnN0IG1vdmVUb1RvcCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG1vdmVPcHRpb25zID0gZ2V0QWxsTW92ZU9wdGlvbnMoYm9hcmQsICd1cCcpO1xuICAgIG1vdmVFbGVtZW50c1RvTmV3UGF0aChib2FyZCwgbW92ZU9wdGlvbnMpO1xufTtcblxuY29uc3QgbW92ZVRvQm90dG9tID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgbW92ZU9wdGlvbnMgPSBnZXRBbGxNb3ZlT3B0aW9ucyhib2FyZCwgJ2Rvd24nKTtcbiAgICBtb3ZlRWxlbWVudHNUb05ld1BhdGgoYm9hcmQsIG1vdmVPcHRpb25zKTtcbn07XG5cbmNvbnN0IG1vdmVVcCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG1vdmVPcHRpb25zID0gZ2V0T25lTW92ZU9wdGlvbnMoYm9hcmQsICd1cCcpO1xuICAgIG1vdmVFbGVtZW50c1RvTmV3UGF0aChib2FyZCwgbW92ZU9wdGlvbnMpO1xufTtcblxuY29uc3QgbW92ZURvd24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBtb3ZlT3B0aW9ucyA9IGdldE9uZU1vdmVPcHRpb25zKGJvYXJkLCAnZG93bicpO1xuICAgIG1vdmVFbGVtZW50c1RvTmV3UGF0aChib2FyZCwgbW92ZU9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBaSW5kZXhUcmFuc2Zvcm1zIHtcbiAgICBtb3ZlVXA6IChib2FyZDogUGxhaXRCb2FyZCkgPT4gdm9pZDtcbiAgICBtb3ZlRG93bjogKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB2b2lkO1xuICAgIG1vdmVUb1RvcDogKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB2b2lkO1xuICAgIG1vdmVUb0JvdHRvbTogKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgWkluZGV4VHJhbnNmb3JtcyA9IHsgbW92ZVVwLCBtb3ZlRG93biwgbW92ZVRvVG9wLCBtb3ZlVG9Cb3R0b20gfTtcbiJdfQ==
|