@plait/core 0.24.0-next.0 β†’ 0.24.0-next.2

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.
@@ -146,6 +146,54 @@ const ThemeColors = [
146
146
  StarryThemeColor
147
147
  ];
148
148
 
149
+ const RectangleClient = {
150
+ isHit: (origin, target) => {
151
+ const minX = origin.x < target.x ? origin.x : target.x;
152
+ const maxX = origin.x + origin.width > target.x + target.width ? origin.x + origin.width : target.x + target.width;
153
+ const minY = origin.y < target.y ? origin.y : target.y;
154
+ const maxY = origin.y + origin.height > target.y + target.height ? origin.y + origin.height : target.y + target.height;
155
+ // float calculate error( eg: 1.4210854715202004e-14 > 0)
156
+ if (Math.floor(maxX - minX - origin.width - target.width) <= 0 && Math.floor(maxY - minY - origin.height - target.height) <= 0) {
157
+ return true;
158
+ }
159
+ else {
160
+ return false;
161
+ }
162
+ },
163
+ toRectangleClient: (points) => {
164
+ const xArray = points.map(ele => ele[0]);
165
+ const yArray = points.map(ele => ele[1]);
166
+ const xMin = Math.min(...xArray);
167
+ const xMax = Math.max(...xArray);
168
+ const yMin = Math.min(...yArray);
169
+ const yMax = Math.max(...yArray);
170
+ const rect = { x: xMin, y: yMin, width: xMax - xMin, height: yMax - yMin };
171
+ return rect;
172
+ },
173
+ getOutlineRectangle: (rectangle, offset) => {
174
+ return {
175
+ x: rectangle.x + offset,
176
+ y: rectangle.y + offset,
177
+ width: rectangle.width + Math.abs(offset) * 2,
178
+ height: rectangle.height + Math.abs(offset) * 2
179
+ };
180
+ },
181
+ isEqual: (rectangle, otherRectangle) => {
182
+ return (rectangle.x === otherRectangle.x &&
183
+ rectangle.y === otherRectangle.y &&
184
+ rectangle.width === otherRectangle.width &&
185
+ rectangle.height === otherRectangle.height);
186
+ },
187
+ getCornerPoints: (rectangle) => {
188
+ return [
189
+ [rectangle.x, rectangle.y],
190
+ [rectangle.x + rectangle.width, rectangle.y],
191
+ [rectangle.x + rectangle.width, rectangle.y + rectangle.height],
192
+ [rectangle.x, rectangle.y + rectangle.height]
193
+ ];
194
+ }
195
+ };
196
+
149
197
  // https://stackoverflow.com/a/6853926/232122
