@plait/core 0.35.0 → 0.37.0

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.
@@ -281,8 +281,15 @@ const MAC_META = 224;
281
281
 
282
282
  var ResizeCursorClass;
283
283
  (function (ResizeCursorClass) {
284
- ResizeCursorClass["ew-resize"] = "ew-resize";
284
+ ResizeCursorClass["ew"] = "ew-resize";
285
+ ResizeCursorClass["ns"] = "ns-resize";
286
+ ResizeCursorClass["nesw"] = "nesw-resize";
287
+ ResizeCursorClass["nwse"] = "nwse-resize";
285
288
  })(ResizeCursorClass || (ResizeCursorClass = {}));
289
+ var CursorClass;
290
+ (function (CursorClass) {
291
+ CursorClass["crosshair"] = "crosshair";
292
+ })(CursorClass || (CursorClass = {}));
286
293
 
287
294
  const ATTACHED_ELEMENT_CLASS_NAME = 'plait-board-attached';
288
295
  const ACTIVE_STROKE_WIDTH = 1;
@@ -290,6 +297,7 @@ const SELECTION_RECTANGLE_CLASS_NAME = 'selection-rectangle';
290
297
 
291
298
  const CLIP_BOARD_FORMAT_KEY = 'x-plait-fragment';
292
299
  const HOST_CLASS_NAME = 'plait-board-container';
300
+ const ACTIVE_MOVING_CLASS_NAME = 'active-with-moving';
293
301
  const SCROLL_BAR_WIDTH = 20;
294
302
  const MAX_RADIUS = 16;
295
303
  const POINTER_BUTTON = {
@@ -870,6 +878,9 @@ function normalizePoint(point) {
870
878
  }
871
879
  : point;
872
880
  }
881
+ const RgbaToHEX = (Rgb, opacity) => {
882
+ return Rgb + Math.floor(opacity * 255).toString(16);
883
+ };
873
884
 
874
885
  /**
875
886
  * Check whether to merge an operation into the previous operation.
@@ -1565,7 +1576,7 @@ function convertImageToBase64(url) {
1565
1576
  * @param clonedNode clone node
1566
1577
  */
1567
1578
  function cloneCSSStyle(nativeNode, clonedNode) {
1568
- const targetStyle = clonedNode.style;
1579
+ const targetStyle = clonedNode?.style;
1569
1580
  if (!targetStyle) {
1570
1581
  return;
1571
1582
  }
@@ -1582,48 +1593,41 @@ function cloneCSSStyle(nativeNode, clonedNode) {
1582
1593
  }
1583
1594
  }
1584
1595
  /**
1585
- * clone svg element
1586
- * @param board board
1587
- * @param options parameter configuration
1588
- * @returns clone svg element
1596
+ * batch clone target styles
1597
+ * @param sourceNode
1598
+ * @param cloneNode
1599
+ * @param inlineStyleClassNames
1589
1600
  */
