@plait/mind 0.27.0-next.1 → 0.27.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/emoji-base.component.d.ts +1 -1
- package/base/image-base.component.d.ts +1 -1
- package/constants/node-topic-style.d.ts +4 -0
- package/{esm2020 → esm2022}/base/emoji-base.component.mjs +4 -4
- package/esm2022/base/image-base.component.mjs +75 -0
- package/esm2022/constants/node-topic-style.mjs +12 -0
- package/esm2022/interfaces/element-data.mjs +2 -0
- package/{esm2020 → esm2022}/mind.component.mjs +6 -6
- package/{esm2020 → esm2022}/mind.module.mjs +5 -5
- package/esm2022/node.component.mjs +251 -0
- package/esm2022/plugins/with-mind-create.mjs +112 -0
- package/esm2022/utils/draw/abstract-outline.mjs +117 -0
- package/esm2022/utils/node/create-node.mjs +55 -0
- package/esm2022/utils/position/node.mjs +36 -0
- package/{fesm2020 → fesm2022}/plait-mind.mjs +241 -225
- package/fesm2022/plait-mind.mjs.map +1 -0
- package/interfaces/element-data.d.ts +2 -2
- package/package.json +7 -13
- package/utils/abstract/common.d.ts +2 -2
- package/utils/node/create-node.d.ts +4 -4
- package/utils/position/node.d.ts +1 -1
- package/esm2020/base/image-base.component.mjs +0 -72
- package/esm2020/constants/node-topic-style.mjs +0 -8
- package/esm2020/interfaces/element-data.mjs +0 -2
- package/esm2020/node.component.mjs +0 -248
- package/esm2020/plugins/with-mind-create.mjs +0 -109
- package/esm2020/utils/draw/abstract-outline.mjs +0 -117
- package/esm2020/utils/node/create-node.mjs +0 -52
- package/esm2020/utils/position/node.mjs +0 -34
- package/fesm2015/plait-mind.mjs +0 -4382
- package/fesm2015/plait-mind.mjs.map +0 -1
- package/fesm2020/plait-mind.mjs.map +0 -1
- /package/{esm2020 → esm2022}/base/base.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/base/index.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/abstract-node.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/default.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/image.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/node-style.mjs +0 -0
- /package/{esm2020 → esm2022}/constants/theme.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/node-active.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/node-collapse.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/node-emojis.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/node-image.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/node-insert.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/element.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/layout.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/node.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/options.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/pointer.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/theme-color.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/types.mjs +0 -0
- /package/{esm2020 → esm2022}/plait-mind.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-abstract-resize.board.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-abstract-resize.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-mind-extend.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-mind-hotkey.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-mind.board.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-mind.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-node-dnd.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-node-hover-detect.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-node-image-resize.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-node-image.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-node-resize.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/queries/get-available-sublayouts-by-element.mjs +0 -0
- /package/{esm2020 → esm2022}/queries/get-branch-layouts.mjs +0 -0
- /package/{esm2020 → esm2022}/queries/get-correct-layout-by-element.mjs +0 -0
- /package/{esm2020 → esm2022}/queries/get-layout-by-element.mjs +0 -0
- /package/{esm2020 → esm2022}/queries/index.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/abstract-node.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/emoji.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/image.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/index.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/layout.mjs +0 -0
- /package/{esm2020 → esm2022}/transforms/node.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/abstract/common.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/abstract/resize.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/clipboard.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dnd/common.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dnd/detector.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/node-dnd.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/node-link/abstract-link.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/node-link/draw-link.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/node-link/indented-link.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/node-link/logic-link.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/draw/node-shape.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/layout.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/mind.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node/adjust-node.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node/common.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node/dynamic-width.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node/image.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node/right-node-count.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node-hover/extend.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node-style/branch.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node-style/common.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node-style/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/node-style/shape.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/path.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/point-placement.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/position/emoji.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/position/image.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/position/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/position/topic.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/space/emoji.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/space/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/space/layout-options.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/space/node-space.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/weak-maps.mjs +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, addSelectedElement, clearSelectedElement, createG, getSelectedElements, throttleRAF, toPoint, transformPoint } from '@plait/core';
|
|
2
|
+
import { MindPointerType } from '../interfaces/pointer';
|
|
3
|
+
import { getRectangleByElement, getTopicRectangleByElement } from '../utils';
|
|
4
|
+
import { drawRoundRectangleByElement } from '../utils/draw/node-shape';
|
|
5
|
+
import { NgZone } from '@angular/core';
|
|
6
|
+
import { TextManage } from '@plait/text';
|
|
7
|
+
import { createEmptyMind } from '../utils/node/create-node';
|
|
8
|
+
import { BoardCreationMode, isDndMode, isDrawingMode, setCreationMode } from '@plait/common';
|
|
9
|
+
const DefaultHotkey = 'm';
|
|
10
|
+
export const withCreateMind = (board) => {
|
|
11
|
+
const newBoard = board;
|
|
12
|
+
const { keydown, mousedown, mousemove, mouseup } = board;
|
|
13
|
+
let fakeCreateNodeRef = null;
|
|
14
|
+
let emptyMind = null;
|
|
15
|
+
newBoard.mousedown = (event) => {
|
|
16
|
+
const isMindPointer = PlaitBoard.isPointer(board, MindPointerType.mind);
|
|
17
|
+
let movingPoint = PlaitBoard.getMovingPointInBoard(board);
|
|
18
|
+
if (movingPoint && isDrawingMode(board) && isMindPointer) {
|
|
19
|
+
movingPoint = transformPoint(board, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
|
|
20
|
+
const emptyMind = createEmptyMind(newBoard, movingPoint);
|
|
21
|
+
Transforms.insertNode(board, emptyMind, [board.children.length]);
|
|
22
|
+
clearSelectedElement(board);
|
|
23
|
+
addSelectedElement(board, emptyMind);
|
|
24
|
+
BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
|
|
25
|
+
}
|
|
26
|
+
mousedown(event);
|
|
27
|
+
};
|
|
28
|
+
newBoard.mousemove = (event) => {
|
|
29
|
+
if (PlaitBoard.isReadonly(board)) {
|
|
30
|
+
mousemove(event);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const isMindPointer = PlaitBoard.isPointer(board, MindPointerType.mind);
|
|
34
|
+
if (isDndMode(board) && isMindPointer) {
|
|
35
|
+
throttleRAF(() => {
|
|
36
|
+
let movingPoint = PlaitBoard.getMovingPointInBoard(board);
|
|
37
|
+
if (movingPoint) {
|
|
38
|
+
movingPoint = transformPoint(newBoard, toPoint(movingPoint[0], movingPoint[1], PlaitBoard.getHost(board)));
|
|
39
|
+
emptyMind = createEmptyMind(newBoard, movingPoint);
|
|
40
|
+
const nodeRectangle = getRectangleByElement(newBoard, emptyMind);
|
|
41
|
+
const nodeG = drawRoundRectangleByElement(board, nodeRectangle, emptyMind);
|
|
42
|
+
const topicRectangle = getTopicRectangleByElement(newBoard, nodeRectangle, emptyMind);
|
|
43
|
+
if (!fakeCreateNodeRef) {
|
|
44
|
+
const textManage = new TextManage(board, PlaitBoard.getComponent(board).viewContainerRef, {
|
|
45
|
+
getRectangle: () => {
|
|
46
|
+
return topicRectangle;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
PlaitBoard.getComponent(board)
|
|
50
|
+
.viewContainerRef.injector.get(NgZone)
|
|
51
|
+
.run(() => {
|
|
52
|
+
textManage.draw(emptyMind.data.topic);
|
|
53
|
+
});
|
|
54
|
+
fakeCreateNodeRef = {
|
|
55
|
+
g: createG(),
|
|
56
|
+
nodeG,
|
|
57
|
+
textManage
|
|
58
|
+
};
|
|
59
|
+
fakeCreateNodeRef.g.classList.add('root');
|
|
60
|
+
fakeCreateNodeRef.g.setAttribute('plait-mind-temporary', 'true');
|
|
61
|
+
PlaitBoard.getHost(board).append(fakeCreateNodeRef.g);
|
|
62
|
+
fakeCreateNodeRef.g.append(...[fakeCreateNodeRef.nodeG, textManage.g]);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
fakeCreateNodeRef.textManage.updateRectangle(topicRectangle);
|
|
66
|
+
fakeCreateNodeRef.nodeG.remove();
|
|
67
|
+
fakeCreateNodeRef.nodeG = nodeG;
|
|
68
|
+
fakeCreateNodeRef.g.append(nodeG);
|
|
69
|
+
fakeCreateNodeRef.g.append(fakeCreateNodeRef.textManage.g);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
destroy();
|
|
76
|
+
}
|
|
77
|
+
mousemove(event);
|
|
78
|
+
};
|
|
79
|
+
newBoard.mouseup = (event) => {
|
|
80
|
+
if (emptyMind) {
|
|
81
|
+
Transforms.insertNode(board, emptyMind, [board.children.length]);
|
|
82
|
+
clearSelectedElement(board);
|
|
83
|
+
addSelectedElement(board, emptyMind);
|
|
84
|
+
BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
|
|
85
|
+
emptyMind = null;
|
|
86
|
+
}
|
|
87
|
+
destroy();
|
|
88
|
+
mouseup(event);
|
|
89
|
+
};
|
|
90
|
+
board.keydown = (event) => {
|
|
91
|
+
if (PlaitBoard.isReadonly(board) || getSelectedElements(board).length > 0) {
|
|
92
|
+
keydown(event);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (event.key === DefaultHotkey && !PlaitBoard.isPointer(board, MindPointerType.mind)) {
|
|
96
|
+
BoardTransforms.updatePointerType(board, MindPointerType.mind);
|
|
97
|
+
setCreationMode(board, BoardCreationMode.drawing);
|
|
98
|
+
event.preventDefault();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
keydown(event);
|
|
102
|
+
};
|
|
103
|
+
function destroy() {
|
|
104
|
+
if (fakeCreateNodeRef) {
|
|
105
|
+
fakeCreateNodeRef.textManage.destroy();
|
|
106
|
+
fakeCreateNodeRef.g.remove();
|
|
107
|
+
fakeCreateNodeRef = null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return newBoard;
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1taW5kLWNyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsT0FBTyxFQUNQLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7QUFRMUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELE1BQU0sUUFBUSxHQUFHLEtBQW9DLENBQUM7SUFDdEQsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUN6RCxJQUFJLGlCQUFpQixHQUE2QixJQUFJLENBQUM7SUFDdkQsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztJ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QUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2FyZFRyYW5zZm9ybXMsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIFRyYW5zZm9ybXMsXG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGNyZWF0ZUcsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0aHJvdHRsZVJBRixcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgTWluZFBvaW50ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudCwgZ2V0VG9waWNSZWN0YW5nbGVCeUVsZW1lbnQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9kcmF3L25vZGUtc2hhcGUnO1xuaW1wb3J0IHsgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0TWFuYWdlIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgY3JlYXRlRW1wdHlNaW5kIH0gZnJvbSAnLi4vdXRpbHMvbm9kZS9jcmVhdGUtbm9kZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm9hcmRDcmVhdGlvbk1vZGUsIGlzRG5kTW9kZSwgaXNEcmF3aW5nTW9kZSwgc2V0Q3JlYXRpb25Nb2RlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmNvbnN0IERlZmF1bHRIb3RrZXkgPSAnbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFrZUNyZWF0ZU5vZGVSZWYge1xuICAgIGc6IFNWR0dFbGVtZW50O1xuICAgIG5vZGVHOiBTVkdHRWxlbWVudDtcbiAgICB0ZXh0TWFuYWdlOiBUZXh0TWFuYWdlO1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aENyZWF0ZU1pbmQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdE1pbmRCb2FyZDtcbiAgICBjb25zdCB7IGtleWRvd24sIG1vdXNlZG93biwgbW91c2Vtb3ZlLCBtb3VzZXVwIH0gPSBib2FyZDtcbiAgICBsZXQgZmFrZUNyZWF0ZU5vZGVSZWY6IEZha2VDcmVhdGVOb2RlUmVmIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVtcHR5TWluZDogTWluZEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIG5ld0JvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc01pbmRQb2ludGVyID0gUGxhaXRCb2FyZC5pc1BvaW50ZXI8TWluZFBvaW50ZXJUeXBlIHwgUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKTtcbiAgICAgICAgbGV0IG1vdmluZ1BvaW50ID0gUGxhaXRCb2FyZC5nZXRNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQpO1xuICAgICAgICBpZiAobW92aW5nUG9pbnQgJiYgaXNEcmF3aW5nTW9kZShib2FyZCkgJiYgaXNNaW5kUG9pbnRlcikge1xuICAgICAgICAgICAgbW92aW5nUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChtb3ZpbmdQb2ludFswXSwgbW92aW5nUG9pbnRbMV0sIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5TWluZCA9IGNyZWF0ZUVtcHR5TWluZChuZXdCb2FyZCwgbW92aW5nUG9pbnQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbXB0eU1pbmQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgZW1wdHlNaW5kKTtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIG5ld0JvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc01pbmRQb2ludGVyID0gUGxhaXRCb2FyZC5pc1BvaW50ZXI8TWluZFBvaW50ZXJUeXBlIHwgUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKTtcbiAgICAgICAgaWYgKGlzRG5kTW9kZShib2FyZCkgJiYgaXNNaW5kUG9pbnRlcikge1xuICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IFBsYWl0Qm9hcmQuZ2V0TW92aW5nUG9pbnRJbkJvYXJkKGJvYXJkKTtcblxuICAgICAgICAgICAgICAgIGlmIChtb3ZpbmdQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBtb3ZpbmdQb2ludCA9IHRyYW5zZm9ybVBvaW50KG5ld0JvYXJkLCB0b1BvaW50KG1vdmluZ1BvaW50WzBdLCBtb3ZpbmdQb2ludFsxXSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgICAgICAgICBlbXB0eU1pbmQgPSBjcmVhdGVFbXB0eU1pbmQobmV3Qm9hcmQsIG1vdmluZ1BvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudChuZXdCb2FyZCwgZW1wdHlNaW5kKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUcgPSBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQoYm9hcmQsIG5vZGVSZWN0YW5nbGUsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvcGljUmVjdGFuZ2xlID0gZ2V0VG9waWNSZWN0YW5nbGVCeUVsZW1lbnQobmV3Qm9hcmQsIG5vZGVSZWN0YW5nbGUsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmFrZUNyZWF0ZU5vZGVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRNYW5hZ2UgPSBuZXcgVGV4dE1hbmFnZShib2FyZCwgUGxhaXRCb2FyZC5nZXRDb21wb25lbnQoYm9hcmQpLnZpZXdDb250YWluZXJSZWYsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvcGljUmVjdGFuZ2xlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRDb21wb25lbnQoYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IuZ2V0KE5nWm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZS5kcmF3KGVtcHR5TWluZCEuZGF0YS50b3BpYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWtlQ3JlYXRlTm9kZVJlZiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiBjcmVhdGVHKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLmcuY2xhc3NMaXN0LmFkZCgncm9vdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYuZy5zZXRBdHRyaWJ1dGUoJ3BsYWl0LW1pbmQtdGVtcG9yYXJ5JywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kKGZha2VDcmVhdGVOb2RlUmVmLmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYuZy5hcHBlbmQoLi4uW2Zha2VDcmVhdGVOb2RlUmVmLm5vZGVHLCB0ZXh0TWFuYWdlLmddKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLnRleHRNYW5hZ2UudXBkYXRlUmVjdGFuZ2xlKHRvcGljUmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLm5vZGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYubm9kZUcgPSBub2RlRztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLmcuYXBwZW5kKG5vZGVHKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLmcuYXBwZW5kKGZha2VDcmVhdGVOb2RlUmVmLnRleHRNYW5hZ2UuZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZW1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBuZXdCb2FyZC5tb3VzZXVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlbXB0eU1pbmQpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZW1wdHlNaW5kLCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgICAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGVtcHR5TWluZCk7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGVtcHR5TWluZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZGVzdHJveSgpO1xuICAgICAgICBtb3VzZXVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBrZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBEZWZhdWx0SG90a2V5ICYmICFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgTWluZFBvaW50ZXJUeXBlLm1pbmQpKSB7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIE1pbmRQb2ludGVyVHlwZS5taW5kKTtcbiAgICAgICAgICAgIHNldENyZWF0aW9uTW9kZShib2FyZCwgQm9hcmRDcmVhdGlvbk1vZGUuZHJhd2luZyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBpZiAoZmFrZUNyZWF0ZU5vZGVSZWYpIHtcbiAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmLnRleHRNYW5hZ2UuZGVzdHJveSgpO1xuICAgICAgICAgICAgZmFrZUNyZWF0ZU5vZGVSZWYuZy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGZha2VDcmVhdGVOb2RlUmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdCb2FyZDtcbn07XG4iXX0=
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { createG, getRectangleByElements, PlaitBoard, RectangleClient, setStrokeLinecap } from '@plait/core';
|
|
2
|
+
import { PRIMARY_COLOR } from '../../constants';
|
|
3
|
+
import { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET } from '../../constants/abstract-node';
|
|
4
|
+
import { MindElement } from '../../interfaces';
|
|
5
|
+
import { isHorizontalLayout } from '@plait/layouts';
|
|
6
|
+
import { MindQueries } from '../../queries';
|
|
7
|
+
import { getLayoutDirection, getPointByPlacement, moveXOfPoint, transformPlacement } from '../point-placement';
|
|
8
|
+
import { HorizontalPlacement, VerticalPlacement } from '../../interfaces/types';
|
|
9
|
+
import { getRectangleByResizingLocation } from '../abstract/resize';
|
|
10
|
+
import { AbstractHandlePosition } from '../../plugins/with-abstract-resize.board';
|
|
11
|
+
export function drawAbstractIncludedOutline(board, roughSVG, element, activeHandlePosition, resizingLocation) {
|
|
12
|
+
const abstractIncludedG = createG();
|
|
13
|
+
const parentElement = MindElement.getParent(element);
|
|
14
|
+
const nodeLayout = MindQueries.getCorrectLayoutByElement(board, element);
|
|
15
|
+
const isHorizontal = isHorizontalLayout(nodeLayout);
|
|
16
|
+
const includedElements = parentElement.children.slice(element.start, element.end + 1);
|
|
17
|
+
let abstractRectangle = getRectangleByElements(board, includedElements, true);
|
|
18
|
+
abstractRectangle = RectangleClient.getOutlineRectangle(abstractRectangle, -ABSTRACT_INCLUDED_OUTLINE_OFFSET);
|
|
19
|
+
if (resizingLocation) {
|
|
20
|
+
abstractRectangle = getRectangleByResizingLocation(abstractRectangle, resizingLocation, activeHandlePosition, isHorizontal);
|
|
21
|
+
}
|
|
22
|
+
const rectangle = drawAbstractRoundRectangle(roughSVG, abstractRectangle.x, abstractRectangle.y, abstractRectangle.x + abstractRectangle.width, abstractRectangle.y + abstractRectangle.height, isHorizontal, {
|
|
23
|
+
stroke: PRIMARY_COLOR,
|
|
24
|
+
strokeWidth: 1,
|
|
25
|
+
fillStyle: 'solid'
|
|
26
|
+
});
|
|
27
|
+
const startPlacement = [HorizontalPlacement.center, VerticalPlacement.top];
|
|
28
|
+
const endPlacement = [HorizontalPlacement.center, VerticalPlacement.bottom];
|
|
29
|
+
const linkDirection = getLayoutDirection(MindElement.getNode(element), isHorizontal);
|
|
30
|
+
transformPlacement(startPlacement, linkDirection);
|
|
31
|
+
transformPlacement(endPlacement, linkDirection);
|
|
32
|
+
let startCenterPoint = getPointByPlacement(abstractRectangle, startPlacement);
|
|
33
|
+
let endCenterPoint = getPointByPlacement(abstractRectangle, endPlacement);
|
|
34
|
+
const startPoint1 = moveXOfPoint(startCenterPoint, -ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
35
|
+
const startPoint2 = moveXOfPoint(startCenterPoint, ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
36
|
+
const endPoint1 = moveXOfPoint(endCenterPoint, -ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
37
|
+
const endPoint2 = moveXOfPoint(endCenterPoint, ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
38
|
+
const startHandle = roughSVG.line(startPoint1[0], startPoint1[1], startPoint2[0], startPoint2[1], getHandleOption(activeHandlePosition === AbstractHandlePosition.start));
|
|
39
|
+
const endHandle = roughSVG.line(endPoint1[0], endPoint1[1], endPoint2[0], endPoint2[1], getHandleOption(activeHandlePosition === AbstractHandlePosition.end));
|
|
40
|
+
handleBoardClass(board, activeHandlePosition, isHorizontal);
|
|
41
|
+
setStrokeLinecap(startHandle, 'round');
|
|
42
|
+
setStrokeLinecap(endHandle, 'round');
|
|
43
|
+
abstractIncludedG.append(startHandle);
|
|
44
|
+
abstractIncludedG.append(endHandle);
|
|
45
|
+
abstractIncludedG.append(rectangle);
|
|
46
|
+
return abstractIncludedG;
|
|
47
|
+
}
|
|
48
|
+
export function getHandleOption(isHover) {
|
|
49
|
+
return isHover
|
|
50
|
+
? {
|
|
51
|
+
stroke: PRIMARY_COLOR,
|
|
52
|
+
strokeWidth: 4,
|
|
53
|
+
fillStyle: 'solid'
|
|
54
|
+
}
|
|
55
|
+
: {
|
|
56
|
+
stroke: ABSTRACT_HANDLE_COLOR,
|
|
57
|
+
strokeWidth: 3,
|
|
58
|
+
fillStyle: 'solid'
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function handleBoardClass(board, activeHandlePosition, isHorizontal) {
|
|
62
|
+
if (activeHandlePosition) {
|
|
63
|
+
if (isHorizontal) {
|
|
64
|
+
PlaitBoard.getBoardContainer(board).classList.add('abstract-resizing-horizontal');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
PlaitBoard.getBoardContainer(board).classList.add('abstract-resizing-vertical');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
PlaitBoard.getBoardContainer(board).classList.remove('abstract-resizing-horizontal');
|
|
72
|
+
PlaitBoard.getBoardContainer(board).classList.remove('abstract-resizing-vertical');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function drawAbstractRoundRectangle(rs, x1, y1, x2, y2, isHorizontal, options) {
|
|
76
|
+
const width = Math.abs(x1 - x2);
|
|
77
|
+
const height = Math.abs(y1 - y2);
|
|
78
|
+
const radius = 5;
|
|
79
|
+
const handleGap = 4;
|
|
80
|
+
const handleLength = 10;
|
|
81
|
+
const handleSpace = handleLength + handleGap * 2;
|
|
82
|
+
if (isHorizontal) {
|
|
83
|
+
const handleSideLine = (width - handleSpace - radius * 2) / 2;
|
|
84
|
+
const sideLine = height - radius * 2;
|
|
85
|
+
return rs.path(`M${x1 + radius},${y1}
|
|
86
|
+
l${handleSideLine},0
|
|
87
|
+
m${handleSpace},0
|
|
88
|
+
l${handleSideLine},0
|
|
89
|
+
a${radius},${radius},0,0,1,${radius},${radius}
|
|
90
|
+
l0,${sideLine}
|
|
91
|
+
a${radius},${radius},0,0,1,-${radius},${radius}
|
|
92
|
+
l-${handleSideLine},0
|
|
93
|
+
m-${handleSpace},0
|
|
94
|
+
l-${handleSideLine},0
|
|
95
|
+
a${radius},${radius},0,0,1,-${radius},-${radius}
|
|
96
|
+
l0,-${sideLine}
|
|
97
|
+
a${radius},${radius},0,0,1,${radius},-${radius}`, options);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const handleSideLine = (height - handleSpace - radius * 2) / 2;
|
|
101
|
+
const sideLine = width - radius * 2;
|
|
102
|
+
return rs.path(`M${x1 + radius},${y1}
|
|
103
|
+
l${sideLine},0
|
|
104
|
+
a${radius},${radius},0,0,1,${radius},${radius}
|
|
105
|
+
l0,${handleSideLine}
|
|
106
|
+
m0,${handleSpace}
|
|
107
|
+
l0,${handleSideLine}
|
|
108
|
+
a${radius},${radius},0,0,1,-${radius},${radius}
|
|
109
|
+
l-${sideLine},0
|
|
110
|
+
a${radius},${radius},0,0,1,-${radius},-${radius}
|
|
111
|
+
l0,-${handleSideLine}
|
|
112
|
+
m0,-${handleSpace}
|
|
113
|
+
l0,-${handleSideLine}
|
|
114
|
+
a${radius},${radius},0,0,1,${radius},-${radius}`, options);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtb3V0bGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvYWJzdHJhY3Qtb3V0bGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFrQixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBR2xGLE1BQU0sVUFBVSwyQkFBMkIsQ0FDdkMsS0FBaUIsRUFDakIsUUFBa0IsRUFDbEIsT0FBb0IsRUFDcEIsb0JBQTZDLEVBQzdDLGdCQUF5QjtJQUV6QixNQUFNLGlCQUFpQixHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXBDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsTUFB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Y0FBYztnQkFDZCxXQUFXO2dCQUNYLGNBQWM7ZUFDZixNQUFNLElBQUksTUFBTSxXQUFXLE1BQU0sS0FBSyxNQUFNO2tCQUN6QyxRQUFRO2VBQ1gsTUFBTSxJQUFJLE1BQU0sVUFBVSxNQUFNLEtBQUssTUFBTSxFQUFFLEVBQ2hELE9BQU8sQ0FDVixDQUFDO0tBQ0w7U0FBTTtRQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxHQUFHLFdBQVcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FDVixJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRTtlQUNsQixRQUFRO2VBQ1IsTUFBTSxJQUFJLE1BQU0sVUFBVSxNQUFNLElBQUksTUFBTTtpQkFDeEMsY0FBYztpQkFDZCxXQUFXO2lCQUNYLGNBQWM7ZUFDaEIsTUFBTSxJQUFJLE1BQU0sV0FBVyxNQUFNLElBQUksTUFBTTtnQkFDMUMsUUFBUTtlQUNULE1BQU0sSUFBSSxNQUFNLFdBQVcsTUFBTSxLQUFLLE1BQU07a0JBQ3pDLGNBQWM7a0JBQ2QsV0FBVztrQkFDWCxjQUFjO2VBQ2pCLE1BQU0sSUFBSSxNQUFNLFVBQVUsTUFBTSxLQUFLLE1BQU0sRUFBRSxFQUNoRCxPQUFPLENBQ1YsQ0FBQztLQUNMO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUcsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsIFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgc2V0U3Ryb2tlTGluZWNhcCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBSSU1BUllfQ09MT1IgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUJTVFJBQ1RfSEFORExFX0NPTE9SLCBBQlNUUkFDVF9IQU5ETEVfTEVOR1RILCBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hYnN0cmFjdC1ub2RlJztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSwgaXNIb3Jpem9udGFsTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgbW92ZVhPZlBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC9yZXNpemUnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC1yZXNpemUuYm9hcmQnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHJvdWdoU1ZHOiBSb3VnaFNWRyxcbiAgICBlbGVtZW50OiBNaW5kRWxlbWVudCxcbiAgICBhY3RpdmVIYW5kbGVQb3NpdGlvbj86IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sXG4gICAgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlclxuKSB7XG4gICAgY29uc3QgYWJzdHJhY3RJbmNsdWRlZEcgPSBjcmVhdGVHKCk7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCk7XG5cbiAgICBjb25zdCBpbmNsdWRlZEVsZW1lbnRzID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5zbGljZShlbGVtZW50LnN0YXJ0ISwgZWxlbWVudC5lbmQhICsgMSk7XG4gICAgbGV0IGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgaW5jbHVkZWRFbGVtZW50cywgdHJ1ZSk7XG4gICAgYWJzdHJhY3RSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShhYnN0cmFjdFJlY3RhbmdsZSwgLUFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUKTtcblxuICAgIGlmIChyZXNpemluZ0xvY2F0aW9uKSB7XG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKGFic3RyYWN0UmVjdGFuZ2xlLCByZXNpemluZ0xvY2F0aW9uLCBhY3RpdmVIYW5kbGVQb3NpdGlvbiEsIGlzSG9yaXpvbnRhbCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZHJhd0Fic3RyYWN0Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIHJvdWdoU1ZHLFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS55LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54ICsgYWJzdHJhY3RSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlLnkgKyBhYnN0cmFjdFJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgIGlzSG9yaXpvbnRhbCxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlciwgVmVydGljYWxQbGFjZW1lbnQudG9wXSBhcyBQb2ludFBsYWNlbWVudDtcbiAgICBjb25zdCBlbmRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV0gYXMgUG9pbnRQbGFjZW1lbnQ7XG5cbiAgICBjb25zdCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCksIGlzSG9yaXpvbnRhbCk7XG5cbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoc3RhcnRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIHRyYW5zZm9ybVBsYWNlbWVudChlbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgbGV0IHN0YXJ0Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGFic3RyYWN0UmVjdGFuZ2xlLCBzdGFydFBsYWNlbWVudCk7XG4gICAgbGV0IGVuZENlbnRlclBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChhYnN0cmFjdFJlY3RhbmdsZSwgZW5kUGxhY2VtZW50KTtcblxuICAgIGNvbnN0IHN0YXJ0UG9pbnQxID0gbW92ZVhPZlBvaW50KHN0YXJ0Q2VudGVyUG9pbnQsIC1BQlNUUkFDVF9IQU5ETEVfTEVOR1RIIC8gMiwgbGlua0RpcmVjdGlvbik7XG4gICAgY29uc3Qgc3RhcnRQb2ludDIgPSBtb3ZlWE9mUG9pbnQoc3RhcnRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgZW5kUG9pbnQxID0gbW92ZVhPZlBvaW50KGVuZENlbnRlclBvaW50LCAtQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuICAgIGNvbnN0IGVuZFBvaW50MiA9IG1vdmVYT2ZQb2ludChlbmRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3Qgc3RhcnRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBzdGFydFBvaW50MVswXSxcbiAgICAgICAgc3RhcnRQb2ludDFbMV0sXG4gICAgICAgIHN0YXJ0UG9pbnQyWzBdLFxuICAgICAgICBzdGFydFBvaW50MlsxXSxcbiAgICAgICAgZ2V0SGFuZGxlT3B0aW9uKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KVxuICAgICk7XG5cbiAgICBjb25zdCBlbmRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBlbmRQb2ludDFbMF0sXG4gICAgICAgIGVuZFBvaW50MVsxXSxcbiAgICAgICAgZW5kUG9pbnQyWzBdLFxuICAgICAgICBlbmRQb2ludDJbMV0sXG4gICAgICAgIGdldEhhbmRsZU9wdGlvbihhY3RpdmVIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQpXG4gICAgKTtcblxuICAgIGhhbmRsZUJvYXJkQ2xhc3MoYm9hcmQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uLCBpc0hvcml6b250YWwpO1xuICAgIFxuICAgIHNldFN0cm9rZUxpbmVjYXAoc3RhcnRIYW5kbGUsICdyb3VuZCcpO1xuICAgIHNldFN0cm9rZUxpbmVjYXAoZW5kSGFuZGxlLCAncm91bmQnKTtcblxuICAgIGFic3RyYWN0SW5jbHVkZWRHLmFwcGVuZChzdGFydEhhbmRsZSk7XG4gICAgYWJzdHJhY3RJbmNsdWRlZEcuYXBwZW5kKGVuZEhhbmRsZSk7XG4gICAgYWJzdHJhY3RJbmNsdWRlZEcuYXBwZW5kKHJlY3RhbmdsZSk7XG5cbiAgICByZXR1cm4gYWJzdHJhY3RJbmNsdWRlZEc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYW5kbGVPcHRpb24oaXNIb3ZlcjogYm9vbGVhbikge1xuICAgIHJldHVybiBpc0hvdmVyXG4gICAgICAgID8ge1xuICAgICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgICBzdHJva2U6IEFCU1RSQUNUX0hBTkRMRV9DT0xPUixcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDMsXG4gICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgIH07XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUJvYXJkQ2xhc3MoYm9hcmQ6IFBsYWl0Qm9hcmQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uIHwgdW5kZWZpbmVkLCBpc0hvcml6b250YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAoYWN0aXZlSGFuZGxlUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctaG9yaXpvbnRhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ2Fic3RyYWN0LXJlc2l6aW5nLWhvcml6b250YWwnKTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3QWJzdHJhY3RSb3VuZFJlY3RhbmdsZShcbiAgICByczogUm91Z2hTVkcsXG4gICAgeDE6IG51bWJlcixcbiAgICB5MTogbnVtYmVyLFxuICAgIHgyOiBudW1iZXIsXG4gICAgeTI6IG51bWJlcixcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW4sXG4gICAgb3B0aW9uczogT3B0aW9uc1xuKSB7XG4gICAgY29uc3Qgd2lkdGggPSBNYXRoLmFicyh4MSAtIHgyKTtcbiAgICBjb25zdCBoZWlnaHQgPSBNYXRoLmFicyh5MSAtIHkyKTtcblxuICAgIGNvbnN0IHJhZGl1cyA9IDU7XG4gICAgY29uc3QgaGFuZGxlR2FwID0gNDtcbiAgICBjb25zdCBoYW5kbGVMZW5ndGggPSAxMDtcblxuICAgIGNvbnN0IGhhbmRsZVNwYWNlID0gaGFuZGxlTGVuZ3RoICsgaGFuZGxlR2FwICogMjtcblxuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlU2lkZUxpbmUgPSAod2lkdGggLSBoYW5kbGVTcGFjZSAtIHJhZGl1cyAqIDIpIC8gMjtcbiAgICAgICAgY29uc3Qgc2lkZUxpbmUgPSBoZWlnaHQgLSByYWRpdXMgKiAyO1xuICAgICAgICByZXR1cm4gcnMucGF0aChcbiAgICAgICAgICAgIGBNJHt4MSArIHJhZGl1c30sJHt5MX1cbiAgICAgICAgICAgIGwke2hhbmRsZVNpZGVMaW5lfSwwXG4gICAgICAgICAgICBtJHtoYW5kbGVTcGFjZX0sMFxuICAgICAgICAgICAgbCR7aGFuZGxlU2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwke3JhZGl1c31cbiAgICAgICAgICAgIGwwLCR7c2lkZUxpbmV9XG4gICAgICAgICAgICBhJHtyYWRpdXN9LCR7cmFkaXVzfSwwLDAsMSwtJHtyYWRpdXN9LCR7cmFkaXVzfVxuICAgICAgICAgICAgbC0ke2hhbmRsZVNpZGVMaW5lfSwwXG4gICAgICAgICAgICBtLSR7aGFuZGxlU3BhY2V9LDBcbiAgICAgICAgICAgIGwtJHtoYW5kbGVTaWRlTGluZX0sMFxuICAgICAgICAgICAgYSR7cmFkaXVzfSwke3JhZGl1c30sMCwwLDEsLSR7cmFkaXVzfSwtJHtyYWRpdXN9XG4gICAgICAgICAgICBsMCwtJHtzaWRlTGluZX1cbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwtJHtyYWRpdXN9YCxcbiAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYW5kbGVTaWRlTGluZSA9IChoZWlnaHQgLSBoYW5kbGVTcGFjZSAtIHJhZGl1cyAqIDIpIC8gMjtcbiAgICAgICAgY29uc3Qgc2lkZUxpbmUgPSB3aWR0aCAtIHJhZGl1cyAqIDI7XG4gICAgICAgIHJldHVybiBycy5wYXRoKFxuICAgICAgICAgICAgYE0ke3gxICsgcmFkaXVzfSwke3kxfVxuICAgICAgICAgICAgbCR7c2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLCR7cmFkaXVzfSwke3JhZGl1c31cbiAgICAgICAgICAgIGwwLCR7aGFuZGxlU2lkZUxpbmV9XG4gICAgICAgICAgICBtMCwke2hhbmRsZVNwYWNlfVxuICAgICAgICAgICAgbDAsJHtoYW5kbGVTaWRlTGluZX1cbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLC0ke3JhZGl1c30sJHtyYWRpdXN9XG4gICAgICAgICAgICBsLSR7c2lkZUxpbmV9LDBcbiAgICAgICAgICAgIGEke3JhZGl1c30sJHtyYWRpdXN9LDAsMCwxLC0ke3JhZGl1c30sLSR7cmFkaXVzfVxuICAgICAgICAgICAgbDAsLSR7aGFuZGxlU2lkZUxpbmV9XG4gICAgICAgICAgICBtMCwtJHtoYW5kbGVTcGFjZX1cbiAgICAgICAgICAgIGwwLC0ke2hhbmRsZVNpZGVMaW5lfVxuICAgICAgICAgICAgYSR7cmFkaXVzfSwke3JhZGl1c30sMCwwLDEsJHtyYWRpdXN9LC0ke3JhZGl1c31gLFxuICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { idCreator, isNullOrUndefined } from '@plait/core';
|
|
2
|
+
import { TEXT_DEFAULT_HEIGHT, buildText } from '@plait/text';
|
|
3
|
+
import { MindLayoutType } from '@plait/layouts';
|
|
4
|
+
import { ROOT_TOPIC_HEIGHT, ROOT_TOPIC_WIDTH } from '../../constants/node-topic-style';
|
|
5
|
+
import { NodeSpace } from '../space';
|
|
6
|
+
export const createEmptyMind = (board, point) => {
|
|
7
|
+
const element = createMindElement('思维导图', ROOT_TOPIC_WIDTH, ROOT_TOPIC_HEIGHT, { layout: MindLayoutType.right });
|
|
8
|
+
element.isRoot = true;
|
|
9
|
+
element.type = 'mindmap';
|
|
10
|
+
const width = NodeSpace.getNodeWidth(board, element);
|
|
11
|
+
const height = NodeSpace.getNodeHeight(board, element);
|
|
12
|
+
element.points = [[point[0] - width / 2, point[1] - height / 2]];
|
|
13
|
+
return element;
|
|
14
|
+
};
|
|
15
|
+
export const createDefaultMind = (point, rightNodeCount, layout) => {
|
|
16
|
+
const root = createMindElement('思维导图', ROOT_TOPIC_WIDTH, ROOT_TOPIC_HEIGHT, { layout });
|
|
17
|
+
root.rightNodeCount = rightNodeCount;
|
|
18
|
+
root.isRoot = true;
|
|
19
|
+
root.type = 'mindmap';
|
|
20
|
+
root.points = [point];
|
|
21
|
+
const children = [1, 1, 1].map(() => {
|
|
22
|
+
return createMindElement('新建节点', 56, TEXT_DEFAULT_HEIGHT, {});
|
|
23
|
+
});
|
|
24
|
+
root.children = children;
|
|
25
|
+
return root;
|
|
26
|
+
};
|
|
27
|
+
export const createMindElement = (text, width, height, options) => {
|
|
28
|
+
const newElement = {
|
|
29
|
+
id: idCreator(),
|
|
30
|
+
data: {
|
|
31
|
+
topic: buildText(text)
|
|
32
|
+
},
|
|
33
|
+
children: [],
|
|
34
|
+
width,
|
|
35
|
+
height
|
|
36
|
+
};
|
|
37
|
+
let key;
|
|
38
|
+
for (key in options) {
|
|
39
|
+
if (!isNullOrUndefined(options[key])) {
|
|
40
|
+
newElement[key] = options[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return newElement;
|
|
44
|
+
};
|
|
45
|
+
export const INHERIT_ATTRIBUTE_KEYS = [
|
|
46
|
+
'fill',
|
|
47
|
+
'strokeColor',
|
|
48
|
+
'strokeWidth',
|
|
49
|
+
'shape',
|
|
50
|
+
'layout',
|
|
51
|
+
'branchColor',
|
|
52
|
+
'branchWidth',
|
|
53
|
+
'branchShape'
|
|
54
|
+
];
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2NyZWF0ZS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHckMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFZLEVBQUUsRUFBRTtJQUMvRCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakgsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdEIsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7SUFDekIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsY0FBc0IsRUFBRSxNQUFzQixFQUFFLEVBQUU7SUFDOUYsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFzQixFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQ2xILE1BQU0sVUFBVSxHQUFnQjtRQUM1QixFQUFFLEVBQUUsU0FBUyxFQUFFO1FBQ2YsSUFBSSxFQUFFO1lBQ0YsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFDRCxRQUFRLEVBQUUsRUFBRTtRQUNaLEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztJQUVGLElBQUksR0FBeUIsQ0FBQztJQUM5QixLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLFVBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNDO0tBQ0o7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFhRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNsQyxNQUFNO0lBQ04sYUFBYTtJQUNiLGFBQWE7SUFDYixPQUFPO0lBQ1AsUUFBUTtJQUNSLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGlkQ3JlYXRvciwgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBURVhUX0RFRkFVTFRfSEVJR0hULCBidWlsZFRleHQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IEJyYW5jaFNoYXBlLCBNaW5kRWxlbWVudCwgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBST09UX1RPUElDX0hFSUdIVCwgUk9PVF9UT1BJQ19XSURUSCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tICcuLi9zcGFjZSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRW1wdHlNaW5kID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJ+aAnee7tOWvvOWbvicsIFJPT1RfVE9QSUNfV0lEVEgsIFJPT1RfVE9QSUNfSEVJR0hULCB7IGxheW91dDogTWluZExheW91dFR5cGUucmlnaHQgfSk7XG4gICAgZWxlbWVudC5pc1Jvb3QgPSB0cnVlO1xuICAgIGVsZW1lbnQudHlwZSA9ICdtaW5kbWFwJztcbiAgICBjb25zdCB3aWR0aCA9IE5vZGVTcGFjZS5nZXROb2RlV2lkdGgoYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IE5vZGVTcGFjZS5nZXROb2RlSGVpZ2h0KGJvYXJkIGFzIFBsYWl0TWluZEJvYXJkLCBlbGVtZW50KTtcbiAgICBlbGVtZW50LnBvaW50cyA9IFtbcG9pbnRbMF0gLSB3aWR0aCAvIDIsIHBvaW50WzFdIC0gaGVpZ2h0IC8gMl1dO1xuICAgIHJldHVybiBlbGVtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlZmF1bHRNaW5kID0gKHBvaW50OiBQb2ludCwgcmlnaHROb2RlQ291bnQ6IG51bWJlciwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGNvbnN0IHJvb3QgPSBjcmVhdGVNaW5kRWxlbWVudCgn5oCd57u05a+85Zu+JywgUk9PVF9UT1BJQ19XSURUSCwgUk9PVF9UT1BJQ19IRUlHSFQsIHsgbGF5b3V0IH0pO1xuICAgIHJvb3QucmlnaHROb2RlQ291bnQgPSByaWdodE5vZGVDb3VudDtcbiAgICByb290LmlzUm9vdCA9IHRydWU7XG4gICAgcm9vdC50eXBlID0gJ21pbmRtYXAnO1xuICAgIHJvb3QucG9pbnRzID0gW3BvaW50XTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IFsxLCAxLCAxXS5tYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY3JlYXRlTWluZEVsZW1lbnQoJ+aWsOW7uuiKgueCuScsIDU2LCBURVhUX0RFRkFVTFRfSEVJR0hULCB7fSk7XG4gICAgfSk7XG4gICAgcm9vdC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHJldHVybiByb290O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1pbmRFbGVtZW50ID0gKHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBvcHRpb25zOiBJbmhlcml0QXR0cmlidXRlKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudDogTWluZEVsZW1lbnQgPSB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9waWM6IGJ1aWxkVGV4dCh0ZXh0KVxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xuXG4gICAgbGV0IGtleToga2V5b2YgdHlwZW9mIG9wdGlvbnM7XG4gICAgZm9yIChrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgICAgICAgIChuZXdFbGVtZW50IGFzIGFueSlba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdFbGVtZW50O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJbmhlcml0QXR0cmlidXRlIHtcbiAgICBmaWxsPzogc3RyaW5nO1xuICAgIHN0cm9rZUNvbG9yPzogc3RyaW5nO1xuICAgIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICAgIHNoYXBlPzogTWluZEVsZW1lbnRTaGFwZTtcbiAgICBsYXlvdXQ/OiBNaW5kTGF5b3V0VHlwZTtcbiAgICBicmFuY2hDb2xvcj86IHN0cmluZztcbiAgICBicmFuY2hXaWR0aD86IG51bWJlcjtcbiAgICBicmFuY2hTaGFwZT86IEJyYW5jaFNoYXBlO1xufVxuXG5leHBvcnQgY29uc3QgSU5IRVJJVF9BVFRSSUJVVEVfS0VZUyA9IFtcbiAgICAnZmlsbCcsXG4gICAgJ3N0cm9rZUNvbG9yJyxcbiAgICAnc3Ryb2tlV2lkdGgnLFxuICAgICdzaGFwZScsXG4gICAgJ2xheW91dCcsXG4gICAgJ2JyYW5jaENvbG9yJyxcbiAgICAnYnJhbmNoV2lkdGgnLFxuICAgICdicmFuY2hTaGFwZSdcbl07XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { distanceBetweenPointAndRectangle } from '@plait/core';
|
|
2
|
+
import { MindElement } from '../../interfaces/element';
|
|
3
|
+
import { NodeSpace } from '../space/node-space';
|
|
4
|
+
export function getRectangleByNode(node) {
|
|
5
|
+
const x = node.x + node.hGap;
|
|
6
|
+
let y = node.y + node.vGap;
|
|
7
|
+
const width = node.width - node.hGap * 2;
|
|
8
|
+
const height = node.height - node.vGap * 2;
|
|
9
|
+
return {
|
|
10
|
+
x,
|
|
11
|
+
y,
|
|
12
|
+
width,
|
|
13
|
+
height
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export function getRectangleByElement(board, element) {
|
|
17
|
+
const width = NodeSpace.getNodeWidth(board, element);
|
|
18
|
+
const height = NodeSpace.getNodeHeight(board, element);
|
|
19
|
+
const nodeRectangle = {
|
|
20
|
+
x: element.points[0][0],
|
|
21
|
+
y: element.points[0][1],
|
|
22
|
+
width,
|
|
23
|
+
height
|
|
24
|
+
};
|
|
25
|
+
return nodeRectangle;
|
|
26
|
+
}
|
|
27
|
+
export function isHitMindElement(board, point, element) {
|
|
28
|
+
const node = MindElement.getNode(element);
|
|
29
|
+
if (node && distanceBetweenPointAndRectangle(point[0], point[1], getRectangleByNode(node)) === 0) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL3Bvc2l0aW9uL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyxnQ0FBZ0MsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2hELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFjO0lBQzdDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE9BQU87UUFDSCxDQUFDO1FBQ0QsQ0FBQztRQUNELEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBcUIsRUFBRSxPQUFvQjtJQUM3RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBRztRQUNsQixDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztJQUNGLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBaUIsRUFBRSxLQUFZLEVBQUUsT0FBb0I7SUFDbEYsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxJQUFJLElBQUksSUFBSSxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzlGLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7U0FBTTtRQUNILE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgTm9kZVNwYWNlIH0gZnJvbSAnLi4vc3BhY2Uvbm9kZS1zcGFjZSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlY3RhbmdsZUJ5Tm9kZShub2RlOiBNaW5kTm9kZSk6IFJlY3RhbmdsZUNsaWVudCB7XG4gICAgY29uc3QgeCA9IG5vZGUueCArIG5vZGUuaEdhcDtcbiAgICBsZXQgeSA9IG5vZGUueSArIG5vZGUudkdhcDtcbiAgICBjb25zdCB3aWR0aCA9IG5vZGUud2lkdGggLSBub2RlLmhHYXAgKiAyO1xuICAgIGNvbnN0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IC0gbm9kZS52R2FwICogMjtcbiAgICByZXR1cm4ge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlY3RhbmdsZUJ5RWxlbWVudChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3Qgd2lkdGggPSBOb2RlU3BhY2UuZ2V0Tm9kZVdpZHRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBoZWlnaHQgPSBOb2RlU3BhY2UuZ2V0Tm9kZUhlaWdodChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3Qgbm9kZVJlY3RhbmdsZSA9IHtcbiAgICAgICAgeDogZWxlbWVudC5wb2ludHMhWzBdWzBdLFxuICAgICAgICB5OiBlbGVtZW50LnBvaW50cyFbMF1bMV0sXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICB9O1xuICAgIHJldHVybiBub2RlUmVjdGFuZ2xlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIaXRNaW5kRWxlbWVudChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IFBvaW50LCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgIGNvbnN0IG5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpO1xuICAgIGlmIChub2RlICYmIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKHBvaW50WzBdLCBwb2ludFsxXSwgZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|