150
198
  function distanceBetweenPointAndSegment(x, y, x1, y1, x2, y2) {
151
199
  const A = x - x1;
@@ -176,6 +224,19 @@ function distanceBetweenPointAndSegment(x, y, x1, y1, x2, y2) {
176
224
  const dy = y - yy;
177
225
  return Math.hypot(dx, dy);
178
226
  }
227
+ function distanceBetweenPointAndSegments(points, point) {
228
+ const len = points.length;
229
+ let distance = Infinity;
230
+ for (let i = 0; i < len - 1; i++) {
231
+ const p = points[i];
232
+ const p2 = points[i + 1];
233
+ const currentDistance = distanceBetweenPointAndSegment(point[0], point[1], p[0], p[1], p2[0], p2[1]);
234
+ if (currentDistance < distance) {
235
+ distance = currentDistance;
236
+ }
237
+ }
238
+ return distance;
239
+ }
179
240
  function rotate(x1, y1, x2, y2, angle) {
180
241
  // π‘Žβ€²π‘₯=(π‘Žπ‘₯βˆ’π‘π‘₯)cosπœƒβˆ’(π‘Žπ‘¦βˆ’π‘π‘¦)sinπœƒ+𝑐π‘₯
181
242
  // π‘Žβ€²π‘¦=(π‘Žπ‘₯βˆ’π‘π‘₯)sinπœƒ+(π‘Žπ‘¦βˆ’π‘π‘¦)cosπœƒ+𝑐𝑦.
@@ -193,6 +254,29 @@ function distanceBetweenPointAndRectangle(x, y, rect) {
193
254
  var dy = Math.max(rect.y - y, 0, y - (rect.y + rect.height));
194
255
  return Math.sqrt(dx * dx + dy * dy);
195
256
  }
257
+ const isLineHitLine = (a, b, c, d) => {
258
+ const crossProduct = (v1, v2) => v1[0] * v2[1] - v1[1] * v2[0];
259
+ const ab = [b[0] - a[0], b[1] - a[1]];
260
+ const ac = [c[0] - a[0], c[1] - a[1]];
261
+ const ad = [d[0] - a[0], d[1] - a[1]];
262
+ const ca = [a[0] - c[0], a[1] - c[1]];
263
+ const cb = [b[0] - c[0], b[1] - c[1]];
264
+ const cd = [d[0] - c[0], d[1] - c[1]];
265
+ return crossProduct(ab, ac) * crossProduct(ab, ad) <= 0 && crossProduct(cd, ca) * crossProduct(cd, cb) <= 0;
266
+ };
267
+ const isPolylineHitRectangle = (points, rectangle) => {
268
+ const rectanglePoints = RectangleClient.getCornerPoints(rectangle);
269
+ for (let i = 1; i < points.length; i++) {
270
+ const isIntersect = isLineHitLine(points[i], points[i - 1], rectanglePoints[0], rectanglePoints[1]) ||
271
+ isLineHitLine(points[i], points[i - 1], rectanglePoints[1], rectanglePoints[2]) ||
272
+ isLineHitLine(points[i], points[i - 1], rectanglePoints[2], rectanglePoints[3]) ||
273
+ isLineHitLine(points[i], points[i - 1], rectanglePoints[3], rectanglePoints[0]);
274
+ if (isIntersect) {
275
+ return true;
276
+ }
277
+ }
278
+ return false;
279
+ };
196
280
 
197
281
  const PlaitBoard = {
198
282
  isBoard(value) {
@@ -1641,46 +1725,6 @@ const PlaitElement = {
1641
1725
  }
1642
1726
  };
1643
1727
 
1644
- const RectangleClient = {
1645
- isHit: (origin, target) => {
1646
- const minX = origin.x < target.x ? origin.x : target.x;
1647
- const maxX = origin.x + origin.width > target.x + target.width ? origin.x + origin.width : target.x + target.width;
1648
- const minY = origin.y < target.y ? origin.y : target.y;
1649
- const maxY = origin.y + origin.height > target.y + target.height ? origin.y + origin.height : target.y + target.height;
1650
- // float calculate error( eg: 1.4210854715202004e-14 > 0)
1651
- if (Math.floor(maxX - minX - origin.width - target.width) <= 0 && Math.floor(maxY - minY - origin.height - target.height) <= 0) {
1652
- return true;
1653
- }
1654
- else {
1655
- return false;
1656
- }
1657
- },
1658
- toRectangleClient: (points) => {
1659
- const xArray = points.map(ele => ele[0]);
1660
- const yArray = points.map(ele => ele[1]);
1661
- const xMin = Math.min(...xArray);
1662
- const xMax = Math.max(...xArray);
1663
- const yMin = Math.min(...yArray);
1664
- const yMax = Math.max(...yArray);
1665
- const rect = { x: xMin, y: yMin, width: xMax - xMin, height: yMax - yMin };
1666
- return rect;
1667
- },
1668
- getOutlineRectangle: (rectangle, offset) => {
1669
- return {
1670
- x: rectangle.x + offset,
1671
- y: rectangle.y + offset,
1672
- width: rectangle.width + Math.abs(offset) * 2,
1673
- height: rectangle.height + Math.abs(offset) * 2
1674
- };
1675
- },
1676
- isEqual: (rectangle, otherRectangle) => {
1677
- return (rectangle.x === otherRectangle.x &&
1678
- rectangle.y === otherRectangle.y &&
1679
- rectangle.width === otherRectangle.width &&
1680
- rectangle.height === otherRectangle.height);
1681
- }
1682
- };
1683
-
1684
1728
  const isSetViewportOperation = (value) => {
1685
1729
  return value.type === 'set_viewport';
1686
1730
  };
@@ -2500,13 +2544,13 @@ function withViewport(board) {
2500
2544
  }
2501
2545
 
2502
2546
  function withMoving(board) {
2503
- const { mousedown, mousemove, globalMouseup, globalMousemove } = board;
2547
+ const { pointerDown, pointerMove, globalPointerUp, globalPointerMove } = board;
2504
2548
  let offsetX = 0;
2505
2549
  let offsetY = 0;
2506
2550
  let isPreventDefault = false;
2507
2551
  let startPoint;
2508
2552
  let activeElements = [];
2509
- board.mousedown = event => {
2553
+ board.pointerDown = (event) => {
2510
2554
  const host = BOARD_TO_HOST.get(board);
2511
2555
  const point = transformPoint(board, toPoint(event.x, event.y, host));
2512
2556
  const range = { anchor: point, focus: point };
@@ -2522,9 +2566,9 @@ function withMoving(board) {
2522
2566
  activeElements = [hitElement];
2523
2567
  }
2524
2568
  }
2525
- mousedown(event);
2569
+ pointerDown(event);
2526
2570
  };
2527
- board.mousemove = event => {
2571
+ board.pointerMove = (event) => {
2528
2572
  if (startPoint && activeElements.length && !PlaitBoard.hasBeenTextEditing(board)) {
2529
2573
  if (!isPreventDefault) {
2530
2574
  isPreventDefault = true;
@@ -2556,23 +2600,23 @@ function withMoving(board) {
2556
2600
  // 阻歒 move θΏ‡η¨‹δΈ­θ§¦ε‘η”»εΈƒζ»šεŠ¨θ‘ŒδΈΊ
2557
2601
  event.preventDefault();
2558
2602
  }
2559
- mousemove(event);
2603
+ pointerMove(event);
2560
2604
  };
2561
- board.globalMousemove = event => {
2605
+ board.globalPointerMove = (event) => {
2562
2606
  if (startPoint) {
2563
2607
  const inPlaitBoardElement = isInPlaitBoard(board, event.x, event.y);
2564
2608
  if (!inPlaitBoardElement) {
2565
2609
  cancelMove(board);
2566
2610
  }
2567
2611
  }
2568
- globalMousemove(event);
2612
+ globalPointerMove(event);
2569
2613
  };
2570
- board.globalMouseup = event => {
2614
+ board.globalPointerUp = event => {
2571
2615
  isPreventDefault = false;
2572
2616
  if (startPoint) {
2573
2617
  cancelMove(board);
2574
2618
  }
2575
- globalMouseup(event);
2619
+ globalPointerUp(event);
2576
2620
  };
2577
2621
  function cancelMove(board) {
2578
2622
  startPoint = null;
@@ -3112,11 +3156,9 @@ class PlaitBoardComponent {
3112
3156
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board)))
3113
3157
  .subscribe((event) => {
3114
3158
  const selectedElements = getSelectedElements(this.board);
3115
- if (selectedElements.length > 0) {
3116
- event.preventDefault();
3117
- const rectangle = getRectangleByElements(this.board, selectedElements, false);
3118
- this.board.setFragment(event.clipboardData, rectangle);
3119
- }
3159
+ event.preventDefault();
3160
+ const rectangle = getRectangleByElements(this.board, selectedElements, false);
3161
+ this.board.setFragment(event.clipboardData, rectangle);
3120
3162
  });
3121
3163
  fromEvent(document, 'paste')
3122
3164
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
@@ -3131,12 +3173,10 @@ class PlaitBoardComponent {
3131
3173
  .pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
3132
3174
  .subscribe((event) => {
3133
3175
  const selectedElements = getSelectedElements(this.board);
3134
- if (selectedElements.length > 0) {
3135
- event.preventDefault();
3136
- const rectangle = getRectangleByElements(this.board, selectedElements, false);
3137
- this.board.setFragment(event.clipboardData, rectangle);
3138
- this.board.deleteFragment(event.clipboardData);
3139
- }
3176
+ event.preventDefault();
3177
+ const rectangle = getRectangleByElements(this.board, selectedElements, false);
3178
+ this.board.setFragment(event.clipboardData, rectangle);
3179
+ this.board.deleteFragment(event.clipboardData);
3140
3180
  });
3141
3181
  }
3142
3182
  viewportScrollListener() {
@@ -3454,5 +3494,5 @@ function createModModifierKeys() {
3454
3494
  * Generated bundle index. Do not edit.
3455
3495
  */
3456
3496
 
3457
- 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 };
3497
+ 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, distanceBetweenPointAndSegments, 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, isLineHitLine, isMainPointer, isNullOrUndefined, isPolylineHitRectangle, 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 };
3458
3498
  //# sourceMappingURL=plait-core.mjs.map