@plait/mind 0.27.0-next.0 → 0.27.0-next.10

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 (162) hide show
  1. package/base/emoji-base.component.d.ts +2 -2
  2. package/base/index.d.ts +0 -1
  3. package/constants/default.d.ts +1 -0
  4. package/constants/node-topic-style.d.ts +4 -0
  5. package/drawer/{node-active.drawer.d.ts → node-active.generator.d.ts} +2 -2
  6. package/drawer/node-shape.generator.d.ts +10 -0
  7. package/esm2022/base/emoji-base.component.mjs +46 -0
  8. package/{esm2020 → esm2022}/base/index.mjs +1 -2
  9. package/{esm2020 → esm2022}/constants/abstract-node.mjs +1 -1
  10. package/{esm2020 → esm2022}/constants/default.mjs +2 -1
  11. package/{esm2020 → esm2022}/constants/index.mjs +1 -1
  12. package/esm2022/constants/node-topic-style.mjs +12 -0
  13. package/esm2022/drawer/node-active.generator.mjs +42 -0
  14. package/esm2022/drawer/node-shape.generator.mjs +19 -0
  15. package/esm2022/interfaces/element-data.mjs +2 -0
  16. package/esm2022/interfaces/element.mjs +118 -0
  17. package/{esm2020 → esm2022}/interfaces/index.mjs +2 -1
  18. package/esm2022/interfaces/options.mjs +2 -0
  19. package/{esm2020 → esm2022}/interfaces/theme-color.mjs +1 -1
  20. package/esm2022/mind-node.component.mjs +235 -0
  21. package/esm2022/mind.component.mjs +52 -0
  22. package/esm2022/plugins/with-abstract-resize.mjs +112 -0
  23. package/esm2022/plugins/with-mind-create.mjs +112 -0
  24. package/esm2022/plugins/with-mind-fragment.mjs +90 -0
  25. package/esm2022/plugins/with-mind-hotkey.mjs +67 -0
  26. package/esm2022/plugins/with-mind.mjs +91 -0
  27. package/esm2022/plugins/with-node-dnd.mjs +180 -0
  28. package/esm2022/plugins/with-node-image-resize.mjs +48 -0
  29. package/esm2022/plugins/with-node-image.mjs +98 -0
  30. package/esm2022/plugins/with-node-resize.mjs +133 -0
  31. package/{esm2020 → esm2022}/public-api.mjs +2 -3
  32. package/{esm2020 → esm2022}/transforms/image.mjs +1 -1
  33. package/esm2022/transforms/index.mjs +23 -0
  34. package/esm2022/transforms/node.mjs +66 -0
  35. package/{esm2020 → esm2022}/utils/abstract/common.mjs +2 -2
  36. package/{esm2020 → esm2022}/utils/abstract/resize.mjs +3 -3
  37. package/{esm2020 → esm2022}/utils/clipboard.mjs +3 -3
  38. package/{esm2020 → esm2022}/utils/dnd/common.mjs +1 -1
  39. package/esm2022/utils/draw/abstract-outline.mjs +117 -0
  40. package/esm2022/utils/draw/node-dnd.mjs +159 -0
  41. package/{esm2020 → esm2022}/utils/draw/node-shape.mjs +4 -3
  42. package/esm2022/utils/index.mjs +15 -0
  43. package/{esm2020 → esm2022}/utils/node/common.mjs +1 -1
  44. package/esm2022/utils/node/create-node.mjs +55 -0
  45. package/esm2022/utils/node/dynamic-width.mjs +19 -0
  46. package/esm2022/utils/node/image.mjs +23 -0
  47. package/esm2022/utils/position/image.mjs +36 -0
  48. package/esm2022/utils/position/node.mjs +36 -0
  49. package/esm2022/utils/position/topic.mjs +16 -0
  50. package/{esm2020 → esm2022}/utils/space/index.mjs +1 -1
  51. package/esm2022/utils/space/layout-options.mjs +69 -0
  52. package/esm2022/utils/space/node-space.mjs +137 -0
  53. package/{fesm2020 → fesm2022}/plait-mind.mjs +1383 -1569
  54. package/fesm2022/plait-mind.mjs.map +1 -0
  55. package/interfaces/element-data.d.ts +5 -9
  56. package/interfaces/element.d.ts +1 -0
  57. package/interfaces/index.d.ts +1 -0
  58. package/interfaces/options.d.ts +2 -4
  59. package/{node.component.d.ts → mind-node.component.d.ts} +11 -10
  60. package/mind.component.d.ts +2 -2
  61. package/package.json +7 -13
  62. package/plugins/with-mind-fragment.d.ts +5 -0
  63. package/plugins/with-mind-hotkey.d.ts +0 -6
  64. package/public-api.d.ts +1 -2
  65. package/styles/styles.scss +7 -3
  66. package/transforms/image.d.ts +3 -2
  67. package/transforms/index.d.ts +1 -2
  68. package/transforms/node.d.ts +0 -1
  69. package/utils/abstract/common.d.ts +2 -2
  70. package/utils/index.d.ts +0 -1
  71. package/utils/node/create-node.d.ts +2 -2
  72. package/utils/node/image.d.ts +0 -2
  73. package/utils/position/image.d.ts +1 -1
  74. package/utils/position/node.d.ts +1 -1
  75. package/utils/space/layout-options.d.ts +2 -2
  76. package/utils/space/node-space.d.ts +1 -5
  77. package/base/image-base.component.d.ts +0 -27
  78. package/constants/image.d.ts +0 -3
  79. package/drawer/node-image.drawer.d.ts +0 -15
  80. package/esm2020/base/emoji-base.component.mjs +0 -46
  81. package/esm2020/base/image-base.component.mjs +0 -67
  82. package/esm2020/constants/image.mjs +0 -4
  83. package/esm2020/constants/node-topic-style.mjs +0 -8
  84. package/esm2020/drawer/node-active.drawer.mjs +0 -44
  85. package/esm2020/drawer/node-image.drawer.mjs +0 -59
  86. package/esm2020/interfaces/element-data.mjs +0 -2
  87. package/esm2020/interfaces/element.mjs +0 -111
  88. package/esm2020/interfaces/options.mjs +0 -2
  89. package/esm2020/mind.component.mjs +0 -51
  90. package/esm2020/mind.module.mjs +0 -21
  91. package/esm2020/node.component.mjs +0 -248
  92. package/esm2020/plugins/with-abstract-resize.mjs +0 -112
  93. package/esm2020/plugins/with-mind-create.mjs +0 -109
  94. package/esm2020/plugins/with-mind-hotkey.mjs +0 -122
  95. package/esm2020/plugins/with-mind.mjs +0 -114
  96. package/esm2020/plugins/with-node-dnd.mjs +0 -180
  97. package/esm2020/plugins/with-node-image-resize.mjs +0 -48
  98. package/esm2020/plugins/with-node-image.mjs +0 -96
  99. package/esm2020/plugins/with-node-resize.mjs +0 -133
  100. package/esm2020/transforms/index.mjs +0 -24
  101. package/esm2020/transforms/node.mjs +0 -82
  102. package/esm2020/utils/draw/abstract-outline.mjs +0 -117
  103. package/esm2020/utils/draw/node-dnd.mjs +0 -159
  104. package/esm2020/utils/index.mjs +0 -16
  105. package/esm2020/utils/is-virtual-key.mjs +0 -13
  106. package/esm2020/utils/node/create-node.mjs +0 -52
  107. package/esm2020/utils/node/dynamic-width.mjs +0 -22
  108. package/esm2020/utils/node/image.mjs +0 -63
  109. package/esm2020/utils/position/image.mjs +0 -36
  110. package/esm2020/utils/position/node.mjs +0 -34
  111. package/esm2020/utils/position/topic.mjs +0 -17
  112. package/esm2020/utils/space/layout-options.mjs +0 -72
  113. package/esm2020/utils/space/node-space.mjs +0 -142
  114. package/fesm2015/plait-mind.mjs +0 -4402
  115. package/fesm2015/plait-mind.mjs.map +0 -1
  116. package/fesm2020/plait-mind.mjs.map +0 -1
  117. package/mind.module.d.ts +0 -11
  118. package/utils/is-virtual-key.d.ts +0 -1
  119. /package/{esm2020 → esm2022}/base/base.drawer.mjs +0 -0
  120. /package/{esm2020 → esm2022}/constants/node-style.mjs +0 -0
  121. /package/{esm2020 → esm2022}/constants/theme.mjs +0 -0
  122. /package/{esm2020 → esm2022}/drawer/node-collapse.drawer.mjs +0 -0
  123. /package/{esm2020 → esm2022}/drawer/node-emojis.drawer.mjs +0 -0
  124. /package/{esm2020 → esm2022}/drawer/node-insert.drawer.mjs +0 -0
  125. /package/{esm2020 → esm2022}/interfaces/layout.mjs +0 -0
  126. /package/{esm2020 → esm2022}/interfaces/node.mjs +0 -0
  127. /package/{esm2020 → esm2022}/interfaces/pointer.mjs +0 -0
  128. /package/{esm2020 → esm2022}/interfaces/types.mjs +0 -0
  129. /package/{esm2020 → esm2022}/plait-mind.mjs +0 -0
  130. /package/{esm2020 → esm2022}/plugins/with-abstract-resize.board.mjs +0 -0
  131. /package/{esm2020 → esm2022}/plugins/with-mind-extend.mjs +0 -0
  132. /package/{esm2020 → esm2022}/plugins/with-mind.board.mjs +0 -0
  133. /package/{esm2020 → esm2022}/plugins/with-node-hover-detect.mjs +0 -0
  134. /package/{esm2020 → esm2022}/queries/get-available-sublayouts-by-element.mjs +0 -0
  135. /package/{esm2020 → esm2022}/queries/get-branch-layouts.mjs +0 -0
  136. /package/{esm2020 → esm2022}/queries/get-correct-layout-by-element.mjs +0 -0
  137. /package/{esm2020 → esm2022}/queries/get-layout-by-element.mjs +0 -0
  138. /package/{esm2020 → esm2022}/queries/index.mjs +0 -0
  139. /package/{esm2020 → esm2022}/transforms/abstract-node.mjs +0 -0
  140. /package/{esm2020 → esm2022}/transforms/emoji.mjs +0 -0
  141. /package/{esm2020 → esm2022}/transforms/layout.mjs +0 -0
  142. /package/{esm2020 → esm2022}/utils/dnd/detector.mjs +0 -0
  143. /package/{esm2020 → esm2022}/utils/draw/node-link/abstract-link.mjs +0 -0
  144. /package/{esm2020 → esm2022}/utils/draw/node-link/draw-link.mjs +0 -0
  145. /package/{esm2020 → esm2022}/utils/draw/node-link/indented-link.mjs +0 -0
  146. /package/{esm2020 → esm2022}/utils/draw/node-link/logic-link.mjs +0 -0
  147. /package/{esm2020 → esm2022}/utils/layout.mjs +0 -0
  148. /package/{esm2020 → esm2022}/utils/mind.mjs +0 -0
  149. /package/{esm2020 → esm2022}/utils/node/adjust-node.mjs +0 -0
  150. /package/{esm2020 → esm2022}/utils/node/index.mjs +0 -0
  151. /package/{esm2020 → esm2022}/utils/node/right-node-count.mjs +0 -0
  152. /package/{esm2020 → esm2022}/utils/node-hover/extend.mjs +0 -0
  153. /package/{esm2020 → esm2022}/utils/node-style/branch.mjs +0 -0
  154. /package/{esm2020 → esm2022}/utils/node-style/common.mjs +0 -0
  155. /package/{esm2020 → esm2022}/utils/node-style/index.mjs +0 -0
  156. /package/{esm2020 → esm2022}/utils/node-style/shape.mjs +0 -0
  157. /package/{esm2020 → esm2022}/utils/path.mjs +0 -0
  158. /package/{esm2020 → esm2022}/utils/point-placement.mjs +0 -0
  159. /package/{esm2020 → esm2022}/utils/position/emoji.mjs +0 -0
  160. /package/{esm2020 → esm2022}/utils/position/index.mjs +0 -0
  161. /package/{esm2020 → esm2022}/utils/space/emoji.mjs +0 -0
  162. /package/{esm2020 → esm2022}/utils/weak-maps.mjs +0 -0
