@plait/core 0.23.0 → 0.24.0-next.1

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 (96) hide show
  1. package/constants/index.d.ts +0 -1
  2. package/esm2020/board/board.component.interface.mjs +1 -1
  3. package/esm2020/board/board.component.mjs +55 -6
  4. package/esm2020/constants/index.mjs +1 -2
  5. package/esm2020/constants/keycodes.mjs +1 -1
  6. package/esm2020/constants/resize.mjs +1 -1
  7. package/esm2020/constants/selection.mjs +1 -1
  8. package/esm2020/core/children/children.component.mjs +1 -1
  9. package/esm2020/core/children/effect.mjs +1 -1
  10. package/esm2020/core/element/context-change.mjs +1 -1
  11. package/esm2020/core/element/context.mjs +1 -1
  12. package/esm2020/core/element/element.component.mjs +1 -1
  13. package/esm2020/core/element/plugin-element.mjs +1 -1
  14. package/esm2020/core/island/island-base.component.mjs +1 -1
  15. package/esm2020/interfaces/board.mjs +5 -1
  16. package/esm2020/interfaces/custom-types.mjs +1 -1
  17. package/esm2020/interfaces/element.mjs +1 -1
  18. package/esm2020/interfaces/history.mjs +1 -1
  19. package/esm2020/interfaces/index.mjs +1 -1
  20. package/esm2020/interfaces/node.mjs +1 -1
  21. package/esm2020/interfaces/operation.mjs +1 -1
  22. package/esm2020/interfaces/path-ref.mjs +1 -1
  23. package/esm2020/interfaces/path.mjs +1 -1
  24. package/esm2020/interfaces/plugin-key.mjs +1 -1
  25. package/esm2020/interfaces/plugin.mjs +1 -1
  26. package/esm2020/interfaces/point.mjs +1 -1
  27. package/esm2020/interfaces/pointer.mjs +1 -1
  28. package/esm2020/interfaces/rectangle-client.mjs +1 -1
  29. package/esm2020/interfaces/selection.mjs +1 -1
  30. package/esm2020/interfaces/theme.mjs +1 -1
  31. package/esm2020/interfaces/viewport.mjs +1 -1
  32. package/esm2020/plait-core.mjs +1 -1
  33. package/esm2020/plait.module.mjs +1 -1
  34. package/esm2020/plugins/create-board.mjs +10 -2
  35. package/esm2020/plugins/with-board.mjs +1 -1
  36. package/esm2020/plugins/with-hand.mjs +1 -1
  37. package/esm2020/plugins/with-history.mjs +1 -1
  38. package/esm2020/plugins/with-hotkey.mjs +1 -1
  39. package/esm2020/plugins/with-moving.mjs +6 -4
  40. package/esm2020/plugins/with-options.mjs +1 -1
  41. package/esm2020/plugins/with-selection.mjs +13 -11
  42. package/esm2020/plugins/with-viewport.mjs +1 -1
  43. package/esm2020/public-api.mjs +1 -1
  44. package/esm2020/services/image-context.service.mjs +1 -1
  45. package/esm2020/testing/core/create-board.mjs +1 -1
  46. package/esm2020/testing/core/fake-weak-map.mjs +1 -1
  47. package/esm2020/testing/core/index.mjs +1 -1
  48. package/esm2020/testing/fake-events/event-objects.mjs +1 -1
  49. package/esm2020/testing/fake-events/index.mjs +1 -1
  50. package/esm2020/testing/index.mjs +1 -1
  51. package/esm2020/testing/test-element.mjs +1 -1
  52. package/esm2020/transforms/board.mjs +1 -1
  53. package/esm2020/transforms/general.mjs +1 -1
  54. package/esm2020/transforms/index.mjs +1 -1
  55. package/esm2020/transforms/node.mjs +1 -1
  56. package/esm2020/transforms/selection.mjs +1 -1
  57. package/esm2020/transforms/theme.mjs +1 -1
  58. package/esm2020/transforms/viewport.mjs +1 -1
  59. package/esm2020/utils/board.mjs +1 -1
  60. package/esm2020/utils/clipboard.mjs +45 -0
  61. package/esm2020/utils/common.mjs +1 -1
  62. package/esm2020/utils/dom/common.mjs +1 -1
  63. package/esm2020/utils/dom/environment.mjs +1 -1
  64. package/esm2020/utils/dom/foreign.mjs +1 -1
  65. package/esm2020/utils/dom/index.mjs +1 -1
  66. package/esm2020/utils/draw/arrow.mjs +1 -1
  67. package/esm2020/utils/draw/circle.mjs +1 -1
  68. package/esm2020/utils/draw/line.mjs +1 -1
  69. package/esm2020/utils/draw/rectangle.mjs +1 -1
  70. package/esm2020/utils/element.mjs +1 -1
  71. package/esm2020/utils/environment.mjs +1 -1
  72. package/esm2020/utils/helper.mjs +1 -1
  73. package/esm2020/utils/history.mjs +1 -1
  74. package/esm2020/utils/hotkeys.mjs +1 -1
  75. package/esm2020/utils/id-creator.mjs +1 -1
  76. package/esm2020/utils/index.mjs +3 -1
  77. package/esm2020/utils/math.mjs +1 -1
  78. package/esm2020/utils/moving-element.mjs +1 -1
  79. package/esm2020/utils/selected-element.mjs +1 -1
  80. package/esm2020/utils/to-image.mjs +1 -1
  81. package/esm2020/utils/touch.mjs +8 -0
  82. package/esm2020/utils/tree.mjs +1 -1
  83. package/esm2020/utils/viewport.mjs +1 -1
  84. package/esm2020/utils/weak-maps.mjs +2 -1
  85. package/fesm2015/plait-core.mjs +134 -22
  86. package/fesm2015/plait-core.mjs.map +1 -1
  87. package/fesm2020/plait-core.mjs +134 -19
  88. package/fesm2020/plait-core.mjs.map +1 -1
  89. package/interfaces/board.d.ts +13 -4
  90. package/interfaces/operation.d.ts +1 -1
  91. package/package.json +1 -1
  92. package/styles/styles.scss +7 -1
  93. package/utils/clipboard.d.ts +8 -0
  94. package/utils/index.d.ts +2 -0
  95. package/utils/touch.d.ts +3 -0
  96. package/utils/weak-maps.d.ts +1 -0
