@plait/mind 0.2.2 → 0.3.1

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 (130) hide show
  1. package/{drawer/base/base.d.ts → base/base.drawer.d.ts} +1 -1
  2. package/{plugins/emoji → base}/emoji-base.component.d.ts +2 -2
  3. package/{plugins/emoji → base}/index.d.ts +1 -1
  4. package/draw/abstract.d.ts +2 -1
  5. package/draw/indented-link.d.ts +1 -1
  6. package/draw/link/logic-link.d.ts +1 -1
  7. package/draw/node.d.ts +5 -0
  8. package/draw/topic.d.ts +16 -0
  9. package/{plugins/emoji → drawer}/emoji.drawer.d.ts +3 -3
  10. package/drawer/quick-insert.drawer.d.ts +1 -1
  11. package/esm2020/base/base.drawer.mjs +17 -0
  12. package/esm2020/base/emoji-base.component.mjs +33 -0
  13. package/esm2020/base/index.mjs +3 -0
  14. package/esm2020/draw/abstract.mjs +8 -7
  15. package/esm2020/draw/indented-link.mjs +3 -3
  16. package/esm2020/draw/link/abstract-link.mjs +9 -15
  17. package/esm2020/draw/link/logic-link.mjs +9 -9
  18. package/esm2020/draw/node.mjs +21 -0
  19. package/esm2020/draw/topic.mjs +32 -0
  20. package/esm2020/drawer/emoji.drawer.mjs +73 -0
  21. package/esm2020/drawer/quick-insert.drawer.mjs +3 -3
  22. package/esm2020/interfaces/index.mjs +2 -2
  23. package/esm2020/interfaces/pointer.mjs +5 -0
  24. package/esm2020/mind.component.mjs +2 -2
  25. package/esm2020/mind.module.mjs +5 -5
  26. package/esm2020/node.component.mjs +11 -10
  27. package/esm2020/plugins/with-abstract-resize.board.mjs +12 -0
  28. package/esm2020/plugins/with-abstract-resize.mjs +107 -0
  29. package/esm2020/plugins/with-mind-create.mjs +85 -0
  30. package/esm2020/plugins/with-mind-extend.mjs +11 -0
  31. package/esm2020/plugins/with-mind.board.mjs +2 -0
  32. package/esm2020/plugins/with-mind.mjs +30 -16
  33. package/esm2020/plugins/with-node-dnd.mjs +162 -0
  34. package/esm2020/public-api.mjs +5 -3
  35. package/esm2020/transforms/abstract-node.mjs +3 -2
  36. package/esm2020/transforms/emoji.mjs +37 -0
  37. package/esm2020/transforms/index.mjs +7 -3
  38. package/esm2020/transforms/node.mjs +40 -33
  39. package/esm2020/utils/abstract/common.mjs +64 -31
  40. package/esm2020/utils/abstract/resize.mjs +3 -2
  41. package/esm2020/utils/clipboard.mjs +16 -18
  42. package/esm2020/utils/dnd/common.mjs +35 -0
  43. package/esm2020/utils/dnd/detector.mjs +268 -0
  44. package/esm2020/utils/dnd/draw.mjs +161 -0
  45. package/esm2020/utils/index.mjs +6 -6
  46. package/esm2020/utils/mind.mjs +6 -129
  47. package/esm2020/utils/node/adjust-node.mjs +49 -0
  48. package/esm2020/utils/node/common.mjs +6 -0
  49. package/esm2020/utils/node/create-node.mjs +61 -0
  50. package/esm2020/utils/node/index.mjs +4 -0
  51. package/esm2020/utils/point-placement.mjs +22 -2
  52. package/esm2020/utils/position/emoji.mjs +31 -0
  53. package/esm2020/utils/position/index.mjs +4 -0
  54. package/esm2020/utils/position/node.mjs +34 -0
  55. package/esm2020/utils/position/topic.mjs +14 -0
  56. package/esm2020/utils/space/emoji.mjs +19 -0
  57. package/esm2020/utils/space/layout-options.mjs +72 -0
  58. package/esm2020/utils/space/node-space.mjs +77 -0
  59. package/fesm2015/plait-mind.mjs +1464 -1631
  60. package/fesm2015/plait-mind.mjs.map +1 -1
  61. package/fesm2020/plait-mind.mjs +1486 -1642
  62. package/fesm2020/plait-mind.mjs.map +1 -1
  63. package/interfaces/index.d.ts +1 -1
  64. package/interfaces/pointer.d.ts +3 -0
  65. package/mind.module.d.ts +2 -2
  66. package/node.component.d.ts +3 -3
  67. package/package.json +3 -3
  68. package/{interfaces/abstract.d.ts → plugins/with-abstract-resize.board.d.ts} +2 -2
  69. package/plugins/with-mind-create.d.ts +11 -0
  70. package/plugins/with-mind-extend.d.ts +3 -0
  71. package/plugins/{with-extend-mind.d.ts → with-mind.board.d.ts} +4 -4
  72. package/plugins/with-mind.d.ts +1 -1
  73. package/public-api.d.ts +4 -2
  74. package/styles/styles.scss +5 -2
  75. package/transforms/abstract-node.d.ts +1 -1
  76. package/transforms/emoji.d.ts +6 -0
  77. package/transforms/index.d.ts +3 -0
  78. package/transforms/node.d.ts +5 -5
  79. package/utils/abstract/common.d.ts +19 -4
  80. package/utils/abstract/resize.d.ts +2 -1
  81. package/utils/dnd/common.d.ts +7 -0
  82. package/utils/dnd/detector.d.ts +31 -0
  83. package/utils/dnd/draw.d.ts +9 -0
  84. package/utils/index.d.ts +5 -5
  85. package/utils/mind.d.ts +3 -22
  86. package/utils/node/adjust-node.d.ts +5 -0
  87. package/utils/{node.d.ts → node/common.d.ts} +1 -1
  88. package/utils/node/create-node.d.ts +14 -0
  89. package/utils/node/index.d.ts +3 -0
  90. package/utils/point-placement.d.ts +8 -1
  91. package/utils/position/emoji.d.ts +7 -0
  92. package/utils/position/index.d.ts +3 -0
  93. package/utils/position/node.d.ts +12 -0
  94. package/utils/position/topic.d.ts +16 -0
  95. package/utils/space/emoji.d.ts +7 -0
  96. package/{layout-option.d.ts → utils/space/layout-options.d.ts} +1 -1
  97. package/utils/{node-space.d.ts → space/node-space.d.ts} +4 -4
  98. package/draw/link.d.ts +0 -3
  99. package/draw/richtext.d.ts +0 -15
  100. package/draw/shape.d.ts +0 -3
  101. package/esm2020/draw/link.mjs +0 -160
  102. package/esm2020/draw/richtext.mjs +0 -39
  103. package/esm2020/draw/shape.mjs +0 -18
  104. package/esm2020/drawer/base/base.mjs +0 -17
  105. package/esm2020/interfaces/abstract.mjs +0 -12
  106. package/esm2020/layout-option.mjs +0 -72
  107. package/esm2020/plugins/emoji/emoji-base.component.mjs +0 -33
  108. package/esm2020/plugins/emoji/emoji.drawer.mjs +0 -72
  109. package/esm2020/plugins/emoji/emoji.mjs +0 -47
  110. package/esm2020/plugins/emoji/index.mjs +0 -3
  111. package/esm2020/plugins/with-abstract.mjs +0 -106
  112. package/esm2020/plugins/with-dnd.mjs +0 -179
  113. package/esm2020/plugins/with-extend-mind.mjs +0 -11
  114. package/esm2020/utils/direction-corrector.mjs +0 -54
  115. package/esm2020/utils/direction-detector.mjs +0 -56
  116. package/esm2020/utils/dnd.mjs +0 -122
  117. package/esm2020/utils/draw-placeholder.mjs +0 -313
  118. package/esm2020/utils/drop-target-corrector.mjs +0 -87
  119. package/esm2020/utils/graph.mjs +0 -24
  120. package/esm2020/utils/node-space.mjs +0 -77
  121. package/esm2020/utils/node.mjs +0 -6
  122. package/plugins/emoji/emoji.d.ts +0 -11
  123. package/utils/direction-corrector.d.ts +0 -4
  124. package/utils/direction-detector.d.ts +0 -9
  125. package/utils/dnd.d.ts +0 -16
  126. package/utils/draw-placeholder.d.ts +0 -42
  127. package/utils/drop-target-corrector.d.ts +0 -9
  128. package/utils/graph.d.ts +0 -5
  129. /package/plugins/{with-abstract.d.ts → with-abstract-resize.d.ts} +0 -0
  130. /package/plugins/{with-dnd.d.ts → with-node-dnd.d.ts} +0 -0
@@ -1,26 +1,13 @@
1
1
  import { MindLayoutType } from '@plait/layouts';
2
- import { addSelectedElement, clearSelectedElement, idCreator, isNullOrUndefined, PlaitBoard, Transforms } from '@plait/core';
2
+ import { addSelectedElement, clearSelectedElement, idCreator, Transforms } from '@plait/core';
3
3
  import { Node } from 'slate';
4
4
  import { NODE_MIN_WIDTH } from '../constants/node-rule';
5
5
  import { MindElementShape } from '../interfaces';
6
6
  import { MindElement } from '../interfaces/element';
7
7
  import { getRootLayout } from './layout';
