@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,106 +0,0 @@
1
- import { BOARD_TO_HOST, PlaitBoard, PlaitElement, Transforms, getSelectedElements, toPoint, transformPoint } from '@plait/core';
2
- import { AbstractNode, isHorizontalLayout, isStandardLayout } from '@plait/layouts';
3
- import { AbstractHandlePosition, AbstractResizeState, MindElement } from '../interfaces';
4
- import { MindQueries } from '../public-api';
5
- import { findLocationLeftIndex, getHitAbstractHandle, getLocationScope, handleTouchedAbstract } from '../utils/abstract/resize';
6
- import { separateChildren } from '../utils/abstract/common';
7
- export const withAbstract = (board) => {
8
- const newBoard = board;
9
- const { mousedown, mousemove, mouseup } = board;
10
- let activeAbstractElement;
11
- let abstractHandlePosition;
12
- let touchedAbstract;
13
- let startPoint;
14
- let newProperty;
15
- board.mousedown = (event) => {
16
- const activeAbstractElements = getSelectedElements(board).filter(element => AbstractNode.isAbstract(element));
17
- const host = BOARD_TO_HOST.get(board);
18
- const point = transformPoint(board, toPoint(event.x, event.y, host));
19
- activeAbstractElement = activeAbstractElements.find(element => {
20
- abstractHandlePosition = getHitAbstractHandle(board, element, point);
21
- if (newBoard?.abstractResize) {
22
- newBoard.abstractResize(AbstractResizeState.start);
23
- }
24
- return abstractHandlePosition;
25
- });
26
- if (activeAbstractElement) {
27
- startPoint = point;
28
- return;
29
- }
30
- mousedown(event);
31
- };
32
- board.mousemove = (event) => {
33
- getSelectedElements(board);
34
- const host = BOARD_TO_HOST.get(board);
35
- const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
36
- touchedAbstract = handleTouchedAbstract(board, touchedAbstract, endPoint);
37
- if (abstractHandlePosition && activeAbstractElement) {
38
- event.preventDefault();
39
- const abstractComponent = PlaitElement.getComponent(activeAbstractElement);
40
- const element = abstractComponent.element;
41
- const nodeLayout = MindQueries.getCorrectLayoutByElement(board, activeAbstractElement);
42
- const isHorizontal = isHorizontalLayout(nodeLayout);
43
- const parentElement = MindElement.getParent(element);
44
- let children = parentElement.children;
45
- const parentLayout = MindQueries.getLayoutByElement(parentElement);
46
- if (isStandardLayout(parentLayout)) {
47
- const rightNodeCount = parentElement.rightNodeCount;
48
- const { leftChildren, rightChildren } = separateChildren(parentElement);
49
- if (activeAbstractElement.end < rightNodeCount) {
50
- children = rightChildren;
51
- }
52
- if (activeAbstractElement.start >= rightNodeCount) {
53
- children = leftChildren;
54
- }
55
- }
56
- if (newBoard?.abstractResize) {
57
- newBoard.abstractResize(AbstractResizeState.resizing);
58
- }
59
- const resizingLocation = isHorizontal ? endPoint[1] : endPoint[0];
60
- const parent = MindElement.getNode(parentElement);
61
- const scope = getLocationScope(board, abstractHandlePosition, children, element, parent, isHorizontal);
62
- const location = Math.min(scope.max, Math.max(scope.min, resizingLocation));
63
- let locationIndex = findLocationLeftIndex(board, children, location, isHorizontal);
64
- const isPropertyUnchanged = (abstractHandlePosition === AbstractHandlePosition.start &&
65
- locationIndex + 1 === activeAbstractElement.start) ||
66
- (abstractHandlePosition === AbstractHandlePosition.end && locationIndex === activeAbstractElement.end);
67
- if (isPropertyUnchanged) {
68
- newProperty = undefined;
69
- }
70
- else {
71
- if (isStandardLayout(parent.layout)) {
72
- const rightNodeCount = parent.origin.rightNodeCount;
73
- let start = element.start;
74
- if (start >= rightNodeCount) {
75
- locationIndex += rightNodeCount;
76
- }
77
- }
78
- newProperty =
79
- abstractHandlePosition === AbstractHandlePosition.start ? { start: locationIndex + 1 } : { end: locationIndex };
80
- }
81
- abstractComponent.updateAbstractIncludedOutline(abstractHandlePosition, location);
82
- }
83
- mousemove(event);
84
- };
85
- board.mouseup = (event) => {
86
- startPoint = undefined;
87
- abstractHandlePosition = undefined;
88
- if (activeAbstractElement) {
89
- if (newBoard?.abstractResize) {
90
- newBoard.abstractResize(AbstractResizeState.end);
91
- }
92
- if (newProperty) {
93
- const path = PlaitBoard.findPath(board, activeAbstractElement);
94
- Transforms.setNode(board, newProperty, path);
95
- }
96
- else {
97
- const abstractComponent = PlaitElement.getComponent(activeAbstractElement);
98
- abstractComponent.updateAbstractIncludedOutline();
99
- }
100
- activeAbstractElement = undefined;
101
- }
102
- mouseup(event);
103
- };
104
- return board;
105
- };
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBR1osVUFBVSxFQUNWLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBK0MsQ0FBQztJQUNwRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBeUMsQ0FBQztJQUM5QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENB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ZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQbHVnaW4sXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIHRvUG9pbnQsXG4gICAgdHJhbnNmb3JtUG9pbnRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3ROb2RlLCBMYXlvdXROb2RlLCBNaW5kTGF5b3V0VHlwZSwgaXNIb3Jpem9udGFsTGF5b3V0LCBpc1N0YW5kYXJkTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgQWJzdHJhY3RSZXNpemVTdGF0ZSwgTWluZEVsZW1lbnQsIFBsYWl0QWJzdHJhY3RCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQsIE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBmaW5kTG9jYXRpb25MZWZ0SW5kZXgsIGdldEhpdEFic3RyYWN0SGFuZGxlLCBnZXRMb2NhdGlvblNjb3BlLCBoYW5kbGVUb3VjaGVkQWJzdHJhY3QgfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9yZXNpemUnO1xuaW1wb3J0IHsgc2VwYXJhdGVDaGlsZHJlbiB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCB3aXRoQWJzdHJhY3Q6IFBsYWl0UGx1Z2luID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgbmV3Qm9hcmQgPSBib2FyZCBhcyBQbGFpdEJvYXJkICYgUGxhaXRBYnN0cmFjdEJvYXJkO1xuXG4gICAgY29uc3QgeyBtb3VzZWRvd24sIG1vdXNlbW92ZSwgbW91c2V1cCB9ID0gYm9hcmQ7XG4gICAgbGV0IGFjdGl2ZUFic3RyYWN0RWxlbWVudDogUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uIHwgdW5kZWZpbmVkO1xuICAgIGxldCB0b3VjaGVkQWJzdHJhY3Q6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgc3RhcnRQb2ludDogUG9pbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG5ld1Byb3BlcnR5OiB7IGVuZDogbnVtYmVyIH0gfCB7IHN0YXJ0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVBYnN0cmFjdEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKGVsZW1lbnQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpO1xuICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGhvc3QhKSk7XG5cbiAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gYWN0aXZlQWJzdHJhY3RFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9IGdldEhpdEFic3RyYWN0SGFuZGxlKGJvYXJkLCBlbGVtZW50IGFzIE1pbmRFbGVtZW50LCBwb2ludCk7XG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/LmFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQuYWJzdHJhY3RSZXNpemUoQWJzdHJhY3RSZXNpemVTdGF0ZS5zdGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2Vtb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGhvc3QhKSk7XG5cbiAgICAgICAgdG91Y2hlZEFic3RyYWN0ID0gaGFuZGxlVG91Y2hlZEFic3RyYWN0KGJvYXJkLCB0b3VjaGVkQWJzdHJhY3QsIGVuZFBvaW50KTtcblxuICAgICAgICBpZiAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiAmJiBhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBhYnN0cmFjdENvbXBvbmVudC5lbGVtZW50O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQocGFyZW50RWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50ITtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxlZnRDaGlsZHJlbiwgcmlnaHRDaGlsZHJlbiB9ID0gc2VwYXJhdGVDaGlsZHJlbihwYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuZW5kISA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gcmlnaHRDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLnN0YXJ0ISA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGxlZnRDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8uYWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5hYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnJlc2l6aW5nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzaXppbmdMb2NhdGlvbiA9IGlzSG9yaXpvbnRhbCA/IGVuZFBvaW50WzFdIDogZW5kUG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSAoTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnRFbGVtZW50KSBhcyB1bmtub3duKSBhcyBMYXlvdXROb2RlO1xuICAgICAgICAgICAgY29uc3Qgc2NvcGUgPSBnZXRMb2NhdGlvblNjb3BlKGJvYXJkLCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBjaGlsZHJlbiwgZWxlbWVudCwgcGFyZW50LCBpc0hvcml6b250YWwpO1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBNYXRoLm1pbihzY29wZS5tYXgsIE1hdGgubWF4KHNjb3BlLm1pbiwgcmVzaXppbmdMb2NhdGlvbikpO1xuXG4gICAgICAgICAgICBsZXQgbG9jYXRpb25JbmRleCA9IGZpbmRMb2NhdGlvbkxlZnRJbmRleChib2FyZCwgY2hpbGRyZW4sIGxvY2F0aW9uLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgICAgICBjb25zdCBpc1Byb3BlcnR5VW5jaGFuZ2VkID1cbiAgICAgICAgICAgICAgICAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCAmJlxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICsgMSA9PT0gKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhKSB8fFxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZCAmJiBsb2NhdGlvbkluZGV4ID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhKTtcblxuICAgICAgICAgICAgaWYgKGlzUHJvcGVydHlVbmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50LmxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBlbGVtZW50LnN0YXJ0ITtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICs9IHJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPVxuICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ID8geyBzdGFydDogbG9jYXRpb25JbmRleCArIDEgfSA6IHsgZW5kOiBsb2NhdGlvbkluZGV4IH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS51cGRhdGVBYnN0cmFjdEluY2x1ZGVkT3V0bGluZShhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBzdGFydFBvaW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/LmFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQuYWJzdHJhY3RSZXNpemUoQWJzdHJhY3RSZXNpemVTdGF0ZS5lbmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3UHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgYWN0aXZlQWJzdHJhY3RFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld1Byb3BlcnR5LCBwYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGFjdGl2ZUFic3RyYWN0RWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgYWJzdHJhY3RDb21wb25lbnQhLnVwZGF0ZUFic3RyYWN0SW5jbHVkZWRPdXRsaW5lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2V1cChldmVudCk7XG4gICAgfTtcbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
@@ -1,179 +0,0 @@
1
- import { createG, distanceBetweenPointAndPoint, IS_TEXT_EDITABLE, PlaitBoard, PlaitElement, toPoint, transformPoint, Transforms, ELEMENT_TO_COMPONENT, getSelectedElements, updateForeignObject } from '@plait/core';
2
- import { AbstractNode, isStandardLayout } from '@plait/layouts';
3
- import { getRichtextRectangleByNode } from '../draw/richtext';
4
- import { drawRectangleNode } from '../draw/shape';
5
- import { MindElement, PlaitMind } from '../interfaces/element';
6
- import { directionCorrector, directionDetector, drawPlaceholderDropNodeG, findUpElement, readjustmentDropTarget } from '../utils';
7
- import { getRectangleByNode, hitMindElement } from '../utils/graph';
8
- import { MindQueries } from '../queries';
9
- import { addActiveOnDragOrigin, isDragging, isValidTarget, removeActiveOnDragOrigin, setIsDragging, updateAbstractInDnd, updatePathByLayoutAndDropTarget, updateRightNodeCount } from '../utils/dnd';
10
- import { getEmojiForeignRectangle } from './emoji/emoji';
11
- const DRAG_MOVE_BUFFER = 5;
12
- export const withDnd = (board) => {
13
- const { mousedown, mousemove, globalMouseup, keydown } = board;
14
- let activeElement;
15
- let startPoint;
16
- let fakeDragNodeG;
17
- let fakeDropNodeG;
18
- let dropTarget = null;
19
- board.mousedown = (event) => {
20
- if (board.options.readonly || IS_TEXT_EDITABLE.get(board) || event.button === 2) {
21
- mousedown(event);
22
- return;
23
- }
24
- // 确认是否 hit 节点
25
- const point = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
26
- const selectedElements = getSelectedElements(board);
27
- board.children.forEach((value) => {
28
- if (activeElement) {
29
- return;
30
- }
31
- if (PlaitMind.isMind(value)) {
32
- const mindComponent = ELEMENT_TO_COMPONENT.get(value);
33
- const root = mindComponent.root;
34
- root.eachNode((node) => {
35
- if (activeElement) {
36
- return;
37
- }
38
- const canDrag = hitMindElement(board, point, node.origin) &&
39
- !node.origin.isRoot &&
40
- !AbstractNode.isAbstract(node.origin) &&
41
- selectedElements.length <= 1;
42
- if (canDrag) {
43
- activeElement = node.origin;
44
- startPoint = point;
45
- }
46
- });
47
- }
48
- });
49
- if (activeElement) {
50
- event.preventDefault();
51
- }
52
- mousedown(event);
53
- };
54
- board.mousemove = (event) => {
55
- if (!board.options.readonly && activeElement && startPoint) {
56
- const endPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
57
- const distance = distanceBetweenPointAndPoint(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);
58
- if (distance < DRAG_MOVE_BUFFER) {
59
- return;
60
- }
61
- if (!isDragging(board)) {
62
- setIsDragging(board, true);
63
- fakeDragNodeG = createG();
64
- fakeDragNodeG.classList.add('dragging', 'fake-node', 'plait-board-attached');
65
- fakeDropNodeG = createG();
66
- addActiveOnDragOrigin(activeElement);
67
- PlaitBoard.getHost(board).appendChild(fakeDropNodeG);
68
- PlaitBoard.getHost(board).appendChild(fakeDragNodeG);
69
- }
70
- else {
71
- if (fakeDragNodeG) {
72
- fakeDragNodeG.innerHTML = '';
73
- }
74
- fakeDropNodeG?.childNodes.forEach(node => {
75
- node.remove();
76
- });
77
- }
78
- // fake dragging origin node
79
- const offsetX = endPoint[0] - startPoint[0];
80
- const offsetY = endPoint[1] - startPoint[1];
81
- const activeComponent = PlaitElement.getComponent(activeElement);
82
- const fakeDraggingNode = {
83
- ...activeComponent.node,
84
- children: [],
85
- x: activeComponent.node.x + offsetX,
86
- y: activeComponent.node.y + offsetY
87
- };
88
- const textRectangle = getRichtextRectangleByNode(board, activeComponent.node);
89
- const fakeNodeG = drawRectangleNode(board, fakeDraggingNode);
90
- const richtextG = activeComponent.richtextG?.cloneNode(true);
91
- updateForeignObject(richtextG, textRectangle.width, textRectangle.height, textRectangle.x + offsetX, textRectangle.y + offsetY);
92
- fakeDragNodeG?.append(fakeNodeG);
93
- fakeDragNodeG?.append(richtextG);
94
- // draw emojis
95
- if (MindElement.hasEmojis(activeElement)) {
96
- const fakeEmojisG = activeComponent.emojisDrawer.g.cloneNode(true);
97
- const foreignRectangle = getEmojiForeignRectangle(board, activeElement);
98
- updateForeignObject(fakeEmojisG, foreignRectangle.width, foreignRectangle.height, foreignRectangle.x + offsetX, foreignRectangle.y + offsetY);
99
- fakeDragNodeG?.append(fakeEmojisG);
100
- }
101
- // drop position detect
102
- const { x, y } = getRectangleByNode(fakeDraggingNode);
103
- const detectCenterPoint = [x + textRectangle.width / 2, y + textRectangle.height / 2];
104
- let detectResult = null;
105
- board.children.forEach((value) => {
106
- if (detectResult) {
107
- return;
108
- }
109
- if (PlaitMind.isMind(value)) {
110
- const mindmapComponent = ELEMENT_TO_COMPONENT.get(value);
111
- const root = mindmapComponent?.root;
112
- root.eachNode((node) => {
113
- if (detectResult) {
114
- return;
115
- }
116
- const directions = directionDetector(node, detectCenterPoint);
117
- if (directions) {
118
- detectResult = directionCorrector(board, node, directions);
119
- }
120
- dropTarget = null;
121
- if (detectResult && isValidTarget(activeComponent.node.origin, node.origin)) {
122
- dropTarget = { target: node.origin, detectResult: detectResult[0] };
123
- }
124
- });
125
- }
126
- });
127
- if (dropTarget?.target) {
128
- dropTarget = readjustmentDropTarget(board, dropTarget);
129
- drawPlaceholderDropNodeG(board, dropTarget, fakeDropNodeG);
130
- }
131
- }
132
- mousemove(event);
133
- };
134
- board.globalMouseup = (event) => {
135
- if (!board.options.readonly && activeElement) {
136
- if (dropTarget?.target) {
137
- const activeComponent = PlaitElement.getComponent(activeElement);
138
- const targetComponent = PlaitElement.getComponent(dropTarget.target);
139
- let targetPath = PlaitBoard.findPath(board, targetComponent.element);
140
- const mindElement = findUpElement(dropTarget.target).root;
141
- const mindComponent = ELEMENT_TO_COMPONENT.get(mindElement);
142
- const layout = MindQueries.getCorrectLayoutByElement(board, mindComponent?.root.origin);
143
- targetPath = updatePathByLayoutAndDropTarget(targetPath, layout, dropTarget);
144
- const originPath = PlaitBoard.findPath(board, activeComponent.element);
145
- let newElement = { isCollapsed: false }, rightTargetPath = PlaitBoard.findPath(board, targetComponent.element);
146
- updateAbstractInDnd(board, [activeElement], targetPath);
147
- if (isStandardLayout(layout)) {
148
- updateRightNodeCount(board, activeComponent, targetComponent, dropTarget.detectResult);
149
- }
150
- if (dropTarget.detectResult === 'right') {
151
- if (targetComponent.node.origin.isRoot) {
152
- targetPath = PlaitBoard.findPath(board, targetComponent.element);
153
- targetPath.push(0);
154
- const rightNodeCount = targetComponent.node.origin.rightNodeCount + 1;
155
- newElement = { isCollapsed: false, rightNodeCount };
156
- }
157
- Transforms.setNode(board, newElement, rightTargetPath);
158
- }
159
- Transforms.moveNode(board, originPath, targetPath);
160
- }
161
- if (isDragging(board)) {
162
- removeActiveOnDragOrigin(activeElement);
163
- }
164
- setIsDragging(board, false);
165
- activeElement = null;
166
- fakeDragNodeG?.remove();
167
- fakeDragNodeG = undefined;
168
- fakeDropNodeG?.remove();
169
- fakeDropNodeG = undefined;
170
- dropTarget = null;
171
- }
172
- globalMouseup(event);
173
- };
174
- board.keydown = (event) => {
175
- keydown(event);
176
- };
177
- return board;
178
- };
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtZG5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGdCQUFnQixFQUVoQixVQUFVLEVBQ1YsWUFBWSxFQUVaLE9BQU8sRUFDUCxjQUFjLEVBQ2QsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3pDLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsVUFBVSxFQUNWLGFBQWEsRUFDYix3QkFBd0IsRUFDeEIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQiwrQkFBK0IsRUFDL0Isb0JBQW9CLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFP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QzthQUMzQztZQUNELGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUIsYUFBYSxHQUFHLElBQUksQ0FBQztZQUNyQixhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEIsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUMxQixhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEIsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUMxQixVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO1FBQ0QsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7UUFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIElTX1RFWFRfRURJVEFCTEUsXG4gICAgUGF0aCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQb2ludCxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgRUxFTUVOVF9UT19DT01QT05FTlQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB1cGRhdGVGb3JlaWduT2JqZWN0XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGdldFJpY2h0ZXh0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vZHJhdy9yaWNodGV4dCc7XG5pbXBvcnQgeyBkcmF3UmVjdGFuZ2xlTm9kZSB9IGZyb20gJy4uL2RyYXcvc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZGlyZWN0aW9uQ29ycmVjdG9yLCBkaXJlY3Rpb25EZXRlY3RvciwgZHJhd1BsYWNlaG9sZGVyRHJvcE5vZGVHLCBmaW5kVXBFbGVtZW50LCByZWFkanVzdG1lbnREcm9wVGFyZ2V0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBoaXRNaW5kRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2dyYXBoJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBQbGFpdE1pbmRDb21wb25lbnQgfSBmcm9tICcuLi9taW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4vd2l0aC1leHRlbmQtbWluZCc7XG5pbXBvcnQge1xuICAgIGFkZEFjdGl2ZU9uRHJhZ09yaWdpbixcbiAgICBpc0RyYWdnaW5nLFxuICAgIGlzVmFsaWRUYXJnZXQsXG4gICAgcmVtb3ZlQWN0aXZlT25EcmFnT3JpZ2luLFxuICAgIHNldElzRHJhZ2dpbmcsXG4gICAgdXBkYXRlQWJzdHJhY3RJbkRuZCxcbiAgICB1cGRhdGVQYXRoQnlMYXlvdXRBbmREcm9wVGFyZ2V0LFxuICAgIHVwZGF0ZVJpZ2h0Tm9kZUNvdW50XG59IGZyb20gJy4uL3V0aWxzL2RuZCc7XG5pbXBvcnQgeyBnZXRFbW9qaUZvcmVpZ25SZWN0YW5nbGUgfSBmcm9tICcuL2Vtb2ppL2Vtb2ppJztcblxuY29uc3QgRFJBR19NT1ZFX0JVRkZFUiA9IDU7XG5cbmV4cG9ydCBjb25zdCB3aXRoRG5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBtb3VzZWRvd24sIG1vdXNlbW92ZSwgZ2xvYmFsTW91c2V1cCwga2V5ZG93biB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgYWN0aXZlRWxlbWVudDogTWluZEVsZW1lbnQgfCBudWxsO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludDtcbiAgICBsZXQgZmFrZURyYWdOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0gfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoYm9hcmQub3B0aW9ucy5yZWFkb25seSB8fCBJU19URVhUX0VESVRBQkxFLmdldChib2FyZCkgfHwgZXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g56Gu6K6k5piv5ZCmIGhpdCDoioLngrlcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgYm9hcmQuY2hpbGRyZW4uZm9yRWFjaCgodmFsdWU6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5kQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHZhbHVlKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IG1pbmRDb21wb25lbnQucm9vdDtcbiAgICAgICAgICAgICAgICAocm9vdCBhcyBhbnkpLmVhY2hOb2RlKChub2RlOiBNaW5kTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuRHJhZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBoaXRNaW5kRWxlbWVudChib2FyZCwgcG9pbnQsIG5vZGUub3JpZ2luKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIW5vZGUub3JpZ2luLmlzUm9vdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KG5vZGUub3JpZ2luKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPD0gMTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FuRHJhZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IG5vZGUub3JpZ2luO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2Vtb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghYm9hcmQub3B0aW9ucy5yZWFkb25seSAmJiBhY3RpdmVFbGVtZW50ICYmIHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHN0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV0sIGVuZFBvaW50WzBdLCBlbmRQb2ludFsxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBEUkFHX01PVkVfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzRHJhZ2dpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNEcmFnZ2luZyhib2FyZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZmFrZURyYWdOb2RlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgICAgICAgICBmYWtlRHJhZ05vZGVHLmNsYXNzTGlzdC5hZGQoJ2RyYWdnaW5nJywgJ2Zha2Utbm9kZScsICdwbGFpdC1ib2FyZC1hdHRhY2hlZCcpO1xuICAgICAgICAgICAgICAgIGZha2VEcm9wTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICAgICAgYWRkQWN0aXZlT25EcmFnT3JpZ2luKGFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kQ2hpbGQoZmFrZURyb3BOb2RlRyk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChmYWtlRHJhZ05vZGVHKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGZha2VEcmFnTm9kZUcpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFrZURyYWdOb2RlRy5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHPy5jaGlsZE5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZha2UgZHJhZ2dpbmcgb3JpZ2luIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IGZha2VEcmFnZ2luZ05vZGU6IE1pbmROb2RlID0ge1xuICAgICAgICAgICAgICAgIC4uLmFjdGl2ZUNvbXBvbmVudC5ub2RlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICB4OiBhY3RpdmVDb21wb25lbnQubm9kZS54ICsgb2Zmc2V0WCxcbiAgICAgICAgICAgICAgICB5OiBhY3RpdmVDb21wb25lbnQubm9kZS55ICsgb2Zmc2V0WVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZWN0YW5nbGUgPSBnZXRSaWNodGV4dFJlY3RhbmdsZUJ5Tm9kZShib2FyZCBhcyBQbGFpdE1pbmRCb2FyZCwgYWN0aXZlQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmFrZU5vZGVHID0gZHJhd1JlY3RhbmdsZU5vZGUoYm9hcmQsIGZha2VEcmFnZ2luZ05vZGUpO1xuICAgICAgICAgICAgY29uc3QgcmljaHRleHRHID0gYWN0aXZlQ29tcG9uZW50LnJpY2h0ZXh0Rz8uY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuXG4gICAgICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KHJpY2h0ZXh0RywgdGV4dFJlY3RhbmdsZS53aWR0aCwgdGV4dFJlY3RhbmdsZS5oZWlnaHQsIHRleHRSZWN0YW5nbGUueCArIG9mZnNldFgsIHRleHRSZWN0YW5nbGUueSArIG9mZnNldFkpO1xuXG4gICAgICAgICAgICBmYWtlRHJhZ05vZGVHPy5hcHBlbmQoZmFrZU5vZGVHKTtcbiAgICAgICAgICAgIGZha2VEcmFnTm9kZUc/LmFwcGVuZChyaWNodGV4dEcpO1xuXG4gICAgICAgICAgICAvLyBkcmF3IGVtb2ppc1xuICAgICAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VFbW9qaXNHID0gKGFjdGl2ZUNvbXBvbmVudC5lbW9qaXNEcmF3ZXIuZyBhcyBTVkdHRWxlbWVudCkuY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcmVpZ25SZWN0YW5nbGUgPSBnZXRFbW9qaUZvcmVpZ25SZWN0YW5nbGUoYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIGFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QoXG4gICAgICAgICAgICAgICAgICAgIGZha2VFbW9qaXNHLFxuICAgICAgICAgICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS54ICsgb2Zmc2V0WCxcbiAgICAgICAgICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS55ICsgb2Zmc2V0WVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgZmFrZURyYWdOb2RlRz8uYXBwZW5kKGZha2VFbW9qaXNHKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZHJvcCBwb3NpdGlvbiBkZXRlY3RcbiAgICAgICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGZha2VEcmFnZ2luZ05vZGUpO1xuICAgICAgICAgICAgY29uc3QgZGV0ZWN0Q2VudGVyUG9pbnQgPSBbeCArIHRleHRSZWN0YW5nbGUud2lkdGggLyAyLCB5ICsgdGV4dFJlY3RhbmdsZS5oZWlnaHQgLyAyXSBhcyBQb2ludDtcblxuICAgICAgICAgICAgbGV0IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0W10gfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIGJvYXJkLmNoaWxkcmVuLmZvckVhY2goKHZhbHVlOiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbmRtYXBDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQodmFsdWUpIGFzIFBsYWl0TWluZENvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IG1pbmRtYXBDb21wb25lbnQ/LnJvb3Q7XG5cbiAgICAgICAgICAgICAgICAgICAgKHJvb3QgYXMgYW55KS5lYWNoTm9kZSgobm9kZTogTWluZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25zID0gZGlyZWN0aW9uRGV0ZWN0b3Iobm9kZSwgZGV0ZWN0Q2VudGVyUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3RSZXN1bHQgPSBkaXJlY3Rpb25Db3JyZWN0b3IoYm9hcmQsIG5vZGUsIGRpcmVjdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ICYmIGlzVmFsaWRUYXJnZXQoYWN0aXZlQ29tcG9uZW50Lm5vZGUub3JpZ2luLCBub2RlLm9yaWdpbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wVGFyZ2V0ID0geyB0YXJnZXQ6IG5vZGUub3JpZ2luLCBkZXRlY3RSZXN1bHQ6IGRldGVjdFJlc3VsdFswXSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQ/LnRhcmdldCkge1xuICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQgPSByZWFkanVzdG1lbnREcm9wVGFyZ2V0KGJvYXJkLCBkcm9wVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBkcmF3UGxhY2Vob2xkZXJEcm9wTm9kZUcoYm9hcmQsIGRyb3BUYXJnZXQsIGZha2VEcm9wTm9kZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsTW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQ/LnRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlRWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChkcm9wVGFyZ2V0LnRhcmdldCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCB0YXJnZXRDb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluZEVsZW1lbnQgPSBmaW5kVXBFbGVtZW50KGRyb3BUYXJnZXQudGFyZ2V0KS5yb290O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbmRDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobWluZEVsZW1lbnQgYXMgUGxhaXRNaW5kKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgbWluZENvbXBvbmVudD8ucm9vdC5vcmlnaW4gYXMgTWluZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRhcmdldFBhdGggPSB1cGRhdGVQYXRoQnlMYXlvdXRBbmREcm9wVGFyZ2V0KHRhcmdldFBhdGgsIGxheW91dCwgZHJvcFRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luUGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFjdGl2ZUNvbXBvbmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICByaWdodFRhcmdldFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCB0YXJnZXRDb21wb25lbnQuZWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVBYnN0cmFjdEluRG5kKGJvYXJkLCBbYWN0aXZlRWxlbWVudF0sIHRhcmdldFBhdGgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVSaWdodE5vZGVDb3VudChib2FyZCwgYWN0aXZlQ29tcG9uZW50LCB0YXJnZXRDb21wb25lbnQsIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCB0YXJnZXRDb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9ICh0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4ucmlnaHROb2RlQ291bnQgYXMgbnVtYmVyKSArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50ID0geyBpc0NvbGxhcHNlZDogZmFsc2UsIHJpZ2h0Tm9kZUNvdW50IH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCByaWdodFRhcmdldFBhdGggYXMgUGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5tb3ZlTm9kZShib2FyZCwgb3JpZ2luUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0RyYWdnaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbihhY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldElzRHJhZ2dpbmcoYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICAgICAgZmFrZURyYWdOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBmYWtlRHJhZ05vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsTW91c2V1cChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAga2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
@@ -1,11 +0,0 @@
1
- export const withExtendMind = (board) => {
2
- const newBoard = board;
3
- newBoard.drawEmoji = (emoji, element) => {
4
- throw new Error('Not implement drawEmoji method error.');
5
- };
6
- newBoard.getMindOptions = () => {
7
- return { spaceBetweenEmojis: 4, emojiPadding: 0 };
8
- };
9
- return newBoard;
10
- };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1leHRlbmQtbWluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1leHRlbmQtbWluZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDaEQsTUFBTSxRQUFRLEdBQUcsS0FBb0MsQ0FBQztJQUV0RCxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxPQUFvQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFO1FBQzNCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RELENBQUMsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUsIFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBFbW9qaUl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQtZGF0YSc7XG5pbXBvcnQgeyBNaW5kRW1vamlCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9lbW9qaSc7XG5pbXBvcnQgeyBNaW5kT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3B0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRNaW5kQm9hcmQgZXh0ZW5kcyBQbGFpdEJvYXJkIHtcbiAgICBkcmF3RW1vamk6IChlbW9qaTogRW1vamlJdGVtLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4gQ29tcG9uZW50VHlwZTxNaW5kRW1vamlCYXNlQ29tcG9uZW50PjtcbiAgICBnZXRNaW5kT3B0aW9uczogKCkgPT4gTWluZE9wdGlvbnM7XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoRXh0ZW5kTWluZCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG5ld0JvYXJkID0gYm9hcmQgYXMgUGxhaXRCb2FyZCAmIFBsYWl0TWluZEJvYXJkO1xuXG4gICAgbmV3Qm9hcmQuZHJhd0Vtb2ppID0gKGVtb2ppOiBFbW9qaUl0ZW0sIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudCBkcmF3RW1vamkgbWV0aG9kIGVycm9yLicpO1xuICAgIH07XG5cbiAgICBuZXdCb2FyZC5nZXRNaW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgc3BhY2VCZXR3ZWVuRW1vamlzOiA0LCBlbW9qaVBhZGRpbmc6IDAgfTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ld0JvYXJkO1xufTtcbiJdfQ==
@@ -1,54 +0,0 @@
1
- import { isBottomLayout, isRightLayout, isLeftLayout, MindLayoutType, isStandardLayout, isTopLayout, AbstractNode } from '@plait/layouts';
2
- import { MindQueries } from '../queries';
3
- export const directionCorrector = (board, node, detectResults) => {
4
- if (!node.origin.isRoot && !AbstractNode.isAbstract(node.origin)) {
5
- const parentLayout = MindQueries.getCorrectLayoutByElement(board, node?.parent.origin);
6
- if (isStandardLayout(parentLayout)) {
7
- const idx = node.parent.children.findIndex(x => x === node);
8
- const isLeft = idx >= (node.parent.origin.rightNodeCount || 0);
9
- return getAllowedDirection(detectResults, [isLeft ? 'right' : 'left']);
10
- }
11
- if (isLeftLayout(parentLayout)) {
12
- return getAllowedDirection(detectResults, ['right']);
13
- }
14
- if (isRightLayout(parentLayout)) {
15
- return getAllowedDirection(detectResults, ['left']);
16
- }
17
- if (parentLayout === MindLayoutType.upward) {
18
- return getAllowedDirection(detectResults, ['bottom']);
19
- }
20
- if (parentLayout === MindLayoutType.downward) {
21
- return getAllowedDirection(detectResults, ['top']);
22
- }
23
- }
24
- else {
25
- const layout = MindQueries.getCorrectLayoutByElement(board, node?.origin);
26
- if (isStandardLayout(layout)) {
27
- return getAllowedDirection(detectResults, ['top', 'bottom']);
28
- }
29
- if (isTopLayout(layout)) {
30
- return getAllowedDirection(detectResults, ['left', 'right', 'bottom']);
31
- }
32
- if (isBottomLayout(layout)) {
33
- return getAllowedDirection(detectResults, ['left', 'right', 'top']);
34
- }
35
- if (layout === MindLayoutType.left) {
36
- return getAllowedDirection(detectResults, ['right', 'top', 'bottom']);
37
- }
38
- if (layout === MindLayoutType.right) {
39
- return getAllowedDirection(detectResults, ['left', 'top', 'bottom']);
40
- }
41
- }
42
- return null;
43
- };
44
- export const getAllowedDirection = (detectResults, illegalDirections) => {
45
- const directions = detectResults;
46
- illegalDirections.forEach(item => {
47
- const bottomDirectionIndex = directions.findIndex(direction => direction === item);
48
- if (bottomDirectionIndex !== -1) {
49
- directions.splice(bottomDirectionIndex, 1);
50
- }
51
- });
52
- return directions.length ? directions : null;
53
- };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLWNvcnJlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RpcmVjdGlvbi1jb3JyZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd6QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBYyxFQUFFLGFBQTZCLEVBQXlCLEVBQUU7SUFDMUgsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDOUQsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQXFCLENBQUMsQ0FBQztRQUN0RyxJQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM1RCxNQUFNLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0QsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUVELElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzVCLE9BQU8sbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN4RDtRQUVELElBQUksYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdCLE9BQU8sbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN2RDtRQUVELElBQUksWUFBWSxLQUFLLGNBQWMsQ0FBQyxNQUFNLEVBQUU7WUFDeEMsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDLFFBQVEsRUFBRTtZQUMxQyxPQUFPLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdEQ7S0FDSjtTQUFNO1FBQ0gsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBcUIsQ0FBQyxDQUFDO1FBQ3pGLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEIsT0FBTyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLE1BQU0sS0FBSyxjQUFjLENBQUMsSUFBSSxFQUFFO1lBQ2hDLE9BQU8sbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsSUFBSSxNQUFNLEtBQUssY0FBYyxDQUFDLEtBQUssRUFBRTtZQUNqQyxPQUFPLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUN4RTtLQUNKO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxhQUE2QixFQUFFLGlCQUFpQyxFQUF5QixFQUFFO0lBQzNILE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNqQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDN0IsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ25GLElBQUksb0JBQW9CLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDN0IsVUFBVSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmRFbGVtZW50LCBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaXNCb3R0b21MYXlvdXQsIGlzUmlnaHRMYXlvdXQsIGlzTGVmdExheW91dCwgTWluZExheW91dFR5cGUsIGlzU3RhbmRhcmRMYXlvdXQsIGlzVG9wTGF5b3V0LCBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGRpcmVjdGlvbkNvcnJlY3RvciA9IChib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogTWluZE5vZGUsIGRldGVjdFJlc3VsdHM6IERldGVjdFJlc3VsdFtdKTogRGV0ZWN0UmVzdWx0W10gfCBudWxsID0+IHtcbiAgICBpZiAoIW5vZGUub3JpZ2luLmlzUm9vdCAmJiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3Qobm9kZS5vcmlnaW4pKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIG5vZGU/LnBhcmVudC5vcmlnaW4gYXMgTWluZEVsZW1lbnQpO1xuICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBub2RlLnBhcmVudC5jaGlsZHJlbi5maW5kSW5kZXgoeCA9PiB4ID09PSBub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdCA9IGlkeCA+PSAobm9kZS5wYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IHx8IDApO1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgW2lzTGVmdCA/ICdyaWdodCcgOiAnbGVmdCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydyaWdodCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1JpZ2h0TGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsnbGVmdCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnRMYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnVwd2FyZCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydib3R0b20nXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50TGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5kb3dud2FyZCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWyd0b3AnXSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBub2RlPy5vcmlnaW4gYXMgTWluZEVsZW1lbnQpO1xuICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QWxsb3dlZERpcmVjdGlvbihkZXRlY3RSZXN1bHRzLCBbJ3RvcCcsICdib3R0b20nXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdHRvbSddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0JvdHRvbUxheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QWxsb3dlZERpcmVjdGlvbihkZXRlY3RSZXN1bHRzLCBbJ2xlZnQnLCAncmlnaHQnLCAndG9wJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxheW91dCA9PT0gTWluZExheW91dFR5cGUubGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydyaWdodCcsICd0b3AnLCAnYm90dG9tJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxheW91dCA9PT0gTWluZExheW91dFR5cGUucmlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsnbGVmdCcsICd0b3AnLCAnYm90dG9tJ10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsb3dlZERpcmVjdGlvbiA9IChkZXRlY3RSZXN1bHRzOiBEZXRlY3RSZXN1bHRbXSwgaWxsZWdhbERpcmVjdGlvbnM6IERldGVjdFJlc3VsdFtdKTogRGV0ZWN0UmVzdWx0W10gfCBudWxsID0+IHtcbiAgICBjb25zdCBkaXJlY3Rpb25zID0gZGV0ZWN0UmVzdWx0cztcbiAgICBpbGxlZ2FsRGlyZWN0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBib3R0b21EaXJlY3Rpb25JbmRleCA9IGRpcmVjdGlvbnMuZmluZEluZGV4KGRpcmVjdGlvbiA9PiBkaXJlY3Rpb24gPT09IGl0ZW0pO1xuICAgICAgICBpZiAoYm90dG9tRGlyZWN0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb25zLnNwbGljZShib3R0b21EaXJlY3Rpb25JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGlyZWN0aW9ucy5sZW5ndGggPyBkaXJlY3Rpb25zIDogbnVsbDtcbn07XG4iXX0=
@@ -1,56 +0,0 @@
1
- import { getRectangleByNode } from './graph';
2
- /**
3
- *
4
- * @param targetNode
5
- * @param centerPoint
6
- * @returns DetectResult[] | null
7
- */
8
- export const directionDetector = (targetNode, centerPoint) => {
9
- const { x, y, width, height } = getRectangleByNode(targetNode);
10
- const yCenter = y + height / 2;
11
- const xCenter = x + width / 2;
12
- const top = targetNode.y;
13
- const bottom = targetNode.y + targetNode.height;
14
- const left = targetNode.x;
15
- const right = targetNode.x + targetNode.width;
16
- const direction = [];
17
- // x 轴
18
- if (centerPoint[1] > y && centerPoint[1] < y + height) {
19
- if (centerPoint[0] > left && centerPoint[0] < xCenter) {
20
- direction.push('left');
21
- }
22
- if (centerPoint[0] > xCenter && centerPoint[0] < right) {
23
- direction.push('right');
24
- }
25
- // 重合区域,返回两个方向
26
- if ((centerPoint[0] > x && centerPoint[0] < xCenter) || (centerPoint[0] > xCenter && centerPoint[0] < x + width)) {
27
- if (centerPoint[1] < yCenter) {
28
- direction.push('top');
29
- }
30
- else {
31
- direction.push('bottom');
32
- }
33
- }
34
- return direction.length ? direction : null;
35
- }
36
- // y 轴
37
- if (centerPoint[0] > x && centerPoint[0] < x + width) {
38
- if (centerPoint[1] > top && centerPoint[1] < yCenter) {
39
- direction.push('top');
40
- }
41
- if (centerPoint[1] > yCenter && centerPoint[1] < bottom) {
42
- direction.push('bottom');
43
- }
44
- if ((centerPoint[1] > y && centerPoint[1] < y + height) || (centerPoint[1] > yCenter && centerPoint[1] < y + height)) {
45
- if (centerPoint[0] < xCenter) {
46
- direction.push('left');
47
- }
48
- else {
49
- direction.push('right');
50
- }
51
- }
52
- return direction.length ? direction : null;
53
- }
54
- return null;
55
- };
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLWRldGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvZGlyZWN0aW9uLWRldGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU3Qzs7Ozs7R0FLRztBQUVILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsVUFBb0IsRUFBRSxXQUFrQixFQUF5QixFQUFFO0lBQ2pHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMvQixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUU5QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUM5QyxNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBRXJDLE1BQU07SUFDTixJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUU7UUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUU7WUFDbkQsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFO1lBQ3BELFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0I7UUFDRCxjQUFjO1FBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQzlHLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRTtnQkFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtpQkFBTTtnQkFDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzVCO1NBQ0o7UUFDRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0tBQzlDO0lBRUQsTUFBTTtJQUNOLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRTtRQUNsRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRTtZQUNsRCxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUU7WUFDckQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUU7WUFDbEgsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFO2dCQUMxQixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDM0I7U0FDSjtRQUNELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7S0FDOUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IERldGVjdFJlc3VsdCwgTWluZE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vZ3JhcGgnO1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0Tm9kZVxuICogQHBhcmFtIGNlbnRlclBvaW50XG4gKiBAcmV0dXJucyBEZXRlY3RSZXN1bHRbXSB8IG51bGxcbiAqL1xuXG5leHBvcnQgY29uc3QgZGlyZWN0aW9uRGV0ZWN0b3IgPSAodGFyZ2V0Tm9kZTogTWluZE5vZGUsIGNlbnRlclBvaW50OiBQb2ludCk6IERldGVjdFJlc3VsdFtdIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUodGFyZ2V0Tm9kZSk7XG4gICAgY29uc3QgeUNlbnRlciA9IHkgKyBoZWlnaHQgLyAyO1xuICAgIGNvbnN0IHhDZW50ZXIgPSB4ICsgd2lkdGggLyAyO1xuXG4gICAgY29uc3QgdG9wID0gdGFyZ2V0Tm9kZS55O1xuICAgIGNvbnN0IGJvdHRvbSA9IHRhcmdldE5vZGUueSArIHRhcmdldE5vZGUuaGVpZ2h0O1xuICAgIGNvbnN0IGxlZnQgPSB0YXJnZXROb2RlLng7XG4gICAgY29uc3QgcmlnaHQgPSB0YXJnZXROb2RlLnggKyB0YXJnZXROb2RlLndpZHRoO1xuICAgIGNvbnN0IGRpcmVjdGlvbjogRGV0ZWN0UmVzdWx0W10gPSBbXTtcblxuICAgIC8vIHgg6L20XG4gICAgaWYgKGNlbnRlclBvaW50WzFdID4geSAmJiBjZW50ZXJQb2ludFsxXSA8IHkgKyBoZWlnaHQpIHtcbiAgICAgICAgaWYgKGNlbnRlclBvaW50WzBdID4gbGVmdCAmJiBjZW50ZXJQb2ludFswXSA8IHhDZW50ZXIpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdsZWZ0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlbnRlclBvaW50WzBdID4geENlbnRlciAmJiBjZW50ZXJQb2ludFswXSA8IHJpZ2h0KSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24ucHVzaCgncmlnaHQnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDph43lkIjljLrln5/vvIzov5Tlm57kuKTkuKrmlrnlkJFcbiAgICAgICAgaWYgKChjZW50ZXJQb2ludFswXSA+IHggJiYgY2VudGVyUG9pbnRbMF0gPCB4Q2VudGVyKSB8fCAoY2VudGVyUG9pbnRbMF0gPiB4Q2VudGVyICYmIGNlbnRlclBvaW50WzBdIDwgeCArIHdpZHRoKSkge1xuICAgICAgICAgICAgaWYgKGNlbnRlclBvaW50WzFdIDwgeUNlbnRlcikge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCd0b3AnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ2JvdHRvbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24ubGVuZ3RoID8gZGlyZWN0aW9uIDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyB5IOi9tFxuICAgIGlmIChjZW50ZXJQb2ludFswXSA+IHggJiYgY2VudGVyUG9pbnRbMF0gPCB4ICsgd2lkdGgpIHtcbiAgICAgICAgaWYgKGNlbnRlclBvaW50WzFdID4gdG9wICYmIGNlbnRlclBvaW50WzFdIDwgeUNlbnRlcikge1xuICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ3RvcCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZW50ZXJQb2ludFsxXSA+IHlDZW50ZXIgJiYgY2VudGVyUG9pbnRbMV0gPCBib3R0b20pIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdib3R0b20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGNlbnRlclBvaW50WzFdID4geSAmJiBjZW50ZXJQb2ludFsxXSA8IHkgKyBoZWlnaHQpIHx8IChjZW50ZXJQb2ludFsxXSA+IHlDZW50ZXIgJiYgY2VudGVyUG9pbnRbMV0gPCB5ICsgaGVpZ2h0KSkge1xuICAgICAgICAgICAgaWYgKGNlbnRlclBvaW50WzBdIDwgeENlbnRlcikge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdsZWZ0Jyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdyaWdodCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24ubGVuZ3RoID8gZGlyZWN0aW9uIDogbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=