@@ -28,6 +28,7 @@ const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
28
28
  // save no standard selected elements
29
29
  const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
30
30
  const BOARD_TO_MOVING_ELEMENT = new WeakMap();
31
+ const IS_PREVENT_TOUCH_MOVE = new WeakMap();
31
32
  const PATH_REFS = new WeakMap();
32
33
 
33
34
  function depthFirstRecursion(node, callback, recursion, isReverse) {
@@ -270,6 +271,10 @@ const PlaitBoard = {
270
271
  isPointer(board, pointer) {
271
272
  return board.pointer === pointer;
272
273
  },
274
+ isInPointer(board, pointers) {
275
+ const point = board.pointer;
276
+ return pointers.includes(point);
277
+ },
273
278
  getMovingPointInBoard(board) {
274
279
  return BOARD_TO_MOVING_POINT_IN_BOARD.get(board);
275
280
  },
@@ -874,7 +879,6 @@ var ResizeCursorClass;
874
879
  const ATTACHED_ELEMENT_CLASS_NAME = 'plait-board-attached';
875
880
 
876
881
  const CLIP_BOARD_FORMAT_KEY = 'x-plait-fragment';
877
- const CLIP_BOARD_IMAGE_FORMAT_KEY = 'x-plait-image-fragment';
878
882
  const HOST_CLASS_NAME = 'plait-board-container';
879
883
  const SCROLL_BAR_WIDTH = 20;
880
884
  const MAX_RADIUS = 16;
@@ -1571,6 +1575,57 @@ function downloadImage(url, name) {
1571
1575
  a.remove();
1572
1576
  }
1573
1577
 
1578
+ const getClipboardByKey = (key) => {
1579
+ return `application/x-plait-${key}-fragment`;
1580
+ };
1581
+ const setClipboardData = (data, elements) => {
1582
+ const result = [...elements];
1583
+ const pluginContextResult = getDataFromClipboard(data);
1584
+ if (pluginContextResult) {
1585
+ result.push(...pluginContextResult);
1586
+ }
1587
+ const stringObj = JSON.stringify(result);
1588
+ const encoded = window.btoa(encodeURIComponent(stringObj));
1589
+ data === null || data === void 0 ? void 0 : data.setData(`application/${CLIP_BOARD_FORMAT_KEY}`, encoded);
1590
+ };
1591
+ const setClipboardDataByText = (data, text) => {
1592
+ const pluginContextResult = getTextFromClipboard(data);
1593
+ data === null || data === void 0 ? void 0 : data.setData(`text/plain`, text + '\n' + pluginContextResult);
1594
+ };
1595
+ const setClipboardDataByMedia = (data, media, key) => {
1596
+ const stringObj = JSON.stringify(media);
1597
+ const encoded = window.btoa(encodeURIComponent(stringObj));
1598
+ data === null || data === void 0 ? void 0 : data.setData(getClipboardByKey(key), encoded);
1599
+ };
1600
+ const getDataFromClipboard = (data) => {
1601
+ const encoded = data === null || data === void 0 ? void 0 : data.getData(`application/${CLIP_BOARD_FORMAT_KEY}`);
1602
+ let nodesData = [];
1603
+ if (encoded) {
1604
+ const decoded = decodeURIComponent(window.atob(encoded));
1605
+ nodesData = JSON.parse(decoded);
1606
+ }
1607
+ return nodesData;
1608
+ };
1609
+ const getTextFromClipboard = (data) => {
1610
+ return (data ? data.getData(`text/plain`) : '');
1611
+ };
1612
+ const getClipboardDataByMedia = (data, key) => {
1613
+ const encoded = data === null || data === void 0 ? void 0 : data.getData(getClipboardByKey(key));
1614
+ let imageItem = null;
1615
+ if (encoded) {
1616
+ const decoded = decodeURIComponent(window.atob(encoded));
1617
+ imageItem = JSON.parse(decoded);
1618
+ }
1619
+ return imageItem;
1620
+ };
1621
+
1622
+ const isPreventTouchMove = (board) => {
1623
+ return !!IS_PREVENT_TOUCH_MOVE.get(board);
1624
+ };
1625
+ const preventTouchMove = (board, state) => {
1626
+ IS_PREVENT_TOUCH_MOVE.set(board, state);
1627
+ };
1628
+
1574
1629
  const PlaitElement = {
1575
1630
  isRootElement(value) {
1576
1631
  const parent = NODE_TO_PARENT.get(value);
@@ -2082,7 +2137,15 @@ function createBoard(children, options) {
2082
2137
  isRecursion: element => true,
2083
2138
  isMovable: element => false,
2084
2139
  getRectangle: element => null,
2085
- applyTheme: (element) => { }
2140
+ applyTheme: (element) => { },
2141
+ pointerDown: (pointer) => { },
2142
+ pointerMove: (pointer) => { },
2143
+ pointerUp: (pointer) => { },
2144
+ pointerCancel: (pointer) => { },
2145
+ pointerOut: (pointer) => { },
2146
+ pointerLeave: (pointer) => { },
2147
+ globalPointerMove: (pointer) => { },
2148
+ globalPointerUp: (pointer) => { },
2086
2149
  };
2087
2150
  return board;
2088
2151
  }
@@ -2238,7 +2301,7 @@ function withHandPointer(board) {
2238
2301
  }
2239
2302
 
2240
2303
  function withSelection(board) {
2241
- const { mousedown, globalMousemove, globalMouseup, onChange } = board;
2304
+ const { pointerDown, globalPointerMove, globalPointerUp, onChange } = board;
2242
2305
  let start = null;
2243
2306
  let end = null;
2244
2307
  let selectionMovingG;
@@ -2246,12 +2309,12 @@ function withSelection(board) {
2246
2309
  let previousSelectedElements;
2247
2310
  // prevent text from being selected when user pressed main pointer and is moving
2248
2311
  let needPreventNativeSelectionWhenMoving = false;
2249
- board.mousedown = (event) => {
2312
+ board.pointerDown = (event) => {
2250
2313
  if (event.target instanceof Element && !event.target.closest('.plait-richtext-container')) {
2251
2314
  needPreventNativeSelectionWhenMoving = true;
2252
2315
  }
2253
2316
  if (!isMainPointer(event)) {
2254
- mousedown(event);
2317
+ pointerDown(event);
2255
2318
  return;
2256
2319
  }
2257
2320
  const options = board.getPluginOptions(PlaitPluginKey.withSelection);
@@ -2260,7 +2323,7 @@ function withSelection(board) {
2260
2323
  const hitElements = getHitElements(board, { ranges: [range] });
2261
2324
  const selectedElements = getSelectedElements(board);
2262
2325
  if (hitElements.length === 1 && selectedElements.includes(hitElements[0]) && !options.isDisabledSelect) {
2263
- mousedown(event);
2326
+ pointerDown(event);
2264
2327
  return;
2265
2328
  }
2266
2329
  if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
@@ -2268,11 +2331,12 @@ function withSelection(board) {
2268
2331
  options.isMultiple &&
2269
2332
  !options.isDisabledSelect) {
2270
2333
  start = point;
2334
+ preventTouchMove(board, true);
2271
2335
  }
2272
2336
  Transforms.setSelection(board, { ranges: [range] });
2273
- mousedown(event);
2337
+ pointerDown(event);
2274
2338
  };
2275
- board.globalMousemove = (event) => {
2339
+ board.globalPointerMove = (event) => {
2276
2340
  if (needPreventNativeSelectionWhenMoving) {
2277
2341
  // prevent text from being selected
2278
2342
  event.preventDefault();
@@ -2299,9 +2363,9 @@ function withSelection(board) {
2299
2363
  PlaitBoard.getHost(board).append(selectionMovingG);
2300
2364
  }
2301
2365
  }
2302
- globalMousemove(event);
2366
+ globalPointerMove(event);
2303
2367
  };
2304
- board.globalMouseup = (event) => {
2368
+ board.globalPointerUp = (event) => {
2305
2369
  if (start && end) {
2306
2370
  selectionMovingG === null || selectionMovingG === void 0 ? void 0 : selectionMovingG.remove();
2307
2371
  clearSelectionMoving(board);
@@ -2320,7 +2384,8 @@ function withSelection(board) {
2320
2384
  start = null;
2321
2385
  end = null;
2322
2386
  needPreventNativeSelectionWhenMoving = false;
2323
- globalMouseup(event);
2387
+ preventTouchMove(board, false);
2388
+ globalPointerUp(event);
2324
2389
  };
2325
2390
  board.onChange = () => {
2326
2391
  const options = board.getPluginOptions(PlaitPluginKey.withSelection);
@@ -2460,7 +2525,7 @@ function withMoving(board) {
2460
2525
  mousedown(event);
2461
2526
  };
2462
2527
  board.mousemove = event => {
2463
- if (startPoint && (activeElements === null || activeElements === void 0 ? void 0 : activeElements.length) && !PlaitBoard.hasBeenTextEditing(board)) {
2528
+ if (startPoint && activeElements.length && !PlaitBoard.hasBeenTextEditing(board)) {
2464
2529
  if (!isPreventDefault) {
2465
2530
  isPreventDefault = true;
2466
2531
  }
@@ -2472,10 +2537,12 @@ function withMoving(board) {
2472
2537
  if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer) {
2473
2538
  throttleRAF(() => {
2474
2539
  const currentElements = activeElements.map(activeElement => {
2475
- const [x, y] = activeElement === null || activeElement === void 0 ? void 0 : activeElement.points[0];
2540
+ const points = activeElement.points || [];
2541
+ const [x, y] = activeElement.points[0];
2542
+ const newPoints = points.map(p => [p[0] + offsetX, p[1] + offsetY]);
2476
2543
  const index = board.children.findIndex(item => item.id === activeElement.id);
2477
2544
  Transforms.setNode(board, {
2478
- points: [[x + offsetX, y + offsetY]]
2545
+ points: newPoints
2479
2546
  }, [index]);
2480
2547
  MERGING.set(board, true);
2481
2548
  return PlaitNode.get(board, [index]);
@@ -2958,34 +3025,67 @@ class PlaitBoardComponent {
2958
3025
  .subscribe((event) => {
2959
3026
  this.board.mousedown(event);
2960
3027
  });
3028
+ fromEvent(this.host, 'pointerdown')
3029
+ .pipe(takeUntil(this.destroy$))
3030
+ .subscribe((event) => {
3031
+ this.board.pointerDown(event);
3032
+ });
2961
3033
  fromEvent(this.host, 'mousemove')
2962
3034
  .pipe(takeUntil(this.destroy$))
2963
3035
  .subscribe((event) => {
2964
3036
  BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
2965
3037
  this.board.mousemove(event);
2966
3038
  });
3039
+ fromEvent(this.host, 'pointermove')
3040
+ .pipe(takeUntil(this.destroy$))
3041
+ .subscribe((event) => {
3042
+ BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
3043
+ this.board.pointerMove(event);
3044
+ });
2967
3045
  fromEvent(this.host, 'mouseleave')
2968
3046
  .pipe(takeUntil(this.destroy$))
2969
3047
  .subscribe((event) => {
2970
3048
  BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
2971
3049
  this.board.mouseleave(event);
2972
3050
  });
3051
+ fromEvent(this.host, 'pointerleave')
3052
+ .pipe(takeUntil(this.destroy$))
3053
+ .subscribe((event) => {
3054
+ BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
3055
+ this.board.pointerLeave(event);
3056
+ });
2973
3057
  fromEvent(document, 'mousemove')
2974
3058
  .pipe(takeUntil(this.destroy$))
2975
3059
  .subscribe((event) => {
2976
3060
  BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
2977
3061
  this.board.globalMousemove(event);
2978
3062
  });
3063
+ fromEvent(document, 'pointermove')
3064
+ .pipe(takeUntil(this.destroy$))
3065
+ .subscribe((event) => {
3066
+ BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
3067
+ this.board.globalPointerMove(event);
3068
+ });
2979
3069
  fromEvent(this.host, 'mouseup')
2980
3070
  .pipe(takeUntil(this.destroy$))
2981
3071
  .subscribe((event) => {
2982
3072
  this.board.mouseup(event);
2983
3073
  });
3074
+ fromEvent(this.host, 'pointerup')
3075
+ .pipe(takeUntil(this.destroy$))
3076
+ .subscribe((event) => {
3077
+ this.board.pointerUp(event);
3078
+ });
2984
3079
  fromEvent(document, 'mouseup')
2985
3080
  .pipe(takeUntil(this.destroy$))
2986
3081
  .subscribe((event) => {
2987
3082
  this.board.globalMouseup(event);
2988
3083
  });
3084
+ fromEvent(document, 'pointerup')
3085
+ .pipe(takeUntil(this.destroy$))
3086
+ .subscribe((event) => {
3087
+ this.board.globalPointerUp(event);
3088
+ });
2989
3089
  fromEvent(this.host, 'dblclick')
2990
3090
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
2991
3091
  .subscribe((event) => {
@@ -2996,8 +3096,11 @@ class PlaitBoardComponent {
2996
3096
  this.board.globalKeydown(event);
2997
3097
  }), filter(event => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board) && !hasInputOrTextareaTarget(event.target)))
2998
3098
  .subscribe((event) => {
2999
- var _a;
3000
- (_a = this.board) === null || _a === void 0 ? void 0 : _a.keydown(event);
3099
+ const selectedElements = getSelectedElements(this.board);
3100
+ if (selectedElements.length > 0 && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
3101
+ this.board.deleteFragment(null);
3102
+ }
3103
+ this.board.keydown(event);
3001
3104
  });
3002
3105
  fromEvent(document, 'keyup')
3003
3106
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
@@ -3008,9 +3111,10 @@ class PlaitBoardComponent {
3008
3111
  fromEvent(document, 'copy')
3009
3112
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
3010
3113
  .subscribe((event) => {
3011
- var _a;
3114
+ const selectedElements = getSelectedElements(this.board);
3012
3115
  event.preventDefault();
3013
- (_a = this.board) === null || _a === void 0 ? void 0 : _a.setFragment(event.clipboardData);
3116
+ const rectangle = getRectangleByElements(this.board, selectedElements, false);
3117
+ this.board.setFragment(event.clipboardData, rectangle);
3014
3118
  });
3015
3119
  fromEvent(document, 'paste')
3016
3120
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
@@ -3024,10 +3128,11 @@ class PlaitBoardComponent {
3024
3128
  fromEvent(document, 'cut')
3025
3129
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
3026
3130
  .subscribe((event) => {
3027
- var _a, _b;
3131
+ const selectedElements = getSelectedElements(this.board);
3028
3132
  event.preventDefault();
3029
- (_a = this.board) === null || _a === void 0 ? void 0 : _a.setFragment(event.clipboardData);
3030
- (_b = this.board) === null || _b === void 0 ? void 0 : _b.deleteFragment(event.clipboardData);
3133
+ const rectangle = getRectangleByElements(this.board, selectedElements, false);
3134
+ this.board.setFragment(event.clipboardData, rectangle);
3135
+ this.board.deleteFragment(event.clipboardData);
3031
3136
  });
3032
3137
  }
3033
3138
  viewportScrollListener() {
@@ -3052,6 +3157,13 @@ class PlaitBoardComponent {
3052
3157
  setIsFromScrolling(this.board, true);
3053
3158
  });
3054
3159
  });
3160
+ this.ngZone.runOutsideAngular(() => {
3161
+ fromEvent(this.viewportContainer.nativeElement, 'touchmove', { passive: false }).subscribe((event) => {
3162
+ if (isPreventTouchMove(this.board)) {
3163
+ event.preventDefault();
3164
+ }
3165
+ });
3166
+ });
3055
3167
  }
3056
3168
  elementResizeListener() {
3057
3169
  this.resizeObserver = new ResizeObserver(() => {
@@ -3338,5 +3450,5 @@ function createModModifierKeys() {
3338
3450
  * Generated bundle index. Do not edit.
3339
3451
  */
3340
3452
 
3341
- export { A, ALT, APOSTROPHE, ATTACHED_ELEMENT_CLASS_NAME, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLIP_BOARD_FORMAT_KEY, CLIP_BOARD_IMAGE_FORMAT_KEY, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, ColorfulThemeColor, D, DASH, DELETE, DOWN_ARROW, DarkThemeColor, DefaultThemeColor, E, EIGHT, ELEMENT_TO_COMPONENT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FLUSHING, FOUR, G, H, HOME, HOST_CLASS_NAME, I, INSERT, IS_APPLE, IS_BOARD_CACHE, IS_CHROME, IS_CHROME_LEGACY, IS_EDGE_LEGACY, IS_FIREFOX, IS_IOS, IS_MAC, IS_SAFARI, IS_TEXT_EDITABLE, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, MAX_RADIUS, MERGING, META, MUTE, N, NINE, NODE_TO_INDEX, NODE_TO_PARENT, NS, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PATH_REFS, PAUSE, PERIOD, PLUS_SIGN, POINTER_BUTTON, PRESS_AND_MOVE_BUFFER, PRINT_SCREEN, Path, PlaitBoard, PlaitBoardComponent, PlaitChildrenElement, PlaitContextService, PlaitElement, PlaitElementComponent, PlaitHistoryBoard, PlaitIslandBaseComponent, PlaitIslandPopoverBaseComponent, PlaitModule, PlaitNode, PlaitOperation, PlaitPluginElementComponent, PlaitPluginKey, PlaitPointerType, Point, Q, QUESTION_MARK, R, RIGHT_ARROW, RectangleClient, ResizeCursorClass, RetroThemeColor, S, SAVING, SCROLL_BAR_WIDTH, SCROLL_LOCK, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, Selection, SoftThemeColor, StarryThemeColor, T, TAB, THREE, TILDE, TWO, ThemeColorMode, ThemeColors, Transforms, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, Viewport, W, X, Y, Z, ZERO, addMovingElements, addSelectedElement, arrowPoints, cacheMovingElements, cacheSelectedElements, clampZoomLevel, clearNodeWeakMap, clearSelectedElement, clearSelectionMoving, clearViewportOrigination, createFakeEvent, createForeignObject, createG, createKeyboardEvent, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createSVG, createSelectionOuterG, createTestingBoard, createText, createTouchEvent, debounce, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, downloadImage, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRoundRectangle, fakeNodeWeakMap, getBoardRectangle, getElementHostBBox, getHitElementOfRoot, getHitElements, getIsRecursionFunc, getMovingElements, getRealScrollBarWidth, getRectangleByElements, getSelectedElements, getTemporaryElements, getViewBox, getViewBoxCenterPoint, getViewportContainerRect, getViewportOrigination, hasBeforeContextChange, hasInputOrTextareaTarget, hasOnBoardChange, hasOnContextChanged, hotkeys, idCreator, initializeViewBox, initializeViewportContainer, initializeViewportOffset, inverse, isDOMElement, isDOMNode, isFromScrolling, isFromViewportChange, isHitElements, isInPlaitBoard, isMainPointer, isNullOrUndefined, isSecondaryPointer, isSelectedElement, isSelectionMoving, isSetViewportOperation, normalizePoint, removeMovingElements, removeSelectedElement, rotate, scrollToRectangle, setIsFromScrolling, setIsFromViewportChange, setSVGViewBox, setSelectionMoving, shouldClear, shouldMerge, shouldSave, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
3453
+ export { A, ALT, APOSTROPHE, ATTACHED_ELEMENT_CLASS_NAME, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLIP_BOARD_FORMAT_KEY, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, ColorfulThemeColor, D, DASH, DELETE, DOWN_ARROW, DarkThemeColor, DefaultThemeColor, E, EIGHT, ELEMENT_TO_COMPONENT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FLUSHING, FOUR, G, H, HOME, HOST_CLASS_NAME, I, INSERT, IS_APPLE, IS_BOARD_CACHE, IS_CHROME, IS_CHROME_LEGACY, IS_EDGE_LEGACY, IS_FIREFOX, IS_IOS, IS_MAC, IS_PREVENT_TOUCH_MOVE, IS_SAFARI, IS_TEXT_EDITABLE, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, MAX_RADIUS, MERGING, META, MUTE, N, NINE, NODE_TO_INDEX, NODE_TO_PARENT, NS, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PATH_REFS, PAUSE, PERIOD, PLUS_SIGN, POINTER_BUTTON, PRESS_AND_MOVE_BUFFER, PRINT_SCREEN, Path, PlaitBoard, PlaitBoardComponent, PlaitChildrenElement, PlaitContextService, PlaitElement, PlaitElementComponent, PlaitHistoryBoard, PlaitIslandBaseComponent, PlaitIslandPopoverBaseComponent, PlaitModule, PlaitNode, PlaitOperation, PlaitPluginElementComponent, PlaitPluginKey, PlaitPointerType, Point, Q, QUESTION_MARK, R, RIGHT_ARROW, RectangleClient, ResizeCursorClass, RetroThemeColor, S, SAVING, SCROLL_BAR_WIDTH, SCROLL_LOCK, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, Selection, SoftThemeColor, StarryThemeColor, T, TAB, THREE, TILDE, TWO, ThemeColorMode, ThemeColors, Transforms, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, Viewport, W, X, Y, Z, ZERO, addMovingElements, addSelectedElement, arrowPoints, cacheMovingElements, cacheSelectedElements, clampZoomLevel, clearNodeWeakMap, clearSelectedElement, clearSelectionMoving, clearViewportOrigination, createFakeEvent, createForeignObject, createG, createKeyboardEvent, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createSVG, createSelectionOuterG, createTestingBoard, createText, createTouchEvent, debounce, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, downloadImage, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRoundRectangle, fakeNodeWeakMap, getBoardRectangle, getClipboardByKey, getClipboardDataByMedia, getDataFromClipboard, getElementHostBBox, getHitElementOfRoot, getHitElements, getIsRecursionFunc, getMovingElements, getRealScrollBarWidth, getRectangleByElements, getSelectedElements, getTemporaryElements, getTextFromClipboard, getViewBox, getViewBoxCenterPoint, getViewportContainerRect, getViewportOrigination, hasBeforeContextChange, hasInputOrTextareaTarget, hasOnBoardChange, hasOnContextChanged, hotkeys, idCreator, initializeViewBox, initializeViewportContainer, initializeViewportOffset, inverse, isDOMElement, isDOMNode, isFromScrolling, isFromViewportChange, isHitElements, isInPlaitBoard, isMainPointer, isNullOrUndefined, isPreventTouchMove, isSecondaryPointer, isSelectedElement, isSelectionMoving, isSetViewportOperation, normalizePoint, preventTouchMove, removeMovingElements, removeSelectedElement, rotate, scrollToRectangle, setClipboardData, setClipboardDataByMedia, setClipboardDataByText, setIsFromScrolling, setIsFromViewportChange, setSVGViewBox, setSelectionMoving, shouldClear, shouldMerge, shouldSave, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
3342
3454
  //# sourceMappingURL=plait-core.mjs.map