@plait/mind 0.18.0 → 0.20.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.
Files changed (36) hide show
  1. package/base/base.drawer.d.ts +3 -3
  2. package/constants/index.d.ts +0 -1
  3. package/constants/node-style.d.ts +7 -3
  4. package/esm2020/base/base.drawer.mjs +1 -1
  5. package/esm2020/constants/index.mjs +1 -2
  6. package/esm2020/constants/node-style.mjs +5 -4
  7. package/esm2020/plugins/with-mind-hotkey.mjs +1 -1
  8. package/esm2020/plugins/with-mind.mjs +6 -12
  9. package/esm2020/plugins/with-node-dnd.mjs +3 -3
  10. package/esm2020/plugins/with-node-hover.mjs +3 -10
  11. package/esm2020/transforms/abstract-node.mjs +3 -3
  12. package/esm2020/transforms/node.mjs +8 -7
  13. package/esm2020/utils/clipboard.mjs +4 -4
  14. package/esm2020/utils/dnd/detector.mjs +3 -10
  15. package/esm2020/utils/draw/node-shape.mjs +3 -5
  16. package/esm2020/utils/mind.mjs +3 -3
  17. package/esm2020/utils/node/adjust-node.mjs +3 -3
  18. package/esm2020/utils/node-style/branch.mjs +3 -3
  19. package/esm2020/utils/node-style/shape.mjs +8 -1
  20. package/esm2020/utils/space/node-space.mjs +38 -4
  21. package/fesm2015/plait-mind.mjs +80 -62
  22. package/fesm2015/plait-mind.mjs.map +1 -1
  23. package/fesm2020/plait-mind.mjs +79 -61
  24. package/fesm2020/plait-mind.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/plugins/with-mind-hotkey.d.ts +2 -1
  27. package/plugins/with-mind.d.ts +1 -1
  28. package/transforms/index.d.ts +2 -2
  29. package/transforms/node.d.ts +3 -2
  30. package/utils/clipboard.d.ts +3 -2
  31. package/utils/mind.d.ts +3 -2
  32. package/utils/node/adjust-node.d.ts +2 -1
  33. package/utils/node-style/shape.d.ts +1 -0
  34. package/utils/space/node-space.d.ts +6 -0
  35. package/constants/node-rule.d.ts +0 -1
  36. package/esm2020/constants/node-rule.mjs +0 -2
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Input, Component, ChangeDetectionStrategy, NgModule, NgZone, HostListener } from '@angular/core';
3
3
  import * as i2 from '@plait/core';
4
- import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitNode, Path, PlaitBoard, depthFirstRecursion, drawLinearPath, drawBezierPath, createG, updateForeignObject, drawRoundRectangle, getRectangleByElements, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, isMainPointer, BOARD_TO_HOST, PlaitPluginKey, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys } from '@plait/core';
4
+ import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitNode, Path, PlaitBoard, depthFirstRecursion, getIsRecursionFunc, drawLinearPath, drawBezierPath, createG, updateForeignObject, drawRoundRectangle, getRectangleByElements, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, isMainPointer, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, BOARD_TO_HOST, PlaitPluginKey, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys } from '@plait/core';
5
5
  import { MindLayoutType, isIndentedLayout, AbstractNode, getNonAbstractChildren, isStandardLayout, isLeftLayout, isRightLayout, isVerticalLogicLayout, isHorizontalLogicLayout, isTopLayout, isBottomLayout, isHorizontalLayout, getCorrectStartEnd, getAbstractLayout, ConnectingPosition, GlobalLayout } from '@plait/layouts';
6
- import { TEXT_DEFAULT_HEIGHT, buildText, getTextSize, TextManage, ExitOrigin, TextModule, getTextFromClipboard } from '@plait/text';
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
8
  import { Node, Path as Path$1 } from 'slate';
9
9
  import { isKeyHotkey } from 'is-hotkey';
@@ -210,6 +210,14 @@ function getEmojiFontSize(element) {
210
210
  }
211
211
  }
212
212
 
