@plait/mind 0.27.0-next.1 → 0.27.0-next.3

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 (113) hide show
  1. package/base/emoji-base.component.d.ts +1 -1
  2. package/base/image-base.component.d.ts +1 -1
  3. package/constants/node-topic-style.d.ts +4 -0
  4. package/{esm2020 → esm2022}/base/emoji-base.component.mjs +4 -4
  5. package/esm2022/base/image-base.component.mjs +75 -0
  6. package/esm2022/constants/node-topic-style.mjs +12 -0
  7. package/esm2022/interfaces/element-data.mjs +2 -0
  8. package/{esm2020 → esm2022}/mind.component.mjs +6 -6
  9. package/{esm2020 → esm2022}/mind.module.mjs +5 -5
  10. package/esm2022/node.component.mjs +251 -0
  11. package/esm2022/plugins/with-mind-create.mjs +112 -0
  12. package/esm2022/utils/draw/abstract-outline.mjs +117 -0
  13. package/esm2022/utils/node/create-node.mjs +55 -0
  14. package/esm2022/utils/position/node.mjs +36 -0
  15. package/{fesm2020 → fesm2022}/plait-mind.mjs +241 -225
  16. package/fesm2022/plait-mind.mjs.map +1 -0
  17. package/interfaces/element-data.d.ts +2 -2
  18. package/package.json +7 -13
  19. package/utils/abstract/common.d.ts +2 -2
  20. package/utils/node/create-node.d.ts +4 -4
  21. package/utils/position/node.d.ts +1 -1
  22. package/esm2020/base/image-base.component.mjs +0 -72
  23. package/esm2020/constants/node-topic-style.mjs +0 -8
  24. package/esm2020/interfaces/element-data.mjs +0 -2
  25. package/esm2020/node.component.mjs +0 -248
  26. package/esm2020/plugins/with-mind-create.mjs +0 -109
  27. package/esm2020/utils/draw/abstract-outline.mjs +0 -117
  28. package/esm2020/utils/node/create-node.mjs +0 -52
  29. package/esm2020/utils/position/node.mjs +0 -34
  30. package/fesm2015/plait-mind.mjs +0 -4382
  31. package/fesm2015/plait-mind.mjs.map +0 -1
  32. package/fesm2020/plait-mind.mjs.map +0 -1
  33. /package/{esm2020 → esm2022}/base/base.drawer.mjs +0 -0
  34. /package/{esm2020 → esm2022}/base/index.mjs +0 -0
  35. /package/{esm2020 → esm2022}/constants/abstract-node.mjs +0 -0
  36. /package/{esm2020 → esm2022}/constants/default.mjs +0 -0
  37. /package/{esm2020 → esm2022}/constants/image.mjs +0 -0
  38. /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
  39. /package/{esm2020 → esm2022}/constants/node-style.mjs +0 -0
  40. /package/{esm2020 → esm2022}/constants/theme.mjs +0 -0
  41. /package/{esm2020 → esm2022}/drawer/node-active.drawer.mjs +0 -0
  42. /package/{esm2020 → esm2022}/drawer/node-collapse.drawer.mjs +0 -0
  43. /package/{esm2020 → esm2022}/drawer/node-emojis.drawer.mjs +0 -0
  44. /package/{esm2020 → esm2022}/drawer/node-image.drawer.mjs +0 -0
  45. /package/{esm2020 → esm2022}/drawer/node-insert.drawer.mjs +0 -0
  46. /package/{esm2020 → esm2022}/interfaces/element.mjs +0 -0
  47. /package/{esm2020 → esm2022}/interfaces/index.mjs +0 -0
  48. /package/{esm2020 → esm2022}/interfaces/layout.mjs +0 -0
  49. /package/{esm2020 → esm2022}/interfaces/node.mjs +0 -0
  50. /package/{esm2020 → esm2022}/interfaces/options.mjs +0 -0
  51. /package/{esm2020 → esm2022}/interfaces/pointer.mjs +0 -0
  52. /package/{esm2020 → esm2022}/interfaces/theme-color.mjs +0 -0
  53. /package/{esm2020 → esm2022}/interfaces/types.mjs +0 -0
  54. /package/{esm2020 → esm2022}/plait-mind.mjs +0 -0
  55. /package/{esm2020 → esm2022}/plugins/with-abstract-resize.board.mjs +0 -0
  56. /package/{esm2020 → esm2022}/plugins/with-abstract-resize.mjs +0 -0
  57. /package/{esm2020 → esm2022}/plugins/with-mind-extend.mjs +0 -0
  58. /package/{esm2020 → esm2022}/plugins/with-mind-hotkey.mjs +0 -0
  59. /package/{esm2020 → esm2022}/plugins/with-mind.board.mjs +0 -0
  60. /package/{esm2020 → esm2022}/plugins/with-mind.mjs +0 -0
  61. /package/{esm2020 → esm2022}/plugins/with-node-dnd.mjs +0 -0
  62. /package/{esm2020 → esm2022}/plugins/with-node-hover-detect.mjs +0 -0
  63. /package/{esm2020 → esm2022}/plugins/with-node-image-resize.mjs +0 -0
  64. /package/{esm2020 → esm2022}/plugins/with-node-image.mjs +0 -0
  65. /package/{esm2020 → esm2022}/plugins/with-node-resize.mjs +0 -0
  66. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  67. /package/{esm2020 → esm2022}/queries/get-available-sublayouts-by-element.mjs +0 -0
  68. /package/{esm2020 → esm2022}/queries/get-branch-layouts.mjs +0 -0
  69. /package/{esm2020 → esm2022}/queries/get-correct-layout-by-element.mjs +0 -0
  70. /package/{esm2020 → esm2022}/queries/get-layout-by-element.mjs +0 -0
  71. /package/{esm2020 → esm2022}/queries/index.mjs +0 -0
  72. /package/{esm2020 → esm2022}/transforms/abstract-node.mjs +0 -0
  73. /package/{esm2020 → esm2022}/transforms/emoji.mjs +0 -0
  74. /package/{esm2020 → esm2022}/transforms/image.mjs +0 -0
  75. /package/{esm2020 → esm2022}/transforms/index.mjs +0 -0
  76. /package/{esm2020 → esm2022}/transforms/layout.mjs +0 -0
  77. /package/{esm2020 → esm2022}/transforms/node.mjs +0 -0
  78. /package/{esm2020 → esm2022}/utils/abstract/common.mjs +0 -0
  79. /package/{esm2020 → esm2022}/utils/abstract/resize.mjs +0 -0
  80. /package/{esm2020 → esm2022}/utils/clipboard.mjs +0 -0
  81. /package/{esm2020 → esm2022}/utils/dnd/common.mjs +0 -0
  82. /package/{esm2020 → esm2022}/utils/dnd/detector.mjs +0 -0
  83. /package/{esm2020 → esm2022}/utils/draw/node-dnd.mjs +0 -0
  84. /package/{esm2020 → esm2022}/utils/draw/node-link/abstract-link.mjs +0 -0
  85. /package/{esm2020 → esm2022}/utils/draw/node-link/draw-link.mjs +0 -0
  86. /package/{esm2020 → esm2022}/utils/draw/node-link/indented-link.mjs +0 -0
  87. /package/{esm2020 → esm2022}/utils/draw/node-link/logic-link.mjs +0 -0
  88. /package/{esm2020 → esm2022}/utils/draw/node-shape.mjs +0 -0
  89. /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
  90. /package/{esm2020 → esm2022}/utils/layout.mjs +0 -0
  91. /package/{esm2020 → esm2022}/utils/mind.mjs +0 -0
  92. /package/{esm2020 → esm2022}/utils/node/adjust-node.mjs +0 -0
  93. /package/{esm2020 → esm2022}/utils/node/common.mjs +0 -0
  94. /package/{esm2020 → esm2022}/utils/node/dynamic-width.mjs +0 -0
  95. /package/{esm2020 → esm2022}/utils/node/image.mjs +0 -0
  96. /package/{esm2020 → esm2022}/utils/node/index.mjs +0 -0
  97. /package/{esm2020 → esm2022}/utils/node/right-node-count.mjs +0 -0
  98. /package/{esm2020 → esm2022}/utils/node-hover/extend.mjs +0 -0
  99. /package/{esm2020 → esm2022}/utils/node-style/branch.mjs +0 -0
  100. /package/{esm2020 → esm2022}/utils/node-style/common.mjs +0 -0
  101. /package/{esm2020 → esm2022}/utils/node-style/index.mjs +0 -0
  102. /package/{esm2020 → esm2022}/utils/node-style/shape.mjs +0 -0
  103. /package/{esm2020 → esm2022}/utils/path.mjs +0 -0
  104. /package/{esm2020 → esm2022}/utils/point-placement.mjs +0 -0
  105. /package/{esm2020 → esm2022}/utils/position/emoji.mjs +0 -0
  106. /package/{esm2020 → esm2022}/utils/position/image.mjs +0 -0
  107. /package/{esm2020 → esm2022}/utils/position/index.mjs +0 -0
  108. /package/{esm2020 → esm2022}/utils/position/topic.mjs +0 -0
  109. /package/{esm2020 → esm2022}/utils/space/emoji.mjs +0 -0
  110. /package/{esm2020 → esm2022}/utils/space/index.mjs +0 -0
  111. /package/{esm2020 → esm2022}/utils/space/layout-options.mjs +0 -0
  112. /package/{esm2020 → esm2022}/utils/space/node-space.mjs +0 -0
  113. /package/{esm2020 → esm2022}/utils/weak-maps.mjs +0 -0
