@plait/mind 0.21.0 → 0.23.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.
@@ -5,7 +5,7 @@ import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor,
5
5
  import { MindLayoutType, isIndentedLayout, AbstractNode, getNonAbstractChildren, isStandardLayout, isLeftLayout, isRightLayout, isVerticalLogicLayout, isHorizontalLogicLayout, isTopLayout, isBottomLayout, isHorizontalLayout, getCorrectStartEnd, getAbstractLayout, ConnectingPosition, GlobalLayout } from '@plait/layouts';
6
6
  import { PlaitMarkEditor, MarkTypes, DEFAULT_FONT_SIZE, TEXT_DEFAULT_HEIGHT, buildText, getTextSize, TextManage, ExitOrigin, TextModule, getTextFromClipboard } from '@plait/text';
7
7
  import { fromEvent, Subject } from 'rxjs';
8
- import { Node, Path as Path$1 } from 'slate';
8
+ import { Node as Node$1, Path as Path$1 } from 'slate';
9
9
  import { isKeyHotkey } from 'is-hotkey';
10
10
  import { pointsOnBezierCurves } from 'points-on-curve';
11
11
  import { take, filter } from 'rxjs/operators';
@@ -484,7 +484,7 @@ const copyNewNode = (node) => {
484
484
  const extractNodesText = (node) => {
485
485
  let str = '';
486
486
  if (node) {
487
- str += Node.string(node.data.topic) + ' ';
487
+ str += Node$1.string(node.data.topic) + ' ';
488
488
  for (const childNode of node.children) {
489
489
  str += extractNodesText(childNode);
490
490
  }
@@ -653,7 +653,7 @@ const adjustAbstractToNode = (node) => {
653
653
  const adjustNodeToRoot = (board, node) => {
654
654
  var _a;
655
655
  const newElement = Object.assign({}, node);
656
- if (!Node.string(newElement.data.topic)) {
656
+ if (!Node$1.string(newElement.data.topic)) {
657
657
  newElement.data.topic = { children: [{ text: '思维导图' }] };
658
658
  }
659
659
  newElement === null || newElement === void 0 ? true : delete newElement.strokeColor;
@@ -670,6 +670,28 @@ const adjustNodeToRoot = (board, node) => {
670
670
  return Object.assign(Object.assign({}, newElement), { layout: (_a = newElement.layout) !== null && _a !== void 0 ? _a : MindLayoutType.right, isRoot: true, type: 'mindmap' });
671
671
  };
672
672
 
673
+ const BOARD_TO_SELECTED_IMAGE_ELEMENT = new WeakMap();
674
+ const getSelectedImageElement = (board) => {
675
+ return BOARD_TO_SELECTED_IMAGE_ELEMENT.get(board);
676
+ };
677
+ const addSelectedImageElement = (board, element) => {
678
+ BOARD_TO_SELECTED_IMAGE_ELEMENT.set(board, element);
679
+ };
680
+ const removeSelectedImageElement = (board) => {
681
+ BOARD_TO_SELECTED_IMAGE_ELEMENT.delete(board);
682
+ };
683
+ const setImageFocus = (board, element, isFocus) => {
684
+ if (isFocus) {
685
+ addSelectedImageElement(board, element);
686
+ }
687
+ else {
688
+ removeSelectedImageElement(board);
689
+ }
690
+ const elementComponent = PlaitElement.getComponent(element);
691
+ elementComponent.imageDrawer.componentRef.instance.isFocus = isFocus;
692
+ elementComponent.imageDrawer.componentRef.instance.cdr.markForCheck();
693
+ };
694
+
673
695
  const DefaultAbstractNodeStyle = {
674
696
  branch: { color: GRAY_COLOR, width: 2 },
675
697
  shape: {
@@ -2221,6 +2243,8 @@ const insertAbstractNode = (board, path, start, end) => {
2221
2243
  mindElement.start = start;
2222
2244
  mindElement.end = end;
2223
2245
  Transforms.insertNode(board, mindElement, path);
2246
+ clearSelectedElement(board);
2247
+ addSelectedElement(board, mindElement);
2224
2248
  };
2225
2249
 
2226
2250
  const setLayout = (board, layout, path) => {
@@ -3443,6 +3467,8 @@ const withAbstract = (board) => {
3443
3467
  return abstractHandlePosition;
3444
3468
  });
3445
3469
  if (activeAbstractElement) {
3470
+ // prevent text from being selected
3471
+ event.preventDefault();
3446
3472
  if (newBoard === null || newBoard === void 0 ? void 0 : newBoard.onAbstractResize) {
3447
3473
  newBoard.onAbstractResize(AbstractResizeState.start);
3448
3474
  }
@@ -3747,49 +3773,45 @@ const isSpaceHotkey = (event) => {
3747
3773
  return event.code === 'Space';
3748
3774
  };
3749
3775
 
3750
- const withNodeHover = (board) => {
3751
- const { mousemove, mouseleave } = board;
3752
- let hoveredMindElement = null;
3753
- board.mousemove = (event) => {
3754
- throttleRAF(() => {
3755
- let target = null;
3756
- const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
3757
- depthFirstRecursion(board, element => {
3758
- if (target) {
3759
- return;
3760
- }
3761
- if (!MindElement.isMindElement(board, element)) {
3762
- return;
3763
- }
3764
- const isHitElement = isHitMindElement(board, point, element);
3765
- if (isHitElement) {
3766
- target = element;
3767
- }
3768
- }, getIsRecursionFunc(board), true);
3769
- if (hoveredMindElement && target && hoveredMindElement === target) {
3770
- return;
3771
- }
3772
- if (hoveredMindElement) {
3773
- removeHovered(hoveredMindElement);
3774
- }
3775
- if (target) {
3776
- addHovered(target);
3777
- hoveredMindElement = target;
3778
- }
3779
- else {
3780
- hoveredMindElement = null;
3781
- }
3782
- });
3783
- mousemove(event);
3784
- };
3785
- board.mouseleave = (event) => {
3786
- if (hoveredMindElement) {
3787
- removeHovered(hoveredMindElement);
3788
- hoveredMindElement = null;
3776
+ const mouseMoveHandle = (board, event, nodeHoveredExtendRef) => {
3777
+ let target = null;
3778
+ const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
3779
+ depthFirstRecursion(board, element => {
3780
+ if (target) {
3781
+ return;
3789
3782
  }
3790
- mouseleave(event);
3791
- };
3792
- return board;
3783
+ if (!MindElement.isMindElement(board, element)) {
3784
+ return;
3785
+ }
3786
+ const isHitElement = isHitMindElement(board, point, element);
3787
+ if (isHitElement) {
3788
+ target = element;
3789
+ }
3790
+ }, getIsRecursionFunc(board), true);
3791
+ if (nodeHoveredExtendRef && target && nodeHoveredExtendRef.element === target) {
3792
+ return nodeHoveredExtendRef;
3793
+ }
3794
+ if (nodeHoveredExtendRef) {
3795
+ removeHovered(nodeHoveredExtendRef.element);
3796
+ }
3797
+ if (target) {
3798
+ addHovered(target);
3799
+ if (nodeHoveredExtendRef) {
3800
+ nodeHoveredExtendRef.element = target;
3801
+ }
3802
+ else {
3803
+ nodeHoveredExtendRef = { element: target };
3804
+ }
3805
+ }
3806
+ else {
3807
+ nodeHoveredExtendRef = null;
3808
+ }
3809
+ return nodeHoveredExtendRef;
3810
+ };
3811
+ const mouseLeaveHandle = (board, event, nodeHoveredExtendRef) => {
3812
+ if (nodeHoveredExtendRef) {
3813
+ removeHovered(nodeHoveredExtendRef.element);
3814
+ }
3793
3815
  };
3794
3816
  const addHovered = (element) => {
3795
3817
  const component = PlaitElement.getComponent(element);
@@ -3802,33 +3824,29 @@ const removeHovered = (element) => {
3802
3824
  }
3803
3825
  };
3804
3826
 
3805
- const BOARD_TO_SELECTED_IMAGE_ELEMENT = new WeakMap();
3806
- const getSelectedImageElement = (board) => {
3807
- return BOARD_TO_SELECTED_IMAGE_ELEMENT.get(board);
3808
- };
3809
- const addSelectedImageElement = (board, element) => {
3810
- BOARD_TO_SELECTED_IMAGE_ELEMENT.set(board, element);
3811
- };
3812
- const removeSelectedImageElement = (board) => {
3813
- BOARD_TO_SELECTED_IMAGE_ELEMENT.delete(board);
3814
- };
3815
- const setImageFocus = (board, element, isFocus) => {
3816
- if (isFocus) {
3817
- addSelectedImageElement(board, element);
3818
- }
3819
- else {
3820
- removeSelectedImageElement(board);
3821
- }
3822
- const elementComponent = PlaitElement.getComponent(element);
3823
- elementComponent.imageDrawer.componentRef.instance.isFocus = isFocus;
3824
- elementComponent.imageDrawer.componentRef.instance.cdr.markForCheck();
3827
+ const withNodeHoverDetect = (board) => {
3828
+ const { mousemove, mouseleave } = board;
3829
+ let nodeHoveredExtendRef = null;
3830
+ board.mousemove = (event) => {
3831
+ nodeHoveredExtendRef = mouseMoveHandle(board, event, nodeHoveredExtendRef);
3832
+ mousemove(event);
3833
+ };
3834
+ board.mouseleave = (event) => {
3835
+ mouseLeaveHandle(board, event, nodeHoveredExtendRef);
3836
+ nodeHoveredExtendRef = null;
3837
+ mouseleave(event);
3838
+ };
3839
+ return board;
3825
3840
  };
3826
3841
 
3827
3842
  const withNodeImage = (board) => {
3828
- let selectedImageElement = null;
3829
- const { keydown, mousedown } = board;
3843
+ const { keydown, mousedown, globalMouseup } = board;
3830
3844
  board.mousedown = (event) => {
3845
+ const selectedImageElement = getSelectedImageElement(board);
3831
3846
  if (PlaitBoard.isReadonly(board) || !isMainPointer(event) || !PlaitBoard.isPointer(board, PlaitPointerType.selection)) {
3847
+ if (selectedImageElement) {
3848
+ setImageFocus(board, selectedImageElement, false);
3849
+ }
3832
3850
  mousedown(event);
3833
3851
  return;
3834
3852
  }
@@ -3844,24 +3862,35 @@ const withNodeImage = (board) => {
3844
3862
  }
3845
3863
  if (selectedImageElement) {
3846
3864
  setImageFocus(board, selectedImageElement, false);
3847
- selectedImageElement = null;
3848
3865
  }
3849
3866
  if (hitImage) {
3850
3867
  temporaryDisableSelection(board);
3851
- selectedImageElement = hitElements[0];
3852
- setImageFocus(board, selectedImageElement, true);
3868
+ setImageFocus(board, hitElements[0], true);
3853
3869
  clearSelectedElement(board);
3854
3870
  }
3855
3871
  mousedown(event);
3856
3872
  };
3857
3873
  board.keydown = (event) => {
3874
+ const selectedImageElement = getSelectedImageElement(board);
3858
3875
  if (!PlaitBoard.isReadonly(board) && selectedImageElement && (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event))) {
3876
+ addSelectedElement(board, selectedImageElement);
3877
+ setImageFocus(board, selectedImageElement, false);
3859
3878
  MindTransforms.removeImage(board, selectedImageElement);
3860
- selectedImageElement = null;
3861
3879
  return;
3862
3880
  }
3863
3881
  keydown(event);
3864
3882
  };
3883
+ board.globalMouseup = (event) => {
3884
+ if (PlaitBoard.isFocus(board)) {
3885
+ const isInBoard = event.target instanceof Node && PlaitBoard.getBoardContainer(board).contains(event.target);
3886
+ const selectedImageElement = getSelectedImageElement(board);
3887
+ // Clear image selection when mouse board outside area
3888
+ if (selectedImageElement && !isInBoard) {
3889
+ setImageFocus(board, selectedImageElement, false);
3890
+ }
3891
+ }
3892
+ globalMouseup(event);
3893
+ };
3865
3894
  return board;
3866
3895
  };
3867
3896
 
@@ -3872,7 +3901,7 @@ const withNodeResize = (board) => {
3872
3901
  let startPoint = null;
3873
3902
  board.mousedown = (event) => {
3874
3903
  if (targetElement) {
3875
- startPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
3904
+ startPoint = [event.x, event.y];
3876
3905
  // prevent text from being selected
3877
3906
  event.preventDefault();
3878
3907
  return;
@@ -3888,7 +3917,6 @@ const withNodeResize = (board) => {
3888
3917
  const endPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
3889
3918
  const distance = distanceBetweenPointAndPoint(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);
3890
3919
  if (distance > PRESS_AND_MOVE_BUFFER) {
3891
- startPoint = endPoint;
3892
3920
  addResizing(board, targetElement);
3893
3921
  targetElementRef = {
3894
3922
  minWidth: NodeSpace.getNodeResizableMinWidth(board, targetElement),
@@ -3900,18 +3928,25 @@ const withNodeResize = (board) => {
3900
3928
  }
3901
3929
  }
3902
3930
  if (isMindNodeResizing(board) && startPoint && targetElementRef) {
3903
- const endPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
3904
- const offsetX = endPoint[0] - startPoint[0];
3905
- let resizedWidth = targetElementRef.currentWidth + offsetX;
3906
- if (resizedWidth < targetElementRef.minWidth) {
3907
- resizedWidth = targetElementRef.minWidth;
3908
- }
3909
- const newTarget = PlaitNode.get(board, targetElementRef.path);
3910
- if (newTarget && NodeSpace.getNodeTopicMinWidth(board, newTarget) !== resizedWidth) {
3911
- targetElementRef.textManage.updateWidth(resizedWidth);
3912
- const { width, height } = targetElementRef.textManage.getSize();
3913
- MindTransforms.setNodeManualWidth(board, newTarget, resizedWidth, height);
3914
- }
3931
+ throttleRAF(() => {
3932
+ if (!startPoint) {
3933
+ return;
3934
+ }
3935
+ const endPoint = [event.x, event.y];
3936
+ const offsetX = endPoint[0] - startPoint[0];
3937
+ const zoom = board.viewport.zoom;
3938
+ let resizedWidth = targetElementRef.currentWidth + offsetX / zoom;
3939
+ if (resizedWidth < targetElementRef.minWidth) {
3940
+ resizedWidth = targetElementRef.minWidth;
3941
+ }
3942
+ const newTarget = PlaitNode.get(board, targetElementRef.path);
3943
+ if (newTarget && NodeSpace.getNodeTopicMinWidth(board, newTarget) !== resizedWidth) {
3944
+ targetElementRef.textManage.updateWidth(resizedWidth);
3945
+ const { height } = targetElementRef.textManage.getSize();
3946
+ MindTransforms.setNodeManualWidth(board, newTarget, resizedWidth * zoom, height);
3947
+ }
3948
+ });
3949
+ return;
3915
3950
  }
3916
3951
  else {
3917
3952
  // press and start drag when node is non selected
@@ -3931,8 +3966,8 @@ const withNodeResize = (board) => {
3931
3966
  };
3932
3967
  board.globalMouseup = (event) => {
3933
3968
  globalMouseup(event);
3934
- if (isMindNodeResizing(board) && targetElement) {
3935
- removeResizing(board, targetElement);
3969
+ if (isMindNodeResizing(board) || targetElement) {
3970
+ targetElement && removeResizing(board, targetElement);
3936
3971
  targetElementRef = null;
3937
3972
  targetElement = null;
3938
3973
  startPoint = null;
@@ -3972,10 +4007,9 @@ const getTargetElement = (board, point) => {
3972
4007
  return null;
3973
4008
  };
3974
4009
  const getResizeActiveRectangle = (board, element) => {
3975
- const activeWidth = 20;
3976
4010
  const node = MindElement.getNode(element);
3977
4011
  const rectangle = getRectangleByNode(node);
3978
- return { x: rectangle.x + rectangle.width - activeWidth / 2, y: rectangle.y, width: activeWidth, height: rectangle.height };
4012
+ return { x: rectangle.x + rectangle.width - EXTEND_OFFSET, y: rectangle.y, width: EXTEND_OFFSET * 2, height: rectangle.height };
3979
4013
  };
3980
4014
 
3981
4015
  const withMind = (baseBoard) => {
@@ -4083,7 +4117,7 @@ const withMind = (baseBoard) => {
4083
4117
  MindTransforms.removeElements(board, selectedElements);
4084
4118
  deleteFragment(data);
4085
4119
  };
4086
- return withNodeResize(withNodeImage(withNodeHover(withMindHotkey(withMindExtend(withCreateMind(withAbstract(withNodeDnd(board))))))));
4120
+ return withNodeResize(withNodeImage(withNodeHoverDetect(withMindHotkey(withMindExtend(withCreateMind(withAbstract(withNodeDnd(board))))))));
4087
4121
  };
4088
4122
 
4089
4123
  class MindEmojiBaseComponent {
@@ -4137,5 +4171,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
4137
4171
  * Generated bundle index. Do not edit.
4138
4172
  */
4139
4173
 
4140
- export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BaseDrawer, BranchShape, DEFAULT_FONT_FAMILY, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindImageBaseComponent, MindModule, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, TRANSPARENT, WithMindPluginKey, addActiveOnDragOrigin, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, extractNodesText, findLastChild, findLocationLeftIndex, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getEmojiForeignRectangle, getEmojiRectangle, getFillByElement, getFirstLevelElement, getHitAbstractHandle, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasAfterDraw, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, isVirtualKey, removeActiveOnDragOrigin, separateChildren, setIsDragging, temporaryDisableSelection, withMind, withMindExtend };
4174
+ export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BaseDrawer, BranchShape, DEFAULT_FONT_FAMILY, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindImageBaseComponent, MindModule, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, TRANSPARENT, WithMindPluginKey, addActiveOnDragOrigin, addSelectedImageElement, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, extractNodesText, findLastChild, findLocationLeftIndex, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getEmojiForeignRectangle, getEmojiRectangle, getFillByElement, getFirstLevelElement, getHitAbstractHandle, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getSelectedImageElement, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasAfterDraw, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, isVirtualKey, removeActiveOnDragOrigin, removeSelectedImageElement, separateChildren, setImageFocus, setIsDragging, temporaryDisableSelection, withMind, withMindExtend };
4141
4175
  //# sourceMappingURL=plait-mind.mjs.map