8
- import { TEXT_DEFAULT_HEIGHT, getSizeByText, ROOT_DEFAULT_HEIGHT } from '@plait/richtext';
9
- import { enterNodeEditing } from './node';
10
- import { deleteElementHandleAbstract } from './abstract/common';
11
- import { ROOT_TOPIC_FONT_SIZE, TOPIC_DEFAULT_MAX_WORD_COUNT } from '../constants/node-topic-style';
12
- import { MindTransforms } from '../transforms';
13
- export function findUpElement(element) {
14
- let branch;
15
- let root = element;
16
- let parent = MindElement.findParent(element);
17
- while (parent) {
18
- branch = root;
19
- root = parent;
20
- parent = MindElement.findParent(parent);
21
- }
22
- return { root, branch };
23
- }
8
+ import { TEXT_DEFAULT_HEIGHT } from '@plait/richtext';
9
+ import { enterNodeEditing } from './node/common';
10
+ import { createMindElement } from './node/create-node';
24
11
  export const getChildrenCount = (element) => {
25
12
  const count = element.children.reduce((p, c) => {
26
13
  return p + getChildrenCount(c);
@@ -64,48 +51,6 @@ export const copyNewNode = (node) => {
64
51
  }
65
52
  return newNode;
66
53
  };
67
- export const transformRootToNode = (board, node) => {
68
- const newNode = { ...node };
69
- delete newNode.isRoot;
70
- delete newNode.rightNodeCount;
71
- delete newNode.type;
72
- const text = Node.string(node.data.topic.children[0]) || ' ';
73
- const { width, height } = getSizeByText(text, PlaitBoard.getViewportContainer(board), TOPIC_DEFAULT_MAX_WORD_COUNT);
74
- newNode.width = Math.max(width, NODE_MIN_WIDTH);
75
- newNode.height = height;
76
- if (newNode.layout === MindLayoutType.standard) {
77
- delete newNode.layout;
78
- }
79
- return newNode;
80
- };
81
- export const transformAbstractToNode = (node) => {
82
- const newNode = { ...node };
83
- delete newNode.start;
84
- delete newNode.end;
85
- return newNode;
86
- };
87
- export const transformNodeToRoot = (board, node) => {
88
- const newElement = { ...node };
89
- let text = Node.string(newElement.data.topic);
90
- if (!text) {
91
- text = '思维导图';
92
- newElement.data.topic = { children: [{ text }] };
93
- }
94
- delete newElement?.strokeColor;
95
- delete newElement?.fill;
96
- delete newElement?.shape;
97
- delete newElement?.strokeWidth;
98
- const { width, height } = getSizeByText(text, PlaitBoard.getViewportContainer(board), TOPIC_DEFAULT_MAX_WORD_COUNT, ROOT_TOPIC_FONT_SIZE);
99
- newElement.width = Math.max(width, NODE_MIN_WIDTH);
100
- newElement.height = height;
101
- return {
102
- ...newElement,
103
- layout: newElement.layout ?? MindLayoutType.right,
104
- isCollapsed: false,
105
- isRoot: true,
106
- type: 'mindmap'
107
- };
108
- };
109
54
  export const extractNodesText = (node) => {
110
55
  let str = '';
111
56
  if (node) {
@@ -126,7 +71,7 @@ export const changeRightNodeCount = (board, parentPath, changeNumber) => {
126
71
  : _rightNodeCount + changeNumber
127
72
  }, parentPath);
128
73
  };
129
- export const shouldChangeRightNodeCount = (selectedElement) => {
74
+ export const isInRightBranchOfStandardLayout = (selectedElement) => {
130
75
  const parentElement = MindElement.findParent(selectedElement);
131
76
  if (parentElement) {
132
77
  const nodeIndex = parentElement.children.findIndex(item => item.id === selectedElement.id);
@@ -139,55 +84,6 @@ export const shouldChangeRightNodeCount = (selectedElement) => {
139
84
  }
140
85
  return false;
141
86
  };
142
- export const createDefaultMindMapElement = (point, rightNodeCount, layout) => {
143
- const root = createMindElement('思维导图', 72, ROOT_DEFAULT_HEIGHT, { shape: MindElementShape.roundRectangle, layout });
144
- root.rightNodeCount = rightNodeCount;
145
- root.isRoot = true;
146
- root.type = 'mindmap';
147
- root.points = [point];
148
- const children = [1, 1, 1].map(() => {
149
- return createMindElement('新建节点', 56, TEXT_DEFAULT_HEIGHT, { shape: MindElementShape.roundRectangle });
150
- });
151
- root.children = children;
152
- return root;
153
- };
154
- export const createMindElement = (text, width, height, options) => {
155
- const newElement = {
156
- id: idCreator(),
157
- data: {
158
- topic: { children: [{ text }] }
159
- },
160
- children: [],
161
- width,
162
- height,
163
- fill: options.fill,
164
- strokeColor: options.strokeColor,
165
- strokeWidth: options.strokeWidth,
166
- shape: options.shape
167
- };
168
- if (options.fill) {
169
- newElement.fill = options.fill;
170
- }
171
- if (options.strokeColor) {
172
- newElement.strokeColor = options.strokeColor;
173
- }
174
- if (!isNullOrUndefined(options.strokeWidth)) {
175
- newElement.strokeWidth = options.strokeWidth;
176
- }
177
- if (options.shape) {
178
- newElement.shape = options.shape;
179
- }
180
- if (options.layout) {
181
- newElement.layout = options.layout;
182
- }
183
- if (options.branchColor) {
184
- newElement.branchColor = options.branchColor;
185
- }
186
- if (!isNullOrUndefined(options.branchWidth)) {
187
- newElement.branchWidth = options.branchWidth;
188
- }
189
- return newElement;
190
- };
191
87
  // layoutLevel 用来表示插入兄弟节点还是子节点
192
88
  export const insertMindElement = (board, inheritNode, path) => {
193
89
  let fill, strokeColor, strokeWidth, shape = MindElementShape.roundRectangle;
@@ -212,25 +108,6 @@ export const findLastChild = (child) => {
212
108
  }
213
109
  return result;
214
110
  };
215
- export const deleteSelectedELements = (board, selectedElements) => {
216
- const deletableElements = getFirstLevelElement(selectedElements).reverse();
217
- const abstractRefs = deleteElementHandleAbstract(board, deletableElements);
218
- MindTransforms.setAbstractsByRefs(board, abstractRefs);
219
- //翻转,从下到上修改,防止找不到 path
220
- deletableElements
221
- .map(element => {
222
- const path = PlaitBoard.findPath(board, element);
223
- return () => {
224
- if (shouldChangeRightNodeCount(element)) {
225
- changeRightNodeCount(board, path.slice(0, 1), -1);
226
- }
227
- Transforms.removeNode(board, path);
228
- };
229
- })
230
- .forEach(action => {
231
- action();
232
- });
233
- };
234
111
  export const divideElementByParent = (elements) => {
235
112
  const abstractIncludedGroups = [];
236
113
  const parentElements = [];
@@ -247,4 +124,4 @@ export const divideElementByParent = (elements) => {
247
124
  }
248
125
  return { parentElements, abstractIncludedGroups };
249
126
  };
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL21pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxpQkFBaUIsRUFFakIsVUFBVSxFQUdWLFVBQVUsRUFDYixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBb0I7SUFDOUMsSUFBSSxNQUFNLENBQUM7SUFDWCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7SUFDbkIsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxPQUFPLE1BQU0sRUFBRTtRQUNYLE1B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VyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QzthQUFNO1lBQ0gsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO0tBQ0o7SUFDRCxPQUFPLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQge1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudCxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBpZENyZWF0b3IsXG4gICAgaXNOdWxsT3JVbmRlZmluZWQsXG4gICAgUGF0aCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQb2ludCxcbiAgICBUcmFuc2Zvcm1zXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBOT0RFX01JTl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXJ1bGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnRTaGFwZSwgTWluZE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IGdldFJvb3RMYXlvdXQgfSBmcm9tICcuL2xheW91dCc7XG5pbXBvcnQgeyBURVhUX0RFRkFVTFRfSEVJR0hULCBnZXRTaXplQnlUZXh0LCBST09UX0RFRkFVTFRfSEVJR0hUIH0gZnJvbSAnQHBsYWl0L3JpY2h0ZXh0JztcbmltcG9ydCB7IGVudGVyTm9kZUVkaXRpbmcgfSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IHsgZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0IH0gZnJvbSAnLi9hYnN0cmFjdC9jb21tb24nO1xuaW1wb3J0IHsgUk9PVF9UT1BJQ19GT05UX1NJWkUsIFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQgfSBmcm9tICcuLi9jb25zdGFudHMvbm9kZS10b3BpYy1zdHlsZSc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZFVwRWxlbWVudChlbGVtZW50OiBNaW5kRWxlbWVudCk6IHsgcm9vdDogTWluZEVsZW1lbnQ7IGJyYW5jaD86IE1pbmRFbGVtZW50IH0ge1xuICAgIGxldCBicmFuY2g7XG4gICAgbGV0IHJvb3QgPSBlbGVtZW50O1xuICAgIGxldCBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGVsZW1lbnQpO1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgYnJhbmNoID0gcm9vdDtcbiAgICAgICAgcm9vdCA9IHBhcmVudDtcbiAgICAgICAgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChwYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4geyByb290LCBicmFuY2ggfTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldENoaWxkcmVuQ291bnQgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBjb3VudDogbnVtYmVyID0gZWxlbWVudC5jaGlsZHJlbi5yZWR1Y2UoKHA6IG51bWJlciwgYzogTWluZEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHAgKyBnZXRDaGlsZHJlbkNvdW50KGMpO1xuICAgIH0sIDApO1xuICAgIHJldHVybiBjb3VudCArIGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hpbGRFbGVtZW50ID0gKG9yaWdpbjogTWluZEVsZW1lbnQsIGNoaWxkOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGxldCBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGNoaWxkKTtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChwYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RMZXZlbEVsZW1lbnQgPSAoZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBsZXQgcmVzdWx0OiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3QgaXNDaGlsZCA9IGVsZW1lbnRzLnNvbWUobm9kZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXNDaGlsZEVsZW1lbnQobm9kZSwgZWxlbWVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghaXNDaGlsZCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hpbGRSaWdodCA9IChub2RlOiBNaW5kTm9kZSwgY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgcmV0dXJuIG5vZGUueCA8IGNoaWxkLng7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGlsZFVwID0gKG5vZGU6IE1pbmROb2RlLCBjaGlsZDogTWluZE5vZGUpID0+IHtcbiAgICByZXR1cm4gbm9kZS55ID4gY2hpbGQueTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5TmV3Tm9kZSA9IChub2RlOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IG5ld05vZGU6IE1pbmRFbGVtZW50ID0geyAuLi5ub2RlIH07XG4gICAgbmV3Tm9kZS5pZCA9IGlkQ3JlYXRvcigpO1xuICAgIG5ld05vZGUuY2hpbGRyZW4gPSBbXTtcblxuICAgIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgbmV3Tm9kZS5jaGlsZHJlbi5wdXNoKGNvcHlOZXdOb2RlKGNoaWxkTm9kZSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Sb290VG9Ob2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBub2RlOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IG5ld05vZGU6IE1pbmRFbGVtZW50ID0geyAuLi5ub2RlIH07XG4gICAgZGVsZXRlIG5ld05vZGUuaXNSb290O1xuICAgIGRlbGV0ZSBuZXdOb2RlLnJpZ2h0Tm9kZUNvdW50O1xuICAgIGRlbGV0ZSBuZXdOb2RlLnR5cGU7XG5cbiAgICBjb25zdCB0ZXh0ID0gTm9kZS5zdHJpbmcobm9kZS5kYXRhLnRvcGljLmNoaWxkcmVuWzBdKSB8fCAnICc7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRTaXplQnlUZXh0KHRleHQsIFBsYWl0Qm9hcmQuZ2V0Vmlld3BvcnRDb250YWluZXIoYm9hcmQpLCBUT1BJQ19ERUZBVUxUX01BWF9XT1JEX0NPVU5UKTtcblxuICAgIG5ld05vZGUud2lkdGggPSBNYXRoLm1heCh3aWR0aCwgTk9ERV9NSU5fV0lEVEgpO1xuICAgIG5ld05vZGUuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgaWYgKG5ld05vZGUubGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5zdGFuZGFyZCkge1xuICAgICAgICBkZWxldGUgbmV3Tm9kZS5sYXlvdXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQWJzdHJhY3RUb05vZGUgPSAobm9kZTogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBuZXdOb2RlOiBNaW5kRWxlbWVudCA9IHsgLi4ubm9kZSB9O1xuICAgIGRlbGV0ZSBuZXdOb2RlLnN0YXJ0O1xuICAgIGRlbGV0ZSBuZXdOb2RlLmVuZDtcblxuICAgIHJldHVybiBuZXdOb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybU5vZGVUb1Jvb3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmRFbGVtZW50KTogTWluZEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7IC4uLm5vZGUgfTtcbiAgICBsZXQgdGV4dCA9IE5vZGUuc3RyaW5nKG5ld0VsZW1lbnQuZGF0YS50b3BpYyk7XG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgdGV4dCA9ICfmgJ3nu7Tlr7zlm74nO1xuICAgICAgICBuZXdFbGVtZW50LmRhdGEudG9waWMgPSB7IGNoaWxkcmVuOiBbeyB0ZXh0IH1dIH07XG4gICAgfVxuXG4gICAgZGVsZXRlIG5ld0VsZW1lbnQ/LnN0cm9rZUNvbG9yO1xuICAgIGRlbGV0ZSBuZXdFbGVtZW50Py5maWxsO1xuICAgIGRlbGV0ZSBuZXdFbGVtZW50Py5zaGFwZTtcbiAgICBkZWxldGUgbmV3RWxlbWVudD8uc3Ryb2tlV2lkdGg7XG5cbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFNpemVCeVRleHQoXG4gICAgICAgIHRleHQsXG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Vmlld3BvcnRDb250YWluZXIoYm9hcmQpLFxuICAgICAgICBUT1BJQ19ERUZBVUxUX01BWF9XT1JEX0NPVU5ULFxuICAgICAgICBST09UX1RPUElDX0ZPTlRfU0laRVxuICAgICk7XG4gICAgbmV3RWxlbWVudC53aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBOT0RFX01JTl9XSURUSCk7XG4gICAgbmV3RWxlbWVudC5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdFbGVtZW50LFxuICAgICAgICBsYXlvdXQ6IG5ld0VsZW1lbnQubGF5b3V0ID8/IE1pbmRMYXlvdXRUeXBlLnJpZ2h0LFxuICAgICAgICBpc0NvbGxhcHNlZDogZmFsc2UsXG4gICAgICAgIGlzUm9vdDogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ21pbmRtYXAnXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0Tm9kZXNUZXh0ID0gKG5vZGU6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGlmIChub2RlKSB7XG4gICAgICAgIHN0ciArPSBOb2RlLnN0cmluZyhub2RlLmRhdGEudG9waWMuY2hpbGRyZW5bMF0pICsgJyAnO1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBzdHIgKz0gZXh0cmFjdE5vZGVzVGV4dChjaGlsZE5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59O1xuXG5leHBvcnQgY29uc3QgY2hhbmdlUmlnaHROb2RlQ291bnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhcmVudFBhdGg6IFBhdGgsIGNoYW5nZU51bWJlcjogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgX3JpZ2h0Tm9kZUNvdW50ID0gYm9hcmQuY2hpbGRyZW5bcGFyZW50UGF0aFswXV0ucmlnaHROb2RlQ291bnQ7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKFxuICAgICAgICBib2FyZCxcbiAgICAgICAge1xuICAgICAgICAgICAgcmlnaHROb2RlQ291bnQ6XG4gICAgICAgICAgICAgICAgY2hhbmdlTnVtYmVyID49IDBcbiAgICAgICAgICAgICAgICAgICAgPyBfcmlnaHROb2RlQ291bnQhICsgY2hhbmdlTnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIDogX3JpZ2h0Tm9kZUNvdW50ISArIGNoYW5nZU51bWJlciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgIDogX3JpZ2h0Tm9kZUNvdW50ISArIGNoYW5nZU51bWJlclxuICAgICAgICB9LFxuICAgICAgICBwYXJlbnRQYXRoXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91bGRDaGFuZ2VSaWdodE5vZGVDb3VudCA9IChzZWxlY3RlZEVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoc2VsZWN0ZWRFbGVtZW50KTtcbiAgICBpZiAocGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlSW5kZXg6IG51bWJlciA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW4uZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gc2VsZWN0ZWRFbGVtZW50LmlkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50RWxlbWVudC5pc1Jvb3QgJiZcbiAgICAgICAgICAgIGdldFJvb3RMYXlvdXQocGFyZW50RWxlbWVudCkgPT09IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkICYmXG4gICAgICAgICAgICBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50ICYmXG4gICAgICAgICAgICBub2RlSW5kZXggPD0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCAtIDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdE1pbmRNYXBFbGVtZW50ID0gKHBvaW50OiBQb2ludCwgcmlnaHROb2RlQ291bnQ6IG51bWJlciwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGNvbnN0IHJvb3QgPSBjcmVhdGVNaW5kRWxlbWVudCgn5oCd57u05a+85Zu+JywgNzIsIFJPT1RfREVGQVVMVF9IRUlHSFQsIHsgc2hhcGU6IE1pbmRFbGVtZW50U2hhcGUucm91bmRSZWN0YW5nbGUsIGxheW91dCB9KTtcbiAgICByb290LnJpZ2h0Tm9kZUNvdW50ID0gcmlnaHROb2RlQ291bnQ7XG4gICAgcm9vdC5pc1Jvb3QgPSB0cnVlO1xuICAgIHJvb3QudHlwZSA9ICdtaW5kbWFwJztcbiAgICByb290LnBvaW50cyA9IFtwb2ludF07XG4gICAgY29uc3QgY2hpbGRyZW4gPSBbMSwgMSwgMV0ubWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU1pbmRFbGVtZW50KCfmlrDlu7roioLngrknLCA1NiwgVEVYVF9ERUZBVUxUX0hFSUdIVCwgeyBzaGFwZTogTWluZEVsZW1lbnRTaGFwZS5yb3VuZFJlY3RhbmdsZSB9KTtcbiAgICB9KTtcbiAgICByb290LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgcmV0dXJuIHJvb3Q7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTWluZEVsZW1lbnQgPSAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHdpZHRoOiBudW1iZXIsXG4gICAgaGVpZ2h0OiBudW1iZXIsXG4gICAgb3B0aW9uczoge1xuICAgICAgICBmaWxsPzogc3RyaW5nO1xuICAgICAgICBzdHJva2VDb2xvcj86IHN0cmluZztcbiAgICAgICAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gICAgICAgIHNoYXBlPzogTWluZEVsZW1lbnRTaGFwZTtcbiAgICAgICAgbGF5b3V0PzogTWluZExheW91dFR5cGU7XG4gICAgICAgIGJyYW5jaENvbG9yPzogc3RyaW5nO1xuICAgICAgICBicmFuY2hXaWR0aD86IG51bWJlcjtcbiAgICB9XG4pID0+IHtcbiAgICBjb25zdCBuZXdFbGVtZW50OiBNaW5kRWxlbWVudCA9IHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0b3BpYzogeyBjaGlsZHJlbjogW3sgdGV4dCB9XSB9XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgZmlsbDogb3B0aW9ucy5maWxsLFxuICAgICAgICBzdHJva2VDb2xvcjogb3B0aW9ucy5zdHJva2VDb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IG9wdGlvbnMuc3Ryb2tlV2lkdGgsXG4gICAgICAgIHNoYXBlOiBvcHRpb25zLnNoYXBlXG4gICAgfTtcbiAgICBpZiAob3B0aW9ucy5maWxsKSB7XG4gICAgICAgIG5ld0VsZW1lbnQuZmlsbCA9IG9wdGlvbnMuZmlsbDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgbmV3RWxlbWVudC5zdHJva2VDb2xvciA9IG9wdGlvbnMuc3Ryb2tlQ29sb3I7XG4gICAgfVxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy5zdHJva2VXaWR0aCkpIHtcbiAgICAgICAgbmV3RWxlbWVudC5zdHJva2VXaWR0aCA9IG9wdGlvbnMuc3Ryb2tlV2lkdGg7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNoYXBlKSB7XG4gICAgICAgIG5ld0VsZW1lbnQuc2hhcGUgPSBvcHRpb25zLnNoYXBlO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sYXlvdXQpIHtcbiAgICAgICAgbmV3RWxlbWVudC5sYXlvdXQgPSBvcHRpb25zLmxheW91dDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYnJhbmNoQ29sb3IpIHtcbiAgICAgICAgbmV3RWxlbWVudC5icmFuY2hDb2xvciA9IG9wdGlvbnMuYnJhbmNoQ29sb3I7XG4gICAgfVxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy5icmFuY2hXaWR0aCkpIHtcbiAgICAgICAgbmV3RWxlbWVudC5icmFuY2hXaWR0aCA9IG9wdGlvbnMuYnJhbmNoV2lkdGg7XG4gICAgfVxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuLy8gbGF5b3V0TGV2ZWwg55So5p2l6KGo56S65o+S5YWl5YWE5byf6IqC54K56L+Y5piv5a2Q6IqC54K5XG5leHBvcnQgY29uc3QgaW5zZXJ0TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGluaGVyaXROb2RlOiBNaW5kRWxlbWVudCwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGxldCBmaWxsLFxuICAgICAgICBzdHJva2VDb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHNoYXBlID0gTWluZEVsZW1lbnRTaGFwZS5yb3VuZFJlY3RhbmdsZTtcbiAgICBpZiAoIWluaGVyaXROb2RlLmlzUm9vdCkge1xuICAgICAgICBmaWxsID0gaW5oZXJpdE5vZGUuZmlsbDtcbiAgICAgICAgc3Ryb2tlQ29sb3IgPSBpbmhlcml0Tm9kZS5zdHJva2VDb2xvcjtcbiAgICAgICAgc3Ryb2tlV2lkdGggPSBpbmhlcml0Tm9kZS5zdHJva2VXaWR0aDtcbiAgICB9XG5cbiAgICBzaGFwZSA9IGluaGVyaXROb2RlLnNoYXBlIGFzIE1pbmRFbGVtZW50U2hhcGU7XG5cbiAgICBjb25zdCBuZXdFbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJycsIE5PREVfTUlOX1dJRFRILCBURVhUX0RFRkFVTFRfSEVJR0hULCB7IGZpbGwsIHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCwgc2hhcGUgfSk7XG5cbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG5ld0VsZW1lbnQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlbnRlck5vZGVFZGl0aW5nKG5ld0VsZW1lbnQpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRMYXN0Q2hpbGQgPSAoY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IGNoaWxkO1xuICAgIHdoaWxlIChyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jaGlsZHJlbltyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlU2VsZWN0ZWRFTGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0ZWRFbGVtZW50czogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGRlbGV0YWJsZUVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQoc2VsZWN0ZWRFbGVtZW50cykucmV2ZXJzZSgpO1xuXG4gICAgY29uc3QgYWJzdHJhY3RSZWZzID0gZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0KGJvYXJkLCBkZWxldGFibGVFbGVtZW50cyk7XG4gICAgTWluZFRyYW5zZm9ybXMuc2V0QWJzdHJhY3RzQnlSZWZzKGJvYXJkLCBhYnN0cmFjdFJlZnMpO1xuXG4gICAgLy/nv7vovazvvIzku47kuIvliLDkuIrkv67mlLnvvIzpmLLmraLmib7kuI3liLAgcGF0aFxuICAgIGRlbGV0YWJsZUVsZW1lbnRzXG4gICAgICAgIC5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGFuZ2VSaWdodE5vZGVDb3VudChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VSaWdodE5vZGVDb3VudChib2FyZCwgcGF0aC5zbGljZSgwLCAxKSwgLTEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGUoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgICAgICAgIGFjdGlvbigpO1xuICAgICAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkaXZpZGVFbGVtZW50QnlQYXJlbnQgPSAoZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzID0gW107XG4gICAgY29uc3QgcGFyZW50RWxlbWVudHM6IE1pbmRFbGVtZW50W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnRzW2ldKTtcbiAgICAgICAgY29uc3QgcGFyZW50SW5kZXggPSBwYXJlbnRFbGVtZW50cy5pbmRleE9mKHBhcmVudCk7XG4gICAgICAgIGlmIChwYXJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgIGFic3RyYWN0SW5jbHVkZWRHcm91cHMucHVzaChbZWxlbWVudHNbaV1dKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFic3RyYWN0SW5jbHVkZWRHcm91cHNbcGFyZW50SW5kZXhdLnB1c2goZWxlbWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHBhcmVudEVsZW1lbnRzLCBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzIH07XG59O1xuIl19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL21pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLFNBQVMsRUFHVCxVQUFVLEVBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEtBQUssR0FBVyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFjLEVBQUUsRUFBRTtRQUN4RSxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDTixPQUFPLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcs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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QzthQUFNO1lBQ0gsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO0tBQ0o7SUFDRCxPQUFPLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQge1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudCxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBpZENyZWF0b3IsXG4gICAgUGF0aCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFRyYW5zZm9ybXNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE5PREVfTUlOX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzL25vZGUtcnVsZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudFNoYXBlLCBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0Um9vdExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcbmltcG9ydCB7IFRFWFRfREVGQVVMVF9IRUlHSFQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgZW50ZXJOb2RlRWRpdGluZyB9IGZyb20gJy4vbm9kZS9jb21tb24nO1xuaW1wb3J0IHsgY3JlYXRlTWluZEVsZW1lbnQgfSBmcm9tICcuL25vZGUvY3JlYXRlLW5vZGUnO1xuXG5leHBvcnQgY29uc3QgZ2V0Q2hpbGRyZW5Db3VudCA9IChlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGNvdW50OiBudW1iZXIgPSBlbGVtZW50LmNoaWxkcmVuLnJlZHVjZSgocDogbnVtYmVyLCBjOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gcCArIGdldENoaWxkcmVuQ291bnQoYyk7XG4gICAgfSwgMCk7XG4gICAgcmV0dXJuIGNvdW50ICsgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGlsZEVsZW1lbnQgPSAob3JpZ2luOiBNaW5kRWxlbWVudCwgY2hpbGQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgbGV0IHBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoY2hpbGQpO1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKHBhcmVudCA9PT0gb3JpZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KHBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaXJzdExldmVsRWxlbWVudCA9IChlbGVtZW50czogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IE1pbmRFbGVtZW50W10gPSBbXTtcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBpc0NoaWxkID0gZWxlbWVudHMuc29tZShub2RlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpc0NoaWxkRWxlbWVudChub2RlLCBlbGVtZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFpc0NoaWxkKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGlsZFJpZ2h0ID0gKG5vZGU6IE1pbmROb2RlLCBjaGlsZDogTWluZE5vZGUpID0+IHtcbiAgICByZXR1cm4gbm9kZS54IDwgY2hpbGQueDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkVXAgPSAobm9kZTogTWluZE5vZGUsIGNoaWxkOiBNaW5kTm9kZSkgPT4ge1xuICAgIHJldHVybiBub2RlLnkgPiBjaGlsZC55O1xufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlOZXdOb2RlID0gKG5vZGU6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgbmV3Tm9kZTogTWluZEVsZW1lbnQgPSB7IC4uLm5vZGUgfTtcbiAgICBuZXdOb2RlLmlkID0gaWRDcmVhdG9yKCk7XG4gICAgbmV3Tm9kZS5jaGlsZHJlbiA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZE5vZGUgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBuZXdOb2RlLmNoaWxkcmVuLnB1c2goY29weU5ld05vZGUoY2hpbGROb2RlKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXdOb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3ROb2Rlc1RleHQgPSAobm9kZTogTWluZEVsZW1lbnQpID0+IHtcbiAgICBsZXQgc3RyID0gJyc7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgICAgc3RyICs9IE5vZGUuc3RyaW5nKG5vZGUuZGF0YS50b3BpYy5jaGlsZHJlblswXSkgKyAnICc7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHN0ciArPSBleHRyYWN0Tm9kZXNUZXh0KGNoaWxkTm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VSaWdodE5vZGVDb3VudCA9IChib2FyZDogUGxhaXRCb2FyZCwgcGFyZW50UGF0aDogUGF0aCwgY2hhbmdlTnVtYmVyOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBfcmlnaHROb2RlQ291bnQgPSBib2FyZC5jaGlsZHJlbltwYXJlbnRQYXRoWzBdXS5yaWdodE5vZGVDb3VudDtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoXG4gICAgICAgIGJvYXJkLFxuICAgICAgICB7XG4gICAgICAgICAgICByaWdodE5vZGVDb3VudDpcbiAgICAgICAgICAgICAgICBjaGFuZ2VOdW1iZXIgPj0gMFxuICAgICAgICAgICAgICAgICAgICA/IF9yaWdodE5vZGVDb3VudCEgKyBjaGFuZ2VOdW1iZXJcbiAgICAgICAgICAgICAgICAgICAgOiBfcmlnaHROb2RlQ291bnQhICsgY2hhbmdlTnVtYmVyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiBfcmlnaHROb2RlQ291bnQhICsgY2hhbmdlTnVtYmVyXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmVudFBhdGhcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSW5SaWdodEJyYW5jaE9mU3RhbmRhcmRMYXlvdXQgPSAoc2VsZWN0ZWRFbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KHNlbGVjdGVkRWxlbWVudCk7XG4gICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZUluZGV4OiBudW1iZXIgPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHNlbGVjdGVkRWxlbWVudC5pZCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuaXNSb290ICYmXG4gICAgICAgICAgICBnZXRSb290TGF5b3V0KHBhcmVudEVsZW1lbnQpID09PSBNaW5kTGF5b3V0VHlwZS5zdGFuZGFyZCAmJlxuICAgICAgICAgICAgcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCAmJlxuICAgICAgICAgICAgbm9kZUluZGV4IDw9IHBhcmVudEVsZW1lbnQucmlnaHROb2RlQ291bnQgLSAxXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gbGF5b3V0TGV2ZWwg55So5p2l6KGo56S65o+S5YWl5YWE5byf6IqC54K56L+Y5piv5a2Q6IqC54K5XG5leHBvcnQgY29uc3QgaW5zZXJ0TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGluaGVyaXROb2RlOiBNaW5kRWxlbWVudCwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGxldCBmaWxsLFxuICAgICAgICBzdHJva2VDb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHNoYXBlID0gTWluZEVsZW1lbnRTaGFwZS5yb3VuZFJlY3RhbmdsZTtcbiAgICBpZiAoIWluaGVyaXROb2RlLmlzUm9vdCkge1xuICAgICAgICBmaWxsID0gaW5oZXJpdE5vZGUuZmlsbDtcbiAgICAgICAgc3Ryb2tlQ29sb3IgPSBpbmhlcml0Tm9kZS5zdHJva2VDb2xvcjtcbiAgICAgICAgc3Ryb2tlV2lkdGggPSBpbmhlcml0Tm9kZS5zdHJva2VXaWR0aDtcbiAgICB9XG5cbiAgICBzaGFwZSA9IGluaGVyaXROb2RlLnNoYXBlIGFzIE1pbmRFbGVtZW50U2hhcGU7XG5cbiAgICBjb25zdCBuZXdFbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJycsIE5PREVfTUlOX1dJRFRILCBURVhUX0RFRkFVTFRfSEVJR0hULCB7IGZpbGwsIHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCwgc2hhcGUgfSk7XG5cbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG5ld0VsZW1lbnQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlbnRlck5vZGVFZGl0aW5nKG5ld0VsZW1lbnQpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRMYXN0Q2hpbGQgPSAoY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IGNoaWxkO1xuICAgIHdoaWxlIChyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jaGlsZHJlbltyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGl2aWRlRWxlbWVudEJ5UGFyZW50ID0gKGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3QgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyA9IFtdO1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50c1tpXSk7XG4gICAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gcGFyZW50RWxlbWVudHMuaW5kZXhPZihwYXJlbnQpO1xuICAgICAgICBpZiAocGFyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBwYXJlbnRFbGVtZW50cy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzLnB1c2goW2VsZW1lbnRzW2ldXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzW3BhcmVudEluZGV4XS5wdXNoKGVsZW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBwYXJlbnRFbGVtZW50cywgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyB9O1xufTtcbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { getSizeByText } from '@plait/richtext';
3
+ import { Node } from 'slate';
4
+ import { ROOT_TOPIC_FONT_SIZE, TOPIC_DEFAULT_MAX_WORD_COUNT } from '../../constants/node-topic-style';
5
+ import { NODE_MIN_WIDTH } from '../../constants/node-rule';
6
+ import { MindLayoutType } from '@plait/layouts';
7
+ export const adjustRootToNode = (board, node) => {
8
+ const newNode = { ...node };
9
+ delete newNode.isRoot;
10
+ delete newNode.rightNodeCount;
11
+ delete newNode.type;
12
+ const text = Node.string(node.data.topic.children[0]) || ' ';
13
+ const { width, height } = getSizeByText(text, PlaitBoard.getViewportContainer(board), TOPIC_DEFAULT_MAX_WORD_COUNT);
14
+ newNode.width = Math.max(width, NODE_MIN_WIDTH);
15
+ newNode.height = height;
16
+ if (newNode.layout === MindLayoutType.standard) {
17
+ delete newNode.layout;
18
+ }
19
+ return newNode;
20
+ };
21
+ export const adjustAbstractToNode = (node) => {
22
+ const newNode = { ...node };
23
+ delete newNode.start;
24
+ delete newNode.end;
25
+ return newNode;
26
+ };
27
+ export const adjustNodeToRoot = (board, node) => {
28
+ const newElement = { ...node };
29
+ let text = Node.string(newElement.data.topic);
30
+ if (!text) {
31
+ text = '思维导图';
32
+ newElement.data.topic = { children: [{ text }] };
33
+ }
34
+ delete newElement?.strokeColor;
35
+ delete newElement?.fill;
36
+ delete newElement?.shape;
37
+ delete newElement?.strokeWidth;
38
+ const { width, height } = getSizeByText(text, PlaitBoard.getViewportContainer(board), TOPIC_DEFAULT_MAX_WORD_COUNT, ROOT_TOPIC_FONT_SIZE);
39
+ newElement.width = Math.max(width, NODE_MIN_WIDTH);
40
+ newElement.height = height;
41
+ return {
42
+ ...newElement,
43
+ layout: newElement.layout ?? MindLayoutType.right,
44
+ isCollapsed: false,
45
+ isRoot: true,
46
+ type: 'mindmap'
47
+ };
48
+ };
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRqdXN0LW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2FkanVzdC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBaUIsRUFBRSxFQUFFO0lBQ3JFLE1BQU0sT0FBTyxHQUFnQixFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3RCLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUM5QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFFcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDN0QsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBRXBILE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFFeEIsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxRQUFRLEVBQUU7UUFDNUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ3pCO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFpQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxPQUFPLEdBQWdCLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDckIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRW5CLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBRSxJQUFpQixFQUFlLEVBQUU7SUFDbEYsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQy9CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1AsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNkLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7S0FDcEQ7SUFFRCxPQUFPLFVBQVUsRUFBRSxXQUFXLENBQUM7SUFDL0IsT0FBTyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ3hCLE9BQU8sVUFBVSxFQUFFLEtBQUssQ0FBQztJQUN6QixPQUFPLFVBQVUsRUFBRSxXQUFXLENBQUM7SUFFL0IsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQ25DLElBQUksRUFDSixVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQ3RDLDRCQUE0QixFQUM1QixvQkFBb0IsQ0FDdkIsQ0FBQztJQUNGLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbkQsVUFBVSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFFM0IsT0FBTztRQUNILEdBQUcsVUFBVTtRQUNiLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxLQUFLO1FBQ2pELFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osSUFBSSxFQUFFLFNBQVM7S0FDbEIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRTaXplQnlUZXh0IH0gZnJvbSAnQHBsYWl0L3JpY2h0ZXh0JztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBST09UX1RPUElDX0ZPTlRfU0laRSwgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlJztcbmltcG9ydCB7IE5PREVfTUlOX1dJRFRIIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vZGUtcnVsZSc7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcblxuZXhwb3J0IGNvbnN0IGFkanVzdFJvb3RUb05vZGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgbmV3Tm9kZTogTWluZEVsZW1lbnQgPSB7IC4uLm5vZGUgfTtcbiAgICBkZWxldGUgbmV3Tm9kZS5pc1Jvb3Q7XG4gICAgZGVsZXRlIG5ld05vZGUucmlnaHROb2RlQ291bnQ7XG4gICAgZGVsZXRlIG5ld05vZGUudHlwZTtcblxuICAgIGNvbnN0IHRleHQgPSBOb2RlLnN0cmluZyhub2RlLmRhdGEudG9waWMuY2hpbGRyZW5bMF0pIHx8ICcgJztcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFNpemVCeVRleHQodGV4dCwgUGxhaXRCb2FyZC5nZXRWaWV3cG9ydENvbnRhaW5lcihib2FyZCksIFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQpO1xuXG4gICAgbmV3Tm9kZS53aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBOT0RFX01JTl9XSURUSCk7XG4gICAgbmV3Tm9kZS5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICBpZiAobmV3Tm9kZS5sYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkKSB7XG4gICAgICAgIGRlbGV0ZSBuZXdOb2RlLmxheW91dDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGp1c3RBYnN0cmFjdFRvTm9kZSA9IChub2RlOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IG5ld05vZGU6IE1pbmRFbGVtZW50ID0geyAuLi5ub2RlIH07XG4gICAgZGVsZXRlIG5ld05vZGUuc3RhcnQ7XG4gICAgZGVsZXRlIG5ld05vZGUuZW5kO1xuXG4gICAgcmV0dXJuIG5ld05vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgYWRqdXN0Tm9kZVRvUm9vdCA9IChib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogTWluZEVsZW1lbnQpOiBNaW5kRWxlbWVudCA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHsgLi4ubm9kZSB9O1xuICAgIGxldCB0ZXh0ID0gTm9kZS5zdHJpbmcobmV3RWxlbWVudC5kYXRhLnRvcGljKTtcblxuICAgIGlmICghdGV4dCkge1xuICAgICAgICB0ZXh0ID0gJ+aAnee7tOWvvOWbvic7XG4gICAgICAgIG5ld0VsZW1lbnQuZGF0YS50b3BpYyA9IHsgY2hpbGRyZW46IFt7IHRleHQgfV0gfTtcbiAgICB9XG5cbiAgICBkZWxldGUgbmV3RWxlbWVudD8uc3Ryb2tlQ29sb3I7XG4gICAgZGVsZXRlIG5ld0VsZW1lbnQ/LmZpbGw7XG4gICAgZGVsZXRlIG5ld0VsZW1lbnQ/LnNoYXBlO1xuICAgIGRlbGV0ZSBuZXdFbGVtZW50Py5zdHJva2VXaWR0aDtcblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0U2l6ZUJ5VGV4dChcbiAgICAgICAgdGV4dCxcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRWaWV3cG9ydENvbnRhaW5lcihib2FyZCksXG4gICAgICAgIFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQsXG4gICAgICAgIFJPT1RfVE9QSUNfRk9OVF9TSVpFXG4gICAgKTtcbiAgICBuZXdFbGVtZW50LndpZHRoID0gTWF0aC5tYXgod2lkdGgsIE5PREVfTUlOX1dJRFRIKTtcbiAgICBuZXdFbGVtZW50LmhlaWdodCA9IGhlaWdodDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5ld0VsZW1lbnQsXG4gICAgICAgIGxheW91dDogbmV3RWxlbWVudC5sYXlvdXQgPz8gTWluZExheW91dFR5cGUucmlnaHQsXG4gICAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSxcbiAgICAgICAgaXNSb290OiB0cnVlLFxuICAgICAgICB0eXBlOiAnbWluZG1hcCdcbiAgICB9O1xufTtcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { PlaitElement } from '@plait/core';
2
+ export function enterNodeEditing(element) {
3
+ const component = PlaitElement.getComponent(element);
4
+ component.startEditText(false, false);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUkzQyxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDakQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQXNCLENBQUM7SUFDMUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS5jb21wb25lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW50ZXJOb2RlRWRpdGluZyhlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgY29tcG9uZW50LnN0YXJ0RWRpdFRleHQoZmFsc2UsIGZhbHNlKTtcbn1cbiJdfQ==
@@ -0,0 +1,61 @@
1
+ import { idCreator, isNullOrUndefined } from '@plait/core';
2
+ import { ROOT_DEFAULT_HEIGHT, TEXT_DEFAULT_HEIGHT } from '@plait/richtext';
3
+ import { MindLayoutType } from '@plait/layouts';
4
+ import { MindElementShape } from '../../interfaces/element';
5
+ import { adjustNodeToRoot } from './adjust-node';
6
+ export const createEmptyMind = (board, point) => {
7
+ const element = createMindElement('', 0, 0, { layout: MindLayoutType.right });
8
+ const rootElement = adjustNodeToRoot(board, element);
9
+ rootElement.points = [point];
10
+ return rootElement;
11
+ };
12
+ export const createDefaultMind = (point, rightNodeCount, layout) => {
13
+ const root = createMindElement('思维导图', 72, ROOT_DEFAULT_HEIGHT, { shape: MindElementShape.roundRectangle, 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, { shape: MindElementShape.roundRectangle });
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: { children: [{ text }] }
29
+ },
30
+ children: [],
31
+ width,
32
+ height,
33
+ fill: options.fill,
34
+ strokeColor: options.strokeColor,
35
+ strokeWidth: options.strokeWidth,
36
+ shape: options.shape
37
+ };
38
+ if (options.fill) {
39
+ newElement.fill = options.fill;
40
+ }
41
+ if (options.strokeColor) {
42
+ newElement.strokeColor = options.strokeColor;
43
+ }
44
+ if (!isNullOrUndefined(options.strokeWidth)) {
45
+ newElement.strokeWidth = options.strokeWidth;
46
+ }
47
+ if (options.shape) {
48
+ newElement.shape = options.shape;
49
+ }
50
+ if (options.layout) {
51
+ newElement.layout = options.layout;
52
+ }
53
+ if (options.branchColor) {
54
+ newElement.branchColor = options.branchColor;
55
+ }
56
+ if (!isNullOrUndefined(options.branchWidth)) {
57
+ newElement.branchWidth = options.branchWidth;
58
+ }
59
+ return newElement;
60
+ };
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2NyZWF0ZS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFZLEVBQUUsRUFBRTtJQUMvRCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RSxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBWSxFQUFFLGNBQXNCLEVBQUUsTUFBc0IsRUFBRSxFQUFFO0lBQzlGLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEgsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ2hDLE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FDN0IsSUFBWSxFQUNaLEtBQWEsRUFDYixNQUFjLEVBQ2QsT0FRQyxFQUNILEVBQUU7SUFDQSxNQUFNLFVBQVUsR0FBZ0I7UUFDNUIsRUFBRSxFQUFFLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRTtZQUNGLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtTQUNsQztRQUNELFFBQVEsRUFBRSxFQUFFO1FBQ1osS0FBSztRQUNMLE1BQU07UUFDTixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1FBQ2hDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztRQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7S0FDdkIsQ0FBQztJQUNGLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtRQUNkLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztLQUNsQztJQUNELElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUNyQixVQUFVLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7S0FDaEQ7SUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ3pDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUNoRDtJQUNELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUNmLFVBQVUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztLQUNwQztJQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNoQixVQUFVLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDdEM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7UUFDckIsVUFBVSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0tBQ2hEO0lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUN6QyxVQUFVLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7S0FDaEQ7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgaWRDcmVhdG9yLCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFJPT1RfREVGQVVMVF9IRUlHSFQsIFRFWFRfREVGQVVMVF9IRUlHSFQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBhZGp1c3ROb2RlVG9Sb290IH0gZnJvbSAnLi9hZGp1c3Qtbm9kZSc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFbXB0eU1pbmQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCgnJywgMCwgMCwgeyBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlLnJpZ2h0IH0pO1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gYWRqdXN0Tm9kZVRvUm9vdChib2FyZCwgZWxlbWVudCk7XG4gICAgcm9vdEVsZW1lbnQucG9pbnRzID0gW3BvaW50XTtcbiAgICByZXR1cm4gcm9vdEVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdE1pbmQgPSAocG9pbnQ6IFBvaW50LCByaWdodE5vZGVDb3VudDogbnVtYmVyLCBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IGNyZWF0ZU1pbmRFbGVtZW50KCfmgJ3nu7Tlr7zlm74nLCA3MiwgUk9PVF9ERUZBVUxUX0hFSUdIVCwgeyBzaGFwZTogTWluZEVsZW1lbnRTaGFwZS5yb3VuZFJlY3RhbmdsZSwgbGF5b3V0IH0pO1xuICAgIHJvb3QucmlnaHROb2RlQ291bnQgPSByaWdodE5vZGVDb3VudDtcbiAgICByb290LmlzUm9vdCA9IHRydWU7XG4gICAgcm9vdC50eXBlID0gJ21pbmRtYXAnO1xuICAgIHJvb3QucG9pbnRzID0gW3BvaW50XTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFsxLCAxLCAxXS5tYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlTWluZEVsZW1lbnQoJ+aWsOW7uuiKgueCuScsIDU2LCBURVhUX0RFRkFVTFRfSEVJR0hULCB7IHNoYXBlOiBNaW5kRWxlbWVudFNoYXBlLnJvdW5kUmVjdGFuZ2xlIH0pO1xuICAgIH0pO1xuICAgIHJvb3QuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICByZXR1cm4gcm9vdDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNaW5kRWxlbWVudCA9IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgd2lkdGg6IG51bWJlcixcbiAgICBoZWlnaHQ6IG51bWJlcixcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIGZpbGw/OiBzdHJpbmc7XG4gICAgICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgICAgICBzdHJva2VXaWR0aD86IG51bWJlcjtcbiAgICAgICAgc2hhcGU/OiBNaW5kRWxlbWVudFNoYXBlO1xuICAgICAgICBsYXlvdXQ/OiBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgYnJhbmNoQ29sb3I/OiBzdHJpbmc7XG4gICAgICAgIGJyYW5jaFdpZHRoPzogbnVtYmVyO1xuICAgIH1cbikgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQ6IE1pbmRFbGVtZW50ID0ge1xuICAgICAgICBpZDogaWRDcmVhdG9yKCksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRvcGljOiB7IGNoaWxkcmVuOiBbeyB0ZXh0IH1dIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBmaWxsOiBvcHRpb25zLmZpbGwsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBvcHRpb25zLnN0cm9rZUNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogb3B0aW9ucy5zdHJva2VXaWR0aCxcbiAgICAgICAgc2hhcGU6IG9wdGlvbnMuc2hhcGVcbiAgICB9O1xuICAgIGlmIChvcHRpb25zLmZpbGwpIHtcbiAgICAgICAgbmV3RWxlbWVudC5maWxsID0gb3B0aW9ucy5maWxsO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdHJva2VDb2xvcikge1xuICAgICAgICBuZXdFbGVtZW50LnN0cm9rZUNvbG9yID0gb3B0aW9ucy5zdHJva2VDb2xvcjtcbiAgICB9XG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChvcHRpb25zLnN0cm9rZVdpZHRoKSkge1xuICAgICAgICBuZXdFbGVtZW50LnN0cm9rZVdpZHRoID0gb3B0aW9ucy5zdHJva2VXaWR0aDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuc2hhcGUpIHtcbiAgICAgICAgbmV3RWxlbWVudC5zaGFwZSA9IG9wdGlvbnMuc2hhcGU7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxheW91dCkge1xuICAgICAgICBuZXdFbGVtZW50LmxheW91dCA9IG9wdGlvbnMubGF5b3V0O1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5icmFuY2hDb2xvcikge1xuICAgICAgICBuZXdFbGVtZW50LmJyYW5jaENvbG9yID0gb3B0aW9ucy5icmFuY2hDb2xvcjtcbiAgICB9XG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChvcHRpb25zLmJyYW5jaFdpZHRoKSkge1xuICAgICAgICBuZXdFbGVtZW50LmJyYW5jaFdpZHRoID0gb3B0aW9ucy5icmFuY2hXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59O1xuIl19
@@ -0,0 +1,4 @@
1
+ export * from './adjust-node';
2
+ export * from './create-node';
3
+ export * from './common';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hZGp1c3Qtbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1ub2RlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbiJdfQ==
@@ -17,6 +17,17 @@ export const getPointByPlacement = (client, placement) => {
17
17
  }
18
18
  return [x, y];
19
19
  };
20
+ export const getXDistanceBetweenPoint = (point1, point2, isHorizontalLayout) => {
21
+ if (isHorizontalLayout) {
22
+ return Math.abs(point1[0] - point2[0]);
23
+ }
24
+ else {
25
+ return Math.abs(point1[1] - point2[1]);
26
+ }
27
+ };
28
+ export const getYDistanceBetweenPoint = (point1, point2, isHorizontalLayout) => {
29
+ getXDistanceBetweenPoint(point1, point2, !isHorizontalLayout);
30
+ };
20
31
  export const getLayoutDirection = (node, isHorizontal) => {
21
32
  if (isHorizontal) {
22
33
  if (node.left) {
@@ -45,7 +56,7 @@ export const getLayoutDirection = (node, isHorizontal) => {
45
56
  // 下 -> 上:
46
57
  // 1. 终点 -> 起点/终点 -> 起点
47
58
  // 2. 加 -> 减
48
- export const movePoint = (point, distance, direction = LayoutDirection.right) => {
59
+ export const moveXOfPoint = (point, distance, direction = LayoutDirection.right) => {
49
60
  if (direction === LayoutDirection.left) {
50
61
  return [point[0] - distance, point[1]];
51
62
  }
@@ -57,6 +68,15 @@ export const movePoint = (point, distance, direction = LayoutDirection.right) =>
57
68
  }
58
69
  return [point[0] + distance, point[1]];
59
70
  };
71
+ export const moveYOfPoint = (point, distance, direction = LayoutDirection.right) => {
72
+ if (direction === LayoutDirection.bottom) {
73
+ return [point[0] + distance, point[1]];
74
+ }
75
+ if (direction === LayoutDirection.top) {
76
+ return [point[0] + distance, point[1]];
77
+ }
78
+ return [point[0], point[1] + distance];
79
+ };
60
80
  export const transformPlacement = (placement, direction) => {
61
81
  // to left
62
82
  if (direction === LayoutDirection.left) {
@@ -96,4 +116,4 @@ export const transformPlacement = (placement, direction) => {
96
116
  }
97
117
  }
98
118
  };
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQtcGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvcG9pbnQtcGxhY2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUF1QixFQUFFLFNBQXlCLEVBQVMsRUFBRTtJQUM3RixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFO1FBQzdDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsS0FBSyxFQUFFO1FBQzVDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7S0FDL0I7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDcEM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUNoQztJQUNELE9B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QUMsS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUU7WUFDM0MsUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztTQUNwQztRQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLEtBQUssRUFBRTtZQUM1QyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1NBQ3ZDO1FBQ0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMxQixTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0tBQzNCO0lBQ0QsUUFBUTtJQUNSLElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFO1lBQzNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7U0FDeEM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztTQUMzQztLQUNKO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IExheW91dERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGF5b3V0JztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRCeVBsYWNlbWVudCA9IChjbGllbnQ6IFJlY3RhbmdsZUNsaWVudCwgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCk6IFBvaW50ID0+IHtcbiAgICBsZXQgeCA9IGNsaWVudC54O1xuICAgIGxldCB5ID0gY2xpZW50Lnk7XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIpIHtcbiAgICAgICAgeCA9IGNsaWVudC54ICsgY2xpZW50LndpZHRoIC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCkge1xuICAgICAgICB4ID0gY2xpZW50LnggKyBjbGllbnQud2lkdGg7XG4gICAgfVxuICAgIGlmIChwbGFjZW1lbnRbMV0gPT09IFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZSkge1xuICAgICAgICB5ID0gY2xpZW50LnkgKyBjbGllbnQuaGVpZ2h0IC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgIHkgPSBjbGllbnQueSArIGNsaWVudC5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBbeCwgeV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5b3V0RGlyZWN0aW9uID0gKG5vZGU6IE1pbmROb2RlLCBpc0hvcml6b250YWw6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgIGlmIChub2RlLmxlZnQpIHtcbiAgICAgICAgICAgIHJldHVybiBMYXlvdXREaXJlY3Rpb24ubGVmdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBMYXlvdXREaXJlY3Rpb24ucmlnaHQ7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobm9kZS51cCkge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dERpcmVjdGlvbi50b3A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTGF5b3V0RGlyZWN0aW9uLmJvdHRvbTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbi8vIOS7peWPs+S4uuWfuuWHhlxuLy8g5Y+zIC0+IOW3pjpcbi8vIDEuIOe7iOeCuSAtPiDotbfngrkv6LW354K5IC0+IOe7iOeCuVxuLy8gMi4g5YqgIC0+IOWHj1xuXG4vLyDmsLTlubMgLT4g5Z6C55u0OlxuLy8gMS4g6LW354K5L+e7iOeCuSAtPiDnurXovbRcbi8vIDIuIOWKoOWHjyAtPiDnurXovbRcblxuLy8g5LiLIC0+IOS4ijpcbi8vIDEuIOe7iOeCuSAtPiDotbfngrkv57uI54K5IC0+IOi1t+eCuVxuLy8gMi4g5YqgIC0+IOWHj1xuZXhwb3J0IGNvbnN0IG1vdmVQb2ludCA9IChwb2ludDogUG9pbnQsIGRpc3RhbmNlOiBudW1iZXIsIGRpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLnJpZ2h0KTogUG9pbnQgPT4ge1xuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5sZWZ0KSB7XG4gICAgICAgIHJldHVybiBbcG9pbnRbMF0gLSBkaXN0YW5jZSwgcG9pbnRbMV1dO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24uYm90dG9tKSB7XG4gICAgICAgIHJldHVybiBbcG9pbnRbMF0sIHBvaW50WzFdICsgZGlzdGFuY2VdO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24udG9wKSB7XG4gICAgICAgIHJldHVybiBbcG9pbnRbMF0sIHBvaW50WzFdIC0gZGlzdGFuY2VdO1xuICAgIH1cbiAgICByZXR1cm4gW3BvaW50WzBdICsgZGlzdGFuY2UsIHBvaW50WzFdXTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1QbGFjZW1lbnQgPSAocGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCwgZGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb24pID0+IHtcbiAgICAvLyB0byBsZWZ0XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gTGF5b3V0RGlyZWN0aW9uLmxlZnQpIHtcbiAgICAgICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCkge1xuICAgICAgICAgICAgcGxhY2VtZW50WzBdID0gSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0O1xuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0KSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMF0gPSBIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHRvIGJvdHRvbVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5ib3R0b20gfHwgZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24udG9wKSB7XG4gICAgICAgIGxldCBob3Jpem9udGFsID0gSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXI7XG4gICAgICAgIGxldCB2ZXJ0aWNhbCA9IFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZTtcbiAgICAgICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQudG9wKSB7XG4gICAgICAgICAgICBob3Jpem9udGFsID0gSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnRbMV0gPT09IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbSkge1xuICAgICAgICAgICAgaG9yaXpvbnRhbCA9IEhvcml6b250YWxQbGFjZW1lbnQucmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0KSB7XG4gICAgICAgICAgICB2ZXJ0aWNhbCA9IFZlcnRpY2FsUGxhY2VtZW50LnRvcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0KSB7XG4gICAgICAgICAgICB2ZXJ0aWNhbCA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICAgICAgfVxuICAgICAgICBwbGFjZW1lbnRbMF0gPSBob3Jpem9udGFsO1xuICAgICAgICBwbGFjZW1lbnRbMV0gPSB2ZXJ0aWNhbDtcbiAgICB9XG4gICAgLy8gdG8gdXBcbiAgICBpZiAoZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24udG9wKSB7XG4gICAgICAgIGlmIChwbGFjZW1lbnRbMV0gPT09IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbSkge1xuICAgICAgICAgICAgcGxhY2VtZW50WzFdID0gVmVydGljYWxQbGFjZW1lbnQudG9wO1xuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQudG9wKSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC5ib3R0b207XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQtcGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvcG9pbnQtcGxhY2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUF1QixFQUFFLFNBQXlCLEVBQVMsRUFBRTtJQUM3RixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFO1FBQzdDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssbUJBQW1CLENBQUMsS0FBSyxFQUFFO1FBQzVDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7S0FDL0I7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDcEM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUNoQztJQUNELE9B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bUIsQ0FBQyxJQUFJLEVBQUU7WUFDM0MsUUFBUSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztTQUNwQztRQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLEtBQUssRUFBRTtZQUM1QyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1NBQ3ZDO1FBQ0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMxQixTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0tBQzNCO0lBQ0QsUUFBUTtJQUNSLElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUFFO1lBQzNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7U0FDeEM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztTQUMzQztLQUNKO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IExheW91dERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGF5b3V0JztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRCeVBsYWNlbWVudCA9IChjbGllbnQ6IFJlY3RhbmdsZUNsaWVudCwgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCk6IFBvaW50ID0+IHtcbiAgICBsZXQgeCA9IGNsaWVudC54O1xuICAgIGxldCB5ID0gY2xpZW50Lnk7XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIpIHtcbiAgICAgICAgeCA9IGNsaWVudC54ICsgY2xpZW50LndpZHRoIC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFswXSA9PT0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCkge1xuICAgICAgICB4ID0gY2xpZW50LnggKyBjbGllbnQud2lkdGg7XG4gICAgfVxuICAgIGlmIChwbGFjZW1lbnRbMV0gPT09IFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZSkge1xuICAgICAgICB5ID0gY2xpZW50LnkgKyBjbGllbnQuaGVpZ2h0IC8gMjtcbiAgICB9XG4gICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgIHkgPSBjbGllbnQueSArIGNsaWVudC5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBbeCwgeV07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlbWVudFJlZiB7XG4gICAgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudDtcbiAgICBjbGllbnQ6IFJlY3RhbmdsZUNsaWVudDtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFhEaXN0YW5jZUJldHdlZW5Qb2ludCA9IChwb2ludDE6IFBvaW50LCBwb2ludDI6IFBvaW50LCBpc0hvcml6b250YWxMYXlvdXQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoaXNIb3Jpem9udGFsTGF5b3V0KSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhwb2ludDFbMF0gLSBwb2ludDJbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhwb2ludDFbMV0gLSBwb2ludDJbMV0pO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZRGlzdGFuY2VCZXR3ZWVuUG9pbnQgPSAocG9pbnQxOiBQb2ludCwgcG9pbnQyOiBQb2ludCwgaXNIb3Jpem9udGFsTGF5b3V0OiBib29sZWFuKSA9PiB7XG4gICAgZ2V0WERpc3RhbmNlQmV0d2VlblBvaW50KHBvaW50MSwgcG9pbnQyLCAhaXNIb3Jpem9udGFsTGF5b3V0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYXlvdXREaXJlY3Rpb24gPSAobm9kZTogTWluZE5vZGUsIGlzSG9yaXpvbnRhbDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgaWYgKG5vZGUubGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dERpcmVjdGlvbi5sZWZ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlLnVwKSB7XG4gICAgICAgICAgICByZXR1cm4gTGF5b3V0RGlyZWN0aW9uLnRvcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBMYXlvdXREaXJlY3Rpb24uYm90dG9tO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLy8g5Lul5Y+z5Li65Z+65YeGXG4vLyDlj7MgLT4g5bemOlxuLy8gMS4g57uI54K5IC0+IOi1t+eCuS/otbfngrkgLT4g57uI54K5XG4vLyAyLiDliqAgLT4g5YePXG5cbi8vIOawtOW5syAtPiDlnoLnm7Q6XG4vLyAxLiDotbfngrkv57uI54K5IC0+IOe6tei9tFxuLy8gMi4g5Yqg5YePIC0+IOe6tei9tFxuXG4vLyDkuIsgLT4g5LiKOlxuLy8gMS4g57uI54K5IC0+IOi1t+eCuS/nu4jngrkgLT4g6LW354K5XG4vLyAyLiDliqAgLT4g5YePXG5leHBvcnQgY29uc3QgbW92ZVhPZlBvaW50ID0gKHBvaW50OiBQb2ludCwgZGlzdGFuY2U6IG51bWJlciwgZGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb24gPSBMYXlvdXREaXJlY3Rpb24ucmlnaHQpOiBQb2ludCA9PiB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gTGF5b3V0RGlyZWN0aW9uLmxlZnQpIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSAtIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSwgcG9pbnRbMV0gKyBkaXN0YW5jZV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSwgcG9pbnRbMV0gLSBkaXN0YW5jZV07XG4gICAgfVxuICAgIHJldHVybiBbcG9pbnRbMF0gKyBkaXN0YW5jZSwgcG9pbnRbMV1dO1xufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVZT2ZQb2ludCA9IChwb2ludDogUG9pbnQsIGRpc3RhbmNlOiBudW1iZXIsIGRpcmVjdGlvbjogTGF5b3V0RGlyZWN0aW9uID0gTGF5b3V0RGlyZWN0aW9uLnJpZ2h0KTogUG9pbnQgPT4ge1xuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpc3RhbmNlLCBwb2ludFsxXV07XG4gICAgfVxuICAgIHJldHVybiBbcG9pbnRbMF0sIHBvaW50WzFdICsgZGlzdGFuY2VdO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVBsYWNlbWVudCA9IChwbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50LCBkaXJlY3Rpb246IExheW91dERpcmVjdGlvbikgPT4ge1xuICAgIC8vIHRvIGxlZnRcbiAgICBpZiAoZGlyZWN0aW9uID09PSBMYXlvdXREaXJlY3Rpb24ubGVmdCkge1xuICAgICAgICBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0KSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMF0gPSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQ7XG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQpIHtcbiAgICAgICAgICAgIHBsYWNlbWVudFswXSA9IEhvcml6b250YWxQbGFjZW1lbnQucmlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdG8gYm90dG9tXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gTGF5b3V0RGlyZWN0aW9uLmJvdHRvbSB8fCBkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgbGV0IGhvcml6b250YWwgPSBIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlcjtcbiAgICAgICAgbGV0IHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQubWlkZGxlO1xuICAgICAgICBpZiAocGxhY2VtZW50WzFdID09PSBWZXJ0aWNhbFBsYWNlbWVudC50b3ApIHtcbiAgICAgICAgICAgIGhvcml6b250YWwgPSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgICAgICBob3Jpem9udGFsID0gSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50WzBdID09PSBIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQpIHtcbiAgICAgICAgICAgIHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQudG9wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnRbMF0gPT09IEhvcml6b250YWxQbGFjZW1lbnQucmlnaHQpIHtcbiAgICAgICAgICAgIHZlcnRpY2FsID0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIHBsYWNlbWVudFswXSA9IGhvcml6b250YWw7XG4gICAgICAgIHBsYWNlbWVudFsxXSA9IHZlcnRpY2FsO1xuICAgIH1cbiAgICAvLyB0byB1cFxuICAgIGlmIChkaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi50b3ApIHtcbiAgICAgICAgaWYgKHBsYWNlbWVudFsxXSA9PT0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tKSB7XG4gICAgICAgICAgICBwbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC50b3A7XG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50WzFdID09PSBWZXJ0aWNhbFBsYWNlbWVudC50b3ApIHtcbiAgICAgICAgICAgIHBsYWNlbWVudFsxXSA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { RectangleClient } from "@plait/core";
2
+ import { MindElement } from "../../interfaces/element";
3
+ import { getRectangleByNode } from "./node";
4
+ import { NodeSpace } from "../space/node-space";
5
+ import { getEmojisWidthHeight } from "../space/emoji";
6
+ export function getEmojiRectangle(board, element) {
7
+ let { x, y } = getRectangleByNode(MindElement.getNode(element));
8
+ x = x + NodeSpace.getEmojiLeftSpace(board, element);
9
+ const { width, height } = getEmojisWidthHeight(board, element);
10
+ return {
11
+ x,
12
+ y,
13
+ width,
14
+ height
15
+ };
16
+ }
17
+ export function getEmojiForeignRectangle(board, element) {
18
+ let { x, y } = getRectangleByNode(MindElement.getNode(element));
19
+ x = x + NodeSpace.getEmojiLeftSpace(board, element);
20
+ const { width, height } = getEmojisWidthHeight(board, element);
21
+ return {
22
+ x,
23
+ y,
24
+ width,
25
+ height: height + NodeSpace.getEmojiTopSpace(element) * 2
26
+ };
27
+ }
28
+ export const isHitEmojis = (board, element, point) => {
29
+ return RectangleClient.isHit(RectangleClient.toRectangleClient([point, point]), getEmojiRectangle(board, element));
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9wb3NpdGlvbi9lbW9qaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0RCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBcUIsRUFBRSxPQUErQjtJQUNwRixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsT0FBTztRQUNILENBQUM7UUFDRCxDQUFDO1FBQ0QsS0FBSztRQUNMLE1BQU07S0FDVCxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFxQixFQUFFLE9BQStCO0lBQzNGLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxPQUFPO1FBQ0gsQ0FBQztRQUNELENBQUM7UUFDRCxLQUFLO1FBQ0wsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztLQUMzRCxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBK0IsRUFBRSxLQUFZLEVBQUUsRUFBRTtJQUM1RixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsS0FBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3pJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tIFwiQHBsYWl0L2NvcmVcIjtcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgRW1vamlEYXRhIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhXCI7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tIFwiLi9ub2RlXCI7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tIFwiLi4vc3BhY2Uvbm9kZS1zcGFjZVwiO1xuaW1wb3J0IHsgZ2V0RW1vamlzV2lkdGhIZWlnaHQgfSBmcm9tIFwiLi4vc3BhY2UvZW1vamlcIjtcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSBcIi4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbW9qaVJlY3RhbmdsZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50PEVtb2ppRGF0YT4pOiBSZWN0YW5nbGVDbGllbnQge1xuICAgIGxldCB7IHgsIHkgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICB4ID0geCArIE5vZGVTcGFjZS5nZXRFbW9qaUxlZnRTcGFjZShib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRFbW9qaXNXaWR0aEhlaWdodChib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbW9qaUZvcmVpZ25SZWN0YW5nbGUoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudDxFbW9qaURhdGE+KTogUmVjdGFuZ2xlQ2xpZW50IHtcbiAgICBsZXQgeyB4LCB5IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUoTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KSk7XG4gICAgeCA9IHggKyBOb2RlU3BhY2UuZ2V0RW1vamlMZWZ0U3BhY2UoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0RW1vamlzV2lkdGhIZWlnaHQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCArIE5vZGVTcGFjZS5nZXRFbW9qaVRvcFNwYWNlKGVsZW1lbnQpICogMlxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBpc0hpdEVtb2ppcyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPiwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3BvaW50LCBwb2ludF0pLCBnZXRFbW9qaVJlY3RhbmdsZShib2FyZCBhcyBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudCkpO1xufTtcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './node';
2
+ export * from './emoji';
3
+ export * from './topic';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9wb3NpdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vtb2ppJztcbmV4cG9ydCAqIGZyb20gJy4vdG9waWMnOyJdfQ==
@@ -0,0 +1,34 @@
1
+ import { distanceBetweenPointAndRectangle } from '@plait/core';
2
+ import { MindElement } from '../../interfaces/element';
3
+ import { NodeSpace } from '../space/node-space';
4
+ export function getRectangleByNode(node) {
5
+ const x = node.x + node.hGap;
6
+ let y = node.y + node.vGap;
7
+ const width = node.width - node.hGap * 2;
8
+ const height = node.height - node.vGap * 2;
9
+ return {
10
+ x,
11
+ y,
12
+ width,
13
+ height
14
+ };
15
+ }
16
+ export function getRectangleByElement(board, originPoint, element) {
17
+ const nodeRectangle = {
18
+ x: originPoint[0],
19
+ y: originPoint[1],
20
+ width: NodeSpace.getNodeWidth(board, element),
21
+ height: NodeSpace.getNodeHeight(board, element)
22
+ };
23
+ return nodeRectangle;
24
+ }
25
+ export function isHitMindElement(board, point, element) {
26
+ const node = MindElement.getNode(element);
27
+ if (node && distanceBetweenPointAndRectangle(point[0], point[1], getRectangleByNode(node)) === 0) {
28
+ return true;
29
+ }
30
+ else {
31
+ return false;
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL3Bvc2l0aW9uL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyxnQ0FBZ0MsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2hELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFjO0lBQzdDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE9BQU87UUFDSCxDQUFDO1FBQ0QsQ0FBQztRQUNELEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBcUIsRUFBRSxXQUFrQixFQUFFLE9BQW9CO0lBQ2pHLE1BQU0sYUFBYSxHQUFHO1FBQ2xCLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLEtBQUssRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7UUFDN0MsTUFBTSxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztLQUNsRCxDQUFDO0lBQ0YsT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFpQixFQUFFLEtBQVksRUFBRSxPQUFvQjtJQUNsRixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLElBQUksSUFBSSxJQUFJLGdDQUFnQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUYsT0FBTyxJQUFJLENBQUM7S0FDZjtTQUFNO1FBQ0gsT0FBTyxLQUFLLENBQUM7S0FDaEI7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tICcuLi9zcGFjZS9ub2RlLXNwYWNlJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGU6IE1pbmROb2RlKTogUmVjdGFuZ2xlQ2xpZW50IHtcbiAgICBjb25zdCB4ID0gbm9kZS54ICsgbm9kZS5oR2FwO1xuICAgIGxldCB5ID0gbm9kZS55ICsgbm9kZS52R2FwO1xuICAgIGNvbnN0IHdpZHRoID0gbm9kZS53aWR0aCAtIG5vZGUuaEdhcCAqIDI7XG4gICAgY29uc3QgaGVpZ2h0ID0gbm9kZS5oZWlnaHQgLSBub2RlLnZHYXAgKiAyO1xuICAgIHJldHVybiB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50KGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgb3JpZ2luUG9pbnQ6IFBvaW50LCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgIGNvbnN0IG5vZGVSZWN0YW5nbGUgPSB7XG4gICAgICAgIHg6IG9yaWdpblBvaW50WzBdLFxuICAgICAgICB5OiBvcmlnaW5Qb2ludFsxXSxcbiAgICAgICAgd2lkdGg6IE5vZGVTcGFjZS5nZXROb2RlV2lkdGgoYm9hcmQsIGVsZW1lbnQpLFxuICAgICAgICBoZWlnaHQ6IE5vZGVTcGFjZS5nZXROb2RlSGVpZ2h0KGJvYXJkLCBlbGVtZW50KVxuICAgIH07XG4gICAgcmV0dXJuIG5vZGVSZWN0YW5nbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hpdE1pbmRFbGVtZW50KGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3Qgbm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgaWYgKG5vZGUgJiYgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUocG9pbnRbMF0sIHBvaW50WzFdLCBnZXRSZWN0YW5nbGVCeU5vZGUobm9kZSkpID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { NodeSpace } from '../space/node-space';
2
+ import { getRectangleByNode } from './node';
3
+ export function getTopicRectangleByNode(board, node) {
4
+ let nodeRectangle = getRectangleByNode(node);
5
+ return getTopicRectangleByElement(board, nodeRectangle, node.origin);
6
+ }
7
+ export function getTopicRectangleByElement(board, nodeRectangle, element) {
8
+ const x = nodeRectangle.x + NodeSpace.getTextLeftSpace(board, element);
9
+ const y = nodeRectangle.y + NodeSpace.getTextTopSpace(element);
10
+ const width = Math.ceil(element.width);
11
+ const height = Math.ceil(element.height);
12
+ return { height, width, x, y };
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9wb3NpdGlvbi90b3BpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzVDLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxLQUFxQixFQUFFLElBQWM7SUFDekUsSUFBSSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsT0FBTywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEtBQXFCLEVBQUUsYUFBOEIsRUFBRSxPQUFvQjtJQUNsSCxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgUGxhaXRNaW5kQm9hcmQgfSBmcm9tICcuLi8uLi9wbHVnaW5zL3dpdGgtbWluZC5ib2FyZCc7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tICcuLi9zcGFjZS9ub2RlLXNwYWNlJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIG5vZGU6IE1pbmROb2RlKSB7XG4gICAgbGV0IG5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUobm9kZSk7XG4gICAgcmV0dXJuIGdldFRvcGljUmVjdGFuZ2xlQnlFbGVtZW50KGJvYXJkLCBub2RlUmVjdGFuZ2xlLCBub2RlLm9yaWdpbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3BpY1JlY3RhbmdsZUJ5RWxlbWVudChib2FyZDogUGxhaXRNaW5kQm9hcmQsIG5vZGVSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICBjb25zdCB4ID0gbm9kZVJlY3RhbmdsZS54ICsgTm9kZVNwYWNlLmdldFRleHRMZWZ0U3BhY2UoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHkgPSBub2RlUmVjdGFuZ2xlLnkgKyBOb2RlU3BhY2UuZ2V0VGV4dFRvcFNwYWNlKGVsZW1lbnQpO1xuICAgIGNvbnN0IHdpZHRoID0gTWF0aC5jZWlsKGVsZW1lbnQud2lkdGgpO1xuICAgIGNvbnN0IGhlaWdodCA9IE1hdGguY2VpbChlbGVtZW50LmhlaWdodCk7XG4gICAgcmV0dXJuIHsgaGVpZ2h0LCB3aWR0aCwgeCwgeSB9O1xufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { PlaitMind } from '../../interfaces';
2
+ export function getEmojisWidthHeight(board, element) {
3
+ const options = board.getMindOptions();
4
+ const count = element.data.emojis.length;
5
+ const fontSize = getEmojiFontSize(element);
6
+ return {
7
+ width: fontSize * count + count * 2 * options.emojiPadding + (count - 1) * options.spaceBetweenEmojis,
8
+ height: element.height
9
+ };
10
+ }
11
+ export function getEmojiFontSize(element) {
12
+ if (PlaitMind.isMind(element)) {
13
+ return 18 + 2;
14
+ }
15
+ else {
16
+ return 14 + 2;
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9zcGFjZS9lbW9qaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBCLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3JFLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFxQixFQUFFLE9BQStCO0lBQ3ZGLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDekMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsT0FBTztRQUNILEtBQUssRUFBRSxRQUFRLEdBQUcsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCO1FBQ3JHLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN6QixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUErQjtJQUM1RCxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2pCO1NBQU07UUFDSCxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDakI7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1vamlEYXRhLCBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVtb2ppc1dpZHRoSGVpZ2h0KGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPikge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBib2FyZC5nZXRNaW5kT3B0aW9ucygpO1xuICAgIGNvbnN0IGNvdW50ID0gZWxlbWVudC5kYXRhLmVtb2ppcy5sZW5ndGg7XG4gICAgY29uc3QgZm9udFNpemUgPSBnZXRFbW9qaUZvbnRTaXplKGVsZW1lbnQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBmb250U2l6ZSAqIGNvdW50ICsgY291bnQgKiAyICogb3B0aW9ucy5lbW9qaVBhZGRpbmcgKyAoY291bnQgLSAxKSAqIG9wdGlvbnMuc3BhY2VCZXR3ZWVuRW1vamlzLFxuICAgICAgICBoZWlnaHQ6IGVsZW1lbnQuaGVpZ2h0XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVtb2ppRm9udFNpemUoZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPikge1xuICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiAxOCArIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE0ICsgMjtcbiAgICB9XG59XG4iXX0=