@plait/core 0.2.4 → 0.4.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 (58) hide show
  1. package/board/board.component.d.ts +11 -10
  2. package/board/board.component.interface.d.ts +2 -1
  3. package/constants/index.d.ts +6 -0
  4. package/core/island/island-base.component.d.ts +16 -0
  5. package/esm2020/board/board.component.interface.mjs +1 -1
  6. package/esm2020/board/board.component.mjs +52 -55
  7. package/esm2020/constants/index.mjs +7 -1
  8. package/esm2020/core/element/plugin-element.mjs +2 -2
  9. package/esm2020/core/island/island-base.component.mjs +33 -0
  10. package/esm2020/interfaces/board.mjs +11 -2
  11. package/esm2020/interfaces/index.mjs +2 -1
  12. package/esm2020/interfaces/node.mjs +1 -1
  13. package/esm2020/interfaces/path-ref.mjs +15 -0
  14. package/esm2020/interfaces/plugin-key.mjs +5 -0
  15. package/esm2020/plait.module.mjs +3 -4
  16. package/esm2020/plugins/create-board.mjs +32 -3
  17. package/esm2020/plugins/with-hand.mjs +10 -15
  18. package/esm2020/plugins/with-options.mjs +13 -0
  19. package/esm2020/plugins/with-selection.mjs +27 -17
  20. package/esm2020/public-api.mjs +4 -2
  21. package/esm2020/testing/core/create-board.mjs +13 -0
  22. package/esm2020/testing/core/fake-weak-map.mjs +18 -0
  23. package/esm2020/testing/core/index.mjs +3 -0
  24. package/esm2020/testing/index.mjs +2 -0
  25. package/esm2020/transforms/board.mjs +63 -4
  26. package/esm2020/utils/dom/common.mjs +12 -1
  27. package/esm2020/utils/draw/line.mjs +21 -1
  28. package/esm2020/utils/selected-element.mjs +5 -3
  29. package/esm2020/utils/viewport.mjs +2 -55
  30. package/esm2020/utils/weak-maps.mjs +2 -1
  31. package/fesm2015/plait-core.mjs +621 -507
  32. package/fesm2015/plait-core.mjs.map +1 -1
  33. package/fesm2020/plait-core.mjs +635 -521
  34. package/fesm2020/plait-core.mjs.map +1 -1
  35. package/interfaces/board.d.ts +8 -2
  36. package/interfaces/index.d.ts +1 -0
  37. package/interfaces/node.d.ts +1 -1
  38. package/interfaces/path-ref.d.ts +13 -0
  39. package/interfaces/plugin-key.d.ts +3 -0
  40. package/package.json +3 -3
  41. package/plait.module.d.ts +2 -3
  42. package/plugins/create-board.d.ts +1 -1
  43. package/plugins/with-options.d.ts +9 -0
  44. package/plugins/with-selection.d.ts +4 -0
  45. package/public-api.d.ts +3 -1
  46. package/styles/styles.scss +0 -73
  47. package/testing/core/create-board.d.ts +6 -0
  48. package/testing/core/fake-weak-map.d.ts +4 -0
  49. package/testing/core/index.d.ts +2 -0
  50. package/testing/index.d.ts +1 -0
  51. package/transforms/board.d.ts +9 -2
  52. package/utils/dom/common.d.ts +3 -0
  53. package/utils/draw/line.d.ts +1 -0
  54. package/utils/selected-element.d.ts +2 -2
  55. package/utils/viewport.d.ts +0 -3
  56. package/utils/weak-maps.d.ts +2 -0
  57. package/core/toolbar/toolbar.component.d.ts +0 -21
  58. package/esm2020/core/toolbar/toolbar.component.mjs +0 -60