1590
- async function cloneSvg(board, options) {
1591
- const elementHostBox = getRectangleByElements(board, board.children, true);
1592
- const { width, height, x, y } = elementHostBox;
1593
- const { padding = 4, inlineStyleClassNames } = options;
1594
- const sourceSvg = PlaitBoard.getHost(board);
1595
- const cloneSvgElement = sourceSvg.cloneNode(true);
1596
- cloneSvgElement.style.width = `${width}px`;
1597
- cloneSvgElement.style.height = `${height}px`;
1598
- cloneSvgElement.style.backgroundColor = '';
1599
- cloneSvgElement.setAttribute('width', `${width}`);
1600
- cloneSvgElement.setAttribute('height', `${height}`);
1601
- cloneSvgElement.setAttribute('viewBox', [x - padding, y - padding, width + 2 * padding, height + 2 * padding].join(','));
1601
+ function batchCloneCSSStyle(sourceNode, cloneNode, inlineStyleClassNames) {
1602
1602
  if (inlineStyleClassNames) {
1603
1603
  const classNames = inlineStyleClassNames + `,.${IMAGE_CONTAINER}`;
1604
- const sourceNodes = Array.from(sourceSvg.querySelectorAll(classNames));
1605
- const cloneNodes = Array.from(cloneSvgElement.querySelectorAll(classNames));
1604
+ const sourceNodes = Array.from(sourceNode.querySelectorAll(classNames));
1605
+ const cloneNodes = Array.from(cloneNode.querySelectorAll(classNames));
1606
1606
  sourceNodes.forEach((node, index) => {
1607
- const cloneNode = cloneNodes[index];
1608
1607
  const childElements = Array.from(node.querySelectorAll('*')).filter(isElementNode);
1609
- const cloneChildElements = Array.from(cloneNode.querySelectorAll('*')).filter(isElementNode);
1608
+ const cloneChildElements = Array.from(cloneNodes[index].querySelectorAll('*')).filter(isElementNode);
1610
1609
  sourceNodes.push(...childElements);
1611
1610
  cloneNodes.push(...cloneChildElements);
1612
1611
  });
1613
1612
  // processing styles
1614
1613
  sourceNodes.map((node, index) => {
1615
- const cloneNode = cloneNodes[index];
1616
- cloneCSSStyle(node, cloneNode);
1614
+ cloneCSSStyle(node, cloneNodes[index]);
1617
1615
  });
1618
1616
  }
1619
- // 使用 Promise.all 等待所有异步操作完成
1620
- const sourceImageNodes = Array.from(sourceSvg.querySelectorAll(`.${IMAGE_CONTAINER}`));
1621
- const cloneImageNodes = Array.from(cloneSvgElement.querySelectorAll(`.${IMAGE_CONTAINER}`));
1617
+ }
1618
+ /**
1619
+ * convert images in target nodes in batches
1620
+ * @param sourceNode
1621
+ * @param cloneNode
1622
+ */
1623
+ async function batchConvertImage(sourceNode, cloneNode) {
1624
+ const sourceImageNodes = Array.from(sourceNode.querySelectorAll(`.${IMAGE_CONTAINER}`));
1625
+ const cloneImageNodes = Array.from(cloneNode.querySelectorAll(`.${IMAGE_CONTAINER}`));
1622
1626
  await Promise.all(sourceImageNodes.map((_, index) => {
1623
1627
  return new Promise(resolve => {
1624
- const cloneNode = cloneImageNodes[index];
1628
+ const cloneImageNode = cloneImageNodes[index];
1625
1629
  // processing image
1626
- const image = cloneNode.querySelector('img');
1630
+ const image = cloneImageNode.querySelector('img');
1627
1631
  const url = image?.getAttribute('src');
1628
1632
  if (!url) {
1629
1633
  return resolve(true);
@@ -1634,6 +1638,33 @@ async function cloneSvg(board, options) {
1634
1638
  });
1635
1639
  });
1636
1640
  }));
1641
+ }
1642
+ /**
1643
+ * clone svg element
1644
+ * @param board board
1645
+ * @param options parameter configuration
1646
+ * @returns clone svg element
1647
+ */
1648
+ function cloneSvg(board, elements, rectangle, options) {
1649
+ const { width, height, x, y } = rectangle;
1650
+ const { padding = 4, inlineStyleClassNames } = options;
1651
+ const sourceSvg = PlaitBoard.getHost(board);
1652
+ const selectedGElements = elements.map(value => PlaitElement.getComponent(value).g);
1653
+ const cloneSvgElement = sourceSvg.cloneNode();
1654
+ const newHostElement = PlaitBoard.getElementHost(board).cloneNode();
1655
+ cloneSvgElement.style.width = `${width}px`;
1656
+ cloneSvgElement.style.height = `${height}px`;
1657
+ cloneSvgElement.style.backgroundColor = '';
1658
+ cloneSvgElement.setAttribute('width', `${width}`);
1659
+ cloneSvgElement.setAttribute('height', `${height}`);
1660
+ cloneSvgElement.setAttribute('viewBox', [x - padding, y - padding, width + 2 * padding, height + 2 * padding].join(','));
1661
+ selectedGElements.forEach((child, i) => {
1662
+ const cloneChild = child.cloneNode(true);
1663
+ batchCloneCSSStyle(child, cloneChild, inlineStyleClassNames);
1664
+ batchConvertImage(child, cloneChild);
1665
+ newHostElement.appendChild(cloneChild);
1666
+ });
1667
+ cloneSvgElement.appendChild(newHostElement);
1637
1668
  return cloneSvgElement;
1638
1669
  }
1639
1670
  /**
@@ -1646,12 +1677,13 @@ async function toImage(board, options) {
1646
1677
  if (!board) {
1647
1678
  return undefined;
1648
1679
  }
1649
- const elementHostBox = getRectangleByElements(board, board.children, true);
1680
+ const elements = options?.elements || findElements(board, { match: () => true, recursion: () => true });
1681
+ const targetRectangle = getRectangleByElements(board, elements, false);
1650
1682
  const { ratio = 2, fillStyle = 'transparent' } = options;
1651
- const { width, height } = elementHostBox;
1683
+ const { width, height } = targetRectangle;
1652
1684
  const ratioWidth = width * ratio;
1653
1685
  const ratioHeight = height * ratio;
1654
- const cloneSvgElement = await cloneSvg(board, options);
1686
+ const cloneSvgElement = await cloneSvg(board, elements, targetRectangle, options);
1655
1687
  const { canvas, ctx } = createCanvas(ratioWidth, ratioHeight, fillStyle);
1656
1688
  const svgStr = new XMLSerializer().serializeToString(cloneSvgElement);
1657
1689
  const imgSrc = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgStr)}`;
@@ -1751,6 +1783,7 @@ const handleTouchTarget = (board) => {
1751
1783
  const host = createG();
1752
1784
  host.appendChild(touchRef.target);
1753
1785
  touchRef.host = host;
1786
+ host.classList.add('touch-target');
1754
1787
  PlaitBoard.getElementActiveHost(board).append(host);
1755
1788
  }
1756
1789
  };
@@ -2564,7 +2597,7 @@ function withSelection(board) {
2564
2597
  fill: SELECTION_FILL_COLOR,
2565
2598
  fillStyle: 'solid'
2566
2599
  });
2567
- PlaitBoard.getHost(board).append(selectionMovingG);
2600
+ PlaitBoard.getElementActiveHost(board).append(selectionMovingG);
2568
2601
  }
2569
2602
  }
2570
2603
  globalPointerMove(event);
@@ -2682,7 +2715,7 @@ function createSelectionRectangleG(board) {
2682
2715
  fillStyle: 'solid'
2683
2716
  });
2684
2717
  selectionRectangleG.classList.add(SELECTION_RECTANGLE_CLASS_NAME);
2685
- PlaitBoard.getHost(board).append(selectionRectangleG);
2718
+ PlaitBoard.getElementActiveHost(board).append(selectionRectangleG);
2686
2719
  return selectionRectangleG;
2687
2720
  }
2688
2721
  return null;
@@ -3413,7 +3446,7 @@ function withMoving(board) {
3413
3446
  const host = BOARD_TO_HOST.get(board);
3414
3447
  const point = transformPoint(board, toPoint(event.x, event.y, host));
3415
3448
  let movableElements = board.children.filter(item => board.isMovable(item));
3416
- if (movableElements.length && !isPreventTouchMove(board)) {
3449
+ if (!PlaitBoard.isReadonly(board) && movableElements.length && !isPreventTouchMove(board) && isMainPointer(event)) {
3417
3450
  startPoint = point;
3418
3451
  const selectedMovableElements = getSelectedElements(board).filter(item => movableElements.includes(item));
3419
3452
  const hitElement = getHitElementByPoint(board, point);
@@ -3442,8 +3475,8 @@ function withMoving(board) {
3442
3475
  const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
3443
3476
  offsetX = endPoint[0] - startPoint[0];
3444
3477
  offsetY = endPoint[1] - startPoint[1];
3445
- const tolerance = 5;
3446
- if (Math.abs(offsetX) > tolerance || Math.abs(offsetY) > tolerance || getMovingElements(board).length > 0) {
3478
+ const distance = distanceBetweenPointAndPoint(...endPoint, ...startPoint);
3479
+ if (distance > PRESS_AND_MOVE_BUFFER || getMovingElements(board).length > 0) {
3447
3480
  throttleRAF(() => {
3448
3481
  if (!activeElementsRectangle) {
3449
3482
  return;
@@ -3458,6 +3491,7 @@ function withMoving(board) {
3458
3491
  offsetX -= ref.deltaX;
3459
3492
  offsetY -= ref.deltaY;
3460
3493
  alignG = ref.g;
3494
+ alignG.classList.add(ACTIVE_MOVING_CLASS_NAME);
3461
3495
  PlaitBoard.getElementActiveHost(board).append(alignG);
3462
3496
  handleTouchTarget(board);
3463
3497
  const currentElements = activeElements.map(activeElement => {
@@ -4395,5 +4429,5 @@ function createModModifierKeys() {
4395
4429
  * Generated bundle index. Do not edit.
4396
4430
  */
4397
4431
 
4398
- 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, PlaitChildrenElementComponent, PlaitContextService, PlaitElement, PlaitElementComponent, PlaitHistoryBoard, PlaitIslandBaseComponent, PlaitIslandPopoverBaseComponent, 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, catmullRomFitting, 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, downScale, downloadImage, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRectangle, drawRoundRectangle, fakeNodeWeakMap, findElements, getBoardRectangle, getClipboardByKey, getClipboardDataByMedia, getDataFromClipboard, getElementById, getElementHostBBox, getHitElementByPoint, getHitElementsBySelection, 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, 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, temporaryDisableSelection, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateForeignObjectWidth, updateViewportByScrolling, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
4432
+ export { A, ACTIVE_MOVING_CLASS_NAME, 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, CursorClass, 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, PlaitChildrenElementComponent, PlaitContextService, PlaitElement, PlaitElementComponent, PlaitHistoryBoard, PlaitIslandBaseComponent, PlaitIslandPopoverBaseComponent, PlaitNode, PlaitOperation, PlaitPluginElementComponent, PlaitPluginKey, PlaitPointerType, Point, Q, QUESTION_MARK, R, RIGHT_ARROW, RectangleClient, ResizeCursorClass, RetroThemeColor, RgbaToHEX, 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, catmullRomFitting, 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, downScale, downloadImage, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRectangle, drawRoundRectangle, fakeNodeWeakMap, findElements, getBoardRectangle, getClipboardByKey, getClipboardDataByMedia, getDataFromClipboard, getElementById, getElementHostBBox, getHitElementByPoint, getHitElementsBySelection, 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, 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, temporaryDisableSelection, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateForeignObjectWidth, updateViewportByScrolling, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
4399
4433
  //# sourceMappingURL=plait-core.mjs.map