213
+ const TOPIC_COLOR = '#333';
214
+ const TOPIC_FONT_SIZE = 14;
215
+ const ROOT_TOPIC_FONT_SIZE = 18;
216
+ const ROOT_TOPIC_HEIGHT = 25;
217
+ const TOPIC_DEFAULT_MAX_WORD_COUNT = 34;
218
+ const DEFAULT_FONT_FAMILY = 'PingFangSC-Regular, "PingFang SC"';
219
+ const BRANCH_FONT_FAMILY = 'PingFangSC-Medium, "PingFang SC"';
220
+
213
221
  const NodeDefaultSpace = {
214
222
  horizontal: {
215
223
  nodeAndText: BASE * 3,
@@ -248,15 +256,14 @@ const getSpaceEmojiAndText = (element) => {
248
256
  const NodeSpace = {
249
257
  getNodeWidth(board, element) {
250
258
  const nodeAndText = getHorizontalSpaceBetweenNodeAndText(board, element);
251
- const imageWidth = MindElement.hasImage(element) ? element.data.image?.width : 0;
252
259
  if (MindElement.hasEmojis(element)) {
253
260
  return (NodeSpace.getEmojiLeftSpace(board, element) +
254
261
  getEmojisWidthHeight(board, element).width +
255
262
  getSpaceEmojiAndText(element) +
256
- Math.max(element.width, imageWidth) +
263
+ NodeSpace.getNodeResizableWidth(board, element) +
257
264
  nodeAndText);
258
265
  }
259
- return nodeAndText + Math.max(element.width, imageWidth) + nodeAndText;
266
+ return nodeAndText + NodeSpace.getNodeResizableWidth(board, element) + nodeAndText;
260
267
  },
261
268
  getNodeHeight(board, element) {
262
269
  const nodeAndText = getVerticalSpaceBetweenNodeAndText(element);
@@ -269,6 +276,26 @@ const NodeSpace = {
269
276
  }
270
277
  return nodeAndText + element.height + nodeAndText;
271
278
  },
279
+ getNodeResizableWidth(board, element) {
280
+ const imageWidth = MindElement.hasImage(element) ? element.data.image?.width : 0;
281
+ return Math.max(element.width, imageWidth);
282
+ },
283
+ getNodeResizableMinWidth(board, element) {
284
+ const minTopicWidth = NodeSpace.getNodeTopicMinWidth(board, element);
285
+ if (MindElement.hasImage(element) && element.data.image.width > minTopicWidth) {
286
+ return element.data.image.width;
287
+ }
288
+ else {
289
+ return minTopicWidth;
290
+ }
291
+ },
292
+ getNodeTopicMinWidth(board, element, isRoot = false) {
293
+ const defaultFontSize = getNodeDefaultFontSize(isRoot);
294
+ const editor = MindElement.getTextEditor(element);
295
+ const marks = PlaitMarkEditor.getMarks(editor);
296
+ const fontSize = marks[MarkTypes.fontSize] || defaultFontSize;
297
+ return fontSize;
298
+ },
272
299
  getTextLeftSpace(board, element) {
273
300
  const nodeAndText = getHorizontalSpaceBetweenNodeAndText(board, element);
274
301
  if (MindElement.hasEmojis(element)) {
@@ -300,6 +327,19 @@ const NodeSpace = {
300
327
  return nodeAndText;
301
328
  }
302
329
  };
330
+ const getFontSizeBySlateElement = (text) => {
331
+ const defaultFontSize = DEFAULT_FONT_SIZE;
332
+ if (typeof text === 'string') {
333
+ return defaultFontSize;
334
+ }
335
+ const marks = PlaitMarkEditor.getMarksByElement(text);
336
+ const fontSize = marks[MarkTypes.fontSize] || defaultFontSize;
337
+ return fontSize;
338
+ };
339
+ const getNodeDefaultFontSize = (isRoot = false) => {
340
+ const defaultFontSize = isRoot ? ROOT_TOPIC_FONT_SIZE : DEFAULT_FONT_SIZE;
341
+ return defaultFontSize;
342
+ };
303
343
 
304
344
  function getEmojiRectangle(board, element) {
305
345
  let { x, y } = getRectangleByNode(MindElement.getNode(element));
@@ -359,21 +399,11 @@ const isHitImage = (board, element, range) => {
359
399
  return RectangleClient.isHit(RectangleClient.toRectangleClient([range.anchor, range.focus]), client);
360
400
  };
361
401
 
362
- const NODE_MIN_WIDTH = 18;
363
-
364
402
  function editTopic(element) {
365
403
  const component = PlaitElement.getComponent(element);
366
404
  component?.editTopic();
367
405
  }
368
406
 
369
- const TOPIC_COLOR = '#333';
370
- const TOPIC_FONT_SIZE = 14;
371
- const ROOT_TOPIC_FONT_SIZE = 18;
372
- const ROOT_TOPIC_HEIGHT = 25;
373
- const TOPIC_DEFAULT_MAX_WORD_COUNT = 34;
374
- const DEFAULT_FONT_FAMILY = 'PingFangSC-Regular, "PingFang SC"';
375
- const BRANCH_FONT_FAMILY = 'PingFangSC-Medium, "PingFang SC"';
376
-
377
407
  const createEmptyMind = (point) => {
378
408
  const element = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout: MindLayoutType.right });
379
409
  element.isRoot = true;
@@ -483,7 +513,7 @@ const insertMindElement = (board, inheritNode, path) => {
483
513
  });
484
514
  delete newNode.layout;
485
515
  }
486
- const newElement = createMindElement('', NODE_MIN_WIDTH, TEXT_DEFAULT_HEIGHT, newNode);
516
+ const newElement = createMindElement('', getNodeDefaultFontSize(), TEXT_DEFAULT_HEIGHT, newNode);
487
517
  Transforms.insertNode(board, newElement, path);
488
518
  clearSelectedElement(board);
489
519
  addSelectedElement(board, newElement);
@@ -648,7 +678,7 @@ const adjustNodeToRoot = (board, node) => {
648
678
  fontSize: ROOT_TOPIC_FONT_SIZE,
649
679
  fontFamily: BRANCH_FONT_FAMILY
650
680
  });
651
- newElement.width = Math.max(width, NODE_MIN_WIDTH);
681
+ newElement.width = Math.max(width, getNodeDefaultFontSize(true));
652
682
  newElement.height = height;
653
683
  return {
654
684
  ...newElement,
@@ -659,15 +689,16 @@ const adjustNodeToRoot = (board, node) => {
659
689
  };
660
690
 
661
691
  const DefaultAbstractNodeStyle = {
662
- branchColor: GRAY_COLOR,
663
- branchWidth: 2,
692
+ branch: { color: GRAY_COLOR, width: 2 },
664
693
  shape: {
665
694
  strokeColor: GRAY_COLOR,
666
695
  strokeWidth: 2
667
696
  }
668
697
  };
669
698
  const DefaultNodeStyle = {
670
- branchWidth: 3,
699
+ branch: {
700
+ width: 3
701
+ },
671
702
  shape: {
672
703
  rectangleRadius: 4,
673
704
  strokeWidth: 3,
@@ -868,13 +899,13 @@ const getAbstractBranchWidth = (board, element) => {
868
899
  if (!isNullOrUndefined(element.branchWidth)) {
869
900
  return element.branchWidth;
870
901
  }
871
- return DefaultAbstractNodeStyle.branchWidth;
902
+ return DefaultAbstractNodeStyle.branch.width;
872
903
  };
873
904
  const getAbstractBranchColor = (board, element) => {
874
905
  if (element.branchColor) {
875
906
  return element.branchColor;
876
907
  }
877
- return DefaultAbstractNodeStyle.branchColor;
908
+ return DefaultAbstractNodeStyle.branch.color;
878
909
  };
879
910
  const getNextBranchColor = (board, root) => {
880
911
  const index = root.children.length;
@@ -916,6 +947,13 @@ const getStrokeWidthByElement = (board, element) => {
916
947
  (AbstractNode.isAbstract(element) ? DefaultAbstractNodeStyle.shape.strokeWidth : DefaultNodeStyle.shape.strokeWidth);
917
948
  return strokeWidth;
918
949
  };
950
+ const getFillByElement = (board, element) => {
951
+ if (element.fill) {
952
+ return element.fill;
953
+ }
954
+ const defaultRootFill = getMindThemeColor(board).rootFill;
955
+ return element.isRoot ? defaultRootFill : DefaultNodeStyle.shape.fill;
956
+ };
919
957
  const getShapeByElement = (board, element) => {
920
958
  const shape = getAvailableProperty(board, element, 'shape');
921
959
  return shape || MindElementShape.roundRectangle;
@@ -1061,14 +1099,7 @@ const detectDropTarget = (board, detectPoint, dropTarget, activeElements) => {
1061
1099
  if (detectResult && isValid) {
1062
1100
  dropTarget = { target: node.origin, detectResult: detectResult[0] };
1063
1101
  }
1064
- }, node => {
1065
- if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
1066
- return true;
1067
- }
1068
- else {
1069
- return false;
1070
- }
1071
- });
1102
+ }, getIsRecursionFunc(board));
1072
1103
  return dropTarget;
1073
1104
  };
1074
1105
  const directionDetector = (targetNode, centerPoint) => {
@@ -2043,8 +2074,7 @@ function drawRoundRectangleByNode(board, node) {
2043
2074
  return drawRoundRectangleByElement(board, rectangle, node.origin);
2044
2075
  }
2045
2076
  function drawRoundRectangleByElement(board, nodeRectangle, element) {
2046
- const defaultRootFill = getMindThemeColor(board).rootFill;
2047
- const fill = element.fill ? element.fill : element.isRoot ? defaultRootFill : DefaultNodeStyle.shape.fill;
2077
+ const fill = getFillByElement(board, element);
2048
2078
  const stroke = getStrokeByMindElement(board, element);
2049
2079
  const strokeWidth = getStrokeWidthByElement(board, element);
2050
2080
  const nodeG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), nodeRectangle.x, nodeRectangle.y, nodeRectangle.x + nodeRectangle.width, nodeRectangle.y + nodeRectangle.height, {
@@ -2225,8 +2255,8 @@ const setAbstractByElements = (board, groupParent, group) => {
2225
2255
  };
2226
2256
  const insertAbstractNode = (board, path, start, end) => {
2227
2257
  const mindElement = createMindElement('概要', 28, 20, {
2228
- strokeWidth: DefaultAbstractNodeStyle.branchWidth,
2229
- branchWidth: DefaultAbstractNodeStyle.branchWidth
2258
+ strokeWidth: DefaultAbstractNodeStyle.branch.width,
2259
+ branchWidth: DefaultAbstractNodeStyle.branch.width
2230
2260
  });
2231
2261
  mindElement.start = start;
2232
2262
  mindElement.end = end;
@@ -2258,24 +2288,25 @@ const correctLogicLayoutNode = (board, layout, path) => {
2258
2288
  }
2259
2289
  };
2260
2290
 
2261
- const normalizeWidthAndHeight = (board, width, height) => {
2262
- const newWidth = width < NODE_MIN_WIDTH * board.viewport.zoom ? NODE_MIN_WIDTH : width / board.viewport.zoom;
2291
+ const normalizeWidthAndHeight = (board, element, width, height) => {
2292
+ const minWidth = NodeSpace.getNodeTopicMinWidth(board, element, element.isRoot);
2293
+ const newWidth = width < minWidth * board.viewport.zoom ? minWidth : width / board.viewport.zoom;
2263
2294
  const newHeight = height / board.viewport.zoom;
2264
2295
  return { width: newWidth, height: newHeight };
2265
2296
  };
2266
2297
  const setTopic = (board, element, topic, width, height) => {
2267
2298
  const newElement = {
2268
2299
  data: { ...element.data, topic },
2269
- ...normalizeWidthAndHeight(board, width, height)
2300
+ ...normalizeWidthAndHeight(board, element, width, height)
2270
2301
  };
2271
2302
  const path = PlaitBoard.findPath(board, element);
2272
2303
  Transforms.setNode(board, newElement, path);
2273
2304
  };
2274
2305
  const setTopicSize = (board, element, width, height) => {
2275
2306
  const newElement = {
2276
- ...normalizeWidthAndHeight(board, width, height)
2307
+ ...normalizeWidthAndHeight(board, element, width, height)
2277
2308
  };
2278
- if (element.width !== newElement.width || element.height !== newElement.height) {
2309
+ if (Math.floor(element.width) !== Math.floor(newElement.width) || Math.floor(element.height) !== Math.floor(newElement.height)) {
2279
2310
  const path = PlaitBoard.findPath(board, element);
2280
2311
  Transforms.setNode(board, newElement, path);
2281
2312
  }
@@ -3165,7 +3196,7 @@ const withNodeDnd = (board) => {
3165
3196
  if (PlaitBoard.isReadonly(board) ||
3166
3197
  PlaitBoard.hasBeenTextEditing(board) ||
3167
3198
  !PlaitBoard.isPointer(board, PlaitPointerType.selection) ||
3168
- event.button === 2) {
3199
+ !isMainPointer(event)) {
3169
3200
  mousedown(event);
3170
3201
  return;
3171
3202
  }
@@ -3398,7 +3429,7 @@ const insertClipboardData = (board, elements, targetPoint) => {
3398
3429
  newElement = adjustRootToNode(board, newElement);
3399
3430
  const styles = PlaitMind.isMind(targetParent) ? { fontFamily: BRANCH_FONT_FAMILY } : { fontFamily: DEFAULT_FONT_FAMILY };
3400
3431
  const { width, height } = getTextSize(board, newElement.data.topic, TOPIC_DEFAULT_MAX_WORD_COUNT, styles);
3401
- newElement.width = Math.max(width, NODE_MIN_WIDTH);
3432
+ newElement.width = Math.max(width, getNodeDefaultFontSize());
3402
3433
  newElement.height = height;
3403
3434
  }
3404
3435
  // handle abstract start and end
@@ -3428,7 +3459,7 @@ const insertClipboardData = (board, elements, targetPoint) => {
3428
3459
  const insertClipboardText = (board, targetParent, text) => {
3429
3460
  const styles = PlaitMind.isMind(targetParent) ? { fontFamily: BRANCH_FONT_FAMILY } : { fontFamily: DEFAULT_FONT_FAMILY };
3430
3461
  const { width, height } = getTextSize(board, text, TOPIC_DEFAULT_MAX_WORD_COUNT, styles);
3431
- const newElement = createMindElement(text, width, height, {});
3462
+ const newElement = createMindElement(text, Math.max(width, getFontSizeBySlateElement(text)), height, {});
3432
3463
  Transforms.insertNode(board, newElement, findNewChildNodePath(board, targetParent));
3433
3464
  return;
3434
3465
  };
@@ -3776,14 +3807,7 @@ const withNodeHover = (board) => {
3776
3807
  if (isHitElement) {
3777
3808
  target = element;
3778
3809
  }
3779
- }, node => {
3780
- if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
3781
- return true;
3782
- }
3783
- else {
3784
- return false;
3785
- }
3786
- }, true);
3810
+ }, getIsRecursionFunc(board), true);
3787
3811
  if (hoveredMindElement && target && hoveredMindElement === target) {
3788
3812
  return;
3789
3813
  }
@@ -3866,8 +3890,9 @@ const withMindImage = (board) => {
3866
3890
  return board;
3867
3891
  };
3868
3892
 
3869
- const withMind = (board) => {
3870
- const { drawElement, dblclick, keydown, insertFragment, setFragment, deleteFragment, isHitSelection, getRectangle, isMovable, isRecursion } = board;
3893
+ const withMind = (baseBoard) => {
3894
+ const board = baseBoard;
3895
+ const { drawElement, dblclick, insertFragment, setFragment, deleteFragment, isHitSelection, getRectangle, isMovable, isRecursion } = board;
3871
3896
  board.drawElement = (context) => {
3872
3897
  if (PlaitMind.isMind(context.element)) {
3873
3898
  return PlaitMindComponent;
@@ -3924,14 +3949,7 @@ const withMind = (board) => {
3924
3949
  if (!PlaitBoard.hasBeenTextEditing(board) && isHitMindElement(board, point, node)) {
3925
3950
  editTopic(node);
3926
3951
  }
3927
- }, node => {
3928
- if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
3929
- return true;
3930
- }
3931
- else {
3932
- return false;
3933
- }
3934
- });
3952
+ }, getIsRecursionFunc(board));
3935
3953
  });
3936
3954
  if (PlaitBoard.hasBeenTextEditing(board)) {
3937
3955
  return;
@@ -4031,5 +4049,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
4031
4049
  * Generated bundle index. Do not edit.
4032
4050
  */
4033
4051
 
4034
- 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, NODE_MIN_WIDTH, 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, 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, withMind, withMindExtend };
4052
+ 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, withMind, withMindExtend };
4035
4053
  //# sourceMappingURL=plait-mind.mjs.map