@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.
Files changed (108) hide show
  1. package/fesm2022/plait-core.mjs.map +1 -1
  2. package/package.json +1 -3
  3. package/esm2022/constants/cursor.mjs +0 -13
  4. package/esm2022/constants/index.mjs +0 -20
  5. package/esm2022/constants/keycodes.mjs +0 -127
  6. package/esm2022/constants/selection.mjs +0 -6
  7. package/esm2022/constants/zoom.mjs +0 -4
  8. package/esm2022/context.mjs +0 -23
  9. package/esm2022/core/element/context-change.mjs +0 -13
  10. package/esm2022/core/element/context.mjs +0 -2
  11. package/esm2022/core/element/element-flavour.mjs +0 -140
  12. package/esm2022/core/element/element-ref.mjs +0 -2
  13. package/esm2022/core/list-render.mjs +0 -217
  14. package/esm2022/differs/default_iterable_differ.mjs +0 -614
  15. package/esm2022/differs/iterable_differs.mjs +0 -9
  16. package/esm2022/interfaces/board.mjs +0 -108
  17. package/esm2022/interfaces/custom-types.mjs +0 -5
  18. package/esm2022/interfaces/direction.mjs +0 -8
  19. package/esm2022/interfaces/element.mjs +0 -43
  20. package/esm2022/interfaces/group.mjs +0 -6
  21. package/esm2022/interfaces/history.mjs +0 -5
  22. package/esm2022/interfaces/index.mjs +0 -19
  23. package/esm2022/interfaces/node.mjs +0 -57
  24. package/esm2022/interfaces/operation.mjs +0 -96
  25. package/esm2022/interfaces/path-ref.mjs +0 -15
  26. package/esm2022/interfaces/path.mjs +0 -183
  27. package/esm2022/interfaces/plugin.mjs +0 -6
  28. package/esm2022/interfaces/point.mjs +0 -27
  29. package/esm2022/interfaces/pointer.mjs +0 -6
  30. package/esm2022/interfaces/rectangle-client.mjs +0 -171
  31. package/esm2022/interfaces/selection.mjs +0 -13
  32. package/esm2022/interfaces/svg-arc-command.mjs +0 -2
  33. package/esm2022/interfaces/theme.mjs +0 -49
  34. package/esm2022/interfaces/viewport.mjs +0 -7
  35. package/esm2022/plait-core.mjs +0 -5
  36. package/esm2022/plugins/create-board.mjs +0 -122
  37. package/esm2022/plugins/index.mjs +0 -11
  38. package/esm2022/plugins/with-board.mjs +0 -20
  39. package/esm2022/plugins/with-hand.mjs +0 -113
  40. package/esm2022/plugins/with-history.mjs +0 -91
  41. package/esm2022/plugins/with-hotkey.mjs +0 -96
  42. package/esm2022/plugins/with-i18n.mjs +0 -13
  43. package/esm2022/plugins/with-moving.mjs +0 -282
  44. package/esm2022/plugins/with-options.mjs +0 -13
  45. package/esm2022/plugins/with-related-fragment.mjs +0 -23
  46. package/esm2022/plugins/with-selection.mjs +0 -230
  47. package/esm2022/public-api.mjs +0 -16
  48. package/esm2022/testing/core/create-board.mjs +0 -15
  49. package/esm2022/testing/core/fake-weak-map.mjs +0 -18
  50. package/esm2022/testing/core/index.mjs +0 -3
  51. package/esm2022/testing/fake-events/event-objects.mjs +0 -131
  52. package/esm2022/testing/fake-events/index.mjs +0 -2
  53. package/esm2022/testing/index.mjs +0 -3
  54. package/esm2022/testing/test-element.mjs +0 -9
  55. package/esm2022/transforms/board.mjs +0 -137
  56. package/esm2022/transforms/element.mjs +0 -22
  57. package/esm2022/transforms/general.mjs +0 -146
  58. package/esm2022/transforms/group.mjs +0 -64
  59. package/esm2022/transforms/index.mjs +0 -17
  60. package/esm2022/transforms/node.mjs +0 -37
  61. package/esm2022/transforms/selection.mjs +0 -26
  62. package/esm2022/transforms/theme.mjs +0 -8
  63. package/esm2022/transforms/viewport.mjs +0 -8
  64. package/esm2022/transforms/z-index.mjs +0 -20
  65. package/esm2022/utils/angle.mjs +0 -164
  66. package/esm2022/utils/board.mjs +0 -18
  67. package/esm2022/utils/clipboard/clipboard.mjs +0 -40
  68. package/esm2022/utils/clipboard/common.mjs +0 -82
  69. package/esm2022/utils/clipboard/data-transfer.mjs +0 -33
  70. package/esm2022/utils/clipboard/index.mjs +0 -3
  71. package/esm2022/utils/clipboard/navigator-clipboard.mjs +0 -71
  72. package/esm2022/utils/clipboard/types.mjs +0 -13
  73. package/esm2022/utils/common.mjs +0 -79
  74. package/esm2022/utils/debug.mjs +0 -91
  75. package/esm2022/utils/dnd.mjs +0 -8
  76. package/esm2022/utils/dom/common.mjs +0 -75
  77. package/esm2022/utils/dom/environment.mjs +0 -2
  78. package/esm2022/utils/dom/foreign.mjs +0 -26
  79. package/esm2022/utils/dom/index.mjs +0 -4
  80. package/esm2022/utils/drawing/arrow.mjs +0 -23
  81. package/esm2022/utils/drawing/circle.mjs +0 -4
  82. package/esm2022/utils/drawing/line.mjs +0 -47
  83. package/esm2022/utils/drawing/rectangle.mjs +0 -36
  84. package/esm2022/utils/element.mjs +0 -90
  85. package/esm2022/utils/environment.mjs +0 -14
  86. package/esm2022/utils/fragment.mjs +0 -27
  87. package/esm2022/utils/group.mjs +0 -239
  88. package/esm2022/utils/helper.mjs +0 -68
  89. package/esm2022/utils/history.mjs +0 -96
  90. package/esm2022/utils/hotkeys.mjs +0 -109
  91. package/esm2022/utils/id-creator.mjs +0 -11
  92. package/esm2022/utils/index.mjs +0 -35
  93. package/esm2022/utils/iterable.mjs +0 -32
  94. package/esm2022/utils/math.mjs +0 -480
  95. package/esm2022/utils/mobile.mjs +0 -6
  96. package/esm2022/utils/moving-element.mjs +0 -17
  97. package/esm2022/utils/pointer.mjs +0 -13
  98. package/esm2022/utils/position.mjs +0 -9
  99. package/esm2022/utils/selected-element.mjs +0 -145
  100. package/esm2022/utils/selection.mjs +0 -151
  101. package/esm2022/utils/snap/snap-moving.mjs +0 -199
  102. package/esm2022/utils/snap/snap.mjs +0 -211
  103. package/esm2022/utils/to-image.mjs +0 -204
  104. package/esm2022/utils/to-point.mjs +0 -74
  105. package/esm2022/utils/tree.mjs +0 -22
  106. package/esm2022/utils/viewport.mjs +0 -227
  107. package/esm2022/utils/weak-maps.mjs +0 -27
  108. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zvcm1zL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUNILGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSW5DLFNBQVMsY0FBYyxDQUFDLEtBQWlCLEVBQUUsV0FBa0IsRUFBRSxJQUFhO0lBQ3hFLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRTtRQUNmLEdBQUcsS0FBSyxDQUFDLFFBQVE7UUFDakIsSUFBSTtRQUNKLFdBQVc7S0FDZCxDQUFDLENBQUM7SUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFlLEVBQUUsTUFBYztJQUNsRSxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWxDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxNQUFNLGlC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U0FDaEUsQ0FBQztRQUVYLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDZixHQUFHLEtBQUssQ0FBQyxRQUFRO1lBQ2pCLFdBQVc7U0FDZCxDQUFDLENBQUM7UUFDSCx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVc7SUFDWCxVQUFVO0lBQ1YsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixZQUFZO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lQ29sb3JNb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aGVtZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzL2VsZW1lbnQnO1xuaW1wb3J0IHsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUgfSBmcm9tICcuLi91dGlscy9tYXRoJztcbmltcG9ydCB7XG4gICAgY2xhbXBab29tTGV2ZWwsXG4gICAgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uLFxuICAgIGdldFZpZXdCb3hDZW50ZXJQb2ludCxcbiAgICBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uLFxuICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lclxufSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyBzZXRWaWV3cG9ydCB9IGZyb20gJy4vdmlld3BvcnQnO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiwgZ2V0UmVhbFNjcm9sbEJhcldpZHRoLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnLi90aGVtZSc7XG5pbXBvcnQgeyBGaXRWaWV3cG9ydE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0JztcbmltcG9ydCB7IFBsYWl0UG9pbnRlclR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50ZXInO1xuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChib2FyZDogUGxhaXRCb2FyZCwgb3JpZ2luYXRpb246IFBvaW50LCB6b29tPzogbnVtYmVyKSB7XG4gICAgem9vbSA9IHpvb20gPz8gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBzZXRWaWV3cG9ydChib2FyZCwge1xuICAgICAgICAuLi5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgem9vbSxcbiAgICAgICAgb3JpZ2luYXRpb25cbiAgICB9KTtcbiAgICBjbGVhclZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVab29tKGJvYXJkOiBQbGFpdEJvYXJkLCBuZXdab29tOiBudW1iZXIsIGNlbnRlcj86IFBvaW50KSB7XG4gICAgbmV3Wm9vbSA9IGNsYW1wWm9vbUxldmVsKG5ld1pvb20pO1xuXG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRSZWN0ID0gbmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBsZXQgZm9jdXNQb2ludCA9IFtib2FyZENvbnRhaW5lclJlY3Qud2lkdGggLyAyLCBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMl07XG5cbiAgICBpZiAoY2VudGVyICYmIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKGNlbnRlclswXSwgY2VudGVyWzFdLCBuYXRpdmVFbGVtZW50UmVjdCkgPT09IDApIHtcbiAgICAgICAgZm9jdXNQb2ludCA9IFtjZW50ZXJbMF0gLSBuYXRpdmVFbGVtZW50UmVjdC54LCBjZW50ZXJbMV0gLSBuYXRpdmVFbGVtZW50UmVjdC55XTtcbiAgICB9XG5cbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBvcmlnaW5hdGlvbiA9IGdldFZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xuICAgIGNvbnN0IGNlbnRlclggPSBvcmlnaW5hdGlvbiFbMF0gKyBmb2N1c1BvaW50WzBdIC8gem9vbTtcbiAgICBjb25zdCBjZW50ZXJZID0gb3JpZ2luYXRpb24hWzFdICsgZm9jdXNQb2ludFsxXSAvIHpvb207XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbY2VudGVyWCAtIGZvY3VzUG9pbnRbMF0gLyBuZXdab29tLCBjZW50ZXJZIC0gZm9jdXNQb2ludFsxXSAvIG5ld1pvb21dIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbmZ1bmN0aW9uIGZpdFZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgbGV0IHNjcm9sbEJhcldpZHRoID0gZ2V0UmVhbFNjcm9sbEJhcldpZHRoKGJvYXJkKTtcblxuICAgIGNvbnN0IGJvYXJkQ29udGFpbmVyUmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsZW1lbnRIb3N0Qm94ID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IGF1dG9GaXRQYWRkaW5nID0gMTY7XG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IGJvYXJkQ29udGFpbmVyUmVjdC53aWR0aCAtIDIgKiBhdXRvRml0UGFkZGluZztcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IGJvYXJkQ29udGFpbmVyUmVjdC5oZWlnaHQgLSAyICogYXV0b0ZpdFBhZGRpbmc7XG5cbiAgICBsZXQgbmV3Wm9vbSA9IHpvb207XG4gICAgaWYgKHZpZXdwb3J0V2lkdGggPCBlbGVtZW50SG9zdEJveC53aWR0aCB8fCB2aWV3cG9ydEhlaWdodCA8IGVsZW1lbnRIb3N0Qm94LmhlaWdodCkge1xuICAgICAgICBuZXdab29tID0gTWF0aC5taW4odmlld3BvcnRXaWR0aCAvIGVsZW1lbnRIb3N0Qm94LndpZHRoLCB2aWV3cG9ydEhlaWdodCAvIGVsZW1lbnRIb3N0Qm94LmhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Wm9vbSA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgY2VudGVyUG9pbnQgPSBnZXRWaWV3Qm94Q2VudGVyUG9pbnQoYm9hcmQpO1xuICAgIGNvbnN0IG5ld09yaWdpbmF0aW9uID0gW1xuICAgICAgICBjZW50ZXJQb2ludFswXSAtIGJvYXJkQ29udGFpbmVyUmVjdC53aWR0aCAvIDIgLyBuZXdab29tICsgc2Nyb2xsQmFyV2lkdGggLyAyIC8gem9vbSxcbiAgICAgICAgY2VudGVyUG9pbnRbMV0gLSBib2FyZENvbnRhaW5lclJlY3QuaGVpZ2h0IC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyB6b29tXG4gICAgXSBhcyBQb2ludDtcbiAgICB1cGRhdGVWaWV3cG9ydChib2FyZCwgbmV3T3JpZ2luYXRpb24sIG5ld1pvb20pO1xufVxuXG5mdW5jdGlvbiBmaXRWaWV3cG9ydFdpZHRoKGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zOiBGaXRWaWV3cG9ydE9wdGlvbnMpIHtcbiAgICBsZXQgc2Nyb2xsQmFyV2lkdGggPSBnZXRSZWFsU2Nyb2xsQmFyV2lkdGgoYm9hcmQpO1xuXG4gICAgY29uc3QgYm9hcmRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKTtcbiAgICBjb25zdCBib2FyZENvbnRhaW5lclJlY3RhbmdsZSA9IGJvYXJkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgbGV0IGZpbmFsV2lkdGggPSAwO1xuICAgIGlmIChvcHRpb25zLm1heFdpZHRoKSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBvcHRpb25zLm1heFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBib2FyZENvbnRhaW5lclJlY3RhbmdsZS53aWR0aDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50SG9zdEJveCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSBmaW5hbFdpZHRoIC0gMiAqIG9wdGlvbnMuYXV0b0ZpdFBhZGRpbmc7XG4gICAgbGV0IG5ld1pvb20gPSAwO1xuICAgIGlmIChjb250ZW50V2lkdGggPCBlbGVtZW50SG9zdEJveC53aWR0aCkge1xuICAgICAgICBuZXdab29tID0gTWF0aC5taW4oY29udGVudFdpZHRoIC8gZWxlbWVudEhvc3RCb3gud2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1pvb20gPSAxO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEhlaWdodCA9IGVsZW1lbnRIb3N0Qm94LmhlaWdodCAqIG5ld1pvb20gKyAyICogb3B0aW9ucy5hdXRvRml0UGFkZGluZztcbiAgICBpZiAoZmluYWxIZWlnaHQgPiBvcHRpb25zLmxpbWl0SGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckVsID0gYm9hcmRDb250YWluZXIuY2xvc2VzdChgLiR7b3B0aW9ucy5jb250YWluZXJDbGFzc31gKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29udGFpbmVyRWwuc3R5bGUuaGVpZ2h0ID0gYCR7ZmluYWxIZWlnaHR9cHhgO1xuICAgICAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIoYm9hcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsSGVpZ2h0ID0gb3B0aW9ucy5saW1pdEhlaWdodDtcbiAgICB9XG5cbiAgICBjb25zdCBjZW50ZXJYID0gZWxlbWVudEhvc3RCb3gueCArIGVsZW1lbnRIb3N0Qm94LndpZHRoIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gZWxlbWVudEhvc3RCb3gueSArIGVsZW1lbnRIb3N0Qm94LmhlaWdodCAvIDI7XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbXG4gICAgICAgIGNlbnRlclggLSBmaW5hbFdpZHRoIC8gMiAvIG5ld1pvb20gKyBzY3JvbGxCYXJXaWR0aCAvIDIgLyBuZXdab29tLFxuICAgICAgICBjZW50ZXJZIC0gZmluYWxIZWlnaHQgLyAyIC8gbmV3Wm9vbSArIHNjcm9sbEJhcldpZHRoIC8gMiAvIG5ld1pvb21cbiAgICBdIGFzIFBvaW50O1xuICAgIHVwZGF0ZVZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbi8qKlxuICogYXBwbHkgdGhlbWUgdG8gZXZlcnkgZWxlbWVudCAocmVtb3ZlIGVsZW1lbnQgY3VzdG9tIHByb3BlcnRpZXMpXG4gKiBpbnZva2UgYXBwbHlUaGVtZUNvbG9yXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVRoZW1lQ29sb3IoYm9hcmQ6IFBsYWl0Qm9hcmQsIG1vZGU6IFRoZW1lQ29sb3JNb2RlKSB7XG4gICAgbW9kZSA9IG1vZGUgPz8gYm9hcmQudGhlbWUudGhlbWVDb2xvck1vZGU7XG4gICAgc2V0VGhlbWUoYm9hcmQsIHsgdGhlbWVDb2xvck1vZGU6IG1vZGUgfSk7XG5cbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKChib2FyZCBhcyB1bmtub3duKSBhcyBQbGFpdEVsZW1lbnQsIGVsZW1lbnQgPT4ge1xuICAgICAgICBib2FyZC5hcHBseVRoZW1lKGVsZW1lbnQpO1xuICAgIH0pO1xufVxuXG5jb25zdCB1cGRhdGVQb2ludGVyVHlwZSA9IDxUIGV4dGVuZHMgc3RyaW5nID0gUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFQpID0+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==