@plait/core 0.24.0-next.6 → 0.24.0-next.8

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.
@@ -27,7 +27,6 @@ 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();
31
30
  const PATH_REFS = new WeakMap();
32
31
 
33
32
  var PlaitPointerType;
@@ -271,6 +270,7 @@ var ResizeCursorClass;
271
270
  })(ResizeCursorClass || (ResizeCursorClass = {}));
272
271
 
273
272
  const ATTACHED_ELEMENT_CLASS_NAME = 'plait-board-attached';
273
+ const ACTIVE_STROKE_WIDTH = 1;
274
274
 
275
275
  const CLIP_BOARD_FORMAT_KEY = 'x-plait-fragment';
276
276
  const HOST_CLASS_NAME = 'plait-board-container';
@@ -473,6 +473,15 @@ const RectangleClient = {
473
473
  height: rectangle.height - offset * 2
474
474
  };
475
475
  },
476
+ inflate: (rectangle, delta) => {
477
+ const half = delta / 2;
478
+ return {
479
+ x: rectangle.x - half,
480
+ y: rectangle.y - half,
481
+ width: rectangle.width + half * 2,
482
+ height: rectangle.height + half * 2
483
+ };
484
+ },
476
485
  isEqual: (rectangle, otherRectangle) => {
477
486
  return (rectangle.x === otherRectangle.x &&
478
487
  rectangle.y === otherRectangle.y &&
@@ -986,7 +995,7 @@ function drawCircle(roughSVG, point, diameter, options) {
986
995
  function drawLine(rs, start, end, options) {
987
996
  return rs.linearPath([start, end], options);
988
997
  }
989
- function drawLinearPath(points, options) {
998
+ function drawLinearPath(points, options, closePath) {
990
999
  const g = createG();
991
1000
  const path = createPath();
992
1001
  let polylinePath = '';
@@ -998,10 +1007,13 @@ function drawLinearPath(points, options) {
998
1007
  polylinePath += `L ${point[0]} ${point[1]} `;
999
1008
  }
1000
1009
  });
1010
+ if (closePath) {
1011
+ polylinePath += 'Z';
1012
+ }
1001
1013
  path.setAttribute('d', polylinePath);
1002
1014
  path.setAttribute('stroke', `${options?.stroke}`);
1003
1015
  path.setAttribute('stroke-width', `${options?.strokeWidth}`);
1004
- path.setAttribute('fill', `none`);
1016
+ path.setAttribute('fill', `${options?.fill || 'none'}`);
1005
1017
  g.appendChild(path);
1006
1018
  return g;
1007
1019
  }
@@ -1376,11 +1388,37 @@ const getClipboardDataByMedia = (data, key) => {
1376
1388
  return imageItem;
1377
1389
  };
1378
1390
 
1391
+ const BOARD_TO_TOUCH_REF = new WeakMap();
1379
1392
  const isPreventTouchMove = (board) => {
1380
- return !!IS_PREVENT_TOUCH_MOVE.get(board);
1393
+ return !!BOARD_TO_TOUCH_REF.get(board);
1394
+ };
1395
+ const preventTouchMove = (board, event, state) => {
1396
+ if (state && (event.target instanceof HTMLElement || event.target instanceof SVGElement)) {
1397
+ BOARD_TO_TOUCH_REF.set(board, { state, target: event.target });
1398
+ }
1399
+ else {
1400
+ const ref = BOARD_TO_TOUCH_REF.get(board);
1401
+ if (ref) {
1402
+ BOARD_TO_TOUCH_REF.delete(board);
1403
+ ref.host?.remove();
1404
+ }
1405
+ }
1381
1406
  };
1382
- const preventTouchMove = (board, state) => {
1383
- IS_PREVENT_TOUCH_MOVE.set(board, state);
1407
+ /**
1408
+ * some intersection maybe cause target is removed from current browser window,
1409
+ * after it was removed touch move event will not be fired
1410
+ * so scroll behavior will can not be prevented in mobile browser device
1411
+ * this function will prevent target element being remove.
1412
+ */
1413
+ const handleTouchTarget = (board) => {
1414
+ const touchRef = BOARD_TO_TOUCH_REF.get(board);
1415
+ if (touchRef && !touchRef.target.contains(PlaitBoard.getElementActiveHost(board))) {
1416
+ touchRef.target.style.opacity = '0';
1417
+ const host = createG();
1418
+ host.appendChild(touchRef.target);
1419
+ touchRef.host = host;
1420
+ PlaitBoard.getElementActiveHost(board).append(host);
1421
+ }
1384
1422
  };
1385
1423
 
1386
1424
  const PlaitElement = {
@@ -2257,6 +2295,25 @@ const BoardTransforms = {
2257
2295
  fitViewportWidth
2258
2296
  };
2259
2297
 
2298
+ const removeElements = (board, elements) => {
2299
+ elements
2300
+ .map(element => {
2301
+ const path = PlaitBoard.findPath(board, element);
2302
+ const ref = board.pathRef(path);
2303
+ return () => {
2304
+ removeNode(board, ref.current);
2305
+ ref.unref();
2306
+ removeSelectedElement(board, element);
2307
+ };
2308
+ })
2309
+ .forEach(action => {
2310
+ action();
2311
+ });
2312
+ };
2313
+ const CoreTransforms = {
2314
+ removeElements
2315
+ };
2316
+
2260
2317
  const Transforms = {
2261
2318
  ...GeneralTransforms,
2262
2319
  ...ViewportTransforms$1,
@@ -2352,7 +2409,11 @@ function createBoard(children, options) {
2352
2409
  dblclick: (event) => { },
2353
2410
  setFragment: (data) => { },
2354
2411
  insertFragment: (data) => { },
2355
- deleteFragment: (data) => { },
2412
+ deleteFragment: (data) => {
2413
+ const elements = board.getDeletedFragment([]);
2414
+ CoreTransforms.removeElements(board, elements);
2415
+ },
2416
+ getDeletedFragment: (data) => data,
2356
2417
  drawElement: (context) => [],
2357
2418
  redrawElement: (context, previousContext) => { },
2358
2419
  destroyElement: (context) => { },
@@ -2555,7 +2616,7 @@ function withSelection(board) {
2555
2616
  options.isMultiple &&
2556
2617
  !options.isDisabledSelect) {
2557
2618
  start = point;
2558
- preventTouchMove(board, true);
2619
+ preventTouchMove(board, event, true);
2559
2620
  }
2560
2621
  Transforms.setSelection(board, { ranges: [range] });
2561
2622
  pointerDown(event);
@@ -2607,7 +2668,7 @@ function withSelection(board) {
2607
2668
  start = null;
2608
2669
  end = null;
2609
2670
  needPreventNativeSelectionWhenMoving = false;
2610
- preventTouchMove(board, false);
2671
+ preventTouchMove(board, event, false);
2611
2672
  globalPointerUp(event);
2612
2673
  };
2613
2674
  board.onChange = () => {
@@ -2686,9 +2747,9 @@ function clearSelectionMoving(board) {
2686
2747
  }
2687
2748
  function createSelectionOuterG(board, selectElements) {
2688
2749
  const rectangle = getRectangleByElements(board, selectElements, false);
2689
- return drawRectangle(board, RectangleClient.getOutlineRectangle(rectangle, -2.5), {
2750
+ return drawRectangle(board, RectangleClient.inflate(rectangle, ACTIVE_STROKE_WIDTH), {
2690
2751
  stroke: SELECTION_BORDER_COLOR,
2691
- strokeWidth: 1,
2752
+ strokeWidth: ACTIVE_STROKE_WIDTH,
2692
2753
  fillStyle: 'solid'
2693
2754
  });
2694
2755
  }
@@ -2743,6 +2804,9 @@ function withMoving(board) {
2743
2804
  else if (hitElement) {
2744
2805
  activeElements = [hitElement];
2745
2806
  }
2807
+ if (activeElements.length > 0) {
2808
+ preventTouchMove(board, event, true);
2809
+ }
2746
2810
  }
2747
2811
  pointerDown(event);
2748
2812
  };
@@ -2756,8 +2820,9 @@ function withMoving(board) {
2756
2820
  offsetX = endPoint[0] - startPoint[0];
2757
2821
  offsetY = endPoint[1] - startPoint[1];
2758
2822
  const offsetBuffer = 5;
2759
- if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer) {
2823
+ if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer || getMovingElements(board).length > 0) {
2760
2824
  throttleRAF(() => {
2825
+ handleTouchTarget(board);
2761
2826
  const currentElements = activeElements.map(activeElement => {
2762
2827
  const points = activeElement.points || [];
2763
2828
  const [x, y] = activeElement.points[0];
@@ -2794,6 +2859,7 @@ function withMoving(board) {
2794
2859
  if (startPoint) {
2795
2860
  cancelMove(board);
2796
2861
  }
2862
+ preventTouchMove(board, event, false);
2797
2863
  globalPointerUp(event);
2798
2864
  };
2799
2865
  function cancelMove(board) {
@@ -2844,16 +2910,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
2844
2910
  }]
2845
2911
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
2846
2912
  class PlaitIslandPopoverBaseComponent {
2913
+ constructor(cdr) {
2914
+ this.cdr = cdr;
2915
+ }
2847
2916
  initialize(board) {
2848
2917
  this.board = board;
2849
- const onChange = board.onChange;
2850
- board.onChange = () => {
2851
- onChange();
2918
+ const boardComponent = PlaitBoard.getComponent(board);
2919
+ this.subscription = boardComponent.plaitChange.subscribe(() => {
2852
2920
  if (hasOnBoardChange(this)) {
2853
2921
  this.onBoardChange();
2854
2922
  }
2855
- };
2856
- this.onChange = onChange;
2923
+ this.cdr.markForCheck();
2924
+ });
2857
2925
  }
2858
2926
  ngOnInit() {
2859
2927
  if (!this.board) {
@@ -2863,10 +2931,10 @@ class PlaitIslandPopoverBaseComponent {
2863
2931
  this.islandOnInit();
2864
2932
  }
2865
2933
  ngOnDestroy() {
2866
- this.board.onChange = this.onChange;
2934
+ this.subscription?.unsubscribe();
2867
2935
  this.islandOnDestroy();
2868
2936
  }
2869
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: PlaitIslandPopoverBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2937
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: PlaitIslandPopoverBaseComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
2870
2938
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.3", type: PlaitIslandPopoverBaseComponent, inputs: { board: "board" }, host: { classAttribute: "plait-island-popover-container" }, ngImport: i0 }); }
2871
2939
  }
2872
2940
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: PlaitIslandPopoverBaseComponent, decorators: [{
@@ -2876,7 +2944,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
2876
2944
  class: 'plait-island-popover-container'
2877
2945
  }
2878
2946
  }]
2879
- }], propDecorators: { board: [{
2947
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { board: [{
2880
2948
  type: Input
2881
2949
  }] } });
2882
2950
  const hasOnBoardChange = (value) => {
@@ -2911,6 +2979,11 @@ const withHotkey = (board) => {
2911
2979
  Transforms.setSelectionWithTemporaryElements(board, elements);
2912
2980
  return;
2913
2981
  }
2982
+ const selectedElements = getSelectedElements(board);
2983
+ if (!PlaitBoard.isReadonly(board) && selectedElements.length > 0 && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
2984
+ event.preventDefault();
2985
+ board.deleteFragment(null);
2986
+ }
2914
2987
  keydown(event);
2915
2988
  };
2916
2989
  board.globalKeydown = (event) => {
@@ -3318,11 +3391,6 @@ class PlaitBoardComponent {
3318
3391
  this.board.globalKeydown(event);
3319
3392
  }), filter(event => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board) && !hasInputOrTextareaTarget(event.target)))
3320
3393
  .subscribe((event) => {
3321
- const selectedElements = getSelectedElements(this.board);
3322
- if (selectedElements.length > 0 && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
3323
- event.preventDefault();
3324
- this.board.deleteFragment(null);
3325
- }
3326
3394
  this.board.keydown(event);
3327
3395
  });
3328
3396
  fromEvent(document, 'keyup')
@@ -3380,7 +3448,9 @@ class PlaitBoardComponent {
3380
3448
  });
3381
3449
  });
3382
3450
  this.ngZone.runOutsideAngular(() => {
3383
- fromEvent(this.viewportContainer.nativeElement, 'touchmove', { passive: false }).subscribe((event) => {
3451
+ fromEvent(this.viewportContainer.nativeElement, 'touchmove', { passive: false })
3452
+ .pipe(takeUntil(this.destroy$))
3453
+ .subscribe((event) => {
3384
3454
  if (isPreventTouchMove(this.board)) {
3385
3455
  event.preventDefault();
3386
3456
  }
@@ -3676,5 +3746,5 @@ function createModModifierKeys() {
3676
3746
  * Generated bundle index. Do not edit.
3677
3747
  */
3678
3748
 
3679
- 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, createMask, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createRect, createSVG, createSelectionOuterG, createTestingBoard, createText, createTouchEvent, debounce, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, distanceBetweenPointAndSegments, downloadImage, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRectangle, drawRoundRectangle, fakeNodeWeakMap, findElements, getBoardRectangle, getClipboardByKey, getClipboardDataByMedia, getDataFromClipboard, getElementById, getElementHostBBox, getHitElementOfRoot, getHitElements, getIsRecursionFunc, getMovingElements, getNearestPointBetweenPointAndSegment, getNearestPointBetweenPointAndSegments, 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, isLineHitLine, isMainPointer, isNullOrUndefined, isPointInEllipse, isPointInPolygon, isPointInRoundRectangle, isPolylineHitRectangle, isPreventTouchMove, isSecondaryPointer, isSelectedElement, isSelectionMoving, isSetViewportOperation, normalizePoint, preventTouchMove, removeMovingElements, removeSelectedElement, rotate, scrollToRectangle, setClipboardData, setClipboardDataByMedia, setClipboardDataByText, setIsFromScrolling, setIsFromViewportChange, setPathStrokeLinecap, setSVGViewBox, setSelectionMoving, setStrokeLinecap, shouldClear, shouldMerge, shouldSave, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateForeignObjectWidth, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
3749
+ export { A, ACTIVE_STROKE_WIDTH, 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_TOUCH_REF, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLIP_BOARD_FORMAT_KEY, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, ColorfulThemeColor, CoreTransforms, 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, createMask, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createRect, createSVG, createSelectionOuterG, createTestingBoard, createText, createTouchEvent, debounce, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, distanceBetweenPointAndSegments, downloadImage, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRectangle, drawRoundRectangle, fakeNodeWeakMap, findElements, getBoardRectangle, getClipboardByKey, getClipboardDataByMedia, getDataFromClipboard, getElementById, getElementHostBBox, getHitElementOfRoot, getHitElements, getIsRecursionFunc, getMovingElements, getNearestPointBetweenPointAndSegment, getNearestPointBetweenPointAndSegments, getRealScrollBarWidth, getRectangleByElements, getSelectedElements, getTemporaryElements, getTextFromClipboard, getViewBox, getViewBoxCenterPoint, getViewportContainerRect, getViewportOrigination, handleTouchTarget, hasBeforeContextChange, hasInputOrTextareaTarget, hasOnBoardChange, hasOnContextChanged, hotkeys, idCreator, initializeViewBox, initializeViewportContainer, initializeViewportOffset, inverse, isDOMElement, isDOMNode, isFromScrolling, isFromViewportChange, isHitElements, isInPlaitBoard, isLineHitLine, isMainPointer, isNullOrUndefined, isPointInEllipse, isPointInPolygon, isPointInRoundRectangle, isPolylineHitRectangle, isPreventTouchMove, isSecondaryPointer, isSelectedElement, isSelectionMoving, isSetViewportOperation, normalizePoint, preventTouchMove, removeMovingElements, removeSelectedElement, rotate, scrollToRectangle, setClipboardData, setClipboardDataByMedia, setClipboardDataByText, setIsFromScrolling, setIsFromViewportChange, setPathStrokeLinecap, setSVGViewBox, setSelectionMoving, setStrokeLinecap, shouldClear, shouldMerge, shouldSave, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateForeignObjectWidth, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
3680
3750
  //# sourceMappingURL=plait-core.mjs.map