@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.
- package/{drawer/base/base.d.ts → base/base.drawer.d.ts} +1 -1
- package/{plugins/emoji → base}/emoji-base.component.d.ts +2 -2
- package/{plugins/emoji → base}/index.d.ts +1 -1
- package/draw/abstract.d.ts +2 -1
- package/draw/indented-link.d.ts +1 -1
- package/draw/link/logic-link.d.ts +1 -1
- package/draw/node.d.ts +5 -0
- package/draw/topic.d.ts +16 -0
- package/{plugins/emoji → drawer}/emoji.drawer.d.ts +3 -3
- package/drawer/quick-insert.drawer.d.ts +1 -1
- package/esm2020/base/base.drawer.mjs +17 -0
- package/esm2020/base/emoji-base.component.mjs +33 -0
- package/esm2020/base/index.mjs +3 -0
- package/esm2020/draw/abstract.mjs +8 -7
- package/esm2020/draw/indented-link.mjs +3 -3
- package/esm2020/draw/link/abstract-link.mjs +9 -15
- package/esm2020/draw/link/logic-link.mjs +9 -9
- package/esm2020/draw/node.mjs +21 -0
- package/esm2020/draw/topic.mjs +32 -0
- package/esm2020/drawer/emoji.drawer.mjs +73 -0
- package/esm2020/drawer/quick-insert.drawer.mjs +3 -3
- package/esm2020/interfaces/index.mjs +2 -2
- package/esm2020/interfaces/pointer.mjs +5 -0
- package/esm2020/mind.component.mjs +2 -2
- package/esm2020/mind.module.mjs +5 -5
- package/esm2020/node.component.mjs +11 -10
- package/esm2020/plugins/with-abstract-resize.board.mjs +12 -0
- package/esm2020/plugins/with-abstract-resize.mjs +107 -0
- package/esm2020/plugins/with-mind-create.mjs +85 -0
- package/esm2020/plugins/with-mind-extend.mjs +11 -0
- package/esm2020/plugins/with-mind.board.mjs +2 -0
- package/esm2020/plugins/with-mind.mjs +30 -16
- package/esm2020/plugins/with-node-dnd.mjs +162 -0
- package/esm2020/public-api.mjs +5 -3
- package/esm2020/transforms/abstract-node.mjs +3 -2
- package/esm2020/transforms/emoji.mjs +37 -0
- package/esm2020/transforms/index.mjs +7 -3
- package/esm2020/transforms/node.mjs +40 -33
- package/esm2020/utils/abstract/common.mjs +64 -31
- package/esm2020/utils/abstract/resize.mjs +3 -2
- package/esm2020/utils/clipboard.mjs +16 -18
- package/esm2020/utils/dnd/common.mjs +35 -0
- package/esm2020/utils/dnd/detector.mjs +268 -0
- package/esm2020/utils/dnd/draw.mjs +161 -0
- package/esm2020/utils/index.mjs +6 -6
- package/esm2020/utils/mind.mjs +6 -129
- package/esm2020/utils/node/adjust-node.mjs +49 -0
- package/esm2020/utils/node/common.mjs +6 -0
- package/esm2020/utils/node/create-node.mjs +61 -0
- package/esm2020/utils/node/index.mjs +4 -0
- package/esm2020/utils/point-placement.mjs +22 -2
- package/esm2020/utils/position/emoji.mjs +31 -0
- package/esm2020/utils/position/index.mjs +4 -0
- package/esm2020/utils/position/node.mjs +34 -0
- package/esm2020/utils/position/topic.mjs +14 -0
- package/esm2020/utils/space/emoji.mjs +19 -0
- package/esm2020/utils/space/layout-options.mjs +72 -0
- package/esm2020/utils/space/node-space.mjs +77 -0
- package/fesm2015/plait-mind.mjs +1464 -1631
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +1486 -1642
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/interfaces/index.d.ts +1 -1
- package/interfaces/pointer.d.ts +3 -0
- package/mind.module.d.ts +2 -2
- package/node.component.d.ts +3 -3
- package/package.json +3 -3
- package/{interfaces/abstract.d.ts → plugins/with-abstract-resize.board.d.ts} +2 -2
- package/plugins/with-mind-create.d.ts +11 -0
- package/plugins/with-mind-extend.d.ts +3 -0
- package/plugins/{with-extend-mind.d.ts → with-mind.board.d.ts} +4 -4
- package/plugins/with-mind.d.ts +1 -1
- package/public-api.d.ts +4 -2
- package/styles/styles.scss +5 -2
- package/transforms/abstract-node.d.ts +1 -1
- package/transforms/emoji.d.ts +6 -0
- package/transforms/index.d.ts +3 -0
- package/transforms/node.d.ts +5 -5
- package/utils/abstract/common.d.ts +19 -4
- package/utils/abstract/resize.d.ts +2 -1
- package/utils/dnd/common.d.ts +7 -0
- package/utils/dnd/detector.d.ts +31 -0
- package/utils/dnd/draw.d.ts +9 -0
- package/utils/index.d.ts +5 -5
- package/utils/mind.d.ts +3 -22
- package/utils/node/adjust-node.d.ts +5 -0
- package/utils/{node.d.ts → node/common.d.ts} +1 -1
- package/utils/node/create-node.d.ts +14 -0
- package/utils/node/index.d.ts +3 -0
- package/utils/point-placement.d.ts +8 -1
- package/utils/position/emoji.d.ts +7 -0
- package/utils/position/index.d.ts +3 -0
- package/utils/position/node.d.ts +12 -0
- package/utils/position/topic.d.ts +16 -0
- package/utils/space/emoji.d.ts +7 -0
- package/{layout-option.d.ts → utils/space/layout-options.d.ts} +1 -1
- package/utils/{node-space.d.ts → space/node-space.d.ts} +4 -4
- package/draw/link.d.ts +0 -3
- package/draw/richtext.d.ts +0 -15
- package/draw/shape.d.ts +0 -3
- package/esm2020/draw/link.mjs +0 -160
- package/esm2020/draw/richtext.mjs +0 -39
- package/esm2020/draw/shape.mjs +0 -18
- package/esm2020/drawer/base/base.mjs +0 -17
- package/esm2020/interfaces/abstract.mjs +0 -12
- package/esm2020/layout-option.mjs +0 -72
- package/esm2020/plugins/emoji/emoji-base.component.mjs +0 -33
- package/esm2020/plugins/emoji/emoji.drawer.mjs +0 -72
- package/esm2020/plugins/emoji/emoji.mjs +0 -47
- package/esm2020/plugins/emoji/index.mjs +0 -3
- package/esm2020/plugins/with-abstract.mjs +0 -106
- package/esm2020/plugins/with-dnd.mjs +0 -179
- package/esm2020/plugins/with-extend-mind.mjs +0 -11
- package/esm2020/utils/direction-corrector.mjs +0 -54
- package/esm2020/utils/direction-detector.mjs +0 -56
- package/esm2020/utils/dnd.mjs +0 -122
- package/esm2020/utils/draw-placeholder.mjs +0 -313
- package/esm2020/utils/drop-target-corrector.mjs +0 -87
- package/esm2020/utils/graph.mjs +0 -24
- package/esm2020/utils/node-space.mjs +0 -77
- package/esm2020/utils/node.mjs +0 -6
- package/plugins/emoji/emoji.d.ts +0 -11
- package/utils/direction-corrector.d.ts +0 -4
- package/utils/direction-detector.d.ts +0 -9
- package/utils/dnd.d.ts +0 -16
- package/utils/draw-placeholder.d.ts +0 -42
- package/utils/drop-target-corrector.d.ts +0 -9
- package/utils/graph.d.ts +0 -5
- /package/plugins/{with-abstract.d.ts → with-abstract-resize.d.ts} +0 -0
- /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=
|