@@ -0,0 +1,2 @@
1
+ export * from './core';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29yZSc7XG4iXX0=
@@ -1,10 +1,69 @@
1
- import { BOARD_TO_COMPONENT } from '../utils';
2
- export const updatePointerType = (board, pointer) => {
1
+ import { PlaitBoard } from '../interfaces/board';
2
+ import { toPoint } from '../utils/dom/common';
3
+ import { getRectangleByElements } from '../utils/element';
4
+ import { distanceBetweenPointAndRectangle } from '../utils/math';
5
+ import { clampZoomLevel, clearViewportOrigination, getViewBox, getViewportContainerRect, getViewportOrigination } from '../utils/viewport';
6
+ import { BOARD_TO_COMPONENT } from '../utils/weak-maps';
7
+ import { setViewport } from './viewport';
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
+ const updatePointerType = (board, pointer) => {
3
18
  board.pointer = pointer;
4
19
  const boardComponent = BOARD_TO_COMPONENT.get(board);
5
20
  boardComponent?.markForCheck();
6
21
  };
22
+ function updateZoom(board, newZoom, isCenter = true) {
23
+ newZoom = clampZoomLevel(newZoom);
24
+ const mousePoint = PlaitBoard.getMovingPoint(board);
25
+ const nativeElement = PlaitBoard.getBoardNativeElement(board);
26
+ const nativeElementRect = nativeElement.getBoundingClientRect();
27
+ const viewportContainerRect = getViewportContainerRect(board);
28
+ let focusPoint = [viewportContainerRect.width / 2, viewportContainerRect.height / 2];
29
+ if (!isCenter && mousePoint && distanceBetweenPointAndRectangle(mousePoint[0], mousePoint[1], nativeElementRect) === 0) {
30
+ focusPoint = toPoint(mousePoint[0], mousePoint[1], nativeElement);
31
+ }
32
+ const zoom = board.viewport.zoom;
33
+ const origination = getViewportOrigination(board);
34
+ const centerX = origination[0] + focusPoint[0] / zoom;
35
+ const centerY = origination[1] + focusPoint[1] / zoom;
36
+ const newOrigination = [centerX - focusPoint[0] / newZoom, centerY - focusPoint[1] / newZoom];
37
+ updateViewport(board, newOrigination, newZoom);
38
+ }
39
+ function fitViewport(board) {
40
+ const nativeElementRect = PlaitBoard.getBoardNativeElement(board).getBoundingClientRect();
41
+ const viewportContainerRect = getViewportContainerRect(board);
42
+ const elementHostBox = getRectangleByElements(board, board.children, true);
43
+ const zoom = board.viewport.zoom;
44
+ const autoFitPadding = 16;
45
+ const viewportWidth = nativeElementRect.width - 2 * autoFitPadding;
46
+ const viewportHeight = nativeElementRect.height - 2 * autoFitPadding;
47
+ let newZoom = zoom;
48
+ if (viewportWidth < elementHostBox.width || viewportHeight < elementHostBox.height) {
49
+ newZoom = Math.min(viewportWidth / elementHostBox.width, viewportHeight / elementHostBox.height);
50
+ }
51
+ else {
52
+ newZoom = 1;
53
+ }
54
+ const viewBox = getViewBox(board, newZoom);
55
+ const centerX = viewBox[0] + viewBox[2] / 2;
56
+ const centerY = viewBox[1] + viewBox[3] / 2;
57
+ const newOrigination = [
58
+ centerX - viewportContainerRect.width / 2 / newZoom,
59
+ centerY - viewportContainerRect.height / 2 / newZoom
60
+ ];
61
+ updateViewport(board, newOrigination, newZoom);
62
+ }
7
63
  export const BoardTransforms = {
8
- updatePointerType
64
+ updatePointerType,
65
+ updateViewport,
66
+ fitViewport,
67
+ updateZoom
9
68
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmb3Jtcy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUM5RSxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN4QixNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsY0FBYyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixpQkFBaUI7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0UG9pbnRlclR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50ZXInO1xuaW1wb3J0IHsgQk9BUkRfVE9fQ09NUE9ORU5UIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUG9pbnRlclR5cGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFBsYWl0UG9pbnRlclR5cGUpID0+IHtcbiAgICBib2FyZC5wb2ludGVyID0gcG9pbnRlcjtcbiAgICBjb25zdCBib2FyZENvbXBvbmVudCA9IEJPQVJEX1RPX0NPTVBPTkVOVC5nZXQoYm9hcmQpO1xuICAgIGJvYXJkQ29tcG9uZW50Py5tYXJrRm9yQ2hlY2soKTtcbn07XG5cbmV4cG9ydCBjb25zdCBCb2FyZFRyYW5zZm9ybXMgPSB7XG4gICAgdXBkYXRlUG9pbnRlclR5cGVcbn07XG4iXX0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmb3Jtcy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsU0FBUyxjQUFjLENBQUMsS0FBaUIsRUFBRSxXQUFrQixFQUFFLElBQWE7SUFDeEUsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNuQyxXQUFXLENBQUMsS0FBSyxFQUFFO1FBQ2YsR0FBRyxLQUFLLENBQUMsUUFBUTtRQUNqQixJQUFJO1FBQ0osV0FBVztLQUNkLENBQUMsQ0FBQztJQUNILHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQXNDLEtBQWlCLEVBQUUsT0FBVSxFQUFFLEVBQUU7SUFDN0YsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDeEIsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELGNBQWMsRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUNu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SyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sY0FBYyxHQUFHO1FBQ25CLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLE9BQU87UUFDbkQsT0FBTyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsT0FBTztLQUM5QyxDQUFDO0lBQ1gsY0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVc7SUFDWCxVQUFVO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyJztcbmltcG9ydCB7IHRvUG9pbnQgfSBmcm9tICcuLi91dGlscy9kb20vY29tbW9uJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9lbGVtZW50JztcbmltcG9ydCB7IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMvbWF0aCc7XG5pbXBvcnQgeyBjbGFtcFpvb21MZXZlbCwgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uLCBnZXRWaWV3Qm94LCBnZXRWaWV3cG9ydENvbnRhaW5lclJlY3QsIGdldFZpZXdwb3J0T3JpZ2luYXRpb24gfSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyBCT0FSRF9UT19DT01QT05FTlQgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgc2V0Vmlld3BvcnQgfSBmcm9tICcuL3ZpZXdwb3J0JztcblxuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnQoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9yaWdpbmF0aW9uOiBQb2ludCwgem9vbT86IG51bWJlcikge1xuICAgIHpvb20gPSB6b29tID8/IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgc2V0Vmlld3BvcnQoYm9hcmQsIHtcbiAgICAgICAgLi4uYm9hcmQudmlld3BvcnQsXG4gICAgICAgIHpvb20sXG4gICAgICAgIG9yaWdpbmF0aW9uXG4gICAgfSk7XG4gICAgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKTtcbn1cblxuY29uc3QgdXBkYXRlUG9pbnRlclR5cGUgPSA8VCBleHRlbmRzIHN0cmluZyA9IFBsYWl0UG9pbnRlclR5cGU+KGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludGVyOiBUKSA9PiB7XG4gICAgYm9hcmQucG9pbnRlciA9IHBvaW50ZXI7XG4gICAgY29uc3QgYm9hcmRDb21wb25lbnQgPSBCT0FSRF9UT19DT01QT05FTlQuZ2V0KGJvYXJkKTtcbiAgICBib2FyZENvbXBvbmVudD8ubWFya0ZvckNoZWNrKCk7XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVab29tKGJvYXJkOiBQbGFpdEJvYXJkLCBuZXdab29tOiBudW1iZXIsIGlzQ2VudGVyID0gdHJ1ZSkge1xuICAgIG5ld1pvb20gPSBjbGFtcFpvb21MZXZlbChuZXdab29tKTtcblxuICAgIGNvbnN0IG1vdXNlUG9pbnQgPSBQbGFpdEJvYXJkLmdldE1vdmluZ1BvaW50KGJvYXJkKTtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRSZWN0ID0gbmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lclJlY3QgPSBnZXRWaWV3cG9ydENvbnRhaW5lclJlY3QoYm9hcmQpO1xuICAgIGxldCBmb2N1c1BvaW50ID0gW3ZpZXdwb3J0Q29udGFpbmVyUmVjdC53aWR0aCAvIDIsIHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyAyXTtcblxuICAgIGlmICghaXNDZW50ZXIgJiYgbW91c2VQb2ludCAmJiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZShtb3VzZVBvaW50WzBdLCBtb3VzZVBvaW50WzFdLCBuYXRpdmVFbGVtZW50UmVjdCkgPT09IDApIHtcbiAgICAgICAgZm9jdXNQb2ludCA9IHRvUG9pbnQobW91c2VQb2ludFswXSwgbW91c2VQb2ludFsxXSwgKG5hdGl2ZUVsZW1lbnQgYXMgdW5rbm93bikgYXMgU1ZHRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3Qgb3JpZ2luYXRpb24gPSBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKTtcbiAgICBjb25zdCBjZW50ZXJYID0gb3JpZ2luYXRpb24hWzBdICsgZm9jdXNQb2ludFswXSAvIHpvb207XG4gICAgY29uc3QgY2VudGVyWSA9IG9yaWdpbmF0aW9uIVsxXSArIGZvY3VzUG9pbnRbMV0gLyB6b29tO1xuICAgIGNvbnN0IG5ld09yaWdpbmF0aW9uID0gW2NlbnRlclggLSBmb2N1c1BvaW50WzBdIC8gbmV3Wm9vbSwgY2VudGVyWSAtIGZvY3VzUG9pbnRbMV0gLyBuZXdab29tXSBhcyBQb2ludDtcbiAgICB1cGRhdGVWaWV3cG9ydChib2FyZCwgbmV3T3JpZ2luYXRpb24sIG5ld1pvb20pO1xufVxuXG5cblxuZnVuY3Rpb24gZml0Vmlld3BvcnQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50UmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmROYXRpdmVFbGVtZW50KGJvYXJkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lclJlY3QgPSBnZXRWaWV3cG9ydENvbnRhaW5lclJlY3QoYm9hcmQpO1xuICAgIGNvbnN0IGVsZW1lbnRIb3N0Qm94ID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIGNvbnN0IHpvb20gPSBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIGNvbnN0IGF1dG9GaXRQYWRkaW5nID0gMTY7XG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IG5hdGl2ZUVsZW1lbnRSZWN0LndpZHRoIC0gMiAqIGF1dG9GaXRQYWRkaW5nO1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gbmF0aXZlRWxlbWVudFJlY3QuaGVpZ2h0IC0gMiAqIGF1dG9GaXRQYWRkaW5nO1xuXG4gICAgbGV0IG5ld1pvb20gPSB6b29tO1xuICAgIGlmICh2aWV3cG9ydFdpZHRoIDwgZWxlbWVudEhvc3RCb3gud2lkdGggfHwgdmlld3BvcnRIZWlnaHQgPCBlbGVtZW50SG9zdEJveC5oZWlnaHQpIHtcbiAgICAgICAgbmV3Wm9vbSA9IE1hdGgubWluKHZpZXdwb3J0V2lkdGggLyBlbGVtZW50SG9zdEJveC53aWR0aCwgdmlld3BvcnRIZWlnaHQgLyBlbGVtZW50SG9zdEJveC5oZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1pvb20gPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdCb3ggPSBnZXRWaWV3Qm94KGJvYXJkLCBuZXdab29tKTtcbiAgICBjb25zdCBjZW50ZXJYID0gdmlld0JveFswXSArIHZpZXdCb3hbMl0gLyAyO1xuICAgIGNvbnN0IGNlbnRlclkgPSB2aWV3Qm94WzFdICsgdmlld0JveFszXSAvIDI7XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbXG4gICAgICAgIGNlbnRlclggLSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyAyIC8gbmV3Wm9vbSxcbiAgICAgICAgY2VudGVyWSAtIHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyAyIC8gbmV3Wm9vbVxuICAgIF0gYXMgUG9pbnQ7XG4gICAgdXBkYXRlVmlld3BvcnQoYm9hcmQsIG5ld09yaWdpbmF0aW9uLCBuZXdab29tKTtcbn1cblxuZXhwb3J0IGNvbnN0IEJvYXJkVHJhbnNmb3JtcyA9IHtcbiAgICB1cGRhdGVQb2ludGVyVHlwZSxcbiAgICB1cGRhdGVWaWV3cG9ydCxcbiAgICBmaXRWaWV3cG9ydCxcbiAgICB1cGRhdGVab29tXG59O1xuIl19
@@ -1,3 +1,4 @@
1
+ import { POINTER_BUTTON } from '../../constants';
1
2
  export const NS = 'http://www.w3.org/2000/svg';
2
3
  export function toPoint(x, y, container) {
3
4
  const rect = container.getBoundingClientRect();
@@ -7,6 +8,10 @@ export function createG() {
7
8
  const newG = document.createElementNS(NS, 'g');
8
9
  return newG;
9
10
  }
11
+ export function createPath() {
12
+ const newG = document.createElementNS(NS, 'path');
13
+ return newG;
14
+ }
10
15
  export function createSVG() {
11
16
  const svg = document.createElementNS(NS, 'svg');
12
17
  return svg;
@@ -39,4 +44,10 @@ export const hasInputOrTextareaTarget = (target) => {
39
44
  }
40
45
  return false;
41
46
  };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL2RvbS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLDRCQUE0QixDQUFDO0FBRS9DLE1BQU0sVUFBVSxPQUFPLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxTQUFxQjtJQUMvRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDbkIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0MsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTO0lBQ3JCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxJQUFZLEVBQUUsV0FBbUI7SUFDOUUsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUMvQixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQW9CLEVBQUU7SUFDekQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFVLEVBQWlCLEVBQUU7SUFDbkQsT0FBTyxLQUFLLFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRTtJQUNuRSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN0QixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1lBQzdELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7S0FDSjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5cbmV4cG9ydCBjb25zdCBOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1BvaW50KHg6IG51bWJlciwgeTogbnVtYmVyLCBjb250YWluZXI6IFNWR0VsZW1lbnQpOiBQb2ludCB7XG4gICAgY29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gW3ggLSByZWN0LngsIHkgLSByZWN0LnldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRygpIHtcbiAgICBjb25zdCBuZXdHID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnZycpO1xuICAgIHJldHVybiBuZXdHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU1ZHKCkge1xuICAgIGNvbnN0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2ZycpO1xuICAgIHJldHVybiBzdmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXh0KHg6IG51bWJlciwgeTogbnVtYmVyLCBmaWxsOiBzdHJpbmcsIHRleHRDb250ZW50OiBzdHJpbmcpIHtcbiAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3RleHQnKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgneCcsIGAke3h9YCk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3knLCBgJHt5fWApO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdmaWxsJywgZmlsbCk7XG4gICAgdGV4dC50ZXh0Q29udGVudCA9IHRleHRDb250ZW50O1xuICAgIHJldHVybiB0ZXh0O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01FbGVtZW50ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBFbGVtZW50ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01Ob2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBOb2RlID0+IHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNJbnB1dE9yVGV4dGFyZWFUYXJnZXQgPSAodGFyZ2V0OiBFdmVudFRhcmdldCB8IG51bGwpID0+IHtcbiAgICBpZiAoaXNET01FbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnIHx8IHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuIl19
47
+ export const isSecondaryPointer = (event) => {
48
+ return event.button === POINTER_BUTTON.SECONDARY;
49
+ };
50
+ export const isMainPointer = (event) => {
51
+ return event.button === POINTER_BUTTON.MAIN;
52
+ };
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL2RvbS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyw0QkFBNEIsQ0FBQztBQUUvQyxNQUFNLFVBQVUsT0FBTyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsU0FBcUI7SUFDL0QsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0MsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPO0lBQ25CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN0QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVM7SUFDckIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLElBQVksRUFBRSxXQUFtQjtJQUM5RSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQy9CLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQVUsRUFBb0IsRUFBRTtJQUN6RCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQVUsRUFBaUIsRUFBRTtJQUNuRCxPQUFPLEtBQUssWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBMEIsRUFBRSxFQUFFO0lBQ25FLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3RCLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7WUFDN0QsT0FBTyxJQUFJLENBQUM7U0FDZjtLQUNKO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxTQUFTLENBQUM7QUFDckQsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO0FBQ2hELENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBPSU5URVJfQlVUVE9OIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5cbmV4cG9ydCBjb25zdCBOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1BvaW50KHg6IG51bWJlciwgeTogbnVtYmVyLCBjb250YWluZXI6IFNWR0VsZW1lbnQpOiBQb2ludCB7XG4gICAgY29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gW3ggLSByZWN0LngsIHkgLSByZWN0LnldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRygpIHtcbiAgICBjb25zdCBuZXdHID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnZycpO1xuICAgIHJldHVybiBuZXdHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0aCgpIHtcbiAgICBjb25zdCBuZXdHID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAncGF0aCcpO1xuICAgIHJldHVybiBuZXdHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU1ZHKCkge1xuICAgIGNvbnN0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2ZycpO1xuICAgIHJldHVybiBzdmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXh0KHg6IG51bWJlciwgeTogbnVtYmVyLCBmaWxsOiBzdHJpbmcsIHRleHRDb250ZW50OiBzdHJpbmcpIHtcbiAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3RleHQnKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgneCcsIGAke3h9YCk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3knLCBgJHt5fWApO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdmaWxsJywgZmlsbCk7XG4gICAgdGV4dC50ZXh0Q29udGVudCA9IHRleHRDb250ZW50O1xuICAgIHJldHVybiB0ZXh0O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01FbGVtZW50ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBFbGVtZW50ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01Ob2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBOb2RlID0+IHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNJbnB1dE9yVGV4dGFyZWFUYXJnZXQgPSAodGFyZ2V0OiBFdmVudFRhcmdldCB8IG51bGwpID0+IHtcbiAgICBpZiAoaXNET01FbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnIHx8IHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWNvbmRhcnlQb2ludGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gUE9JTlRFUl9CVVRUT04uU0VDT05EQVJZO1xufVxuXG5leHBvcnQgY29uc3QgaXNNYWluUG9pbnRlciA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIHJldHVybiBldmVudC5idXR0b24gPT09IFBPSU5URVJfQlVUVE9OLk1BSU47XG59Il19
@@ -1,4 +1,24 @@
1
+ import { createG, createPath } from '../dom/common';
1
2
  export function drawLine(rs, start, end, options) {
2
3
  return rs.linearPath([start, end], options);
3
4
  }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy91dGlscy9kcmF3L2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFZLEVBQUUsS0FBWSxFQUFFLEdBQVUsRUFBRSxPQUFnQjtJQUM3RSxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3TGluZShyczogUm91Z2hTVkcsIHN0YXJ0OiBQb2ludCwgZW5kOiBQb2ludCwgb3B0aW9uczogT3B0aW9ucyk6IFNWR0dFbGVtZW50IHtcbiAgICByZXR1cm4gcnMubGluZWFyUGF0aChbc3RhcnQsIGVuZF0sIG9wdGlvbnMpO1xufVxuIl19
5
+ export function drawLinearPath(points, options) {
6
+ const g = createG();
7
+ const path = createPath();
8
+ let polylinePath = '';
9
+ points.forEach((point, index) => {
10
+ if (index === 0) {
11
+ polylinePath += `M ${point[0]} ${point[1]} `;
12
+ }
13
+ else {
14
+ polylinePath += `L ${point[0]} ${point[1]} `;
15
+ }
16
+ });
17
+ path.setAttribute('d', polylinePath);
18
+ path.setAttribute('stroke', `${options?.stroke}`);
19
+ path.setAttribute('stroke-width', `${options?.strokeWidth}`);
20
+ path.setAttribute('fill', `none`);
21
+ g.appendChild(path);
22
+ return g;
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy91dGlscy9kcmF3L2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFZLEVBQUUsS0FBWSxFQUFFLEdBQVUsRUFBRSxPQUFnQjtJQUM3RSxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBZSxFQUFFLE9BQWlCO0lBQzdELE1BQU0sQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBRTFCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzVCLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNiLFlBQVksSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUNoRDthQUFNO1lBQ0gsWUFBWSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwQixPQUFPLENBQUMsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlRywgY3JlYXRlUGF0aCB9IGZyb20gJy4uL2RvbS9jb21tb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xpbmUocnM6IFJvdWdoU1ZHLCBzdGFydDogUG9pbnQsIGVuZDogUG9pbnQsIG9wdGlvbnM6IE9wdGlvbnMpOiBTVkdHRWxlbWVudCB7XG4gICAgcmV0dXJuIHJzLmxpbmVhclBhdGgoW3N0YXJ0LCBlbmRdLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMaW5lYXJQYXRoKHBvaW50czogUG9pbnRbXSwgb3B0aW9ucz86IE9wdGlvbnMpIHtcbiAgICBjb25zdCBnID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHBhdGggPSBjcmVhdGVQYXRoKCk7XG5cbiAgICBsZXQgcG9seWxpbmVQYXRoID0gJyc7XG4gICAgcG9pbnRzLmZvckVhY2goKHBvaW50LCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHBvbHlsaW5lUGF0aCArPSBgTSAke3BvaW50WzBdfSAke3BvaW50WzFdfSBgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9seWxpbmVQYXRoICs9IGBMICR7cG9pbnRbMF19ICR7cG9pbnRbMV19IGA7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHBhdGguc2V0QXR0cmlidXRlKCdkJywgcG9seWxpbmVQYXRoKTtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgYCR7b3B0aW9ucz8uc3Ryb2tlfWApO1xuICAgIHBhdGguc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBgJHtvcHRpb25zPy5zdHJva2VXaWR0aH1gKTtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnZmlsbCcsIGBub25lYCk7XG4gICAgZy5hcHBlbmRDaGlsZChwYXRoKTtcblxuICAgIHJldHVybiBnO1xufVxuIl19
@@ -1,11 +1,13 @@
1
1
  import { PlaitBoard } from '../interfaces/board';
2
2
  import { depthFirstRecursion } from './tree';
3
3
  import { BOARD_TO_SELECTED_ELEMENT } from './weak-maps';
4
- export const getHitElements = (board) => {
4
+ export const getHitElements = (board, selection) => {
5
+ const realSelection = selection || board.selection;
5
6
  const selectedElements = [];
6
7
  depthFirstRecursion(board, node => {
7
8
  if (!PlaitBoard.isBoard(node) &&
8
- board.selection?.ranges.some(range => {
9
+ realSelection &&
10
+ realSelection.ranges.some(range => {
9
11
  return board.isHitSelection(node, range);
10
12
  })) {
11
13
  selectedElements.push(node);
@@ -55,4 +57,4 @@ export const isSelectedElement = (board, element) => {
55
57
  const selectedElements = getSelectedElements(board);
56
58
  return !!selectedElements.find(value => value === element);
57
59
  };
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy91dGlscy9zZWxlY3RlZC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXhELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLGdCQUFnQixHQUFtQixFQUFFLENBQUM7SUFDNUMsbUJBQW1CLENBQ2YsS0FBSyxFQUNMLElBQUksQ0FBQyxFQUFFO1FBQ0gsSUFDSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3pCLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsRUFDSjtZQUNFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjtJQUNMLENBQUMsRUFDRCxJQUFJLENBQUMsRUFBRTtRQUNILElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDRixPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF3QixFQUFFLE1BQWUsRUFBRSxFQUFFO0lBQ25HLElBQUksc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUNqQixRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDekIsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDekMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO0tBQ047SUFDRCxPQUFPLHNCQUFzQixDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBaUIsRUFBRSxnQkFBZ0MsRUFBRSxFQUFFO0lBQ3pGLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNyRCxPQUFPLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXFCLEVBQUUsRUFBRTtJQUMzRSxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQzlFLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDaEYscUJBQXFCLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDdEQscUJBQXFCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDMUUsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgQW5jZXN0b3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgZGVwdGhGaXJzdFJlY3Vyc2lvbiB9IGZyb20gJy4vdHJlZSc7XG5pbXBvcnQgeyBCT0FSRF9UT19TRUxFQ1RFRF9FTEVNRU5UIH0gZnJvbSAnLi93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgUmFuZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0RWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSAmJlxuICAgICAgICAgICAgICAgIGJvYXJkLnNlbGVjdGlvbj8ucmFuZ2VzLnNvbWUocmFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm9hcmQuaXNIaXRTZWxlY3Rpb24obm9kZSwgcmFuZ2UpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSB8fCBib2FyZC5pc1JlY3Vyc2lvbihub2RlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSW50ZXJzZWN0aW9uRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSwgcmFuZ2VzOiBSYW5nZVtdKSA9PiB7XG4gICAgbGV0IGlzSW50ZXJzZWN0aW9uRWxlbWVudHMgPSBmYWxzZTtcbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGVsZW1lbnRzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghaXNJbnRlcnNlY3Rpb25FbGVtZW50cykge1xuICAgICAgICAgICAgICAgIGlzSW50ZXJzZWN0aW9uRWxlbWVudHMgPSByYW5nZXMuc29tZShyYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBib2FyZC5pc0hpdFNlbGVjdGlvbihpdGVtLCByYW5nZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXNJbnRlcnNlY3Rpb25FbGVtZW50cztcbn07XG5cbmV4cG9ydCBjb25zdCBjYWNoZVNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGVkRWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVC5zZXQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gQk9BUkRfVE9fU0VMRUNURURfRUxFTUVOVC5nZXQoYm9hcmQpIHx8IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFNlbGVjdGVkRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLnNlbGVjdGVkRWxlbWVudHMsIGVsZW1lbnRdKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IGVsZW1lbnQpO1xuICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFtdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlbGVjdGVkRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIHJldHVybiAhIXNlbGVjdGVkRWxlbWVudHMuZmluZCh2YWx1ZSA9PiB2YWx1ZSA9PT0gZWxlbWVudCk7XG59O1xuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy91dGlscy9zZWxlY3RlZC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXhELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsU0FBcUIsRUFBRSxFQUFFO0lBQ3ZFLE1BQU0sYUFBYSxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ25ELE1BQU0sZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQUM1QyxtQkFBbUIsQ0FDZixLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUU7UUFDSCxJQUNJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDekIsYUFBYTtZQUNiLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxFQUNKO1lBQ0UsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO0lBQ0wsQ0FBQyxFQUNELElBQUksQ0FBQyxFQUFFO1FBQ0gsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckQsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDLENBQ0osQ0FBQztJQUNGLE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXdCLEVBQUUsTUFBZSxFQUFFLEVBQUU7SUFDbkcsSUFBSSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFDbkMsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO1FBQ2pCLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUN6QixzQkFBc0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN6QyxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FDTjtJQUNELE9BQU8sc0JBQXNCLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLGdCQUFnQyxFQUFFLEVBQUU7SUFDekYseUJBQXlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3JELE9BQU8seUJBQXlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQzNFLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDOUUsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztJQUNoRixxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0RCxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXFCLEVBQUUsRUFBRTtJQUMxRSxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBBbmNlc3RvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBkZXB0aEZpcnN0UmVjdXJzaW9uIH0gZnJvbSAnLi90cmVlJztcbmltcG9ydCB7IEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQgfSBmcm9tICcuL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb24sIFJhbmdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcblxuZXhwb3J0IGNvbnN0IGdldEhpdEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzZWxlY3Rpb24/OiBTZWxlY3Rpb24pID0+IHtcbiAgICBjb25zdCByZWFsU2VsZWN0aW9uID0gc2VsZWN0aW9uIHx8IGJvYXJkLnNlbGVjdGlvbjtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGRlcHRoRmlyc3RSZWN1cnNpb248QW5jZXN0b3I+KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgbm9kZSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNCb2FyZChub2RlKSAmJlxuICAgICAgICAgICAgICAgIHJlYWxTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICByZWFsU2VsZWN0aW9uLnJhbmdlcy5zb21lKHJhbmdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvYXJkLmlzSGl0U2VsZWN0aW9uKG5vZGUsIHJhbmdlKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQobm9kZSkgfHwgYm9hcmQuaXNSZWN1cnNpb24obm9kZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cztcbn07XG5cbmV4cG9ydCBjb25zdCBpc0ludGVyc2VjdGlvbkVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIHJhbmdlczogUmFuZ2VbXSkgPT4ge1xuICAgIGxldCBpc0ludGVyc2VjdGlvbkVsZW1lbnRzID0gZmFsc2U7XG4gICAgaWYgKGVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBlbGVtZW50cy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSW50ZXJzZWN0aW9uRWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICBpc0ludGVyc2VjdGlvbkVsZW1lbnRzID0gcmFuZ2VzLnNvbWUocmFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm9hcmQuaXNIaXRTZWxlY3Rpb24oaXRlbSwgcmFuZ2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGlzSW50ZXJzZWN0aW9uRWxlbWVudHM7XG59O1xuXG5leHBvcnQgY29uc3QgY2FjaGVTZWxlY3RlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQuc2V0KGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQuZ2V0KGJvYXJkKSB8fCBbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFsuLi5zZWxlY3RlZEVsZW1lbnRzLCBlbGVtZW50XSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBlbGVtZW50KTtcbiAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyU2VsZWN0ZWRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbXSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3RlZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICByZXR1cm4gISFzZWxlY3RlZEVsZW1lbnRzLmZpbmQodmFsdWUgPT4gdmFsdWUgPT09IGVsZW1lbnQpO1xufTtcbiJdfQ==
@@ -1,10 +1,7 @@
1
1
  import { SCROLL_BAR_WIDTH } from '../constants';
2
2
  import { PlaitBoard } from '../interfaces';
3
- import { Transforms } from '../transforms';
4
- import { toPoint } from './dom/common';
5
3
  import { getRectangleByElements } from './element';
6
- import { distanceBetweenPointAndRectangle } from './math';
7
- import { BOARD_TO_MOVING_POINT, BOARD_TO_VIEWPORT_ORIGINATION } from './weak-maps';
4
+ import { BOARD_TO_VIEWPORT_ORIGINATION } from './weak-maps';
8
5
  const IS_FROM_SCROLLING = new WeakMap();
9
6
  const IS_FROM_VIEWPORT_CHANGE = new WeakMap();
10
7
  export function getViewportContainerRect(board) {
@@ -132,56 +129,6 @@ export function initializeViewportOffset(board) {
132
129
  }
133
130
  updateViewportOffset(board);
134
131
  }
135
- export function setViewport(board, origination, zoom) {
136
- zoom = zoom ?? board.viewport.zoom;
137
- Transforms.setViewport(board, {
138
- ...board.viewport,
139
- zoom,
140
- origination
141
- });
142
- clearViewportOrigination(board);
143
- }
144
- export function changeZoom(board, newZoom, isCenter = true) {
145
- newZoom = clampZoomLevel(newZoom);
146
- const mousePoint = BOARD_TO_MOVING_POINT.get(board);
147
- const nativeElement = PlaitBoard.getBoardNativeElement(board);
148
- const nativeElementRect = nativeElement.getBoundingClientRect();
149
- const viewportContainerRect = getViewportContainerRect(board);
150
- let focusPoint = [viewportContainerRect.width / 2, viewportContainerRect.height / 2];
151
- if (!isCenter && mousePoint && distanceBetweenPointAndRectangle(mousePoint[0], mousePoint[1], nativeElementRect) === 0) {
152
- focusPoint = toPoint(mousePoint[0], mousePoint[1], nativeElement);
153
- }
154
- const zoom = board.viewport.zoom;
155
- const origination = getViewportOrigination(board);
156
- const centerX = origination[0] + focusPoint[0] / zoom;
157
- const centerY = origination[1] + focusPoint[1] / zoom;
158
- const newOrigination = [centerX - focusPoint[0] / newZoom, centerY - focusPoint[1] / newZoom];
159
- setViewport(board, newOrigination, newZoom);
160
- }
161
- export function fitViewport(board) {
162
- const nativeElementRect = PlaitBoard.getBoardNativeElement(board).getBoundingClientRect();
163
- const viewportContainerRect = getViewportContainerRect(board);
164
- const elementHostBox = getRectangleByElements(board, board.children, true);
165
- const zoom = board.viewport.zoom;
166
- const autoFitPadding = 16;
167
- const viewportWidth = nativeElementRect.width - 2 * autoFitPadding;
168
- const viewportHeight = nativeElementRect.height - 2 * autoFitPadding;
169
- let newZoom = zoom;
170
- if (viewportWidth < elementHostBox.width || viewportHeight < elementHostBox.height) {
171
- newZoom = Math.min(viewportWidth / elementHostBox.width, viewportHeight / elementHostBox.height);
172
- }
173
- else {
174
- newZoom = 1;
175
- }
176
- const viewBox = getViewBox(board, newZoom);
177
- const centerX = viewBox[0] + viewBox[2] / 2;
178
- const centerY = viewBox[1] + viewBox[3] / 2;
179
- const newOrigination = [
180
- centerX - viewportContainerRect.width / 2 / newZoom,
181
- centerY - viewportContainerRect.height / 2 / newZoom
182
- ];
183
- setViewport(board, newOrigination, newZoom);
184
- }
185
132
  export const updateViewportOrigination = (board, origination) => {
186
133
  BOARD_TO_VIEWPORT_ORIGINATION.set(board, origination);
187
134
  };
@@ -210,4 +157,4 @@ export const setIsFromViewportChange = (board, state) => {
210
157
  IS_FROM_VIEWPORT_CHANGE.set(board, state);
211
158
  };
212
159
  export function scrollToRectangle(board, client) { }
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdXRpbHMvdmlld3BvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRixNQUFNLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRTdELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFbkUsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWlCO0lBQ3RELE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hDLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUVyRixPQUFPO1FBQ0gsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLEdBQUcsY0FBYztRQUMxQyxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxjQUFjO0tBQy9DLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixD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RUYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsTUFBdUIsSUFBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0NST0xMX0JBUl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyB0b1BvaW50IH0gZnJvbSAnLi9kb20vY29tbW9uJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUgfSBmcm9tICcuL21hdGgnO1xuaW1wb3J0IHsgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULCBCT0FSRF9UT19WSUVXUE9SVF9PUklHSU5BVElPTiB9IGZyb20gJy4vd2Vhay1tYXBzJztcblxuY29uc3QgSVNfRlJPTV9TQ1JPTExJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5jb25zdCBJU19GUk9NX1ZJRVdQT1JUX0NIQU5HRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3cG9ydENvbnRhaW5lclJlY3QoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IGhpZGVTY3JvbGxiYXIgfSA9IGJvYXJkLm9wdGlvbnM7XG4gICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBoaWRlU2Nyb2xsYmFyID8gU0NST0xMX0JBUl9XSURUSCA6IDA7XG4gICAgY29uc3Qgdmlld3BvcnRSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHZpZXdwb3J0UmVjdC53aWR0aCArIHNjcm9sbEJhcldpZHRoLFxuICAgICAgICBoZWlnaHQ6IHZpZXdwb3J0UmVjdC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50SG9zdEJCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVjdCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyB6b29tO1xuICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyB6b29tO1xuICAgIGxldCBsZWZ0OiBudW1iZXI7XG4gICAgbGV0IHJpZ2h0OiBudW1iZXI7XG4gICAgbGV0IHRvcDogbnVtYmVyO1xuICAgIGxldCBib3R0b206IG51bWJlcjtcblxuICAgIGlmIChjaGlsZHJlblJlY3Qud2lkdGggPCBjb250YWluZXJXaWR0aCkge1xuICAgICAgICBjb25zdCBjZW50ZXJYID0gY2hpbGRyZW5SZWN0LnggKyBjaGlsZHJlblJlY3Qud2lkdGggLyAyO1xuICAgICAgICBjb25zdCBoYWxmQ29udGFpbmVyV2lkdGggPSBjb250YWluZXJXaWR0aCAvIDI7XG4gICAgICAgIGxlZnQgPSBjZW50ZXJYIC0gaGFsZkNvbnRhaW5lcldpZHRoO1xuICAgICAgICByaWdodCA9IGNlbnRlclggKyBoYWxmQ29udGFpbmVyV2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9IGNoaWxkcmVuUmVjdC54O1xuICAgICAgICByaWdodCA9IGNoaWxkcmVuUmVjdC54ICsgY2hpbGRyZW5SZWN0LndpZHRoO1xuICAgIH1cbiAgICBpZiAoY2hpbGRyZW5SZWN0LmhlaWdodCA8IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICBjb25zdCBjZW50ZXJZID0gY2hpbGRyZW5SZWN0LnkgKyBjaGlsZHJlblJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgaGFsZkNvbnRhaW5lckhlaWdodCA9IGNvbnRhaW5lckhlaWdodCAvIDI7XG4gICAgICAgIHRvcCA9IGNlbnRlclkgLSBoYWxmQ29udGFpbmVySGVpZ2h0O1xuICAgICAgICBib3R0b20gPSBjZW50ZXJZICsgaGFsZkNvbnRhaW5lckhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b3AgPSBjaGlsZHJlblJlY3QueTtcbiAgICAgICAgYm90dG9tID0gY2hpbGRyZW5SZWN0LnkgKyBjaGlsZHJlblJlY3QuaGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0LFxuICAgICAgICByaWdodCxcbiAgICAgICAgdG9wLFxuICAgICAgICBib3R0b21cbiAgICB9O1xufVxuXG4vKipcbiAqIOmqjOivgee8qeaUvuavlOaYr+WQpuespuWQiOmZkOWItu+8jOWmguaenOi2heWHuumZkOWItu+8jOWImei/lOWbnuWQiOmAgueahOe8qeaUvuavlFxuICogQHBhcmFtIHpvb20g57yp5pS+5q+UXG4gKiBAcGFyYW0gbWluWm9vbSDmnIDlsI/nvKnmlL7mr5RcbiAqIEBwYXJhbSBtYXhab29tIOacgOWkp+e8qeaUvuavlFxuICogQHJldHVybnMg5q2j56Gu55qE57yp5pS+5q+UXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFpvb21MZXZlbCh6b29tOiBudW1iZXIsIG1pblpvb20gPSAwLjIsIG1heFpvb20gPSA0KSB7XG4gICAgcmV0dXJuIHpvb20gPCBtaW5ab29tID8gbWluWm9vbSA6IHpvb20gPiBtYXhab29tID8gbWF4Wm9vbSA6IHpvb207XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Qm94KGJvYXJkOiBQbGFpdEJvYXJkLCB6b29tOiBudW1iZXIpIHtcbiAgICBjb25zdCB7IGhpZGVTY3JvbGxiYXIgfSA9IGJvYXJkLm9wdGlvbnM7XG4gICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBoaWRlU2Nyb2xsYmFyID8gU0NST0xMX0JBUl9XSURUSCA6IDA7XG4gICAgY29uc3Qgdmlld3BvcnRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsZW1lbnRIb3N0QkJveCA9IGdldEVsZW1lbnRIb3N0QkJveChib2FyZCwgem9vbSk7XG4gICAgY29uc3QgaG9yaXpvbnRhbFBhZGRpbmcgPSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyAyO1xuICAgIGNvbnN0IHZlcnRpY2FsUGFkZGluZyA9IHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyAyO1xuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSAoZWxlbWVudEhvc3RCQm94LnJpZ2h0IC0gZWxlbWVudEhvc3RCQm94LmxlZnQpICogem9vbSArIDIgKiBob3Jpem9udGFsUGFkZGluZyArIHNjcm9sbEJhcldpZHRoO1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gKGVsZW1lbnRIb3N0QkJveC5ib3R0b20gLSBlbGVtZW50SG9zdEJCb3gudG9wKSAqIHpvb20gKyAyICogdmVydGljYWxQYWRkaW5nICsgc2Nyb2xsQmFyV2lkdGg7XG4gICAgY29uc3Qgdmlld0JveCA9IFtcbiAgICAgICAgZWxlbWVudEhvc3RCQm94LmxlZnQgLSBob3Jpem9udGFsUGFkZGluZyAvIHpvb20sXG4gICAgICAgIGVsZW1lbnRIb3N0QkJveC50b3AgLSB2ZXJ0aWNhbFBhZGRpbmcgLyB6b29tLFxuICAgICAgICB2aWV3cG9ydFdpZHRoIC8gem9vbSxcbiAgICAgICAgdmlld3BvcnRIZWlnaHQgLyB6b29tXG4gICAgXTtcbiAgICByZXR1cm4gdmlld0JveDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNWR1ZpZXdCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHZpZXdCb3g6IG51bWJlcltdKSB7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpO1xuICAgIGhvc3RFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIGhvc3RFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7dmlld0JveFsyXSAqIHpvb219cHhgO1xuICAgIGhvc3RFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3ZpZXdCb3hbM10gKiB6b29tfXB4YDtcblxuICAgIGlmICh2aWV3Qm94ICYmIHZpZXdCb3hbMl0gPiAwICYmIHZpZXdCb3hbM10gPiAwKSB7XG4gICAgICAgIGhvc3RFbGVtZW50LnNldEF0dHJpYnV0ZSgndmlld0JveCcsIHZpZXdCb3guam9pbignICcpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVWaWV3cG9ydE9mZnNldChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gZ2V0Vmlld3BvcnRPcmlnaW5hdGlvbihib2FyZCk7XG4gICAgaWYgKCFvcmlnaW5hdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgeyB6b29tIH0gPSBib2FyZC52aWV3cG9ydDtcbiAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IChvcmlnaW5hdGlvbiFbMF0gLSB2aWV3Qm94WzBdKSAqIHpvb207XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gKG9yaWdpbmF0aW9uIVsxXSAtIHZpZXdCb3hbMV0pICogem9vbTtcbiAgICB1cGRhdGVWaWV3cG9ydENvbnRhaW5lclNjcm9sbChib2FyZCwgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0Q29udGFpbmVyU2Nyb2xsKGJvYXJkOiBQbGFpdEJvYXJkLCBsZWZ0OiBudW1iZXIsIHRvcDogbnVtYmVyLCBpc0Zyb21WaWV3cG9ydENoYW5nZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lciA9IFBsYWl0Qm9hcmQuZ2V0Vmlld3BvcnRDb250YWluZXIoYm9hcmQpO1xuICAgIGlmICh2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxMZWZ0ICE9PSBsZWZ0IHx8IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbFRvcCAhPT0gdG9wKSB7XG4gICAgICAgIHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbExlZnQgPSBsZWZ0O1xuICAgICAgICB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxUb3AgPSB0b3A7XG4gICAgICAgIGlzRnJvbVZpZXdwb3J0Q2hhbmdlICYmIHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlKGJvYXJkLCB0cnVlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFZpZXdwb3J0Q29udGFpbmVyUmVjdChib2FyZCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldFZpZXdwb3J0Q29udGFpbmVyKGJvYXJkKTtcbiAgICB2aWV3cG9ydENvbnRhaW5lci5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICB2aWV3cG9ydENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVZpZXdCb3goYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgc2V0U1ZHVmlld0JveChib2FyZCwgdmlld0JveCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplVmlld3BvcnRPZmZzZXQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBpZiAoIWJvYXJkLnZpZXdwb3J0Py5vcmlnaW5hdGlvbikge1xuICAgICAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgICAgIGNvbnN0IGNlbnRlclggPSB2aWV3Qm94WzBdICsgdmlld0JveFsyXSAvIDI7XG4gICAgICAgIGNvbnN0IGNlbnRlclkgPSB2aWV3Qm94WzFdICsgdmlld0JveFszXSAvIDI7XG4gICAgICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gW2NlbnRlclggLSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyAyIC8gem9vbSwgY2VudGVyWSAtIHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyAyIC8gem9vbV0gYXMgUG9pbnQ7XG4gICAgICAgIHVwZGF0ZVZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQsIG9yaWdpbmF0aW9uKTtcbiAgICAgICAgdXBkYXRlVmlld3BvcnRPZmZzZXQoYm9hcmQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkLCBvcmlnaW5hdGlvbjogUG9pbnQsIHpvb20/OiBudW1iZXIpIHtcbiAgICB6b29tID0gem9vbSA/PyBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIFRyYW5zZm9ybXMuc2V0Vmlld3BvcnQoYm9hcmQsIHtcbiAgICAgICAgLi4uYm9hcmQudmlld3BvcnQsXG4gICAgICAgIHpvb20sXG4gICAgICAgIG9yaWdpbmF0aW9uXG4gICAgfSk7XG4gICAgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uKGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVpvb20oYm9hcmQ6IFBsYWl0Qm9hcmQsIG5ld1pvb206IG51bWJlciwgaXNDZW50ZXIgPSB0cnVlKSB7XG4gICAgbmV3Wm9vbSA9IGNsYW1wWm9vbUxldmVsKG5ld1pvb20pO1xuXG4gICAgY29uc3QgbW91c2VQb2ludCA9IEJPQVJEX1RPX01PVklOR19QT0lOVC5nZXQoYm9hcmQpO1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCk7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudFJlY3QgPSBuYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyUmVjdCA9IGdldFZpZXdwb3J0Q29udGFpbmVyUmVjdChib2FyZCk7XG4gICAgbGV0IGZvY3VzUG9pbnQgPSBbdmlld3BvcnRDb250YWluZXJSZWN0LndpZHRoIC8gMiwgdmlld3BvcnRDb250YWluZXJSZWN0LmhlaWdodCAvIDJdO1xuXG4gICAgaWYgKCFpc0NlbnRlciAmJiBtb3VzZVBvaW50ICYmIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKG1vdXNlUG9pbnRbMF0sIG1vdXNlUG9pbnRbMV0sIG5hdGl2ZUVsZW1lbnRSZWN0KSA9PT0gMCkge1xuICAgICAgICBmb2N1c1BvaW50ID0gdG9Qb2ludChtb3VzZVBvaW50WzBdLCBtb3VzZVBvaW50WzFdLCAobmF0aXZlRWxlbWVudCBhcyB1bmtub3duKSBhcyBTVkdFbGVtZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBvcmlnaW5hdGlvbiA9IGdldFZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQpO1xuICAgIGNvbnN0IGNlbnRlclggPSBvcmlnaW5hdGlvbiFbMF0gKyBmb2N1c1BvaW50WzBdIC8gem9vbTtcbiAgICBjb25zdCBjZW50ZXJZID0gb3JpZ2luYXRpb24hWzFdICsgZm9jdXNQb2ludFsxXSAvIHpvb207XG4gICAgY29uc3QgbmV3T3JpZ2luYXRpb24gPSBbY2VudGVyWCAtIGZvY3VzUG9pbnRbMF0gLyBuZXdab29tLCBjZW50ZXJZIC0gZm9jdXNQb2ludFsxXSAvIG5ld1pvb21dIGFzIFBvaW50O1xuICAgIHNldFZpZXdwb3J0KGJvYXJkLCBuZXdPcmlnaW5hdGlvbiwgbmV3Wm9vbSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRWaWV3cG9ydChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyUmVjdCA9IGdldFZpZXdwb3J0Q29udGFpbmVyUmVjdChib2FyZCk7XG4gICAgY29uc3QgZWxlbWVudEhvc3RCb3ggPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBib2FyZC5jaGlsZHJlbiwgdHJ1ZSk7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3QgYXV0b0ZpdFBhZGRpbmcgPSAxNjtcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gbmF0aXZlRWxlbWVudFJlY3Qud2lkdGggLSAyICogYXV0b0ZpdFBhZGRpbmc7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBuYXRpdmVFbGVtZW50UmVjdC5oZWlnaHQgLSAyICogYXV0b0ZpdFBhZGRpbmc7XG5cbiAgICBsZXQgbmV3Wm9vbSA9IHpvb207XG4gICAgaWYgKHZpZXdwb3J0V2lkdGggPCBlbGVtZW50SG9zdEJveC53aWR0aCB8fCB2aWV3cG9ydEhlaWdodCA8IGVsZW1lbnRIb3N0Qm94LmhlaWdodCkge1xuICAgICAgICBuZXdab29tID0gTWF0aC5taW4odmlld3BvcnRXaWR0aCAvIGVsZW1lbnRIb3N0Qm94LndpZHRoLCB2aWV3cG9ydEhlaWdodCAvIGVsZW1lbnRIb3N0Qm94LmhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Wm9vbSA9IDE7XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld0JveCA9IGdldFZpZXdCb3goYm9hcmQsIG5ld1pvb20pO1xuICAgIGNvbnN0IGNlbnRlclggPSB2aWV3Qm94WzBdICsgdmlld0JveFsyXSAvIDI7XG4gICAgY29uc3QgY2VudGVyWSA9IHZpZXdCb3hbMV0gKyB2aWV3Qm94WzNdIC8gMjtcbiAgICBjb25zdCBuZXdPcmlnaW5hdGlvbiA9IFtcbiAgICAgICAgY2VudGVyWCAtIHZpZXdwb3J0Q29udGFpbmVyUmVjdC53aWR0aCAvIDIgLyBuZXdab29tLFxuICAgICAgICBjZW50ZXJZIC0gdmlld3BvcnRDb250YWluZXJSZWN0LmhlaWdodCAvIDIgLyBuZXdab29tXG4gICAgXSBhcyBQb2ludDtcbiAgICBzZXRWaWV3cG9ydChib2FyZCwgbmV3T3JpZ2luYXRpb24sIG5ld1pvb20pO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlVmlld3BvcnRPcmlnaW5hdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCwgb3JpZ2luYXRpb246IFBvaW50KSA9PiB7XG4gICAgQk9BUkRfVE9fVklFV1BPUlRfT1JJR0lOQVRJT04uc2V0KGJvYXJkLCBvcmlnaW5hdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJWaWV3cG9ydE9yaWdpbmF0aW9uID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgQk9BUkRfVE9fVklFV1BPUlRfT1JJR0lOQVRJT04uZGVsZXRlKGJvYXJkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWaWV3cG9ydE9yaWdpbmF0aW9uID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYXRpb24gPSBCT0FSRF9UT19WSUVXUE9SVF9PUklHSU5BVElPTi5nZXQoYm9hcmQpO1xuICAgIGlmIChvcmlnaW5hdGlvbikge1xuICAgICAgICByZXR1cm4gb3JpZ2luYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGJvYXJkLnZpZXdwb3J0Lm9yaWdpbmF0aW9uO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpc0Zyb21TY3JvbGxpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gISFJU19GUk9NX1NDUk9MTElORy5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldElzRnJvbVNjcm9sbGluZyA9IChib2FyZDogUGxhaXRCb2FyZCwgc3RhdGU6IGJvb2xlYW4pID0+IHtcbiAgICBJU19GUk9NX1NDUk9MTElORy5zZXQoYm9hcmQsIHN0YXRlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0Zyb21WaWV3cG9ydENoYW5nZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiAhIUlTX0ZST01fVklFV1BPUlRfQ0hBTkdFLmdldChib2FyZCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SXNGcm9tVmlld3BvcnRDaGFuZ2UgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN0YXRlOiBib29sZWFuKSA9PiB7XG4gICAgSVNfRlJPTV9WSUVXUE9SVF9DSEFOR0Uuc2V0KGJvYXJkLCBzdGF0ZSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2Nyb2xsVG9SZWN0YW5nbGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIGNsaWVudDogUmVjdGFuZ2xlQ2xpZW50KSB7fVxuIl19
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdXRpbHMvdmlld3BvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBR25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuRCxPQUFPLEVBQXlCLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5GLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7QUFFN0QsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUVuRSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBaUI7SUFDdEQsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDeEMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRXJGLE9BQU87UUFDSCxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxjQUFjO1FBQzFDLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxHQUFHLGNBQWM7S0FDL0MsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBaUIsRUFBRSxJQUFZO0lBQzlELE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pFLE1BQU0scUJBQXFCLEdBQUcsVUFBVSxDQUFDLHFCQUFx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RUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQWMsRUFBRSxFQUFFO0lBQ3pFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsTUFBdUIsSUFBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0NST0xMX0JBUl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyB0b1BvaW50IH0gZnJvbSAnLi9kb20vY29tbW9uJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUgfSBmcm9tICcuL21hdGgnO1xuaW1wb3J0IHsgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULCBCT0FSRF9UT19WSUVXUE9SVF9PUklHSU5BVElPTiB9IGZyb20gJy4vd2Vhay1tYXBzJztcblxuY29uc3QgSVNfRlJPTV9TQ1JPTExJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5jb25zdCBJU19GUk9NX1ZJRVdQT1JUX0NIQU5HRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3cG9ydENvbnRhaW5lclJlY3QoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IGhpZGVTY3JvbGxiYXIgfSA9IGJvYXJkLm9wdGlvbnM7XG4gICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBoaWRlU2Nyb2xsYmFyID8gU0NST0xMX0JBUl9XSURUSCA6IDA7XG4gICAgY29uc3Qgdmlld3BvcnRSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHZpZXdwb3J0UmVjdC53aWR0aCArIHNjcm9sbEJhcldpZHRoLFxuICAgICAgICBoZWlnaHQ6IHZpZXdwb3J0UmVjdC5oZWlnaHQgKyBzY3JvbGxCYXJXaWR0aFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50SG9zdEJCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGNoaWxkcmVuUmVjdCA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lclJlY3QgPSBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyB6b29tO1xuICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyB6b29tO1xuICAgIGxldCBsZWZ0OiBudW1iZXI7XG4gICAgbGV0IHJpZ2h0OiBudW1iZXI7XG4gICAgbGV0IHRvcDogbnVtYmVyO1xuICAgIGxldCBib3R0b206IG51bWJlcjtcblxuICAgIGlmIChjaGlsZHJlblJlY3Qud2lkdGggPCBjb250YWluZXJXaWR0aCkge1xuICAgICAgICBjb25zdCBjZW50ZXJYID0gY2hpbGRyZW5SZWN0LnggKyBjaGlsZHJlblJlY3Qud2lkdGggLyAyO1xuICAgICAgICBjb25zdCBoYWxmQ29udGFpbmVyV2lkdGggPSBjb250YWluZXJXaWR0aCAvIDI7XG4gICAgICAgIGxlZnQgPSBjZW50ZXJYIC0gaGFsZkNvbnRhaW5lcldpZHRoO1xuICAgICAgICByaWdodCA9IGNlbnRlclggKyBoYWxmQ29udGFpbmVyV2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9IGNoaWxkcmVuUmVjdC54O1xuICAgICAgICByaWdodCA9IGNoaWxkcmVuUmVjdC54ICsgY2hpbGRyZW5SZWN0LndpZHRoO1xuICAgIH1cbiAgICBpZiAoY2hpbGRyZW5SZWN0LmhlaWdodCA8IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICBjb25zdCBjZW50ZXJZID0gY2hpbGRyZW5SZWN0LnkgKyBjaGlsZHJlblJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgaGFsZkNvbnRhaW5lckhlaWdodCA9IGNvbnRhaW5lckhlaWdodCAvIDI7XG4gICAgICAgIHRvcCA9IGNlbnRlclkgLSBoYWxmQ29udGFpbmVySGVpZ2h0O1xuICAgICAgICBib3R0b20gPSBjZW50ZXJZICsgaGFsZkNvbnRhaW5lckhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b3AgPSBjaGlsZHJlblJlY3QueTtcbiAgICAgICAgYm90dG9tID0gY2hpbGRyZW5SZWN0LnkgKyBjaGlsZHJlblJlY3QuaGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0LFxuICAgICAgICByaWdodCxcbiAgICAgICAgdG9wLFxuICAgICAgICBib3R0b21cbiAgICB9O1xufVxuXG4vKipcbiAqIOmqjOivgee8qeaUvuavlOaYr+WQpuespuWQiOmZkOWItu+8jOWmguaenOi2heWHuumZkOWItu+8jOWImei/lOWbnuWQiOmAgueahOe8qeaUvuavlFxuICogQHBhcmFtIHpvb20g57yp5pS+5q+UXG4gKiBAcGFyYW0gbWluWm9vbSDmnIDlsI/nvKnmlL7mr5RcbiAqIEBwYXJhbSBtYXhab29tIOacgOWkp+e8qeaUvuavlFxuICogQHJldHVybnMg5q2j56Gu55qE57yp5pS+5q+UXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFpvb21MZXZlbCh6b29tOiBudW1iZXIsIG1pblpvb20gPSAwLjIsIG1heFpvb20gPSA0KSB7XG4gICAgcmV0dXJuIHpvb20gPCBtaW5ab29tID8gbWluWm9vbSA6IHpvb20gPiBtYXhab29tID8gbWF4Wm9vbSA6IHpvb207XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3Qm94KGJvYXJkOiBQbGFpdEJvYXJkLCB6b29tOiBudW1iZXIpIHtcbiAgICBjb25zdCB7IGhpZGVTY3JvbGxiYXIgfSA9IGJvYXJkLm9wdGlvbnM7XG4gICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBoaWRlU2Nyb2xsYmFyID8gU0NST0xMX0JBUl9XSURUSCA6IDA7XG4gICAgY29uc3Qgdmlld3BvcnRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsZW1lbnRIb3N0QkJveCA9IGdldEVsZW1lbnRIb3N0QkJveChib2FyZCwgem9vbSk7XG4gICAgY29uc3QgaG9yaXpvbnRhbFBhZGRpbmcgPSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyAyO1xuICAgIGNvbnN0IHZlcnRpY2FsUGFkZGluZyA9IHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyAyO1xuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSAoZWxlbWVudEhvc3RCQm94LnJpZ2h0IC0gZWxlbWVudEhvc3RCQm94LmxlZnQpICogem9vbSArIDIgKiBob3Jpem9udGFsUGFkZGluZyArIHNjcm9sbEJhcldpZHRoO1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gKGVsZW1lbnRIb3N0QkJveC5ib3R0b20gLSBlbGVtZW50SG9zdEJCb3gudG9wKSAqIHpvb20gKyAyICogdmVydGljYWxQYWRkaW5nICsgc2Nyb2xsQmFyV2lkdGg7XG4gICAgY29uc3Qgdmlld0JveCA9IFtcbiAgICAgICAgZWxlbWVudEhvc3RCQm94LmxlZnQgLSBob3Jpem9udGFsUGFkZGluZyAvIHpvb20sXG4gICAgICAgIGVsZW1lbnRIb3N0QkJveC50b3AgLSB2ZXJ0aWNhbFBhZGRpbmcgLyB6b29tLFxuICAgICAgICB2aWV3cG9ydFdpZHRoIC8gem9vbSxcbiAgICAgICAgdmlld3BvcnRIZWlnaHQgLyB6b29tXG4gICAgXTtcbiAgICByZXR1cm4gdmlld0JveDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNWR1ZpZXdCb3goYm9hcmQ6IFBsYWl0Qm9hcmQsIHZpZXdCb3g6IG51bWJlcltdKSB7XG4gICAgY29uc3Qgem9vbSA9IGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpO1xuICAgIGhvc3RFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIGhvc3RFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7dmlld0JveFsyXSAqIHpvb219cHhgO1xuICAgIGhvc3RFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3ZpZXdCb3hbM10gKiB6b29tfXB4YDtcblxuICAgIGlmICh2aWV3Qm94ICYmIHZpZXdCb3hbMl0gPiAwICYmIHZpZXdCb3hbM10gPiAwKSB7XG4gICAgICAgIGhvc3RFbGVtZW50LnNldEF0dHJpYnV0ZSgndmlld0JveCcsIHZpZXdCb3guam9pbignICcpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVWaWV3cG9ydE9mZnNldChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gZ2V0Vmlld3BvcnRPcmlnaW5hdGlvbihib2FyZCk7XG4gICAgaWYgKCFvcmlnaW5hdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgeyB6b29tIH0gPSBib2FyZC52aWV3cG9ydDtcbiAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IChvcmlnaW5hdGlvbiFbMF0gLSB2aWV3Qm94WzBdKSAqIHpvb207XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gKG9yaWdpbmF0aW9uIVsxXSAtIHZpZXdCb3hbMV0pICogem9vbTtcbiAgICB1cGRhdGVWaWV3cG9ydENvbnRhaW5lclNjcm9sbChib2FyZCwgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0Q29udGFpbmVyU2Nyb2xsKGJvYXJkOiBQbGFpdEJvYXJkLCBsZWZ0OiBudW1iZXIsIHRvcDogbnVtYmVyLCBpc0Zyb21WaWV3cG9ydENoYW5nZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRhaW5lciA9IFBsYWl0Qm9hcmQuZ2V0Vmlld3BvcnRDb250YWluZXIoYm9hcmQpO1xuICAgIGlmICh2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxMZWZ0ICE9PSBsZWZ0IHx8IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbFRvcCAhPT0gdG9wKSB7XG4gICAgICAgIHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbExlZnQgPSBsZWZ0O1xuICAgICAgICB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxUb3AgPSB0b3A7XG4gICAgICAgIGlzRnJvbVZpZXdwb3J0Q2hhbmdlICYmIHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlKGJvYXJkLCB0cnVlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFZpZXdwb3J0Q29udGFpbmVyUmVjdChib2FyZCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldFZpZXdwb3J0Q29udGFpbmVyKGJvYXJkKTtcbiAgICB2aWV3cG9ydENvbnRhaW5lci5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICB2aWV3cG9ydENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVZpZXdCb3goYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgc2V0U1ZHVmlld0JveChib2FyZCwgdmlld0JveCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplVmlld3BvcnRPZmZzZXQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBpZiAoIWJvYXJkLnZpZXdwb3J0Py5vcmlnaW5hdGlvbikge1xuICAgICAgICBjb25zdCB6b29tID0gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnRDb250YWluZXJSZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveChib2FyZCwgem9vbSk7XG4gICAgICAgIGNvbnN0IGNlbnRlclggPSB2aWV3Qm94WzBdICsgdmlld0JveFsyXSAvIDI7XG4gICAgICAgIGNvbnN0IGNlbnRlclkgPSB2aWV3Qm94WzFdICsgdmlld0JveFszXSAvIDI7XG4gICAgICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gW2NlbnRlclggLSB2aWV3cG9ydENvbnRhaW5lclJlY3Qud2lkdGggLyAyIC8gem9vbSwgY2VudGVyWSAtIHZpZXdwb3J0Q29udGFpbmVyUmVjdC5oZWlnaHQgLyAyIC8gem9vbV0gYXMgUG9pbnQ7XG4gICAgICAgIHVwZGF0ZVZpZXdwb3J0T3JpZ2luYXRpb24oYm9hcmQsIG9yaWdpbmF0aW9uKTtcbiAgICAgICAgdXBkYXRlVmlld3BvcnRPZmZzZXQoYm9hcmQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkKTtcbn1cblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVZpZXdwb3J0T3JpZ2luYXRpb24gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9yaWdpbmF0aW9uOiBQb2ludCkgPT4ge1xuICAgIEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OLnNldChib2FyZCwgb3JpZ2luYXRpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyVmlld3BvcnRPcmlnaW5hdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OLmRlbGV0ZShib2FyZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Vmlld3BvcnRPcmlnaW5hdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmF0aW9uID0gQk9BUkRfVE9fVklFV1BPUlRfT1JJR0lOQVRJT04uZ2V0KGJvYXJkKTtcbiAgICBpZiAob3JpZ2luYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBib2FyZC52aWV3cG9ydC5vcmlnaW5hdGlvbjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNGcm9tU2Nyb2xsaW5nID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuICEhSVNfRlJPTV9TQ1JPTExJTkcuZ2V0KGJvYXJkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRJc0Zyb21TY3JvbGxpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN0YXRlOiBib29sZWFuKSA9PiB7XG4gICAgSVNfRlJPTV9TQ1JPTExJTkcuc2V0KGJvYXJkLCBzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNGcm9tVmlld3BvcnRDaGFuZ2UgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gISFJU19GUk9NX1ZJRVdQT1JUX0NIQU5HRS5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdGF0ZTogYm9vbGVhbikgPT4ge1xuICAgIElTX0ZST01fVklFV1BPUlRfQ0hBTkdFLnNldChib2FyZCwgc3RhdGUpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbFRvUmVjdGFuZ2xlKGJvYXJkOiBQbGFpdEJvYXJkLCBjbGllbnQ6IFJlY3RhbmdsZUNsaWVudCkge31cbiJdfQ==
@@ -16,4 +16,5 @@ export const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
16
16
  // save no standard selected elements
17
17
  export const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
18
18
  export const BOARD_TO_MOVING_ELEMENT = new WeakMap();
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL3dlYWstbWFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUUvRSxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBCb2FyZENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4uL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBBbmNlc3RvciwgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcblxuLy8gcmVjb3JkIHJpY2h0ZXh0IHR5cGUgc3RhdHVzXG5leHBvcnQgY29uc3QgSVNfQk9BUkRfQ0FDSEUgPSBuZXcgV2Vha01hcDxPYmplY3QsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBGTFVTSElORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX0lOREVYID0gbmV3IFdlYWtNYXA8UGxhaXROb2RlLCBudW1iZXI+KCk7XG5cbmV4cG9ydCBjb25zdCBOT0RFX1RPX1BBUkVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Tm9kZSwgQW5jZXN0b3I+KCk7XG5cbmV4cG9ydCBjb25zdCBJU19URVhUX0VESVRBQkxFID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX09OX0NIQU5HRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsICgpID0+IHZvaWQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19DT01QT05FTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBCb2FyZENvbXBvbmVudEludGVyZmFjZT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1JPVUdIX1NWRyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFJvdWdoU1ZHPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fSE9TVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFNWR1NWR0VsZW1lbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19FTEVNRU5UX0hPU1QgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBTVkdHRWxlbWVudD4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1NFTEVDVEVEX0VMRU1FTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnRbXT4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX01PVklOR19QT0lOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBvaW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fVklFV1BPUlRfT1JJR0lOQVRJT04gPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQb2ludD4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG4vLyBzYXZlIG5vIHN0YW5kYXJkIHNlbGVjdGVkIGVsZW1lbnRzXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50W10+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudFtdPigpO1xuIl19
19
+ export const PATH_REFS = new WeakMap();
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL3dlYWstbWFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUUvRSxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7QUFFakYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFzQyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgQm9hcmRDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuLi9ib2FyZC9ib2FyZC5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgQW5jZXN0b3IsIFBsYWl0Tm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBQYXRoUmVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wYXRoLXJlZic7XG5cbi8vIHJlY29yZCByaWNodGV4dCB0eXBlIHN0YXR1c1xuZXhwb3J0IGNvbnN0IElTX0JPQVJEX0NBQ0hFID0gbmV3IFdlYWtNYXA8T2JqZWN0LCBib29sZWFuPigpO1xuXG5leHBvcnQgY29uc3QgRkxVU0hJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5leHBvcnQgY29uc3QgTk9ERV9UT19JTkRFWCA9IG5ldyBXZWFrTWFwPFBsYWl0Tm9kZSwgbnVtYmVyPigpO1xuXG5leHBvcnQgY29uc3QgTk9ERV9UT19QQVJFTlQgPSBuZXcgV2Vha01hcDxQbGFpdE5vZGUsIEFuY2VzdG9yPigpO1xuXG5leHBvcnQgY29uc3QgSVNfVEVYVF9FRElUQUJMRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19PTl9DSEFOR0UgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCAoKSA9PiB2b2lkPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fQ09NUE9ORU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgQm9hcmRDb21wb25lbnRJbnRlcmZhY2U+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19ST1VHSF9TVkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBSb3VnaFNWRz4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX0hPU1QgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBTVkdTVkdFbGVtZW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fRUxFTUVOVF9IT1NUID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgU1ZHR0VsZW1lbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19TRUxFQ1RFRF9FTEVNRU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50W10+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19NT1ZJTkdfUE9JTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQb2ludD4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1ZJRVdQT1JUX09SSUdJTkFUSU9OID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUG9pbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuLy8gc2F2ZSBubyBzdGFuZGFyZCBzZWxlY3RlZCBlbGVtZW50c1xuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudFtdPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fTU9WSU5HX0VMRU1FTlQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnRbXT4oKTtcblxuZXhwb3J0IGNvbnN0IFBBVEhfUkVGUzogV2Vha01hcDxQbGFpdEJvYXJkLCBTZXQ8UGF0aFJlZj4+ID0gbmV3IFdlYWtNYXAoKTtcbiJdfQ==