@plait/core 0.24.0-next.10 → 0.24.0-next.11

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.
@@ -504,6 +504,9 @@ const RectangleClient = {
504
504
  [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height],
505
505
  [rectangle.x, rectangle.y + rectangle.height / 2]
506
506
  ];
507
+ },
508
+ getConnectionPoint: (rectangle, point) => {
509
+ return [rectangle.x + rectangle.width * point[0], rectangle.y + rectangle.height * point[1]];
507
510
  }
508
511
  };
509
512
 
@@ -1815,6 +1818,14 @@ const ThemeColors = [
1815
1818
  StarryThemeColor
1816
1819
  ];
1817
1820
 
1821
+ var Direction;
1822
+ (function (Direction) {
1823
+ Direction["left"] = "left";
1824
+ Direction["top"] = "top";
1825
+ Direction["right"] = "right";
1826
+ Direction["bottom"] = "bottom";
1827
+ })(Direction || (Direction = {}));
1828
+
1818
1829
  function getRectangleByElements(board, elements, recursion) {
1819
1830
  const boundaryBox = {
1820
1831
  left: Number.MAX_VALUE,
@@ -2805,6 +2816,7 @@ function withViewport(board) {
2805
2816
  return board;
2806
2817
  }
2807
2818
 
2819
+ const ALIGN_TOLERANCE = 2;
2808
2820
  class ReactionManager {
2809
2821
  constructor(board, activeElements, activeRectangle) {
2810
2822
  this.board = board;
@@ -2833,13 +2845,8 @@ class ReactionManager {
2833
2845
  handleAlign() {
2834
2846
  const alignRectangles = this.getAlignRectangle();
2835
2847
  const g = createG();
2836
- const alignLines = [];
2848
+ let alignLines = [];
2837
2849
  const offset = 12;
2838
- const options = {
2839
- stroke: SELECTION_BORDER_COLOR,
2840
- strokeWidth: 1,
2841
- strokeLineDash: [4, 4]
2842
- };
2843
2850
  let deltaX = 0;
2844
2851
  let deltaY = 0;
2845
2852
  let isCorrectX = false;
@@ -2847,7 +2854,7 @@ class ReactionManager {
2847
2854
  for (let alignRectangle of alignRectangles) {
2848
2855
  const closestDistances = this.calculateClosestDistances(this.activeRectangle, alignRectangle);
2849
2856
  let canDrawHorizontal = false;
2850
- if (!isCorrectX && closestDistances.absXDistance < 5) {
2857
+ if (!isCorrectX && closestDistances.absXDistance < ALIGN_TOLERANCE) {
2851
2858
  deltaX = closestDistances.xDistance;
2852
2859
  this.activeRectangle.x -= deltaX;
2853
2860
  isCorrectX = true;
@@ -2897,7 +2904,7 @@ class ReactionManager {
2897
2904
  isCorrectX = true;
2898
2905
  }
2899
2906
  let canDrawVertical = false;
2900
- if (!isCorrectY && closestDistances.absYDistance < 5) {
2907
+ if (!isCorrectY && closestDistances.absYDistance < ALIGN_TOLERANCE) {
2901
2908
  deltaY = closestDistances.yDistance;
2902
2909
  this.activeRectangle.y -= deltaY;
2903
2910
  isCorrectY = true;
@@ -2946,13 +2953,23 @@ class ReactionManager {
2946
2953
  }
2947
2954
  }
2948
2955
  }
2956
+ const alignDeltaX = deltaX;
2957
+ this.activeRectangle.x += deltaX;
2958
+ const distributeHorizontalResult = this.alignDistributeHorizontal(alignRectangles);
2959
+ const distributeLines = distributeHorizontalResult.distributeLines;
2960
+ if (distributeHorizontalResult.deltaX) {
2961
+ deltaX = distributeHorizontalResult.deltaX;
2962
+ if (alignDeltaX !== deltaX) {
2963
+ alignLines[0] = [];
2964
+ alignLines[1] = [];
2965
+ alignLines[2] = [];
2966
+ }
2967
+ }
2949
2968
  if (alignLines.length) {
2950
- alignLines.forEach(points => {
2951
- if (!points.length)
2952
- return;
2953
- const xAlign = PlaitBoard.getRoughSVG(this.board).line(points[0], points[1], points[2], points[3], options);
2954
- g.appendChild(xAlign);
2955
- });
2969
+ this.drawAlignLines(alignLines, g);
2970
+ }
2971
+ if (distributeLines.length) {
2972
+ this.drawDistributeLines(distributeLines, g);
2956
2973
  }
2957
2974
  return { deltaX, deltaY, g };
2958
2975
  }
@@ -2984,6 +3001,154 @@ class ReactionManager {
2984
3001
  indexY
2985
3002
  };
2986
3003
  }
3004
+ alignDistributeHorizontal(alignRectangles) {
3005
+ let distributeLines = [];
3006
+ let deltaX = 0;
3007
+ const activeRectangleCenterX = this.activeRectangle.x + this.activeRectangle.width / 2;
3008
+ let rectangles = [];
3009
+ alignRectangles.forEach(rec => {
3010
+ if (isHorizontalCross(rec, this.activeRectangle) && !RectangleClient.isHit(rec, this.activeRectangle)) {
3011
+ rectangles.push(rec);
3012
+ }
3013
+ });
3014
+ rectangles = [...rectangles, this.activeRectangle].sort((a, b) => a.x - b.x);
3015
+ const refArray = [];
3016
+ let distributeDistance = 0;
3017
+ let leftIndex = undefined;
3018
+ let rightIndex = undefined;
3019
+ for (let i = 0; i < rectangles.length; i++) {
3020
+ for (let j = i + 1; j < rectangles.length; j++) {
3021
+ const left = rectangles[i];
3022
+ const right = rectangles[j];
3023
+ const distance = right.x - (left.x + left.width);
3024
+ let dif = Infinity;
3025
+ if (refArray[i]?.right) {
3026
+ refArray[i].right.push({ distance, index: j });
3027
+ }
3028
+ else {
3029
+ refArray[i] = { ...refArray[i], right: [{ distance, index: j }] };
3030
+ }
3031
+ if (refArray[j]?.left) {
3032
+ refArray[j].left.push({ distance, index: i });
3033
+ }
3034
+ else {
3035
+ refArray[j] = { ...refArray[j], left: [{ distance, index: i }] };
3036
+ }
3037
+ //middle
3038
+ let _centerX = (left.x + left.width + right.x) / 2;
3039
+ dif = Math.abs(activeRectangleCenterX - _centerX);
3040
+ if (dif < ALIGN_TOLERANCE) {
3041
+ distributeDistance = (right.x - (left.x + left.width) - this.activeRectangle.width) / 2;
3042
+ deltaX = activeRectangleCenterX - _centerX;
3043
+ leftIndex = i;
3044
+ rightIndex = j;
3045
+ }
3046
+ //right
3047
+ const distanceRight = right.x - (left.x + left.width);
3048
+ _centerX = right.x + right.width + distanceRight + this.activeRectangle.width / 2;
3049
+ dif = Math.abs(activeRectangleCenterX - _centerX);
3050
+ if (!distributeDistance && dif < ALIGN_TOLERANCE) {
3051
+ distributeDistance = distanceRight;
3052
+ leftIndex = j;
3053
+ deltaX = activeRectangleCenterX - _centerX;
3054
+ }
3055
+ //left
3056
+ const distanceLeft = right.x - (left.x + left.width);
3057
+ _centerX = left.x - distanceLeft - this.activeRectangle.width / 2;
3058
+ dif = Math.abs(activeRectangleCenterX - _centerX);
3059
+ if (!distributeDistance && dif < ALIGN_TOLERANCE) {
3060
+ distributeDistance = distanceLeft;
3061
+ rightIndex = i;
3062
+ deltaX = activeRectangleCenterX - _centerX;
3063
+ }
3064
+ }
3065
+ }
3066
+ const activeIndex = rectangles.indexOf(this.activeRectangle);
3067
+ let leftIndexes = [];
3068
+ let rightIndexes = [];
3069
+ if (leftIndex !== undefined) {
3070
+ leftIndexes.push(leftIndex);
3071
+ findRectangle(distributeDistance, refArray[leftIndex], Direction.left, leftIndexes);
3072
+ }
3073
+ if (rightIndex !== undefined) {
3074
+ rightIndexes.push(rightIndex);
3075
+ findRectangle(distributeDistance, refArray[rightIndex], Direction.right, rightIndexes);
3076
+ }
3077
+ if (leftIndexes.length || rightIndexes.length) {
3078
+ const indexArr = [...leftIndexes.reverse(), activeIndex, ...rightIndexes];
3079
+ this.activeRectangle.x -= deltaX;
3080
+ for (let i = 1; i < indexArr.length; i++) {
3081
+ distributeLines.push(getLinePoints(rectangles[indexArr[i - 1]], rectangles[indexArr[i]]));
3082
+ }
3083
+ }
3084
+ function findRectangle(distance, ref, direction, rectangleIndexes) {
3085
+ const arr = ref[direction];
3086
+ const index = refArray.indexOf(ref);
3087
+ if ((index === 0 && direction === Direction.left) || (index === refArray.length - 1 && direction === Direction.right))
3088
+ return;
3089
+ for (let i = 0; i < arr.length; i++) {
3090
+ if (Math.abs(arr[i].distance - distance) < 0.1) {
3091
+ rectangleIndexes.push(arr[i].index);
3092
+ findRectangle(distance, refArray[arr[i].index], direction, rectangleIndexes);
3093
+ return;
3094
+ }
3095
+ }
3096
+ }
3097
+ function getLinePoints(leftRectangle, rightRectangle) {
3098
+ const verticalY = [
3099
+ leftRectangle.y,
3100
+ leftRectangle.y + leftRectangle.height,
3101
+ rightRectangle.y,
3102
+ rightRectangle.y + rightRectangle.height
3103
+ ];
3104
+ const sortArr = verticalY.sort((a, b) => a - b);
3105
+ const y = (sortArr[1] + sortArr[2]) / 2;
3106
+ const line = [
3107
+ [leftRectangle.x + leftRectangle.width + 2, y],
3108
+ [rightRectangle.x - 2, y]
3109
+ ];
3110
+ return line;
3111
+ }
3112
+ return { deltaX, distributeLines };
3113
+ }
3114
+ drawAlignLines(lines, g) {
3115
+ lines.forEach(points => {
3116
+ if (!points.length)
3117
+ return;
3118
+ const xAlign = PlaitBoard.getRoughSVG(this.board).line(points[0], points[1], points[2], points[3], {
3119
+ stroke: SELECTION_BORDER_COLOR,
3120
+ strokeWidth: 1,
3121
+ strokeLineDash: [4, 4]
3122
+ });
3123
+ g.appendChild(xAlign);
3124
+ });
3125
+ }
3126
+ drawDistributeLines(lines, g) {
3127
+ lines.forEach(points => {
3128
+ if (!points.length)
3129
+ return;
3130
+ if (points[0][1] === points[1][1]) {
3131
+ const yAlign = PlaitBoard.getRoughSVG(this.board).line(points[0][0], points[0][1], points[1][0], points[1][1], {
3132
+ stroke: SELECTION_BORDER_COLOR,
3133
+ strokeWidth: 1
3134
+ });
3135
+ const bar1 = PlaitBoard.getRoughSVG(this.board).line(points[0][0], points[0][1] - 4, points[0][0], points[1][1] + 4, {
3136
+ stroke: SELECTION_BORDER_COLOR,
3137
+ strokeWidth: 1
3138
+ });
3139
+ const bar2 = PlaitBoard.getRoughSVG(this.board).line(points[1][0], points[0][1] - 4, points[1][0], points[1][1] + 4, {
3140
+ stroke: SELECTION_BORDER_COLOR,
3141
+ strokeWidth: 1
3142
+ });
3143
+ g.appendChild(yAlign);
3144
+ g.appendChild(bar1);
3145
+ g.appendChild(bar2);
3146
+ }
3147
+ });
3148
+ }
3149
+ }
3150
+ function isHorizontalCross(rectangle, other) {
3151
+ return !(rectangle.y + rectangle.height < other.y || rectangle.y > other.y + other.height);
2987
3152
  }
2988
3153
 
2989
3154
  function withMoving(board) {
@@ -3025,18 +3190,18 @@ function withMoving(board) {
3025
3190
  const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
3026
3191
  offsetX = endPoint[0] - startPoint[0];
3027
3192
  offsetY = endPoint[1] - startPoint[1];
3028
- const activeElementsRectangle = getRectangleByElements(board, activeElements, true);
3029
- activeElementsRectangle.x += offsetX;
3030
- activeElementsRectangle.y += offsetY;
3031
- const reactionManager = new ReactionManager(board, activeElements, activeElementsRectangle);
3032
- const ref = reactionManager.handleAlign();
3033
- offsetX -= ref.deltaX;
3034
- offsetY -= ref.deltaY;
3035
- alignG = ref.g;
3036
- PlaitBoard.getElementActiveHost(board).append(alignG);
3037
3193
  const offsetBuffer = 5;
3038
- if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer || getMovingElements(board).length > 0 || ref.deltaX) {
3194
+ if (Math.abs(offsetX) > offsetBuffer || Math.abs(offsetY) > offsetBuffer || getMovingElements(board).length > 0) {
3039
3195
  throttleRAF(() => {
3196
+ const activeElementsRectangle = getRectangleByElements(board, activeElements, true);
3197
+ activeElementsRectangle.x += offsetX;
3198
+ activeElementsRectangle.y += offsetY;
3199
+ const reactionManager = new ReactionManager(board, activeElements, activeElementsRectangle);
3200
+ const ref = reactionManager.handleAlign();
3201
+ offsetX -= ref.deltaX;
3202
+ offsetY -= ref.deltaY;
3203
+ alignG = ref.g;
3204
+ PlaitBoard.getElementActiveHost(board).append(alignG);
3040
3205
  handleTouchTarget(board);
3041
3206
  const currentElements = activeElements.map(activeElement => {
3042
3207
  const points = activeElement.points || [];
@@ -3962,5 +4127,5 @@ function createModModifierKeys() {
3962
4127
  * Generated bundle index. Do not edit.
3963
4128
  */
3964
4129
 
3965
- 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, SELECTION_RECTANGLE_CLASS_NAME, 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, createSelectionRectangleG, 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, getTemporaryRef, 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 };
4130
+ 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, Direction, 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, SELECTION_RECTANGLE_CLASS_NAME, 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, createSelectionRectangleG, 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, getTemporaryRef, 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 };
3966
4131
  //# sourceMappingURL=plait-core.mjs.map