@@ -1,82 +0,0 @@
1
- import { Path } from 'slate';
2
- import { PlaitBoard, PlaitNode, Transforms } from '@plait/core';
3
- import { getFirstLevelElement } from '../utils/mind';
4
- import { getRelativeStartEndByAbstractRef } from '../utils/abstract/common';
5
- import { NodeSpace } from '../utils/space/node-space';
6
- const normalizeWidthAndHeight = (board, element, width, height) => {
7
- const minWidth = NodeSpace.getNodeTopicMinWidth(board, element, element.isRoot);
8
- const newWidth = width < minWidth * board.viewport.zoom ? minWidth : width / board.viewport.zoom;
9
- const newHeight = height / board.viewport.zoom;
10
- return { width: newWidth, height: newHeight };
11
- };
12
- export const setTopic = (board, element, topic, width, height) => {
13
- const newElement = {
14
- data: { ...element.data, topic },
15
- ...normalizeWidthAndHeight(board, element, width, height)
16
- };
17
- const path = PlaitBoard.findPath(board, element);
18
- Transforms.setNode(board, newElement, path);
19
- };
20
- export const setNodeManualWidth = (board, element, width, height) => {
21
- const path = PlaitBoard.findPath(board, element);
22
- const { width: normalizedWidth, height: normalizedHeight } = normalizeWidthAndHeight(board, element, width, height);
23
- const newElement = { manualWidth: normalizedWidth, height: normalizedHeight };
24
- Transforms.setNode(board, newElement, path);
25
- };
26
- export const setTopicSize = (board, element, width, height) => {
27
- const newElement = {
28
- ...normalizeWidthAndHeight(board, element, width, height)
29
- };
30
- let isEqualWidth = Math.ceil(element.width) === Math.ceil(newElement.width);
31
- let isEqualHeight = Math.ceil(element.height) === Math.ceil(newElement.height);
32
- if (element.manualWidth) {
33
- isEqualWidth = true;
34
- }
35
- if (!isEqualWidth || !isEqualHeight) {
36
- const path = PlaitBoard.findPath(board, element);
37
- Transforms.setNode(board, newElement, path);
38
- }
39
- };
40
- export const removeElements = (board, elements) => {
41
- const deletableElements = getFirstLevelElement(elements);
42
- deletableElements
43
- .map(element => {
44
- const path = PlaitBoard.findPath(board, element);
45
- const ref = board.pathRef(path);
46
- return () => {
47
- Transforms.removeNode(board, ref.current);
48
- ref.unref();
49
- };
50
- })
51
- .forEach(action => {
52
- action();
53
- });
54
- };
55
- export const insertNodes = (board, elements, path) => {
56
- const pathRef = board.pathRef(path);
57
- elements.forEach(element => {
58
- if (pathRef.current) {
59
- Transforms.insertNode(board, element, pathRef.current);
60
- }
61
- });
62
- pathRef.unref();
63
- };
64
- export const insertAbstractNodes = (board, validAbstractRefs, elements, path) => {
65
- const parent = PlaitNode.get(board, Path.parent(path));
66
- const abstractPath = [...Path.parent(path), parent.children?.length];
67
- const abstracts = validAbstractRefs.map(refs => {
68
- const { start, end } = getRelativeStartEndByAbstractRef(refs, elements);
69
- return {
70
- ...refs.abstract,
71
- start: start + path[path.length - 1],
72
- end: end + path[path.length - 1]
73
- };
74
- });
75
- insertNodes(board, abstracts, abstractPath);
76
- };
77
- export const setRightNodeCountByRefs = (board, refs) => {
78
- refs.forEach(ref => {
79
- Transforms.setNode(board, { rightNodeCount: ref.rightNodeCount }, ref.path);
80
- });
81
- };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3RyYW5zZm9ybXMvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFlLGdDQUFnQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3RELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFxQixFQUFFLE9BQW9CLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQzNHLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRixNQUFNLFFBQVEsR0FBRyxLQUFLLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNqRyxNQUFNLFNBQVMsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ2xELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQXFCLEVBQUUsT0FBb0IsRUFBRSxLQUFjLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFO0lB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QUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNwQyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNuQyxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFFSCxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBeUIsRUFBRSxFQUFFO0lBQ3BGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZixVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hGLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudCwgUGF0aCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0Tm9kZSwgVHJhbnNmb3JtcyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldEZpcnN0TGV2ZWxFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvbWluZCc7XG5pbXBvcnQgeyBBYnN0cmFjdFJlZiwgZ2V0UmVsYXRpdmVTdGFydEVuZEJ5QWJzdHJhY3RSZWYgfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9jb21tb24nO1xuaW1wb3J0IHsgUmlnaHROb2RlQ291bnRSZWYgfSBmcm9tICcuLi91dGlscy9ub2RlL3JpZ2h0LW5vZGUtY291bnQnO1xuaW1wb3J0IHsgTm9kZVNwYWNlIH0gZnJvbSAnLi4vdXRpbHMvc3BhY2Uvbm9kZS1zcGFjZSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcblxuY29uc3Qgbm9ybWFsaXplV2lkdGhBbmRIZWlnaHQgPSAoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBtaW5XaWR0aCA9IE5vZGVTcGFjZS5nZXROb2RlVG9waWNNaW5XaWR0aChib2FyZCwgZWxlbWVudCwgZWxlbWVudC5pc1Jvb3QpO1xuICAgIGNvbnN0IG5ld1dpZHRoID0gd2lkdGggPCBtaW5XaWR0aCAqIGJvYXJkLnZpZXdwb3J0Lnpvb20gPyBtaW5XaWR0aCA6IHdpZHRoIC8gYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICBjb25zdCBuZXdIZWlnaHQgPSBoZWlnaHQgLyBib2FyZC52aWV3cG9ydC56b29tO1xuICAgIHJldHVybiB7IHdpZHRoOiBuZXdXaWR0aCwgaGVpZ2h0OiBuZXdIZWlnaHQgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRUb3BpYyA9IChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCB0b3BpYzogRWxlbWVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0ge1xuICAgICAgICBkYXRhOiB7IC4uLmVsZW1lbnQuZGF0YSwgdG9waWMgfSxcbiAgICAgICAgLi4ubm9ybWFsaXplV2lkdGhBbmRIZWlnaHQoYm9hcmQsIGVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpXG4gICAgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXROb2RlTWFudWFsV2lkdGggPSAoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgeyB3aWR0aDogbm9ybWFsaXplZFdpZHRoLCBoZWlnaHQ6IG5vcm1hbGl6ZWRIZWlnaHQgfSA9IG5vcm1hbGl6ZVdpZHRoQW5kSGVpZ2h0KGJvYXJkLCBlbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0geyBtYW51YWxXaWR0aDogbm9ybWFsaXplZFdpZHRoLCBoZWlnaHQ6IG5vcm1hbGl6ZWRIZWlnaHQgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFRvcGljU2l6ZSA9IChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7XG4gICAgICAgIC4uLm5vcm1hbGl6ZVdpZHRoQW5kSGVpZ2h0KGJvYXJkLCBlbGVtZW50LCB3aWR0aCwgaGVpZ2h0KVxuICAgIH07XG4gICAgbGV0IGlzRXF1YWxXaWR0aCA9IE1hdGguY2VpbChlbGVtZW50LndpZHRoKSA9PT0gTWF0aC5jZWlsKG5ld0VsZW1lbnQud2lkdGgpO1xuICAgIGxldCBpc0VxdWFsSGVpZ2h0ID0gTWF0aC5jZWlsKGVsZW1lbnQuaGVpZ2h0KSA9PT0gTWF0aC5jZWlsKG5ld0VsZW1lbnQuaGVpZ2h0KTtcbiAgICBpZiAoZWxlbWVudC5tYW51YWxXaWR0aCkge1xuICAgICAgICBpc0VxdWFsV2lkdGggPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWlzRXF1YWxXaWR0aCB8fCAhaXNFcXVhbEhlaWdodCkge1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGRlbGV0YWJsZUVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQoZWxlbWVudHMpO1xuXG4gICAgZGVsZXRhYmxlRWxlbWVudHNcbiAgICAgICAgLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHJlZiA9IGJvYXJkLnBhdGhSZWYocGF0aCk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZShib2FyZCwgcmVmLmN1cnJlbnQhKTtcbiAgICAgICAgICAgICAgICByZWYudW5yZWYoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICAgICAgICBhY3Rpb24oKTtcbiAgICAgICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Tm9kZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdLCBwYXRoOiBQYXRoKSA9PiB7XG4gICAgY29uc3QgcGF0aFJlZiA9IGJvYXJkLnBhdGhSZWYocGF0aCk7XG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKHBhdGhSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBwYXRoUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcGF0aFJlZi51bnJlZigpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEFic3RyYWN0Tm9kZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHZhbGlkQWJzdHJhY3RSZWZzOiBBYnN0cmFjdFJlZltdLCBlbGVtZW50czogTWluZEVsZW1lbnRbXSwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucGFyZW50KHBhdGgpKTtcbiAgICBjb25zdCBhYnN0cmFjdFBhdGggPSBbLi4uUGF0aC5wYXJlbnQocGF0aCksIHBhcmVudC5jaGlsZHJlbj8ubGVuZ3RoIV07XG4gICAgY29uc3QgYWJzdHJhY3RzID0gdmFsaWRBYnN0cmFjdFJlZnMubWFwKHJlZnMgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGdldFJlbGF0aXZlU3RhcnRFbmRCeUFic3RyYWN0UmVmKHJlZnMsIGVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlZnMuYWJzdHJhY3QsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQgKyBwYXRoW3BhdGgubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgICBlbmQ6IGVuZCArIHBhdGhbcGF0aC5sZW5ndGggLSAxXVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgaW5zZXJ0Tm9kZXMoYm9hcmQsIGFic3RyYWN0cywgYWJzdHJhY3RQYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSaWdodE5vZGVDb3VudEJ5UmVmcyA9IChib2FyZDogUGxhaXRCb2FyZCwgcmVmczogUmlnaHROb2RlQ291bnRSZWZbXSkgPT4ge1xuICAgIHJlZnMuZm9yRWFjaChyZWYgPT4ge1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcmlnaHROb2RlQ291bnQ6IHJlZi5yaWdodE5vZGVDb3VudCB9LCByZWYucGF0aCk7XG4gICAgfSk7XG59O1xuIl19
@@ -1,117 +0,0 @@
1
- import { createG, getRectangleByElements, PlaitBoard, RectangleClient } from '@plait/core';
2
- import { PRIMARY_COLOR } from '../../constants';
3
- import { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET } from '../../constants/abstract-node';
4
- import { MindElement } from '../../interfaces';
5
- import { isHorizontalLayout } from '@plait/layouts';
6
- import { MindQueries } from '../../queries';
7
- import { getLayoutDirection, getPointByPlacement, moveXOfPoint, transformPlacement } from '../point-placement';
8
- import { HorizontalPlacement, VerticalPlacement } from '../../interfaces/types';
9
- import { getRectangleByResizingLocation } from '../abstract/resize';
10
- import { AbstractHandlePosition } from '../../plugins/with-abstract-resize.board';
11
- export function drawAbstractIncludedOutline(board, roughSVG, element, activeHandlePosition, resizingLocation) {
12
- const abstractIncludedG = createG();
13
- const parentElement = MindElement.getParent(element);
14
- const nodeLayout = MindQueries.getCorrectLayoutByElement(board, element);
15
- const isHorizontal = isHorizontalLayout(nodeLayout);
16
- const includedElements = parentElement.children.slice(element.start, element.end + 1);
17
- let abstractRectangle = getRectangleByElements(board, includedElements, true);
18
- abstractRectangle = RectangleClient.getOutlineRectangle(abstractRectangle, -ABSTRACT_INCLUDED_OUTLINE_OFFSET);
19
- if (resizingLocation) {
20
- abstractRectangle = getRectangleByResizingLocation(abstractRectangle, resizingLocation, activeHandlePosition, isHorizontal);
21
- }
22
- const rectangle = drawAbstractRoundRectangle(roughSVG, abstractRectangle.x, abstractRectangle.y, abstractRectangle.x + abstractRectangle.width, abstractRectangle.y + abstractRectangle.height, isHorizontal, {
23
- stroke: PRIMARY_COLOR,
24
- strokeWidth: 1,
25
- fillStyle: 'solid'
26
- });
27
- const startPlacement = [HorizontalPlacement.center, VerticalPlacement.top];
28
- const endPlacement = [HorizontalPlacement.center, VerticalPlacement.bottom];
29
- const linkDirection = getLayoutDirection(MindElement.getNode(element), isHorizontal);
30
- transformPlacement(startPlacement, linkDirection);
31
- transformPlacement(endPlacement, linkDirection);
32
- let startCenterPoint = getPointByPlacement(abstractRectangle, startPlacement);
33
- let endCenterPoint = getPointByPlacement(abstractRectangle, endPlacement);
34
- const startPoint1 = moveXOfPoint(startCenterPoint, -ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
35
- const startPoint2 = moveXOfPoint(startCenterPoint, ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
36
- const endPoint1 = moveXOfPoint(endCenterPoint, -ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
37
- const endPoint2 = moveXOfPoint(endCenterPoint, ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
38
- const startHandle = roughSVG.line(startPoint1[0], startPoint1[1], startPoint2[0], startPoint2[1], getHandleOption(activeHandlePosition === AbstractHandlePosition.start));
39
- const endHandle = roughSVG.line(endPoint1[0], endPoint1[1], endPoint2[0], endPoint2[1], getHandleOption(activeHandlePosition === AbstractHandlePosition.end));
40
- handleBoardClass(board, activeHandlePosition, isHorizontal);
41
- startHandle.setAttribute('stroke-linecap', 'round');
42
- endHandle.setAttribute('stroke-linecap', 'round');
43
- abstractIncludedG.append(startHandle);
44
- abstractIncludedG.append(endHandle);
45
- abstractIncludedG.append(rectangle);
46
- return abstractIncludedG;
47
- }
48
- export function getHandleOption(isHover) {
49
- return isHover
50
- ? {
51
- stroke: PRIMARY_COLOR,
52
- strokeWidth: 4,
53
- fillStyle: 'solid'
54
- }
55
- : {
56
- stroke: ABSTRACT_HANDLE_COLOR,
57
- strokeWidth: 3,
58
- fillStyle: 'solid'
59
- };
60
- }
61
- function handleBoardClass(board, activeHandlePosition, isHorizontal) {
62
- if (activeHandlePosition) {
63
- if (isHorizontal) {
64
- PlaitBoard.getBoardContainer(board).classList.add('abstract-resizing-horizontal');
65
- }
66
- else {
67
- PlaitBoard.getBoardContainer(board).classList.add('abstract-resizing-vertical');
68
- }
69
- }
70
- else {
71
- PlaitBoard.getBoardContainer(board).classList.remove('abstract-resizing-horizontal');
72
- PlaitBoard.getBoardContainer(board).classList.remove('abstract-resizing-vertical');
73
- }
74
- }
75
- export function drawAbstractRoundRectangle(rs, x1, y1, x2, y2, isHorizontal, options) {
76
- const width = Math.abs(x1 - x2);
77
- const height = Math.abs(y1 - y2);
78
- const radius = 5;
79
- const handleGap = 4;
80
- const handleLength = 10;
81
- const handleSpace = handleLength + handleGap * 2;
82
- if (isHorizontal) {
83
- const handleSideLine = (width - handleSpace - radius * 2) / 2;
84
- const sideLine = height - radius * 2;
85
- return rs.path(`M${x1 + radius},${y1}
86
- l${handleSideLine},0
87
- m${handleSpace},0
88
- l${handleSideLine},0
89
- a${radius},${radius},0,0,1,${radius},${radius}
90
- l0,${sideLine}
91
- a${radius},${radius},0,0,1,-${radius},${radius}
92
- l-${handleSideLine},0
93
- m-${handleSpace},0
94
- l-${handleSideLine},0
95
- a${radius},${radius},0,0,1,-${radius},-${radius}
96
- l0,-${sideLine}
97
- a${radius},${radius},0,0,1,${radius},-${radius}`, options);
98
- }
99
- else {
100
- const handleSideLine = (height - handleSpace - radius * 2) / 2;
101
- const sideLine = width - radius * 2;
102
- return rs.path(`M${x1 + radius},${y1}
103
- l${sideLine},0
104
- a${radius},${radius},0,0,1,${radius},${radius}
105
- l0,${handleSideLine}
106
- m0,${handleSpace}
107
- l0,${handleSideLine}
108
- a${radius},${radius},0,0,1,-${radius},${radius}
109
- l-${sideLine},0
110
- a${radius},${radius},0,0,1,-${radius},-${radius}
111
- l0,-${handleSideLine}
112
- m0,-${handleSpace}
113
- l0,-${handleSideLine}
114
- a${radius},${radius},0,0,1,${radius},-${radius}`, options);
115
- }
116
- }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtb3V0bGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvYWJzdHJhY3Qtb3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFrQixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBR2xGLE1BQU0sVUFBVSwyQkFBMkIsQ0FDdkMsS0FBaUIsRUFDakIsUUFBa0IsRUFDbEIsT0FBb0IsRUFDcEIsb0JBQTZDLEVBQzdDLGdCQUF5QjtJQUV6QixNQUFNLGlCQUFpQixHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXBDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsTUFBTSxVQUFVLEdBQUcs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O2dCQUMxQyxjQUFjO2dCQUNkLFdBQVc7Z0JBQ1gsY0FBYztlQUNmLE1BQU0sSUFBSSxNQUFNLFdBQVcsTUFBTSxLQUFLLE1BQU07a0JBQ3pDLFFBQVE7ZUFDWCxNQUFNLElBQUksTUFBTSxVQUFVLE1BQU0sS0FBSyxNQUFNLEVBQUUsRUFDaEQsT0FBTyxDQUNWLENBQUM7S0FDTDtTQUFNO1FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUNWLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFO2VBQ2xCLFFBQVE7ZUFDUixNQUFNLElBQUksTUFBTSxVQUFVLE1BQU0sSUFBSSxNQUFNO2lCQUN4QyxjQUFjO2lCQUNkLFdBQVc7aUJBQ1gsY0FBYztlQUNoQixNQUFNLElBQUksTUFBTSxXQUFXLE1BQU0sSUFBSSxNQUFNO2dCQUMxQyxRQUFRO2VBQ1QsTUFBTSxJQUFJLE1BQU0sV0FBVyxNQUFNLEtBQUssTUFBTTtrQkFDekMsY0FBYztrQkFDZCxXQUFXO2tCQUNYLGNBQWM7ZUFDakIsTUFBTSxJQUFJLE1BQU0sVUFBVSxNQUFNLEtBQUssTUFBTSxFQUFFLEVBQ2hELE9BQU8sQ0FDVixDQUFDO0tBQ0w7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRywgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cywgUGxhaXRCb2FyZCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUFJJTUFSWV9DT0xPUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBQlNUUkFDVF9IQU5ETEVfQ09MT1IsIEFCU1RSQUNUX0hBTkRMRV9MRU5HVEgsIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Fic3RyYWN0LW5vZGUnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgZ2V0TGF5b3V0RGlyZWN0aW9uLCBnZXRQb2ludEJ5UGxhY2VtZW50LCBtb3ZlWE9mUG9pbnQsIHRyYW5zZm9ybVBsYWNlbWVudCB9IGZyb20gJy4uL3BvaW50LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBIb3Jpem9udGFsUGxhY2VtZW50LCBQb2ludFBsYWNlbWVudCwgVmVydGljYWxQbGFjZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3R5cGVzJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbiB9IGZyb20gJy4uL2Fic3RyYWN0L3Jlc2l6ZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vcGx1Z2lucy93aXRoLWFic3RyYWN0LXJlc2l6ZS5ib2FyZCc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcm91Z2hTVkc6IFJvdWdoU1ZHLFxuICAgIGVsZW1lbnQ6IE1pbmRFbGVtZW50LFxuICAgIGFjdGl2ZUhhbmRsZVBvc2l0aW9uPzogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbixcbiAgICByZXNpemluZ0xvY2F0aW9uPzogbnVtYmVyXG4pIHtcbiAgICBjb25zdCBhYnN0cmFjdEluY2x1ZGVkRyA9IGNyZWF0ZUcoKTtcblxuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcblxuICAgIGNvbnN0IGluY2x1ZGVkRWxlbWVudHMgPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLnNsaWNlKGVsZW1lbnQuc3RhcnQhLCBlbGVtZW50LmVuZCEgKyAxKTtcbiAgICBsZXQgYWJzdHJhY3RSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBpbmNsdWRlZEVsZW1lbnRzLCB0cnVlKTtcbiAgICBhYnN0cmFjdFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRPdXRsaW5lUmVjdGFuZ2xlKGFic3RyYWN0UmVjdGFuZ2xlLCAtQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQpO1xuXG4gICAgaWYgKHJlc2l6aW5nTG9jYXRpb24pIHtcbiAgICAgICAgYWJzdHJhY3RSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24oYWJzdHJhY3RSZWN0YW5nbGUsIHJlc2l6aW5nTG9jYXRpb24sIGFjdGl2ZUhhbmRsZVBvc2l0aW9uISwgaXNIb3Jpem9udGFsKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWN0YW5nbGUgPSBkcmF3QWJzdHJhY3RSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgcm91Z2hTVkcsXG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlLngsXG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlLnksXG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlLnggKyBhYnN0cmFjdFJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgYWJzdHJhY3RSZWN0YW5nbGUueSArIGFic3RyYWN0UmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgaXNIb3Jpem9udGFsLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXJ0UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQuY2VudGVyLCBWZXJ0aWNhbFBsYWNlbWVudC50b3BdIGFzIFBvaW50UGxhY2VtZW50O1xuICAgIGNvbnN0IGVuZFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlciwgVmVydGljYWxQbGFjZW1lbnQuYm90dG9tXSBhcyBQb2ludFBsYWNlbWVudDtcblxuICAgIGNvbnN0IGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24oTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KSwgaXNIb3Jpem9udGFsKTtcblxuICAgIHRyYW5zZm9ybVBsYWNlbWVudChzdGFydFBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG4gICAgdHJhbnNmb3JtUGxhY2VtZW50KGVuZFBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICBsZXQgc3RhcnRDZW50ZXJQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQoYWJzdHJhY3RSZWN0YW5nbGUsIHN0YXJ0UGxhY2VtZW50KTtcbiAgICBsZXQgZW5kQ2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGFic3RyYWN0UmVjdGFuZ2xlLCBlbmRQbGFjZW1lbnQpO1xuXG4gICAgY29uc3Qgc3RhcnRQb2ludDEgPSBtb3ZlWE9mUG9pbnQoc3RhcnRDZW50ZXJQb2ludCwgLUFCU1RSQUNUX0hBTkRMRV9MRU5HVEggLyAyLCBsaW5rRGlyZWN0aW9uKTtcbiAgICBjb25zdCBzdGFydFBvaW50MiA9IG1vdmVYT2ZQb2ludChzdGFydENlbnRlclBvaW50LCBBQlNUUkFDVF9IQU5ETEVfTEVOR1RIIC8gMiwgbGlua0RpcmVjdGlvbik7XG5cbiAgICBjb25zdCBlbmRQb2ludDEgPSBtb3ZlWE9mUG9pbnQoZW5kQ2VudGVyUG9pbnQsIC1BQlNUUkFDVF9IQU5ETEVfTEVOR1RIIC8gMiwgbGlua0RpcmVjdGlvbik7XG4gICAgY29uc3QgZW5kUG9pbnQyID0gbW92ZVhPZlBvaW50KGVuZENlbnRlclBvaW50LCBBQlNUUkFDVF9IQU5ETEVfTEVOR1RIIC8gMiwgbGlua0RpcmVjdGlvbik7XG5cbiAgICBjb25zdCBzdGFydEhhbmRsZSA9IHJvdWdoU1ZHLmxpbmUoXG4gICAgICAgIHN0YXJ0UG9pbnQxWzBdLFxuICAgICAgICBzdGFydFBvaW50MVsxXSxcbiAgICAgICAgc3RhcnRQb2ludDJbMF0sXG4gICAgICAgIHN0YXJ0UG9pbnQyWzFdLFxuICAgICAgICBnZXRIYW5kbGVPcHRpb24oYWN0aXZlSGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpXG4gICAgKTtcblxuICAgIGNvbnN0IGVuZEhhbmRsZSA9IHJvdWdoU1ZHLmxpbmUoXG4gICAgICAgIGVuZFBvaW50MVswXSxcbiAgICAgICAgZW5kUG9pbnQxWzFdLFxuICAgICAgICBlbmRQb2ludDJbMF0sXG4gICAgICAgIGVuZFBvaW50MlsxXSxcbiAgICAgICAgZ2V0SGFuZGxlT3B0aW9uKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZClcbiAgICApO1xuXG4gICAgaGFuZGxlQm9hcmRDbGFzcyhib2FyZCwgYWN0aXZlSGFuZGxlUG9zaXRpb24sIGlzSG9yaXpvbnRhbCk7XG5cbiAgICBzdGFydEhhbmRsZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1saW5lY2FwJywgJ3JvdW5kJyk7XG4gICAgZW5kSGFuZGxlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWxpbmVjYXAnLCAncm91bmQnKTtcblxuICAgIGFic3RyYWN0SW5jbHVkZWRHLmFwcGVuZChzdGFydEhhbmRsZSk7XG4gICAgYWJzdHJhY3RJbmNsdWRlZEcuYXBwZW5kKGVuZEhhbmRsZSk7XG4gICAgYWJzdHJhY3RJbmNsdWRlZEcuYXBwZW5kKHJlY3RhbmdsZSk7XG5cbiAgICByZXR1cm4gYWJzdHJhY3RJbmNsdWRlZEc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYW5kbGVPcHRpb24oaXNIb3ZlcjogYm9vbGVhbikge1xuICAgIHJldHVybiBpc0hvdmVyXG4gICAgICAgID8ge1xuICAgICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgICBzdHJva2U6IEFCU1RSQUNUX0hBTkRMRV9DT0xPUixcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDMsXG4gICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgIH07XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUJvYXJkQ2xhc3MoYm9hcmQ6IFBsYWl0Qm9hcmQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uIHwgdW5kZWZpbmVkLCBpc0hvcml6b250YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAoYWN0aXZlSGFuZGxlUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctaG9yaXpvbnRhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ2Fic3RyYWN0LXJlc2l6aW5nLWhvcml6b250YWwnKTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3QWJzdHJhY3RSb3VuZFJlY3RhbmdsZShcbiAgICByczogUm91Z2hTVkcsXG4gICAgeDE6IG51bWJlcixcbiAgICB5MTogbnVtYmVyLFxuICAgIHgyOiBudW1iZXIsXG4gICAgeTI6IG51bWJlcixcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW4sXG4gICAgb3B0aW9uczogT3B0aW9uc1xuKSB7XG4gICAgY29uc3Qgd2lkdGggPSBNYXRoLmFicyh4MSAtIHgyKTtcbiAgICBjb25zdCBoZWlnaHQgPSBNYXRoLmFicyh5MSAtIHkyKTtcblxuICAgIGNvbnN0IHJhZGl1cyA9IDU7XG4gICAgY29uc3QgaGFuZGxlR2FwID0gNDtcbiAgICBjb25zdCBoYW5kbGVMZW5ndGggPSAxMDtcblxuICAgIGNvbnN0IGhhbmRsZVNwYWNlID0gaGFuZGxlTGVuZ3RoICsgaGFuZGxlR2FwICogMjtcblxuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlU2lkZUxpbmUgPSAod2lkdGggLSBoYW5kbGVTcGFjZSAtIHJhZGl1cyAqIDIpIC8gMjtcbiAgICAgICAgY29uc3Qgc2lkZUxpbmUgPSBoZWlnaHQgLSByYWRpdXMgKiAyO1xuICAgICAgICByZXR1cm4gcnMucGF0aChcbiAgICAgICAgICAgIGBNJHt4MSArIHJhZGl1c30sJHt5MX1cbiAgICAgICAgICAgIGwke2hhbmRsZVNpZGVMaW5lfSwwXG4gICAgICAgICAgICBtJHtoYW5kbGVTcGFjZX0sMFxuICAgICAgICAgICAgbCR7aGFuZGxlU2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwke3JhZGl1c31cbiAgICAgICAgICAgIGwwLCR7c2lkZUxpbmV9XG4gICAgICAgICAgICBhJHtyYWRpdXN9LCR7cmFkaXVzfSwwLDAsMSwtJHtyYWRpdXN9LCR7cmFkaXVzfVxuICAgICAgICAgICAgbC0ke2hhbmRsZVNpZGVMaW5lfSwwXG4gICAgICAgICAgICBtLSR7aGFuZGxlU3BhY2V9LDBcbiAgICAgICAgICAgIGwtJHtoYW5kbGVTaWRlTGluZX0sMFxuICAgICAgICAgICAgYSR7cmFkaXVzfSwke3JhZGl1c30sMCwwLDEsLSR7cmFkaXVzfSwtJHtyYWRpdXN9XG4gICAgICAgICAgICBsMCwtJHtzaWRlTGluZX1cbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwtJHtyYWRpdXN9YCxcbiAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYW5kbGVTaWRlTGluZSA9IChoZWlnaHQgLSBoYW5kbGVTcGFjZSAtIHJhZGl1cyAqIDIpIC8gMjtcbiAgICAgICAgY29uc3Qgc2lkZUxpbmUgPSB3aWR0aCAtIHJhZGl1cyAqIDI7XG4gICAgICAgIHJldHVybiBycy5wYXRoKFxuICAgICAgICAgICAgYE0ke3gxICsgcmFkaXVzfSwke3kxfVxuICAgICAgICAgICAgbCR7c2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwke3JhZGl1c31cbiAgICAgICAgICAgIGwwLCR7aGFuZGxlU2lkZUxpbmV9XG4gICAgICAgICAgICBtMCwke2hhbmRsZVNwYWNlfVxuICAgICAgICAgICAgbDAsJHtoYW5kbGVTaWRlTGluZX1cbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLC0ke3JhZGl1c30sJHtyYWRpdXN9XG4gICAgICAgICAgICBsLSR7c2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLC0ke3JhZGl1c30sLSR7cmFkaXVzfVxuICAgICAgICAgICAgbDAsLSR7aGFuZGxlU2lkZUxpbmV9XG4gICAgICAgICAgICBtMCwtJHtoYW5kbGVTcGFjZX1cbiAgICAgICAgICAgIGwwLC0ke2hhbmRsZVNpZGVMaW5lfVxuICAgICAgICAgICAgYSR7cmFkaXVzfSwke3JhZGl1c30sMCwwLDEsJHtyYWRpdXN9LC0ke3JhZGl1c31gLFxuICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,159 +0,0 @@
1
- import { drawRoundRectangleByNode } from './node-shape';
2
- import { BASE, PRIMARY_COLOR, STROKE_WIDTH } from '../../constants';
3
- import { LayoutDirection, MindElement, PlaitMind } from '../../interfaces';
4
- import { getRectangleByNode } from '../position/node';
5
- import { PlaitBoard, drawRoundRectangle, createG, Path, PlaitNode, PlaitElement, updateForeignObject } from '@plait/core';
6
- import { MindQueries } from '../../queries';
7
- import { isHorizontalLayout, isIndentedLayout, isStandardLayout, isTopLayout } from '@plait/layouts';
8
- import { getTopicRectangleByNode } from '../position/topic';
9
- import { HorizontalPlacement, VerticalPlacement } from '../../interfaces/types';
10
- import { getLayoutDirection, getPointByPlacement, moveXOfPoint, moveYOfPoint, transformPlacement } from '../point-placement';
11
- import { hasPreviousOrNextOfDropPath } from '../dnd/common';
12
- import { drawLink } from './node-link/draw-link';
13
- import { getEmojiForeignRectangle } from '../position/emoji';
14
- import { getImageForeignRectangle } from '../position';
15
- export const drawFakeDragNode = (board, element, offsetX, offsetY) => {
16
- const activeComponent = PlaitElement.getComponent(element);
17
- const dragFakeNodeG = createG();
18
- dragFakeNodeG.classList.add('dragging', 'fake-node', 'plait-board-attached');
19
- const fakeDraggingNode = {
20
- ...activeComponent.node,
21
- children: [],
22
- x: activeComponent.node.x + offsetX,
23
- y: activeComponent.node.y + offsetY
24
- };
25
- const textRectangle = getTopicRectangleByNode(board, activeComponent.node);
26
- const fakeNodeG = drawRoundRectangleByNode(board, fakeDraggingNode);
27
- const richtextG = activeComponent.textManage.g.cloneNode(true);
28
- updateForeignObject(richtextG, textRectangle.width, textRectangle.height, textRectangle.x + offsetX, textRectangle.y + offsetY);
29
- dragFakeNodeG?.append(fakeNodeG);
30
- dragFakeNodeG?.append(richtextG);
31
- // draw emojis
32
- if (MindElement.hasEmojis(element)) {
33
- const fakeEmojisG = activeComponent.nodeEmojisDrawer.g.cloneNode(true);
34
- const foreignRectangle = getEmojiForeignRectangle(board, element);
35
- updateForeignObject(fakeEmojisG, foreignRectangle.width, foreignRectangle.height, foreignRectangle.x + offsetX, foreignRectangle.y + offsetY);
36
- dragFakeNodeG?.append(fakeEmojisG);
37
- }
38
- if (MindElement.hasImage(element)) {
39
- const fakeImageG = activeComponent.imageDrawer.g.cloneNode(true);
40
- const foreignRectangle = getImageForeignRectangle(board, element);
41
- updateForeignObject(fakeImageG, foreignRectangle.width, foreignRectangle.height, foreignRectangle.x + offsetX, foreignRectangle.y + offsetY);
42
- dragFakeNodeG?.append(fakeImageG);
43
- }
44
- return dragFakeNodeG;
45
- };
46
- export const drawFakeDropNode = (board, dropTarget, path) => {
47
- const target = dropTarget.target;
48
- const fakeDropNodeG = createG();
49
- const parent = PlaitNode.get(board, Path.parent(path));
50
- const layout = MindQueries.getLayoutByElement(parent);
51
- const isHorizontal = isHorizontalLayout(layout);
52
- const { hasNextNode, hasPreviousNode } = hasPreviousOrNextOfDropPath(parent, dropTarget, path);
53
- const width = 30;
54
- const height = 12;
55
- let fakeNode, centerPoint, basicNode, linkDirection;
56
- if (!hasPreviousNode && !hasNextNode) {
57
- const parentNode = MindElement.getNode(parent);
58
- const parentRect = getRectangleByNode(parentNode);
59
- linkDirection = getLayoutDirection(parentNode, isHorizontal);
60
- basicNode = parentNode;
61
- if (PlaitMind.isMind(target) && isStandardLayout(layout)) {
62
- if (dropTarget.detectResult === 'left') {
63
- linkDirection = LayoutDirection.left;
64
- basicNode.left = true;
65
- }
66
- else {
67
- linkDirection = LayoutDirection.right;
68
- basicNode.left = false;
69
- }
70
- }
71
- const placement = [HorizontalPlacement.right, VerticalPlacement.middle];
72
- transformPlacement(placement, linkDirection);
73
- const parentCenterPoint = getPointByPlacement(parentRect, placement);
74
- if (isIndentedLayout(layout)) {
75
- const placement = [
76
- HorizontalPlacement.center,
77
- isTopLayout(layout) ? VerticalPlacement.top : VerticalPlacement.bottom
78
- ];
79
- const parentCenterPoint = getPointByPlacement(parentRect, placement);
80
- centerPoint = moveXOfPoint(parentCenterPoint, height, linkDirection);
81
- centerPoint[1] = isTopLayout(layout) ? centerPoint[1] - height : centerPoint[1] + height;
82
- }
83
- else {
84
- centerPoint = moveXOfPoint(parentCenterPoint, width, linkDirection);
85
- }
86
- }
87
- else if (!hasPreviousNode && hasNextNode) {
88
- const nextElement = PlaitNode.get(board, path);
89
- basicNode = MindElement.getNode(nextElement);
90
- const nextRect = getRectangleByNode(basicNode);
91
- linkDirection = getLayoutDirection(basicNode, isHorizontal);
92
- const placement = [HorizontalPlacement.left, VerticalPlacement.top];
93
- transformPlacement(placement, linkDirection);
94
- let offset = -height;
95
- if (MindElement.isIndentedLayout(parent)) {
96
- offset = isTopLayout(layout) ? offset / 2 + basicNode.height - basicNode.vGap : 0;
97
- }
98
- centerPoint = getPointByPlacement(nextRect, placement);
99
- centerPoint = moveYOfPoint(centerPoint, offset, linkDirection);
100
- }
101
- else if (hasPreviousNode && !hasNextNode) {
102
- const previousElement = PlaitNode.get(board, Path.previous(path));
103
- basicNode = MindElement.getNode(previousElement);
104
- const previousRect = getRectangleByNode(basicNode);
105
- linkDirection = getLayoutDirection(basicNode, isHorizontal);
106
- const placement = [HorizontalPlacement.left, VerticalPlacement.bottom];
107
- transformPlacement(placement, linkDirection);
108
- let offset = height;
109
- if (MindElement.isIndentedLayout(parent)) {
110
- offset = isTopLayout(layout) ? -offset - (basicNode.height - basicNode.vGap) : offset;
111
- }
112
- centerPoint = getPointByPlacement(previousRect, placement);
113
- centerPoint = moveYOfPoint(centerPoint, offset, linkDirection);
114
- }
115
- else {
116
- const previousElement = PlaitNode.get(board, Path.previous(path));
117
- basicNode = MindElement.getNode(previousElement);
118
- const previousRect = getRectangleByNode(basicNode);
119
- const nextElement = PlaitNode.get(board, path);
120
- const nextNode = MindElement.getNode(nextElement);
121
- const nextRect = getRectangleByNode(nextNode);
122
- const beginPlacement = [HorizontalPlacement.left, VerticalPlacement.bottom];
123
- const endPlacement = [HorizontalPlacement.left, VerticalPlacement.top];
124
- linkDirection = getLayoutDirection(basicNode, isHorizontal);
125
- transformPlacement(beginPlacement, linkDirection);
126
- transformPlacement(endPlacement, linkDirection);
127
- const previousPoint = getPointByPlacement(previousRect, beginPlacement);
128
- const nextPoint = getPointByPlacement(nextRect, endPlacement);
129
- centerPoint = [(previousPoint[0] + nextPoint[0]) / 2, (previousPoint[1] + nextPoint[1]) / 2];
130
- }
131
- let cornerPoint = centerPoint, oppositePoint = centerPoint;
132
- const offsetY = isHorizontal ? height : width;
133
- const offsetX = isHorizontal ? width : height;
134
- cornerPoint = moveYOfPoint(cornerPoint, -offsetY / 2, linkDirection);
135
- oppositePoint = moveYOfPoint(oppositePoint, offsetY / 2, linkDirection);
136
- oppositePoint = moveXOfPoint(oppositePoint, offsetX, linkDirection);
137
- const x = Math.min(cornerPoint[0], oppositePoint[0]);
138
- const y = Math.min(cornerPoint[1], oppositePoint[1]);
139
- fakeNode = {
140
- ...basicNode,
141
- x,
142
- y,
143
- width,
144
- height,
145
- hGap: MindElement.isIndentedLayout(parent) ? BASE * 4 + (basicNode.origin.strokeWidth || STROKE_WIDTH) : 0,
146
- vGap: MindElement.isIndentedLayout(parent) ? BASE : 0
147
- };
148
- const fakeRectangleG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), fakeNode.x, fakeNode.y, fakeNode.x + width, fakeNode.y + height, {
149
- stroke: PRIMARY_COLOR,
150
- strokeWidth: 2,
151
- fill: PRIMARY_COLOR,
152
- fillStyle: 'solid'
153
- });
154
- const link = drawLink(board, MindElement.getNode(parent), fakeNode, isHorizontal, false, PRIMARY_COLOR, STROKE_WIDTH);
155
- fakeDropNodeG?.appendChild(link);
156
- fakeDropNodeG?.appendChild(fakeRectangleG);
157
- return fakeDropNodeG;
158
- };
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9kcmF3L25vZGUtZG5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxXQUFXLEVBQVksU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBUyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1C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LFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTNDLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRyYXdSb3VuZFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vbm9kZS1zaGFwZSc7XG5pbXBvcnQgeyBCQVNFLCBQUklNQVJZX0NPTE9SLCBTVFJPS0VfV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGV0ZWN0UmVzdWx0LCBMYXlvdXREaXJlY3Rpb24sIE1pbmRFbGVtZW50LCBNaW5kTm9kZSwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4uL3Bvc2l0aW9uL25vZGUnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGRyYXdSb3VuZFJlY3RhbmdsZSwgY3JlYXRlRywgUGF0aCwgUGxhaXROb2RlLCBQbGFpdEVsZW1lbnQsIHVwZGF0ZUZvcmVpZ25PYmplY3QgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgaXNIb3Jpem9udGFsTGF5b3V0LCBpc0luZGVudGVkTGF5b3V0LCBpc1N0YW5kYXJkTGF5b3V0LCBpc1RvcExheW91dCwgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4uL3Bvc2l0aW9uL3RvcGljJztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TGF5b3V0RGlyZWN0aW9uLCBnZXRQb2ludEJ5UGxhY2VtZW50LCBtb3ZlWE9mUG9pbnQsIG1vdmVZT2ZQb2ludCwgdHJhbnNmb3JtUGxhY2VtZW50IH0gZnJvbSAnLi4vcG9pbnQtcGxhY2VtZW50JztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgaGFzUHJldmlvdXNPck5leHRPZkRyb3BQYXRoIH0gZnJvbSAnLi4vZG5kL2NvbW1vbic7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4vbm9kZS1saW5rL2RyYXctbGluayc7XG5pbXBvcnQgeyBnZXRFbW9qaUZvcmVpZ25SZWN0YW5nbGUgfSBmcm9tICcuLi9wb3NpdGlvbi9lbW9qaSc7XG5pbXBvcnQgeyBnZXRJbWFnZUZvcmVpZ25SZWN0YW5nbGUgfSBmcm9tICcuLi9wb3NpdGlvbic7XG5cbmV4cG9ydCBjb25zdCBkcmF3RmFrZURyYWdOb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgb2Zmc2V0WDogbnVtYmVyLCBvZmZzZXRZOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBhY3RpdmVDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGNvbnN0IGRyYWdGYWtlTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgZHJhZ0Zha2VOb2RlRy5jbGFzc0xpc3QuYWRkKCdkcmFnZ2luZycsICdmYWtlLW5vZGUnLCAncGxhaXQtYm9hcmQtYXR0YWNoZWQnKTtcblxuICAgIGNvbnN0IGZha2VEcmFnZ2luZ05vZGU6IE1pbmROb2RlID0ge1xuICAgICAgICAuLi5hY3RpdmVDb21wb25lbnQubm9kZSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICB4OiBhY3RpdmVDb21wb25lbnQubm9kZS54ICsgb2Zmc2V0WCxcbiAgICAgICAgeTogYWN0aXZlQ29tcG9uZW50Lm5vZGUueSArIG9mZnNldFlcbiAgICB9O1xuICAgIGNvbnN0IHRleHRSZWN0YW5nbGUgPSBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZShib2FyZCBhcyBQbGFpdE1pbmRCb2FyZCwgYWN0aXZlQ29tcG9uZW50Lm5vZGUpO1xuICAgIGNvbnN0IGZha2VOb2RlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZUJ5Tm9kZShib2FyZCwgZmFrZURyYWdnaW5nTm9kZSk7XG5cbiAgICBjb25zdCByaWNodGV4dEcgPSBhY3RpdmVDb21wb25lbnQudGV4dE1hbmFnZS5nLmNsb25lTm9kZSh0cnVlKSBhcyBTVkdHRWxlbWVudDtcbiAgICB1cGRhdGVGb3JlaWduT2JqZWN0KHJpY2h0ZXh0RywgdGV4dFJlY3RhbmdsZS53aWR0aCwgdGV4dFJlY3RhbmdsZS5oZWlnaHQsIHRleHRSZWN0YW5nbGUueCArIG9mZnNldFgsIHRleHRSZWN0YW5nbGUueSArIG9mZnNldFkpO1xuXG4gICAgZHJhZ0Zha2VOb2RlRz8uYXBwZW5kKGZha2VOb2RlRyk7XG4gICAgZHJhZ0Zha2VOb2RlRz8uYXBwZW5kKHJpY2h0ZXh0Ryk7XG5cbiAgICAvLyBkcmF3IGVtb2ppc1xuICAgIGlmIChNaW5kRWxlbWVudC5oYXNFbW9qaXMoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZmFrZUVtb2ppc0cgPSAoYWN0aXZlQ29tcG9uZW50Lm5vZGVFbW9qaXNEcmF3ZXIuZyBhcyBTVkdHRWxlbWVudCkuY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICBjb25zdCBmb3JlaWduUmVjdGFuZ2xlID0gZ2V0RW1vamlGb3JlaWduUmVjdGFuZ2xlKGJvYXJkIGFzIFBsYWl0TWluZEJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChcbiAgICAgICAgICAgIGZha2VFbW9qaXNHLFxuICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS54ICsgb2Zmc2V0WCxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUueSArIG9mZnNldFlcbiAgICAgICAgKTtcbiAgICAgICAgZHJhZ0Zha2VOb2RlRz8uYXBwZW5kKGZha2VFbW9qaXNHKTtcbiAgICB9XG5cbiAgICBpZiAoTWluZEVsZW1lbnQuaGFzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZmFrZUltYWdlRyA9IChhY3RpdmVDb21wb25lbnQuaW1hZ2VEcmF3ZXIuZyBhcyBTVkdHRWxlbWVudCkuY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICBjb25zdCBmb3JlaWduUmVjdGFuZ2xlID0gZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlKGJvYXJkIGFzIFBsYWl0TWluZEJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChcbiAgICAgICAgICAgIGZha2VJbWFnZUcsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLnggKyBvZmZzZXRYLFxuICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS55ICsgb2Zmc2V0WVxuICAgICAgICApO1xuICAgICAgICBkcmFnRmFrZU5vZGVHPy5hcHBlbmQoZmFrZUltYWdlRyk7XG4gICAgfVxuICAgIHJldHVybiBkcmFnRmFrZU5vZGVHO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdGYWtlRHJvcE5vZGUgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZHJvcFRhcmdldDoge1xuICAgICAgICB0YXJnZXQ6IE1pbmRFbGVtZW50O1xuICAgICAgICBkZXRlY3RSZXN1bHQ6IERldGVjdFJlc3VsdDtcbiAgICB9LFxuICAgIHBhdGg6IFBhdGhcbikgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGRyb3BUYXJnZXQudGFyZ2V0O1xuICAgIGNvbnN0IGZha2VEcm9wTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgY29uc3QgcGFyZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wYXJlbnQocGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChwYXJlbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpO1xuICAgIGNvbnN0IHsgaGFzTmV4dE5vZGUsIGhhc1ByZXZpb3VzTm9kZSB9ID0gaGFzUHJldmlvdXNPck5leHRPZkRyb3BQYXRoKHBhcmVudCwgZHJvcFRhcmdldCwgcGF0aCk7XG5cbiAgICBjb25zdCB3aWR0aCA9IDMwO1xuICAgIGNvbnN0IGhlaWdodCA9IDEyO1xuICAgIGxldCBmYWtlTm9kZTogTWluZE5vZGUsIGNlbnRlclBvaW50OiBQb2ludCwgYmFzaWNOb2RlOiBNaW5kTm9kZSwgbGlua0RpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uO1xuXG4gICAgaWYgKCFoYXNQcmV2aW91c05vZGUgJiYgIWhhc05leHROb2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudCk7XG4gICAgICAgIGNvbnN0IHBhcmVudFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUocGFyZW50Tm9kZSk7XG5cbiAgICAgICAgbGlua0RpcmVjdGlvbiA9IGdldExheW91dERpcmVjdGlvbihwYXJlbnROb2RlLCBpc0hvcml6b250YWwpO1xuICAgICAgICBiYXNpY05vZGUgPSBwYXJlbnROb2RlO1xuXG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKHRhcmdldCkgJiYgaXNTdGFuZGFyZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBpZiAoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgIGxpbmtEaXJlY3Rpb24gPSBMYXlvdXREaXJlY3Rpb24ubGVmdDtcbiAgICAgICAgICAgICAgICBiYXNpY05vZGUubGVmdCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpbmtEaXJlY3Rpb24gPSBMYXlvdXREaXJlY3Rpb24ucmlnaHQ7XG4gICAgICAgICAgICAgICAgYmFzaWNOb2RlLmxlZnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCwgVmVydGljYWxQbGFjZW1lbnQubWlkZGxlXTtcbiAgICAgICAgdHJhbnNmb3JtUGxhY2VtZW50KHBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIGNvbnN0IHBhcmVudENlbnRlclBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChwYXJlbnRSZWN0LCBwbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmIChpc0luZGVudGVkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbXG4gICAgICAgICAgICAgICAgSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIsXG4gICAgICAgICAgICAgICAgaXNUb3BMYXlvdXQobGF5b3V0KSA/IFZlcnRpY2FsUGxhY2VtZW50LnRvcCA6IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudENlbnRlclBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChwYXJlbnRSZWN0LCBwbGFjZW1lbnQpO1xuXG4gICAgICAgICAgICBjZW50ZXJQb2ludCA9IG1vdmVYT2ZQb2ludChwYXJlbnRDZW50ZXJQb2ludCwgaGVpZ2h0LCBsaW5rRGlyZWN0aW9uKTtcbiAgICAgICAgICAgIGNlbnRlclBvaW50WzFdID0gaXNUb3BMYXlvdXQobGF5b3V0KSA/IGNlbnRlclBvaW50WzFdIC0gaGVpZ2h0IDogY2VudGVyUG9pbnRbMV0gKyBoZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZW50ZXJQb2ludCA9IG1vdmVYT2ZQb2ludChwYXJlbnRDZW50ZXJQb2ludCwgd2lkdGgsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICghaGFzUHJldmlvdXNOb2RlICYmIGhhc05leHROb2RlKSB7XG4gICAgICAgIGNvbnN0IG5leHRFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgIGJhc2ljTm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUobmV4dEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShiYXNpY05vZGUpO1xuICAgICAgICBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKGJhc2ljTm9kZSwgaXNIb3Jpem9udGFsKTtcblxuICAgICAgICBjb25zdCBwbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQubGVmdCwgVmVydGljYWxQbGFjZW1lbnQudG9wXTtcblxuICAgICAgICB0cmFuc2Zvcm1QbGFjZW1lbnQocGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gLWhlaWdodDtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50LmlzSW5kZW50ZWRMYXlvdXQocGFyZW50KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gaXNUb3BMYXlvdXQobGF5b3V0KSA/IG9mZnNldCAvIDIgKyBiYXNpY05vZGUuaGVpZ2h0IC0gYmFzaWNOb2RlLnZHYXAgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KG5leHRSZWN0LCBwbGFjZW1lbnQpO1xuICAgICAgICBjZW50ZXJQb2ludCA9IG1vdmVZT2ZQb2ludChjZW50ZXJQb2ludCwgb2Zmc2V0LCBsaW5rRGlyZWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGhhc1ByZXZpb3VzTm9kZSAmJiAhaGFzTmV4dE5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyhwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgIGJhc2ljTm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUocHJldmlvdXNFbGVtZW50KTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGJhc2ljTm9kZSk7XG4gICAgICAgIGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24oYmFzaWNOb2RlLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgIGNvbnN0IHBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0LCBWZXJ0aWNhbFBsYWNlbWVudC5ib3R0b21dO1xuXG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChwbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIGxldCBvZmZzZXQgPSBoZWlnaHQ7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5pc0luZGVudGVkTGF5b3V0KHBhcmVudCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IGlzVG9wTGF5b3V0KGxheW91dCkgPyAtb2Zmc2V0IC0gKGJhc2ljTm9kZS5oZWlnaHQgLSBiYXNpY05vZGUudkdhcCkgOiBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgY2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHByZXZpb3VzUmVjdCwgcGxhY2VtZW50KTtcbiAgICAgICAgY2VudGVyUG9pbnQgPSBtb3ZlWU9mUG9pbnQoY2VudGVyUG9pbnQsIG9mZnNldCwgbGlua0RpcmVjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyhwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgIGJhc2ljTm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUocHJldmlvdXNFbGVtZW50KTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGJhc2ljTm9kZSk7XG5cbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgY29uc3QgbmV4dE5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKG5leHRFbGVtZW50KTtcbiAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dE5vZGUpO1xuXG4gICAgICAgIGNvbnN0IGJlZ2luUGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV07XG4gICAgICAgIGNvbnN0IGVuZFBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0LCBWZXJ0aWNhbFBsYWNlbWVudC50b3BdO1xuICAgICAgICBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKGJhc2ljTm9kZSwgaXNIb3Jpem9udGFsKTtcblxuICAgICAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoYmVnaW5QbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoZW5kUGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcblxuICAgICAgICBjb25zdCBwcmV2aW91c1BvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChwcmV2aW91c1JlY3QsIGJlZ2luUGxhY2VtZW50KTtcbiAgICAgICAgY29uc3QgbmV4dFBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChuZXh0UmVjdCwgZW5kUGxhY2VtZW50KTtcblxuICAgICAgICBjZW50ZXJQb2ludCA9IFsocHJldmlvdXNQb2ludFswXSArIG5leHRQb2ludFswXSkgLyAyLCAocHJldmlvdXNQb2ludFsxXSArIG5leHRQb2ludFsxXSkgLyAyXTtcbiAgICB9XG5cbiAgICBsZXQgY29ybmVyUG9pbnQgPSBjZW50ZXJQb2ludCxcbiAgICAgICAgb3Bwb3NpdGVQb2ludCA9IGNlbnRlclBvaW50O1xuXG4gICAgY29uc3Qgb2Zmc2V0WSA9IGlzSG9yaXpvbnRhbCA/IGhlaWdodCA6IHdpZHRoO1xuICAgIGNvbnN0IG9mZnNldFggPSBpc0hvcml6b250YWwgPyB3aWR0aCA6IGhlaWdodDtcblxuICAgIGNvcm5lclBvaW50ID0gbW92ZVlPZlBvaW50KGNvcm5lclBvaW50LCAtb2Zmc2V0WSAvIDIsIGxpbmtEaXJlY3Rpb24hKTtcblxuICAgIG9wcG9zaXRlUG9pbnQgPSBtb3ZlWU9mUG9pbnQob3Bwb3NpdGVQb2ludCwgb2Zmc2V0WSAvIDIsIGxpbmtEaXJlY3Rpb24hKTtcbiAgICBvcHBvc2l0ZVBvaW50ID0gbW92ZVhPZlBvaW50KG9wcG9zaXRlUG9pbnQsIG9mZnNldFgsIGxpbmtEaXJlY3Rpb24hKTtcblxuICAgIGNvbnN0IHggPSBNYXRoLm1pbihjb3JuZXJQb2ludFswXSwgb3Bwb3NpdGVQb2ludFswXSk7XG4gICAgY29uc3QgeSA9IE1hdGgubWluKGNvcm5lclBvaW50WzFdLCBvcHBvc2l0ZVBvaW50WzFdKTtcblxuICAgIGZha2VOb2RlID0ge1xuICAgICAgICAuLi5iYXNpY05vZGUhLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBoR2FwOiBNaW5kRWxlbWVudC5pc0luZGVudGVkTGF5b3V0KHBhcmVudCkgPyBCQVNFICogNCArIChiYXNpY05vZGUub3JpZ2luLnN0cm9rZVdpZHRoIHx8IFNUUk9LRV9XSURUSCkgOiAwLFxuICAgICAgICB2R2FwOiBNaW5kRWxlbWVudC5pc0luZGVudGVkTGF5b3V0KHBhcmVudCkgPyBCQVNFIDogMFxuICAgIH07XG5cbiAgICBjb25zdCBmYWtlUmVjdGFuZ2xlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCksXG4gICAgICAgIGZha2VOb2RlIS54LFxuICAgICAgICBmYWtlTm9kZSEueSxcbiAgICAgICAgZmFrZU5vZGUhLnggKyB3aWR0aCxcbiAgICAgICAgZmFrZU5vZGUhLnkgKyBoZWlnaHQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHN0cm9rZTogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgZmlsbDogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmsgPSBkcmF3TGluayhib2FyZCwgTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnQpLCBmYWtlTm9kZSwgaXNIb3Jpem9udGFsLCBmYWxzZSwgUFJJTUFSWV9DT0xPUiwgU1RST0tFX1dJRFRIKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG5cbiAgICByZXR1cm4gZmFrZURyb3BOb2RlRztcbn07XG4iXX0=
@@ -1,16 +0,0 @@
1
- export * from './position';
2
- export * from './weak-maps';
3
- export * from './mind';
4
- export * from './layout';
5
- export * from './node';
6
- export * from './node-style';
7
- export * from './is-virtual-key';
8
- export * from './dnd/common';
9
- export * from './dnd/detector';
10
- export * from './draw/node-dnd';
11
- export * from './abstract/common';
12
- export * from './abstract/resize';
13
- export * from './node/right-node-count';
14
- export * from './space/node-space';
15
- export * from './space';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wb3NpdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3dlYWstbWFwcyc7XG5leHBvcnQgKiBmcm9tICcuL21pbmQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9ub2RlJztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZS1zdHlsZSc7XG5leHBvcnQgKiBmcm9tICcuL2lzLXZpcnR1YWwta2V5JztcbmV4cG9ydCAqIGZyb20gJy4vZG5kL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2RuZC9kZXRlY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL2RyYXcvbm9kZS1kbmQnO1xuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdC9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdC9yZXNpemUnO1xuZXhwb3J0ICogZnJvbSAnLi9ub2RlL3JpZ2h0LW5vZGUtY291bnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGFjZS9ub2RlLXNwYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3BhY2UnO1xuIl19
@@ -1,13 +0,0 @@
1
- import { isKeyHotkey } from 'is-hotkey';
2
- export function isVirtualKey(e) {
3
- const isMod = e.ctrlKey || e.metaKey;
4
- const isAlt = isKeyHotkey('alt', e);
5
- const isShift = isKeyHotkey('shift', e);
6
- const isCapsLock = e.key.includes('CapsLock');
7
- const isTab = e.key.includes('Tab');
8
- const isEsc = e.key.includes('Escape');
9
- const isF = e.key.startsWith('F');
10
- const isArrow = e.key.includes('Arrow') ? true : false;
11
- return isCapsLock || isMod || isAlt || isArrow || isShift || isTab || isEsc || isF;
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmlydHVhbC1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9pcy12aXJ0dWFsLWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBZ0I7SUFDekMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdkQsT0FBTyxVQUFVLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDO0FBQ3ZGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0tleUhvdGtleSB9IGZyb20gJ2lzLWhvdGtleSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpcnR1YWxLZXkoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGlzTW9kID0gZS5jdHJsS2V5IHx8IGUubWV0YUtleTtcbiAgICBjb25zdCBpc0FsdCA9IGlzS2V5SG90a2V5KCdhbHQnLCBlKTtcbiAgICBjb25zdCBpc1NoaWZ0ID0gaXNLZXlIb3RrZXkoJ3NoaWZ0JywgZSk7XG4gICAgY29uc3QgaXNDYXBzTG9jayA9IGUua2V5LmluY2x1ZGVzKCdDYXBzTG9jaycpO1xuICAgIGNvbnN0IGlzVGFiID0gZS5rZXkuaW5jbHVkZXMoJ1RhYicpO1xuICAgIGNvbnN0IGlzRXNjID0gZS5rZXkuaW5jbHVkZXMoJ0VzY2FwZScpO1xuICAgIGNvbnN0IGlzRiA9IGUua2V5LnN0YXJ0c1dpdGgoJ0YnKTtcbiAgICBjb25zdCBpc0Fycm93ID0gZS5rZXkuaW5jbHVkZXMoJ0Fycm93JykgPyB0cnVlIDogZmFsc2U7XG4gICAgcmV0dXJuIGlzQ2Fwc0xvY2sgfHwgaXNNb2QgfHwgaXNBbHQgfHwgaXNBcnJvdyB8fCBpc1NoaWZ0IHx8IGlzVGFiIHx8IGlzRXNjIHx8IGlzRjtcbn1cbiJdfQ==
@@ -1,52 +0,0 @@
1
- import { idCreator, isNullOrUndefined } from '@plait/core';
2
- import { TEXT_DEFAULT_HEIGHT, buildText } from '@plait/text';
3
- import { MindLayoutType } from '@plait/layouts';
4
- import { ROOT_TOPIC_HEIGHT } from '../../constants/node-topic-style';
5
- export const createEmptyMind = (point) => {
6
- const element = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout: MindLayoutType.right });
7
- element.isRoot = true;
8
- element.points = [point];
9
- element.type = 'mindmap';
10
- return element;
11
- };
12
- export const createDefaultMind = (point, rightNodeCount, layout) => {
13
- const root = createMindElement('思维导图', 72, ROOT_TOPIC_HEIGHT, { layout });
14
- root.rightNodeCount = rightNodeCount;
15
- root.isRoot = true;
16
- root.type = 'mindmap';
17
- root.points = [point];
18
- const children = [1, 1, 1].map(() => {
19
- return createMindElement('新建节点', 56, TEXT_DEFAULT_HEIGHT, {});
20
- });
21
- root.children = children;
22
- return root;
23
- };
24
- export const createMindElement = (text, width, height, options) => {
25
- const newElement = {
26
- id: idCreator(),
27
- data: {
28
- topic: buildText(text)
29
- },
30
- children: [],
31
- width,
32
- height
33
- };
34
- let key;
35
- for (key in options) {
36
- if (!isNullOrUndefined(options[key])) {
37
- newElement[key] = options[key];
38
- }
39
- }
40
- return newElement;
41
- };
42
- export const INHERIT_ATTRIBUTE_KEYS = [
43
- 'fill',
44
- 'strokeColor',
45
- 'strokeWidth',
46
- 'shape',
47
- 'layout',
48
- 'branchColor',
49
- 'branchWidth',
50
- 'branchShape'
51
- ];
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2NyZWF0ZS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHckUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7SUFDNUMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN0QixPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDekIsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsY0FBc0IsRUFBRSxNQUFzQixFQUFFLEVBQUU7SUFDOUYsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDMUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ2hDLE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBc0IsRUFBRSxLQUFhLEVBQUUsTUFBYyxFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUNsSCxNQUFNLFVBQVUsR0FBZ0I7UUFDNUIsRUFBRSxFQUFFLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRTtZQUNGLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQ3pCO1FBQ0QsUUFBUSxFQUFFLEVBQUU7UUFDWixLQUFLO1FBQ0wsTUFBTTtLQUNULENBQUM7SUFFRixJQUFJLEdBQXlCLENBQUM7SUFDOUIsS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNqQyxVQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQztLQUNKO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBYUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDbEMsTUFBTTtJQUNOLGFBQWE7SUFDYixhQUFhO0lBQ2IsT0FBTztJQUNQLFFBQVE7SUFDUixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7Q0FDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50LCBpZENyZWF0b3IsIGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgVEVYVF9ERUZBVUxUX0hFSUdIVCwgYnVpbGRUZXh0IH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBCcmFuY2hTaGFwZSwgTWluZEVsZW1lbnQsIE1pbmRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUk9PVF9UT1BJQ19IRUlHSFQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10b3BpYy1zdHlsZSc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRW1wdHlNaW5kID0gKHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCgn5oCd57u05a+85Zu+JywgNzIsIFJPT1RfVE9QSUNfSEVJR0hULCB7IGxheW91dDogTWluZExheW91dFR5cGUucmlnaHQgfSk7XG4gICAgZWxlbWVudC5pc1Jvb3QgPSB0cnVlO1xuICAgIGVsZW1lbnQucG9pbnRzID0gW3BvaW50XTtcbiAgICBlbGVtZW50LnR5cGUgPSAnbWluZG1hcCc7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdE1pbmQgPSAocG9pbnQ6IFBvaW50LCByaWdodE5vZGVDb3VudDogbnVtYmVyLCBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IGNyZWF0ZU1pbmRFbGVtZW50KCfmgJ3nu7Tlr7zlm74nLCA3MiwgUk9PVF9UT1BJQ19IRUlHSFQsIHsgbGF5b3V0IH0pO1xuICAgIHJvb3QucmlnaHROb2RlQ291bnQgPSByaWdodE5vZGVDb3VudDtcbiAgICByb290LmlzUm9vdCA9IHRydWU7XG4gICAgcm9vdC50eXBlID0gJ21pbmRtYXAnO1xuICAgIHJvb3QucG9pbnRzID0gW3BvaW50XTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFsxLCAxLCAxXS5tYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlTWluZEVsZW1lbnQoJ+aWsOW7uuiKgueCuScsIDU2LCBURVhUX0RFRkFVTFRfSEVJR0hULCB7fSk7XG4gICAgfSk7XG4gICAgcm9vdC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHJldHVybiByb290O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1pbmRFbGVtZW50ID0gKHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBvcHRpb25zOiBJbmhlcml0QXR0cmlidXRlKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudDogTWluZEVsZW1lbnQgPSB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9waWM6IGJ1aWxkVGV4dCh0ZXh0KVxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG9wdGlvbnM7XG4gICAgZm9yIChrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgICAgICAgIChuZXdFbGVtZW50IGFzIGFueSlba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJbmhlcml0QXR0cmlidXRlIHtcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHNoYXBlPzogTWluZEVsZW1lbnRTaGFwZTtcbiAgICBsYXlvdXQ/OiBNaW5kTGF5b3V0VHlwZTtcbiAgICBicmFuY2hDb2xvcj86IHN0cmluZztcbiAgICBicmFuY2hXaWR0aD86IG51bWJlcjtcbiAgICBicmFuY2hTaGFwZT86IEJyYW5jaFNoYXBlO1xufVxuXG5leHBvcnQgY29uc3QgSU5IRVJJVF9BVFRSSUJVVEVfS0VZUyA9IFtcbiAgICAnZmlsbCcsXG4gICAgJ3N0cm9rZUNvbG9yJyxcbiAgICAnc3Ryb2tlV2lkdGgnLFxuICAgICdzaGFwZScsXG4gICAgJ2xheW91dCcsXG4gICAgJ2JyYW5jaENvbG9yJyxcbiAgICAnYnJhbmNoV2lkdGgnLFxuICAgICdicmFuY2hTaGFwZSdcbl07XG4iXX0=
@@ -1,22 +0,0 @@
1
- import { PlaitElement } from '@plait/core';
2
- /**
3
- * 1. return new node height if height changed
4
- * 2. new height is effected by zoom
5
- */
6
- export const getNewNodeHeight = (board, element, newNodeDynamicWidth) => {
7
- const textManage = PlaitElement.getComponent(element).textManage;
8
- const { height } = textManage.getSize();
9
- textManage.updateWidth(newNodeDynamicWidth);
10
- const { height: newHeight } = textManage.getSize();
11
- if (!element.manualWidth) {
12
- textManage.updateWidth(0);
13
- }
14
- if (height !== newHeight) {
15
- return newHeight;
16
- }
17
- if (Math.abs(newHeight / board.viewport.zoom - element.height) > 2) {
18
- return newHeight;
19
- }
20
- return undefined;
21
- };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy13aWR0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL25vZGUvZHluYW1pYy13aWR0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXZEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLG1CQUEyQixFQUFFLEVBQUU7SUFDckcsTUFBTSxVQUFVLEdBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQXVCLENBQUMsVUFBVSxDQUFDO0lBQ3hGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1FBQ3RCLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDN0I7SUFFRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7UUFDdEIsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDaEUsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL25vZGUuY29tcG9uZW50JztcblxuLyoqXG4gKiAxLiByZXR1cm4gbmV3IG5vZGUgaGVpZ2h0IGlmIGhlaWdodCBjaGFuZ2VkXG4gKiAyLiBuZXcgaGVpZ2h0IGlzIGVmZmVjdGVkIGJ5IHpvb21cbiAqL1xuZXhwb3J0IGNvbnN0IGdldE5ld05vZGVIZWlnaHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCBuZXdOb2RlRHluYW1pY1dpZHRoOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB0ZXh0TWFuYWdlID0gKFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQpLnRleHRNYW5hZ2U7XG4gICAgY29uc3QgeyBoZWlnaHQgfSA9IHRleHRNYW5hZ2UuZ2V0U2l6ZSgpO1xuICAgIHRleHRNYW5hZ2UudXBkYXRlV2lkdGgobmV3Tm9kZUR5bmFtaWNXaWR0aCk7XG4gICAgY29uc3QgeyBoZWlnaHQ6IG5ld0hlaWdodCB9ID0gdGV4dE1hbmFnZS5nZXRTaXplKCk7XG4gICAgaWYgKCFlbGVtZW50Lm1hbnVhbFdpZHRoKSB7XG4gICAgICAgIHRleHRNYW5hZ2UudXBkYXRlV2lkdGgoMCk7XG4gICAgfVxuXG4gICAgaWYgKGhlaWdodCAhPT0gbmV3SGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiBuZXdIZWlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKE1hdGguYWJzKG5ld0hlaWdodCAvIGJvYXJkLnZpZXdwb3J0Lnpvb20gLSBlbGVtZW50LmhlaWdodCkgPiAyKSB7XG4gICAgICAgIHJldHVybiBuZXdIZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG4iXX0=