@@ -0,0 +1,112 @@
1
+ import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, addSelectedElement, clearSelectedElement, createG, getSelectedElements, throttleRAF, toPoint, transformPoint } from '@plait/core';
2
+ import { MindPointerType } from '../interfaces/pointer';
3
+ import { getRectangleByElement, getTopicRectangleByElement } from '../utils';
4
+ import { drawRoundRectangleByElement } from '../utils/draw/node-shape';
5
+ import { NgZone } from '@angular/core';
6
+ import { TextManage } from '@plait/text';
7
+ import { createEmptyMind } from '../utils/node/create-node';
8
+ import { BoardCreationMode, isDndMode, isDrawingMode, setCreationMode } from '@plait/common';
9
+ const DefaultHotkey = 'm';
10
+ export const withCreateMind = (board) => {
11
+ const newBoard = board;
12
+ const { keydown, mousedown, mousemove, mouseup } = board;
13
+ let fakeCreateNodeRef = null;
14
+ let emptyMind = null;
15
+ newBoard.mousedown = (event) => {
16
+ const isMindPointer = PlaitBoard.isPointer(board, MindPointerType.mind);
17
+ let movingPoint = PlaitBoard.getMovingPointInBoard(board);
18
+ if (movingPoint && isDrawingMode(board) && isMindPointer) {
19
+ movingPoint = transformPoint(board, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
20
+ const emptyMind = createEmptyMind(newBoard, movingPoint);
21
+ Transforms.insertNode(board, emptyMind, [board.children.length]);
22
+ clearSelectedElement(board);
23
+ addSelectedElement(board, emptyMind);
24
+ BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
25
+ }
26
+ mousedown(event);
27
+ };
28
+ newBoard.mousemove = (event) => {
29
+ if (PlaitBoard.isReadonly(board)) {
30
+ mousemove(event);
31
+ return;
32
+ }
33
+ const isMindPointer = PlaitBoard.isPointer(board, MindPointerType.mind);
34
+ if (isDndMode(board) && isMindPointer) {
35
+ throttleRAF(() => {
36
+ let movingPoint = PlaitBoard.getMovingPointInBoard(board);
37
+ if (movingPoint) {
38
+ movingPoint = transformPoint(newBoard, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
39
+ emptyMind = createEmptyMind(newBoard, movingPoint);
40
+ const nodeRectangle = getRectangleByElement(newBoard, emptyMind);
41
+ const nodeG = drawRoundRectangleByElement(board, nodeRectangle, emptyMind);
42
+ const topicRectangle = getTopicRectangleByElement(newBoard, nodeRectangle, emptyMind);
43
+ if (!fakeCreateNodeRef) {
44
+ const textManage = new TextManage(board, PlaitBoard.getComponent(board).viewContainerRef, {
45
+ getRectangle: () => {
46
+ return topicRectangle;
47
+ }
48
+ });
49
+ PlaitBoard.getComponent(board)
50
+ .viewContainerRef.injector.get(NgZone)
51
+ .run(() => {
52
+ textManage.draw(emptyMind.data.topic);
53
+ });
54
+ fakeCreateNodeRef = {
55
+ g: createG(),
56
+ nodeG,
57
+ textManage
58
+ };
59
+ fakeCreateNodeRef.g.classList.add('root');
60
+ fakeCreateNodeRef.g.setAttribute('plait-mind-temporary', 'true');
61
+ PlaitBoard.getHost(board).append(fakeCreateNodeRef.g);
62
+ fakeCreateNodeRef.g.append(...[fakeCreateNodeRef.nodeG, textManage.g]);
63
+ }
64
+ else {
65
+ fakeCreateNodeRef.textManage.updateRectangle(topicRectangle);
66
+ fakeCreateNodeRef.nodeG.remove();
67
+ fakeCreateNodeRef.nodeG = nodeG;
68
+ fakeCreateNodeRef.g.append(nodeG);
69
+ fakeCreateNodeRef.g.append(fakeCreateNodeRef.textManage.g);
70
+ }
71
+ }
72
+ });
73
+ }
74
+ else {
75
+ destroy();
76
+ }
77
+ mousemove(event);
78
+ };
79
+ newBoard.mouseup = (event) => {
80
+ if (emptyMind) {
81
+ Transforms.insertNode(board, emptyMind, [board.children.length]);
82
+ clearSelectedElement(board);
83
+ addSelectedElement(board, emptyMind);
84
+ BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
85
+ emptyMind = null;
86
+ }
87
+ destroy();
88
+ mouseup(event);
89
+ };
90
+ board.keydown = (event) => {
91
+ if (PlaitBoard.isReadonly(board) || getSelectedElements(board).length > 0) {
92
+ keydown(event);
93
+ return;
94
+ }
95
+ if (event.key === DefaultHotkey && !PlaitBoard.isPointer(board, MindPointerType.mind)) {
96
+ BoardTransforms.updatePointerType(board, MindPointerType.mind);
97
+ setCreationMode(board, BoardCreationMode.drawing);
98
+ event.preventDefault();
99
+ return;
100
+ }
101
+ keydown(event);
102
+ };
103
+ function destroy() {
104
+ if (fakeCreateNodeRef) {
105
+ fakeCreateNodeRef.textManage.destroy();
106
+ fakeCreateNodeRef.g.remove();
107
+ fakeCreateNodeRef = null;
108
+ }
109
+ }
110
+ return newBoard;
111
+ };
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1taW5kLWNyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsT0FBTyxFQUNQLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7QUFRMUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELE1BQU0sUUFBUSxHQUFHLEtBQW9DLENBQUM7SUFDdEQsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN6RCxJQUFJLGlCQUFpQixHQUE2QixJQUFJLENBQUM7SUFDdkQsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztJ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QUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIFRyYW5zZm9ybXMsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNyZWF0ZUcsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0aHJvdHRsZVJBRixcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgTWluZFBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudCwgZ2V0VG9waWNSZWN0YW5nbGVCeUVsZW1lbnQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9kcmF3L25vZGUtc2hhcGUnO1xuaW1wb3J0IHsgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0TWFuYWdlIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgY3JlYXRlRW1wdHlNaW5kIH0gZnJvbSAnLi4vdXRpbHMvbm9kZS9jcmVhdGUtbm9kZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm9hcmRDcmVhdGlvbk1vZGUsIGlzRG5kTW9kZSwgaXNEcmF3aW5nTW9kZSwgc2V0Q3JlYXRpb25Nb2RlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmNvbnN0IERlZmF1bHRIb3RrZXkgPSAnbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFrZUNyZWF0ZU5vZGVSZWYge1xuICAgIGc6IFNWR0dFbGVtZW50O1xuICAgIG5vZGVHOiBTVkdHRWxlbWVudDtcbiAgICB0ZXh0TWFuYWdlOiBUZXh0TWFuYWdlO1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aENyZWF0ZU1pbmQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdE1pbmRCb2FyZDtcbiAgICBjb25zdCB7IGtleWRvd24sIG1vdXNlZG93biwgbW91c2Vtb3ZlLCBtb3VzZXVwIH0gPSBib2FyZDtcbiAgICBsZXQgZmFrZUNyZWF0ZU5vZGVSZWY6IEZha2VDcmVhdGVOb2RlUmVmIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVtcHR5TWluZDogTWluZEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIG5ld0JvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc01pbmRQb2ludGVyID0gUGxhaXRCb2FyZC5pc1BvaW50ZXI8TWluZFBvaW50ZXJUeXBlIHwgUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKTtcbiAgICAgICAgbGV0IG1vdmluZ1BvaW50ID0gUGxhaXRCb2FyZC5nZXRNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQpO1xuICAgICAgICBpZiAobW92aW5nUG9pbnQgJiYgaXNEcmF3aW5nTW9kZShib2FyZCkgJiYgaXNNaW5kUG9pbnRlcikge1xuICAgICAgICAgICAgbW92aW5nUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChtb3ZpbmdQb2ludFswXSwgbW92aW5nUG9pbnRbMV0sIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5TWluZCA9IGNyZWF0ZUVtcHR5TWluZChuZXdCb2FyZCwgbW92aW5nUG9pbnQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbXB0eU1pbmQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgZW1wdHlNaW5kKTtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIG5ld0JvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc01pbmRQb2ludGVyID0gUGxhaXRCb2FyZC5pc1BvaW50ZXI8TWluZFBvaW50ZXJUeXBlIHwgUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKTtcbiAgICAgICAgaWYgKGlzRG5kTW9kZShib2FyZCkgJiYgaXNNaW5kUG9pbnRlcikge1xuICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IFBsYWl0Qm9hcmQuZ2V0TW92aW5nUG9pbnRJbkJvYXJkKGJvYXJkKTtcblxuICAgICAgICAgICAgICAgIGlmIChtb3ZpbmdQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBtb3ZpbmdQb2ludCA9IHRyYW5zZm9ybVBvaW50KG5ld0JvYXJkLCB0b1BvaW50KG1vdmluZ1BvaW50WzBdLCBtb3ZpbmdQb2ludFsxXSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgICAgICAgICBlbXB0eU1pbmQgPSBjcmVhdGVFbXB0eU1pbmQobmV3Qm9hcmQsIG1vdmluZ1BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudChuZXdCb2FyZCwgZW1wdHlNaW5kKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUcgPSBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQoYm9hcmQsIG5vZGVSZWN0YW5nbGUsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvcGljUmVjdGFuZ2xlID0gZ2V0VG9waWNSZWN0YW5nbGVCeUVsZW1lbnQobmV3Qm9hcmQsIG5vZGVSZWN0YW5nbGUsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmFrZUNyZWF0ZU5vZGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRNYW5hZ2UgPSBuZXcgVGV4dE1hbmFnZShib2FyZCwgUGxhaXRCb2FyZC5nZXRDb21wb25lbnQoYm9hcmQpLnZpZXdDb250YWluZXJSZWYsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvcGljUmVjdGFuZ2xlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRDb21wb25lbnQoYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IuZ2V0KE5nWm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZS5kcmF3KGVtcHR5TWluZCEuZGF0YS50b3BpYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWtlQ3JlYXRlTm9kZVJlZiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiBjcmVhdGVHKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLmcuY2xhc3NMaXN0LmFkZCgncm9vdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYuZy5zZXRBdHRyaWJ1dGUoJ3BsYWl0LW1pbmQtdGVtcG9yYXJ5JywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kKGZha2VDcmVhdGVOb2RlUmVmLmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYuZy5hcHBlbmQoLi4uW2Zha2VDcmVhdGVOb2RlUmVmLm5vZGVHLCB0ZXh0TWFuYWdlLmddKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLnRleHRNYW5hZ2UudXBkYXRlUmVjdGFuZ2xlKHRvcGljUmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLm5vZGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYubm9kZUcgPSBub2RlRztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLmcuYXBwZW5kKG5vZGVHKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLmcuYXBwZW5kKGZha2VDcmVhdGVOb2RlUmVmLnRleHRNYW5hZ2UuZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZW1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBuZXdCb2FyZC5tb3VzZXVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlbXB0eU1pbmQpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZW1wdHlNaW5kLCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgICAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGVtcHR5TWluZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZGVzdHJveSgpO1xuICAgICAgICBtb3VzZXVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBrZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBEZWZhdWx0SG90a2V5ICYmICFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgTWluZFBvaW50ZXJUeXBlLm1pbmQpKSB7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKTtcbiAgICAgICAgICAgIHNldENyZWF0aW9uTW9kZShib2FyZCwgQm9hcmRDcmVhdGlvbk1vZGUuZHJhd2luZyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBpZiAoZmFrZUNyZWF0ZU5vZGVSZWYpIHtcbiAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLnRleHRNYW5hZ2UuZGVzdHJveSgpO1xuICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYuZy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdCb2FyZDtcbn07XG4iXX0=
@@ -0,0 +1,117 @@
1
+ import { createG, getRectangleByElements, PlaitBoard, RectangleClient, setStrokeLinecap } 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
+ setStrokeLinecap(startHandle, 'round');
42
+ setStrokeLinecap(endHandle, '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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtb3V0bGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvYWJzdHJhY3Qtb3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFrQixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBR2xGLE1BQU0sVUFBVSwyQkFBMkIsQ0FDdkMsS0FBaUIsRUFDakIsUUFBa0IsRUFDbEIsT0FBb0IsRUFDcEIsb0JBQTZDLEVBQzdDLGdCQUF5QjtJQUV6QixNQUFNLGlCQUFpQixHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXBDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsTUFB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Y0FBYztnQkFDZCxXQUFXO2dCQUNYLGNBQWM7ZUFDZixNQUFNLElBQUksTUFBTSxXQUFXLE1BQU0sS0FBSyxNQUFNO2tCQUN6QyxRQUFRO2VBQ1gsTUFBTSxJQUFJLE1BQU0sVUFBVSxNQUFNLEtBQUssTUFBTSxFQUFFLEVBQ2hELE9BQU8sQ0FDVixDQUFDO0tBQ0w7U0FBTTtRQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxHQUFHLFdBQVcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FDVixJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRTtlQUNsQixRQUFRO2VBQ1IsTUFBTSxJQUFJLE1BQU0sVUFBVSxNQUFNLElBQUksTUFBTTtpQkFDeEMsY0FBYztpQkFDZCxXQUFXO2lCQUNYLGNBQWM7ZUFDaEIsTUFBTSxJQUFJLE1BQU0sV0FBVyxNQUFNLElBQUksTUFBTTtnQkFDMUMsUUFBUTtlQUNULE1BQU0sSUFBSSxNQUFNLFdBQVcsTUFBTSxLQUFLLE1BQU07a0JBQ3pDLGNBQWM7a0JBQ2QsV0FBVztrQkFDWCxjQUFjO2VBQ2pCLE1BQU0sSUFBSSxNQUFNLFVBQVUsTUFBTSxLQUFLLE1BQU0sRUFBRSxFQUNoRCxPQUFPLENBQ1YsQ0FBQztLQUNMO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUcsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsIFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgc2V0U3Ryb2tlTGluZWNhcCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBSSU1BUllfQ09MT1IgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUJTVFJBQ1RfSEFORExFX0NPTE9SLCBBQlNUUkFDVF9IQU5ETEVfTEVOR1RILCBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hYnN0cmFjdC1ub2RlJztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSwgaXNIb3Jpem9udGFsTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgbW92ZVhPZlBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC9yZXNpemUnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC1yZXNpemUuYm9hcmQnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHJvdWdoU1ZHOiBSb3VnaFNWRyxcbiAgICBlbGVtZW50OiBNaW5kRWxlbWVudCxcbiAgICBhY3RpdmVIYW5kbGVQb3NpdGlvbj86IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sXG4gICAgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlclxuKSB7XG4gICAgY29uc3QgYWJzdHJhY3RJbmNsdWRlZEcgPSBjcmVhdGVHKCk7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCk7XG5cbiAgICBjb25zdCBpbmNsdWRlZEVsZW1lbnRzID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5zbGljZShlbGVtZW50LnN0YXJ0ISwgZWxlbWVudC5lbmQhICsgMSk7XG4gICAgbGV0IGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgaW5jbHVkZWRFbGVtZW50cywgdHJ1ZSk7XG4gICAgYWJzdHJhY3RSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShhYnN0cmFjdFJlY3RhbmdsZSwgLUFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUKTtcblxuICAgIGlmIChyZXNpemluZ0xvY2F0aW9uKSB7XG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKGFic3RyYWN0UmVjdGFuZ2xlLCByZXNpemluZ0xvY2F0aW9uLCBhY3RpdmVIYW5kbGVQb3NpdGlvbiEsIGlzSG9yaXpvbnRhbCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZHJhd0Fic3RyYWN0Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIHJvdWdoU1ZHLFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS55LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54ICsgYWJzdHJhY3RSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlLnkgKyBhYnN0cmFjdFJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgIGlzSG9yaXpvbnRhbCxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlciwgVmVydGljYWxQbGFjZW1lbnQudG9wXSBhcyBQb2ludFBsYWNlbWVudDtcbiAgICBjb25zdCBlbmRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV0gYXMgUG9pbnRQbGFjZW1lbnQ7XG5cbiAgICBjb25zdCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCksIGlzSG9yaXpvbnRhbCk7XG5cbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoc3RhcnRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIHRyYW5zZm9ybVBsYWNlbWVudChlbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgbGV0IHN0YXJ0Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGFic3RyYWN0UmVjdGFuZ2xlLCBzdGFydFBsYWNlbWVudCk7XG4gICAgbGV0IGVuZENlbnRlclBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChhYnN0cmFjdFJlY3RhbmdsZSwgZW5kUGxhY2VtZW50KTtcblxuICAgIGNvbnN0IHN0YXJ0UG9pbnQxID0gbW92ZVhPZlBvaW50KHN0YXJ0Q2VudGVyUG9pbnQsIC1BQlNUUkFDVF9IQU5ETEVfTEVOR1RIIC8gMiwgbGlua0RpcmVjdGlvbik7XG4gICAgY29uc3Qgc3RhcnRQb2ludDIgPSBtb3ZlWE9mUG9pbnQoc3RhcnRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgZW5kUG9pbnQxID0gbW92ZVhPZlBvaW50KGVuZENlbnRlclBvaW50LCAtQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuICAgIGNvbnN0IGVuZFBvaW50MiA9IG1vdmVYT2ZQb2ludChlbmRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3Qgc3RhcnRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBzdGFydFBvaW50MVswXSxcbiAgICAgICAgc3RhcnRQb2ludDFbMV0sXG4gICAgICAgIHN0YXJ0UG9pbnQyWzBdLFxuICAgICAgICBzdGFydFBvaW50MlsxXSxcbiAgICAgICAgZ2V0SGFuZGxlT3B0aW9uKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KVxuICAgICk7XG5cbiAgICBjb25zdCBlbmRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBlbmRQb2ludDFbMF0sXG4gICAgICAgIGVuZFBvaW50MVsxXSxcbiAgICAgICAgZW5kUG9pbnQyWzBdLFxuICAgICAgICBlbmRQb2ludDJbMV0sXG4gICAgICAgIGdldEhhbmRsZU9wdGlvbihhY3RpdmVIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQpXG4gICAgKTtcblxuICAgIGhhbmRsZUJvYXJkQ2xhc3MoYm9hcmQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uLCBpc0hvcml6b250YWwpO1xuICAgIFxuICAgIHNldFN0cm9rZUxpbmVjYXAoc3RhcnRIYW5kbGUsICdyb3VuZCcpO1xuICAgIHNldFN0cm9rZUxpbmVjYXAoZW5kSGFuZGxlLCAncm91bmQnKTtcblxuICAgIGFic3RyYWN0SW5jbHVkZWRHLmFwcGVuZChzdGFydEhhbmRsZSk7XG4gICAgYWJzdHJhY3RJbmNsdWRlZEcuYXBwZW5kKGVuZEhhbmRsZSk7XG4gICAgYWJzdHJhY3RJbmNsdWRlZEcuYXBwZW5kKHJlY3RhbmdsZSk7XG5cbiAgICByZXR1cm4gYWJzdHJhY3RJbmNsdWRlZEc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYW5kbGVPcHRpb24oaXNIb3ZlcjogYm9vbGVhbikge1xuICAgIHJldHVybiBpc0hvdmVyXG4gICAgICAgID8ge1xuICAgICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgICBzdHJva2U6IEFCU1RSQUNUX0hBTkRMRV9DT0xPUixcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDMsXG4gICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgIH07XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUJvYXJkQ2xhc3MoYm9hcmQ6IFBsYWl0Qm9hcmQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uIHwgdW5kZWZpbmVkLCBpc0hvcml6b250YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAoYWN0aXZlSGFuZGxlUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctaG9yaXpvbnRhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ2Fic3RyYWN0LXJlc2l6aW5nLWhvcml6b250YWwnKTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3QWJzdHJhY3RSb3VuZFJlY3RhbmdsZShcbiAgICByczogUm91Z2hTVkcsXG4gICAgeDE6IG51bWJlcixcbiAgICB5MTogbnVtYmVyLFxuICAgIHgyOiBudW1iZXIsXG4gICAgeTI6IG51bWJlcixcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW4sXG4gICAgb3B0aW9uczogT3B0aW9uc1xuKSB7XG4gICAgY29uc3Qgd2lkdGggPSBNYXRoLmFicyh4MSAtIHgyKTtcbiAgICBjb25zdCBoZWlnaHQgPSBNYXRoLmFicyh5MSAtIHkyKTtcblxuICAgIGNvbnN0IHJhZGl1cyA9IDU7XG4gICAgY29uc3QgaGFuZGxlR2FwID0gNDtcbiAgICBjb25zdCBoYW5kbGVMZW5ndGggPSAxMDtcblxuICAgIGNvbnN0IGhhbmRsZVNwYWNlID0gaGFuZGxlTGVuZ3RoICsgaGFuZGxlR2FwICogMjtcblxuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlU2lkZUxpbmUgPSAod2lkdGggLSBoYW5kbGVTcGFjZSAtIHJhZGl1cyAqIDIpIC8gMjtcbiAgICAgICAgY29uc3Qgc2lkZUxpbmUgPSBoZWlnaHQgLSByYWRpdXMgKiAyO1xuICAgICAgICByZXR1cm4gcnMucGF0aChcbiAgICAgICAgICAgIGBNJHt4MSArIHJhZGl1c30sJHt5MX1cbiAgICAgICAgICAgIGwke2hhbmRsZVNpZGVMaW5lfSwwXG4gICAgICAgICAgICBtJHtoYW5kbGVTcGFjZX0sMFxuICAgICAgICAgICAgbCR7aGFuZGxlU2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwke3JhZGl1c31cbiAgICAgICAgICAgIGwwLCR7c2lkZUxpbmV9XG4gICAgICAgICAgICBhJHtyYWRpdXN9LCR7cmFkaXVzfSwwLDAsMSwtJHtyYWRpdXN9LCR7cmFkaXVzfVxuICAgICAgICAgICAgbC0ke2hhbmRsZVNpZGVMaW5lfSwwXG4gICAgICAgICAgICBtLSR7aGFuZGxlU3BhY2V9LDBcbiAgICAgICAgICAgIGwtJHtoYW5kbGVTaWRlTGluZX0sMFxuICAgICAgICAgICAgYSR7cmFkaXVzfSwke3JhZGl1c30sMCwwLDEsLSR7cmFkaXVzfSwtJHtyYWRpdXN9XG4gICAgICAgICAgICBsMCwtJHtzaWRlTGluZX1cbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwtJHtyYWRpdXN9YCxcbiAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYW5kbGVTaWRlTGluZSA9IChoZWlnaHQgLSBoYW5kbGVTcGFjZSAtIHJhZGl1cyAqIDIpIC8gMjtcbiAgICAgICAgY29uc3Qgc2lkZUxpbmUgPSB3aWR0aCAtIHJhZGl1cyAqIDI7XG4gICAgICAgIHJldHVybiBycy5wYXRoKFxuICAgICAgICAgICAgYE0ke3gxICsgcmFkaXVzfSwke3kxfVxuICAgICAgICAgICAgbCR7c2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwke3JhZGl1c31cbiAgICAgICAgICAgIGwwLCR7aGFuZGxlU2lkZUxpbmV9XG4gICAgICAgICAgICBtMCwke2hhbmRsZVNwYWNlfVxuICAgICAgICAgICAgbDAsJHtoYW5kbGVTaWRlTGluZX1cbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLC0ke3JhZGl1c30sJHtyYWRpdXN9XG4gICAgICAgICAgICBsLSR7c2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLC0ke3JhZGl1c30sLSR7cmFkaXVzfVxuICAgICAgICAgICAgbDAsLSR7aGFuZGxlU2lkZUxpbmV9XG4gICAgICAgICAgICBtMCwtJHtoYW5kbGVTcGFjZX1cbiAgICAgICAgICAgIGwwLC0ke2hhbmRsZVNpZGVMaW5lfVxuICAgICAgICAgICAgYSR7cmFkaXVzfSwke3JhZGl1c30sMCwwLDEsJHtyYWRpdXN9LC0ke3JhZGl1c31gLFxuICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,55 @@
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, ROOT_TOPIC_WIDTH } from '../../constants/node-topic-style';
5
+ import { NodeSpace } from '../space';
6
+ export const createEmptyMind = (board, point) => {
7
+ const element = createMindElement('思维导图', ROOT_TOPIC_WIDTH, ROOT_TOPIC_HEIGHT, { layout: MindLayoutType.right });
8
+ element.isRoot = true;
9
+ element.type = 'mindmap';
10
+ const width = NodeSpace.getNodeWidth(board, element);
11
+ const height = NodeSpace.getNodeHeight(board, element);
12
+ element.points = [[point[0] - width / 2, point[1] - height / 2]];
13
+ return element;
14
+ };
15
+ export const createDefaultMind = (point, rightNodeCount, layout) => {
16
+ const root = createMindElement('思维导图', ROOT_TOPIC_WIDTH, ROOT_TOPIC_HEIGHT, { layout });
17
+ root.rightNodeCount = rightNodeCount;
18
+ root.isRoot = true;
19
+ root.type = 'mindmap';
20
+ root.points = [point];
21
+ const children = [1, 1, 1].map(() => {
22
+ return createMindElement('新建节点', 56, TEXT_DEFAULT_HEIGHT, {});
23
+ });
24
+ root.children = children;
25
+ return root;
26
+ };
27
+ export const createMindElement = (text, width, height, options) => {
28
+ const newElement = {
29
+ id: idCreator(),
30
+ data: {
31
+ topic: buildText(text)
32
+ },
33
+ children: [],
34
+ width,
35
+ height
36
+ };
37
+ let key;
38
+ for (key in options) {
39
+ if (!isNullOrUndefined(options[key])) {
40
+ newElement[key] = options[key];
41
+ }
42
+ }
43
+ return newElement;
44
+ };
45
+ export const INHERIT_ATTRIBUTE_KEYS = [
46
+ 'fill',
47
+ 'strokeColor',
48
+ 'strokeWidth',
49
+ 'shape',
50
+ 'layout',
51
+ 'branchColor',
52
+ 'branchWidth',
53
+ 'branchShape'
54
+ ];
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2NyZWF0ZS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHckMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFZLEVBQUUsRUFBRTtJQUMvRCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakgsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdEIsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDekIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsY0FBc0IsRUFBRSxNQUFzQixFQUFFLEVBQUU7SUFDOUYsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFzQixFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQ2xILE1BQU0sVUFBVSxHQUFnQjtRQUM1QixFQUFFLEVBQUUsU0FBUyxFQUFFO1FBQ2YsSUFBSSxFQUFFO1lBQ0YsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFDRCxRQUFRLEVBQUUsRUFBRTtRQUNaLEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztJQUVGLElBQUksR0FBeUIsQ0FBQztJQUM5QixLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLFVBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNDO0tBQ0o7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFhRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNsQyxNQUFNO0lBQ04sYUFBYTtJQUNiLGFBQWE7SUFDYixPQUFPO0lBQ1AsUUFBUTtJQUNSLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGlkQ3JlYXRvciwgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBURVhUX0RFRkFVTFRfSEVJR0hULCBidWlsZFRleHQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IEJyYW5jaFNoYXBlLCBNaW5kRWxlbWVudCwgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBST09UX1RPUElDX0hFSUdIVCwgUk9PVF9UT1BJQ19XSURUSCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tICcuLi9zcGFjZSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRW1wdHlNaW5kID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJ+aAnee7tOWvvOWbvicsIFJPT1RfVE9QSUNfV0lEVEgsIFJPT1RfVE9QSUNfSEVJR0hULCB7IGxheW91dDogTWluZExheW91dFR5cGUucmlnaHQgfSk7XG4gICAgZWxlbWVudC5pc1Jvb3QgPSB0cnVlO1xuICAgIGVsZW1lbnQudHlwZSA9ICdtaW5kbWFwJztcbiAgICBjb25zdCB3aWR0aCA9IE5vZGVTcGFjZS5nZXROb2RlV2lkdGgoYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IE5vZGVTcGFjZS5nZXROb2RlSGVpZ2h0KGJvYXJkIGFzIFBsYWl0TWluZEJvYXJkLCBlbGVtZW50KTtcbiAgICBlbGVtZW50LnBvaW50cyA9IFtbcG9pbnRbMF0gLSB3aWR0aCAvIDIsIHBvaW50WzFdIC0gaGVpZ2h0IC8gMl1dO1xuICAgIHJldHVybiBlbGVtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlZmF1bHRNaW5kID0gKHBvaW50OiBQb2ludCwgcmlnaHROb2RlQ291bnQ6IG51bWJlciwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGNvbnN0IHJvb3QgPSBjcmVhdGVNaW5kRWxlbWVudCgn5oCd57u05a+85Zu+JywgUk9PVF9UT1BJQ19XSURUSCwgUk9PVF9UT1BJQ19IRUlHSFQsIHsgbGF5b3V0IH0pO1xuICAgIHJvb3QucmlnaHROb2RlQ291bnQgPSByaWdodE5vZGVDb3VudDtcbiAgICByb290LmlzUm9vdCA9IHRydWU7XG4gICAgcm9vdC50eXBlID0gJ21pbmRtYXAnO1xuICAgIHJvb3QucG9pbnRzID0gW3BvaW50XTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFsxLCAxLCAxXS5tYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlTWluZEVsZW1lbnQoJ+aWsOW7uuiKgueCuScsIDU2LCBURVhUX0RFRkFVTFRfSEVJR0hULCB7fSk7XG4gICAgfSk7XG4gICAgcm9vdC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHJldHVybiByb290O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1pbmRFbGVtZW50ID0gKHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBvcHRpb25zOiBJbmhlcml0QXR0cmlidXRlKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudDogTWluZEVsZW1lbnQgPSB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9waWM6IGJ1aWxkVGV4dCh0ZXh0KVxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG9wdGlvbnM7XG4gICAgZm9yIChrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgICAgICAgIChuZXdFbGVtZW50IGFzIGFueSlba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJbmhlcml0QXR0cmlidXRlIHtcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHNoYXBlPzogTWluZEVsZW1lbnRTaGFwZTtcbiAgICBsYXlvdXQ/OiBNaW5kTGF5b3V0VHlwZTtcbiAgICBicmFuY2hDb2xvcj86IHN0cmluZztcbiAgICBicmFuY2hXaWR0aD86IG51bWJlcjtcbiAgICBicmFuY2hTaGFwZT86IEJyYW5jaFNoYXBlO1xufVxuXG5leHBvcnQgY29uc3QgSU5IRVJJVF9BVFRSSUJVVEVfS0VZUyA9IFtcbiAgICAnZmlsbCcsXG4gICAgJ3N0cm9rZUNvbG9yJyxcbiAgICAnc3Ryb2tlV2lkdGgnLFxuICAgICdzaGFwZScsXG4gICAgJ2xheW91dCcsXG4gICAgJ2JyYW5jaENvbG9yJyxcbiAgICAnYnJhbmNoV2lkdGgnLFxuICAgICdicmFuY2hTaGFwZSdcbl07XG4iXX0=
@@ -0,0 +1,36 @@
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, element) {
17
+ const width = NodeSpace.getNodeWidth(board, element);
18
+ const height = NodeSpace.getNodeHeight(board, element);
19
+ const nodeRectangle = {
20
+ x: element.points[0][0],
21
+ y: element.points[0][1],
22
+ width,
23
+ height
24
+ };
25
+ return nodeRectangle;
26
+ }
27
+ export function isHitMindElement(board, point, element) {
28
+ const node = MindElement.getNode(element);
29
+ if (node && distanceBetweenPointAndRectangle(point[0], point[1], getRectangleByNode(node)) === 0) {
30
+ return true;
31
+ }
32
+ else {
33
+ return false;
34
+ }
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL3Bvc2l0aW9uL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyxnQ0FBZ0MsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2hELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFjO0lBQzdDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE9BQU87UUFDSCxDQUFDO1FBQ0QsQ0FBQztRQUNELEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBcUIsRUFBRSxPQUFvQjtJQUM3RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBRztRQUNsQixDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztJQUNGLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBaUIsRUFBRSxLQUFZLEVBQUUsT0FBb0I7SUFDbEYsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxJQUFJLElBQUksSUFBSSxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzlGLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7U0FBTTtRQUNILE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgTm9kZVNwYWNlIH0gZnJvbSAnLi4vc3BhY2Uvbm9kZS1zcGFjZSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlY3RhbmdsZUJ5Tm9kZShub2RlOiBNaW5kTm9kZSk6IFJlY3RhbmdsZUNsaWVudCB7XG4gICAgY29uc3QgeCA9IG5vZGUueCArIG5vZGUuaEdhcDtcbiAgICBsZXQgeSA9IG5vZGUueSArIG5vZGUudkdhcDtcbiAgICBjb25zdCB3aWR0aCA9IG5vZGUud2lkdGggLSBub2RlLmhHYXAgKiAyO1xuICAgIGNvbnN0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IC0gbm9kZS52R2FwICogMjtcbiAgICByZXR1cm4ge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlY3RhbmdsZUJ5RWxlbWVudChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3Qgd2lkdGggPSBOb2RlU3BhY2UuZ2V0Tm9kZVdpZHRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBoZWlnaHQgPSBOb2RlU3BhY2UuZ2V0Tm9kZUhlaWdodChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3Qgbm9kZVJlY3RhbmdsZSA9IHtcbiAgICAgICAgeDogZWxlbWVudC5wb2ludHMhWzBdWzBdLFxuICAgICAgICB5OiBlbGVtZW50LnBvaW50cyFbMF1bMV0sXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xuICAgIHJldHVybiBub2RlUmVjdGFuZ2xlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIaXRNaW5kRWxlbWVudChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IFBvaW50LCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgIGNvbnN0IG5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpO1xuICAgIGlmIChub2RlICYmIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKHBvaW50WzBdLCBwb2ludFsxXSwgZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19