@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
@@ -27,6 +27,7 @@ const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
27
27
  // save no standard selected elements
28
28
  const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
29
29
  const BOARD_TO_MOVING_ELEMENT = new WeakMap();
30
+ const IS_PREVENT_TOUCH_MOVE = new WeakMap();
30
31
  const PATH_REFS = new WeakMap();
31
32
 
32
33
  function depthFirstRecursion(node, callback, recursion, isReverse) {
@@ -266,6 +267,10 @@ const PlaitBoard = {
266
267
  isPointer(board, pointer) {
267
268
  return board.pointer === pointer;
268
269
  },
270
+ isInPointer(board, pointers) {
271
+ const point = board.pointer;
272
+ return pointers.includes(point);
273
+ },
269
274
  getMovingPointInBoard(board) {
270
275
  return BOARD_TO_MOVING_POINT_IN_BOARD.get(board);
271
276
  },
@@ -869,7 +874,6 @@ var ResizeCursorClass;
869
874
  const ATTACHED_ELEMENT_CLASS_NAME = 'plait-board-attached';
870
875
 
871
876
  const CLIP_BOARD_FORMAT_KEY = 'x-plait-fragment';
872
- const CLIP_BOARD_IMAGE_FORMAT_KEY = 'x-plait-image-fragment';
873
877
  const HOST_CLASS_NAME = 'plait-board-container';
874
878
  const SCROLL_BAR_WIDTH = 20;
875
879
  const MAX_RADIUS = 16;
@@ -1568,6 +1572,57 @@ function downloadImage(url, name) {
1568
1572
  a.remove();
1569
1573
  }
1570
1574
 
1575
+ const getClipboardByKey = (key) => {
1576
+ return `application/x-plait-${key}-fragment`;
1577
+ };
1578
+ const setClipboardData = (data, elements) => {
1579
+ const result = [...elements];
1580
+ const pluginContextResult = getDataFromClipboard(data);
1581
+ if (pluginContextResult) {
1582
+ result.push(...pluginContextResult);
1583
+ }
1584
+ const stringObj = JSON.stringify(result);
1585
+ const encoded = window.btoa(encodeURIComponent(stringObj));
1586
+ data?.setData(`application/${CLIP_BOARD_FORMAT_KEY}`, encoded);
1587
+ };
1588
+ const setClipboardDataByText = (data, text) => {
1589
+ const pluginContextResult = getTextFromClipboard(data);
1590
+ data?.setData(`text/plain`, text + '\n' + pluginContextResult);
1591
+ };
1592
+ const setClipboardDataByMedia = (data, media, key) => {
1593
+ const stringObj = JSON.stringify(media);
1594
+ const encoded = window.btoa(encodeURIComponent(stringObj));
1595
+ data?.setData(getClipboardByKey(key), encoded);
1596
+ };
1597
+ const getDataFromClipboard = (data) => {
1598
+ const encoded = data?.getData(`application/${CLIP_BOARD_FORMAT_KEY}`);
1599
+ let nodesData = [];
1600
+ if (encoded) {
1601
+ const decoded = decodeURIComponent(window.atob(encoded));
1602
+ nodesData = JSON.parse(decoded);
1603
+ }
1604
+ return nodesData;
1605
+ };
1606
+ const getTextFromClipboard = (data) => {
1607
+ return (data ? data.getData(`text/plain`) : '');
1608
+ };
1609
+ const getClipboardDataByMedia = (data, key) => {
1610
+ const encoded = data?.getData(getClipboardByKey(key));
1611
+ let imageItem = null;
1612
+ if (encoded) {
1613
+ const decoded = decodeURIComponent(window.atob(encoded));
1614
+ imageItem = JSON.parse(decoded);
1615
+ }
1616
+ return imageItem;
1617
+ };
1618
+
1619
+ const isPreventTouchMove = (board) => {
1620
+ return !!IS_PREVENT_TOUCH_MOVE.get(board);
1621
+ };
1622
+ const preventTouchMove = (board, state) => {
1623
+ IS_PREVENT_TOUCH_MOVE.set(board, state);
1624
+ };
1625
+
1571
1626
  const PlaitElement = {
1572
1627
  isRootElement(value) {
1573
1628
  const parent = NODE_TO_PARENT.get(value);
@@ -2102,7 +2157,15 @@ function createBoard(children, options) {
2102
2157
  isRecursion: element => true,
2103
2158
  isMovable: element => false,
2104
2159
  getRectangle: element => null,
2105
- applyTheme: (element) => { }
2160
+ applyTheme: (element) => { },
2161
+ pointerDown: (pointer) => { },
2162
+ pointerMove: (pointer) => { },
2163
+ pointerUp: (pointer) => { },
2164
+ pointerCancel: (pointer) => { },
2165
+ pointerOut: (pointer) => { },
2166
+ pointerLeave: (pointer) => { },
2167
+ globalPointerMove: (pointer) => { },
2168
+ globalPointerUp: (pointer) => { },
2106
2169
  };
2107
2170
  return board;
2108
2171
  }
@@ -2258,7 +2321,7 @@ function withHandPointer(board) {
2258
2321
  }
2259
2322
 
2260
2323
  function withSelection(board) {
2261
- const { mousedown, globalMousemove, globalMouseup, onChange } = board;
2324
+ const { pointerDown, globalPointerMove, globalPointerUp, onChange } = board;
2262
2325
  let start = null;
2263
2326
  let end = null;
2264
2327
  let selectionMovingG;
@@ -2266,12 +2329,12 @@ function withSelection(board) {
2266
2329
  let previousSelectedElements;
2267
2330
  // prevent text from being selected when user pressed main pointer and is moving
2268
2331
  let needPreventNativeSelectionWhenMoving = false;
2269
- board.mousedown = (event) => {
2332
+ board.pointerDown = (event) => {
2270
2333
  if (event.target instanceof Element && !event.target.closest('.plait-richtext-container')) {
2271
2334
  needPreventNativeSelectionWhenMoving = true;
2272
2335
  }
2273
2336
  if (!isMainPointer(event)) {
2274
- mousedown(event);
2337
+ pointerDown(event);
2275
2338
  return;
2276
2339
  }
2277
2340
  const options = board.getPluginOptions(PlaitPluginKey.withSelection);
@@ -2280,7 +2343,7 @@ function withSelection(board) {
2280
2343
  const hitElements = getHitElements(board, { ranges: [range] });
2281
2344
  const selectedElements = getSelectedElements(board);
2282
2345
  if (hitElements.length === 1 && selectedElements.includes(hitElements[0]) && !options.isDisabledSelect) {
2283
- mousedown(event);
2346
+ pointerDown(event);
2284
2347
  return;
2285
2348
  }
2286
2349
  if (PlaitBoard.isPointer(board, PlaitPointerType.selection) &&
@@ -2288,11 +2351,12 @@ function withSelection(board) {
2288
2351
  options.isMultiple &&
2289
2352
  !options.isDisabledSelect) {
2290
2353
  start = point;
2354
+ preventTouchMove(board, true);
2291
2355
  }
2292
2356
  Transforms.setSelection(board, { ranges: [range] });
2293
- mousedown(event);
2357
+ pointerDown(event);
2294
2358
  };
2295
- board.globalMousemove = (event) => {
2359
+ board.globalPointerMove = (event) => {
2296
2360
  if (needPreventNativeSelectionWhenMoving) {
2297
2361
  // prevent text from being selected
2298
2362
  event.preventDefault();
@@ -2319,9 +2383,9 @@ function withSelection(board) {
2319
2383
  PlaitBoard.getHost(board).append(selectionMovingG);
2320
2384
  }
2321
2385
  }
2322
- globalMousemove(event);
2386
+ globalPointerMove(event);
2323
2387
  };
2324
- board.globalMouseup = (event) => {
2388
+ board.globalPointerUp = (event) => {
2325
2389
  if (start && end) {
2326
2390
  selectionMovingG?.remove();
2327
2391
  clearSelectionMoving(board);
@@ -2340,7 +2404,8 @@ function withSelection(board) {
2340
2404
  start = null;
2341
2405
  end = null;
2342
2406
  needPreventNativeSelectionWhenMoving = false;
2343
- globalMouseup(event);
2407
+ preventTouchMove(board, false);
2408
+ globalPointerUp(event);
2344
2409
  };
2345
2410
  board.onChange = () => {
2346
2411
  const options = board.getPluginOptions(PlaitPluginKey.withSelection);
@@ -2480,7 +2545,7 @@ function withMoving(board) {
2480
2545
  mousedown(event);
2481
2546
  };
2482
2547
  board.mousemove = event => {
2483
- if (startPoint && activeElements?.length && !PlaitBoard.hasBeenTextEditing(board)) {
2548
+ if (startPoint && activeElements.length && !PlaitBoard.hasBeenTextEditing(board)) {
2484
2549
  if (!isPreventDefault) {
2485
2550
  isPreventDefault = true;
2486
2551
  }
@@ -2492,10 +2557,12 @@ function withMoving(board) {
2492
2557
  if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer) {
2493
2558
  throttleRAF(() => {
2494
2559
  const currentElements = activeElements.map(activeElement => {
2495
- const [x, y] = activeElement?.points[0];
2560
+ const points = activeElement.points || [];
2561
+ const [x, y] = activeElement.points[0];
2562
+ const newPoints = points.map(p => [p[0] + offsetX, p[1] + offsetY]);
2496
2563
  const index = board.children.findIndex(item => item.id === activeElement.id);
2497
2564
  Transforms.setNode(board, {
2498
- points: [[x + offsetX, y + offsetY]]
2565
+ points: newPoints
2499
2566
  }, [index]);
2500
2567
  MERGING.set(board, true);
2501
2568
  return PlaitNode.get(board, [index]);
@@ -2978,34 +3045,67 @@ class PlaitBoardComponent {
2978
3045
  .subscribe((event) => {
2979
3046
  this.board.mousedown(event);
2980
3047
  });
3048
+ fromEvent(this.host, 'pointerdown')
3049
+ .pipe(takeUntil(this.destroy$))
3050
+ .subscribe((event) => {
3051
+ this.board.pointerDown(event);
3052
+ });
2981
3053
  fromEvent(this.host, 'mousemove')
2982
3054
  .pipe(takeUntil(this.destroy$))
2983
3055
  .subscribe((event) => {
2984
3056
  BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
2985
3057
  this.board.mousemove(event);
2986
3058
  });
3059
+ fromEvent(this.host, 'pointermove')
3060
+ .pipe(takeUntil(this.destroy$))
3061
+ .subscribe((event) => {
3062
+ BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
3063
+ this.board.pointerMove(event);
3064
+ });
2987
3065
  fromEvent(this.host, 'mouseleave')
2988
3066
  .pipe(takeUntil(this.destroy$))
2989
3067
  .subscribe((event) => {
2990
3068
  BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
2991
3069
  this.board.mouseleave(event);
2992
3070
  });
3071
+ fromEvent(this.host, 'pointerleave')
3072
+ .pipe(takeUntil(this.destroy$))
3073
+ .subscribe((event) => {
3074
+ BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
3075
+ this.board.pointerLeave(event);
3076
+ });
2993
3077
  fromEvent(document, 'mousemove')
2994
3078
  .pipe(takeUntil(this.destroy$))
2995
3079
  .subscribe((event) => {
2996
3080
  BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
2997
3081
  this.board.globalMousemove(event);
2998
3082
  });
3083
+ fromEvent(document, 'pointermove')
3084
+ .pipe(takeUntil(this.destroy$))
3085
+ .subscribe((event) => {
3086
+ BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
3087
+ this.board.globalPointerMove(event);
3088
+ });
2999
3089
  fromEvent(this.host, 'mouseup')
3000
3090
  .pipe(takeUntil(this.destroy$))
3001
3091
  .subscribe((event) => {
3002
3092
  this.board.mouseup(event);
3003
3093
  });
3094
+ fromEvent(this.host, 'pointerup')
3095
+ .pipe(takeUntil(this.destroy$))
3096
+ .subscribe((event) => {
3097
+ this.board.pointerUp(event);
3098
+ });
3004
3099
  fromEvent(document, 'mouseup')
3005
3100
  .pipe(takeUntil(this.destroy$))
3006
3101
  .subscribe((event) => {
3007
3102
  this.board.globalMouseup(event);
3008
3103
  });
3104
+ fromEvent(document, 'pointerup')
3105
+ .pipe(takeUntil(this.destroy$))
3106
+ .subscribe((event) => {
3107
+ this.board.globalPointerUp(event);
3108
+ });
3009
3109
  fromEvent(this.host, 'dblclick')
3010
3110
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
3011
3111
  .subscribe((event) => {
@@ -3016,7 +3116,11 @@ class PlaitBoardComponent {
3016
3116
  this.board.globalKeydown(event);
3017
3117
  }), filter(event => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board) && !hasInputOrTextareaTarget(event.target)))
3018
3118
  .subscribe((event) => {
3019
- this.board?.keydown(event);
3119
+ const selectedElements = getSelectedElements(this.board);
3120
+ if (selectedElements.length > 0 && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
3121
+ this.board.deleteFragment(null);
3122
+ }
3123
+ this.board.keydown(event);
3020
3124
  });
3021
3125
  fromEvent(document, 'keyup')
3022
3126
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
@@ -3026,8 +3130,10 @@ class PlaitBoardComponent {
3026
3130
  fromEvent(document, 'copy')
3027
3131
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
3028
3132
  .subscribe((event) => {
3133
+ const selectedElements = getSelectedElements(this.board);
3029
3134
  event.preventDefault();
3030
- this.board?.setFragment(event.clipboardData);
3135
+ const rectangle = getRectangleByElements(this.board, selectedElements, false);
3136
+ this.board.setFragment(event.clipboardData, rectangle);
3031
3137
  });
3032
3138
  fromEvent(document, 'paste')
3033
3139
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
@@ -3041,9 +3147,11 @@ class PlaitBoardComponent {
3041
3147
  fromEvent(document, 'cut')
3042
3148
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
3043
3149
  .subscribe((event) => {
3150
+ const selectedElements = getSelectedElements(this.board);
3044
3151
  event.preventDefault();
3045
- this.board?.setFragment(event.clipboardData);
3046
- this.board?.deleteFragment(event.clipboardData);
3152
+ const rectangle = getRectangleByElements(this.board, selectedElements, false);
3153
+ this.board.setFragment(event.clipboardData, rectangle);
3154
+ this.board.deleteFragment(event.clipboardData);
3047
3155
  });
3048
3156
  }
3049
3157
  viewportScrollListener() {
@@ -3068,6 +3176,13 @@ class PlaitBoardComponent {
3068
3176
  setIsFromScrolling(this.board, true);
3069
3177
  });
3070
3178
  });
3179
+ this.ngZone.runOutsideAngular(() => {
3180
+ fromEvent(this.viewportContainer.nativeElement, 'touchmove', { passive: false }).subscribe((event) => {
3181
+ if (isPreventTouchMove(this.board)) {
3182
+ event.preventDefault();
3183
+ }
3184
+ });
3185
+ });
3071
3186
  }
3072
3187
  elementResizeListener() {
3073
3188
  this.resizeObserver = new ResizeObserver(() => {
@@ -3358,5 +3473,5 @@ function createModModifierKeys() {
3358
3473
  * Generated bundle index. Do not edit.
3359
3474
  */
3360
3475
 
3361
- 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 };
3476
+ 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 };
3362
3477
  //# sourceMappingURL=plait-core.mjs.map