@plait/mind 0.27.0-next.0 → 0.27.0-next.10
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 +2 -2
- package/base/index.d.ts +0 -1
- package/constants/default.d.ts +1 -0
- package/constants/node-topic-style.d.ts +4 -0
- package/drawer/{node-active.drawer.d.ts → node-active.generator.d.ts} +2 -2
- package/drawer/node-shape.generator.d.ts +10 -0
- package/esm2022/base/emoji-base.component.mjs +46 -0
- package/{esm2020 → esm2022}/base/index.mjs +1 -2
- package/{esm2020 → esm2022}/constants/abstract-node.mjs +1 -1
- package/{esm2020 → esm2022}/constants/default.mjs +2 -1
- package/{esm2020 → esm2022}/constants/index.mjs +1 -1
- package/esm2022/constants/node-topic-style.mjs +12 -0
- package/esm2022/drawer/node-active.generator.mjs +42 -0
- package/esm2022/drawer/node-shape.generator.mjs +19 -0
- package/esm2022/interfaces/element-data.mjs +2 -0
- package/esm2022/interfaces/element.mjs +118 -0
- package/{esm2020 → esm2022}/interfaces/index.mjs +2 -1
- package/esm2022/interfaces/options.mjs +2 -0
- package/{esm2020 → esm2022}/interfaces/theme-color.mjs +1 -1
- package/esm2022/mind-node.component.mjs +235 -0
- package/esm2022/mind.component.mjs +52 -0
- package/esm2022/plugins/with-abstract-resize.mjs +112 -0
- package/esm2022/plugins/with-mind-create.mjs +112 -0
- package/esm2022/plugins/with-mind-fragment.mjs +90 -0
- package/esm2022/plugins/with-mind-hotkey.mjs +67 -0
- package/esm2022/plugins/with-mind.mjs +91 -0
- package/esm2022/plugins/with-node-dnd.mjs +180 -0
- package/esm2022/plugins/with-node-image-resize.mjs +48 -0
- package/esm2022/plugins/with-node-image.mjs +98 -0
- package/esm2022/plugins/with-node-resize.mjs +133 -0
- package/{esm2020 → esm2022}/public-api.mjs +2 -3
- package/{esm2020 → esm2022}/transforms/image.mjs +1 -1
- package/esm2022/transforms/index.mjs +23 -0
- package/esm2022/transforms/node.mjs +66 -0
- package/{esm2020 → esm2022}/utils/abstract/common.mjs +2 -2
- package/{esm2020 → esm2022}/utils/abstract/resize.mjs +3 -3
- package/{esm2020 → esm2022}/utils/clipboard.mjs +3 -3
- package/{esm2020 → esm2022}/utils/dnd/common.mjs +1 -1
- package/esm2022/utils/draw/abstract-outline.mjs +117 -0
- package/esm2022/utils/draw/node-dnd.mjs +159 -0
- package/{esm2020 → esm2022}/utils/draw/node-shape.mjs +4 -3
- package/esm2022/utils/index.mjs +15 -0
- package/{esm2020 → esm2022}/utils/node/common.mjs +1 -1
- package/esm2022/utils/node/create-node.mjs +55 -0
- package/esm2022/utils/node/dynamic-width.mjs +19 -0
- package/esm2022/utils/node/image.mjs +23 -0
- package/esm2022/utils/position/image.mjs +36 -0
- package/esm2022/utils/position/node.mjs +36 -0
- package/esm2022/utils/position/topic.mjs +16 -0
- package/{esm2020 → esm2022}/utils/space/index.mjs +1 -1
- package/esm2022/utils/space/layout-options.mjs +69 -0
- package/esm2022/utils/space/node-space.mjs +137 -0
- package/{fesm2020 → fesm2022}/plait-mind.mjs +1383 -1569
- package/fesm2022/plait-mind.mjs.map +1 -0
- package/interfaces/element-data.d.ts +5 -9
- package/interfaces/element.d.ts +1 -0
- package/interfaces/index.d.ts +1 -0
- package/interfaces/options.d.ts +2 -4
- package/{node.component.d.ts → mind-node.component.d.ts} +11 -10
- package/mind.component.d.ts +2 -2
- package/package.json +7 -13
- package/plugins/with-mind-fragment.d.ts +5 -0
- package/plugins/with-mind-hotkey.d.ts +0 -6
- package/public-api.d.ts +1 -2
- package/styles/styles.scss +7 -3
- package/transforms/image.d.ts +3 -2
- package/transforms/index.d.ts +1 -2
- package/transforms/node.d.ts +0 -1
- package/utils/abstract/common.d.ts +2 -2
- package/utils/index.d.ts +0 -1
- package/utils/node/create-node.d.ts +2 -2
- package/utils/node/image.d.ts +0 -2
- package/utils/position/image.d.ts +1 -1
- package/utils/position/node.d.ts +1 -1
- package/utils/space/layout-options.d.ts +2 -2
- package/utils/space/node-space.d.ts +1 -5
- package/base/image-base.component.d.ts +0 -27
- package/constants/image.d.ts +0 -3
- package/drawer/node-image.drawer.d.ts +0 -15
- package/esm2020/base/emoji-base.component.mjs +0 -46
- package/esm2020/base/image-base.component.mjs +0 -67
- package/esm2020/constants/image.mjs +0 -4
- package/esm2020/constants/node-topic-style.mjs +0 -8
- package/esm2020/drawer/node-active.drawer.mjs +0 -44
- package/esm2020/drawer/node-image.drawer.mjs +0 -59
- package/esm2020/interfaces/element-data.mjs +0 -2
- package/esm2020/interfaces/element.mjs +0 -111
- package/esm2020/interfaces/options.mjs +0 -2
- package/esm2020/mind.component.mjs +0 -51
- package/esm2020/mind.module.mjs +0 -21
- package/esm2020/node.component.mjs +0 -248
- package/esm2020/plugins/with-abstract-resize.mjs +0 -112
- package/esm2020/plugins/with-mind-create.mjs +0 -109
- package/esm2020/plugins/with-mind-hotkey.mjs +0 -122
- package/esm2020/plugins/with-mind.mjs +0 -114
- package/esm2020/plugins/with-node-dnd.mjs +0 -180
- package/esm2020/plugins/with-node-image-resize.mjs +0 -48
- package/esm2020/plugins/with-node-image.mjs +0 -96
- package/esm2020/plugins/with-node-resize.mjs +0 -133
- package/esm2020/transforms/index.mjs +0 -24
- package/esm2020/transforms/node.mjs +0 -82
- package/esm2020/utils/draw/abstract-outline.mjs +0 -117
- package/esm2020/utils/draw/node-dnd.mjs +0 -159
- package/esm2020/utils/index.mjs +0 -16
- package/esm2020/utils/is-virtual-key.mjs +0 -13
- package/esm2020/utils/node/create-node.mjs +0 -52
- package/esm2020/utils/node/dynamic-width.mjs +0 -22
- package/esm2020/utils/node/image.mjs +0 -63
- package/esm2020/utils/position/image.mjs +0 -36
- package/esm2020/utils/position/node.mjs +0 -34
- package/esm2020/utils/position/topic.mjs +0 -17
- package/esm2020/utils/space/layout-options.mjs +0 -72
- package/esm2020/utils/space/node-space.mjs +0 -142
- package/fesm2015/plait-mind.mjs +0 -4402
- package/fesm2015/plait-mind.mjs.map +0 -1
- package/fesm2020/plait-mind.mjs.map +0 -1
- package/mind.module.d.ts +0 -11
- package/utils/is-virtual-key.d.ts +0 -1
- /package/{esm2020 → esm2022}/base/base.drawer.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-collapse.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/node-emojis.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/node-insert.drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/layout.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/node.mjs +0 -0
- /package/{esm2020 → esm2022}/interfaces/pointer.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-mind-extend.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-mind.board.mjs +0 -0
- /package/{esm2020 → esm2022}/plugins/with-node-hover-detect.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/layout.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/dnd/detector.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/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/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/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/space/emoji.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/weak-maps.mjs +0 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { createG, PlaitBoard, PlaitElement, NODE_TO_INDEX, RectangleClient, PlaitChildrenElementComponent } from '@plait/core';
|
|
3
|
+
import { isHorizontalLayout, AbstractNode } from '@plait/layouts';
|
|
4
|
+
import { TextManage, ExitOrigin } from '@plait/text';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { MindElement, PlaitMind } from './interfaces/element';
|
|
7
|
+
import { MindQueries } from './queries';
|
|
8
|
+
import { ELEMENT_TO_NODE } from './utils/weak-maps';
|
|
9
|
+
import { drawAbstractLink } from './utils/draw/node-link/abstract-link';
|
|
10
|
+
import { NodeEmojisDrawer } from './drawer/node-emojis.drawer';
|
|
11
|
+
import { MindTransforms } from './transforms';
|
|
12
|
+
import { NodeInsertDrawer } from './drawer/node-insert.drawer';
|
|
13
|
+
import { drawLink } from './utils/draw/node-link/draw-link';
|
|
14
|
+
import { getTopicRectangleByNode } from './utils/position/topic';
|
|
15
|
+
import { NodeActiveGenerator } from './drawer/node-active.generator';
|
|
16
|
+
import { CollapseDrawer } from './drawer/node-collapse.drawer';
|
|
17
|
+
import { NodeSpace } from './utils/space/node-space';
|
|
18
|
+
import { NodeTopicThreshold } from './constants/node-topic-style';
|
|
19
|
+
import { CommonPluginElement, ImageGenerator, WithTextPluginKey } from '@plait/common';
|
|
20
|
+
import { NodeShapeGenerator } from './drawer/node-shape.generator';
|
|
21
|
+
import { NgIf } from '@angular/common';
|
|
22
|
+
import { getImageForeignRectangle } from './utils';
|
|
23
|
+
import * as i0 from "@angular/core";
|
|
24
|
+
export class MindNodeComponent extends CommonPluginElement {
|
|
25
|
+
get textManage() {
|
|
26
|
+
return this.getTextManages()[0];
|
|
27
|
+
}
|
|
28
|
+
constructor(viewContainerRef, cdr) {
|
|
29
|
+
super(cdr);
|
|
30
|
+
this.viewContainerRef = viewContainerRef;
|
|
31
|
+
this.cdr = cdr;
|
|
32
|
+
this.shapeG = null;
|
|
33
|
+
this.destroy$ = new Subject();
|
|
34
|
+
this.trackBy = (index, node) => {
|
|
35
|
+
return node.origin.id;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
initializeDrawer() {
|
|
39
|
+
this.nodeShapeGenerator = new NodeShapeGenerator(this.board);
|
|
40
|
+
this.nodeEmojisDrawer = new NodeEmojisDrawer(this.board, this.viewContainerRef);
|
|
41
|
+
this.nodeInsertDrawer = new NodeInsertDrawer(this.board);
|
|
42
|
+
this.activeGenerator = new NodeActiveGenerator(this.board);
|
|
43
|
+
this.collapseDrawer = new CollapseDrawer(this.board);
|
|
44
|
+
this.imageGenerator = new ImageGenerator(this.board, {
|
|
45
|
+
getRectangle: (element) => {
|
|
46
|
+
return getImageForeignRectangle(this.board, element);
|
|
47
|
+
},
|
|
48
|
+
getImageItem: (element) => {
|
|
49
|
+
return element.data.image;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const plugins = this.board.getPluginOptions(WithTextPluginKey).textPlugins;
|
|
53
|
+
const textManage = new TextManage(this.board, this.viewContainerRef, {
|
|
54
|
+
getRectangle: () => {
|
|
55
|
+
const rect = getTopicRectangleByNode(this.board, this.node);
|
|
56
|
+
return rect;
|
|
57
|
+
},
|
|
58
|
+
onValueChangeHandle: (textManageRef) => {
|
|
59
|
+
const width = textManageRef.width;
|
|
60
|
+
const height = textManageRef.height;
|
|
61
|
+
if (textManageRef.newValue) {
|
|
62
|
+
MindTransforms.setTopic(this.board, this.element, textManageRef.newValue, width, height);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
MindTransforms.setTopicSize(this.board, this.element, width, height);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
textPlugins: plugins,
|
|
69
|
+
getMaxWidth: () => {
|
|
70
|
+
if (this.element.manualWidth) {
|
|
71
|
+
return NodeSpace.getNodeDynamicWidth(this.board, this.element);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
return Math.max(NodeSpace.getNodeDynamicWidth(this.board, this.element), NodeTopicThreshold.defaultTextMaxWidth);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
this.initializeTextManages([textManage]);
|
|
79
|
+
}
|
|
80
|
+
ngOnInit() {
|
|
81
|
+
super.ngOnInit();
|
|
82
|
+
this.initializeDrawer();
|
|
83
|
+
this.node = MindElement.getNode(this.element);
|
|
84
|
+
this.index = NODE_TO_INDEX.get(this.element) || 0;
|
|
85
|
+
this.roughSVG = PlaitBoard.getRoughSVG(this.board);
|
|
86
|
+
this.parentG = PlaitElement.getComponent(MindElement.getRoot(this.board, this.element)).rootG;
|
|
87
|
+
this.nodeShapeGenerator.draw(this.element, this.g, { node: this.node });
|
|
88
|
+
this.drawLink();
|
|
89
|
+
this.drawTopic();
|
|
90
|
+
this.activeGenerator.draw(this.element, this.g, { selected: this.selected, isEditing: this.textManage.isEditing });
|
|
91
|
+
this.drawEmojis();
|
|
92
|
+
this.drawExtend();
|
|
93
|
+
this.imageGenerator.draw(this.element, this.g, this.viewContainerRef);
|
|
94
|
+
if (PlaitMind.isMind(this.context.parent)) {
|
|
95
|
+
this.g.classList.add('branch');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
onContextChanged(value, previous) {
|
|
99
|
+
const newNode = MindElement.getNode(value.element);
|
|
100
|
+
const isEqualNode = RectangleClient.isEqual(this.node, newNode);
|
|
101
|
+
this.node = newNode;
|
|
102
|
+
const isChangeTheme = this.board.operations.find(op => op.type === 'set_theme');
|
|
103
|
+
if (!isEqualNode || value.element !== previous.element || isChangeTheme) {
|
|
104
|
+
this.activeGenerator.draw(this.element, this.g, { selected: this.selected, isEditing: this.textManage.isEditing });
|
|
105
|
+
this.nodeShapeGenerator.draw(this.element, this.g, { node: this.node });
|
|
106
|
+
this.drawLink();
|
|
107
|
+
this.drawEmojis();
|
|
108
|
+
this.drawExtend();
|
|
109
|
+
if (!MindElement.hasImage(previous.element) && MindElement.hasImage(this.element)) {
|
|
110
|
+
this.imageGenerator.draw(this.element, this.g, this.viewContainerRef);
|
|
111
|
+
}
|
|
112
|
+
if (MindElement.hasImage(previous.element) && MindElement.hasImage(this.element)) {
|
|
113
|
+
this.imageGenerator.updateImage(this.g, previous.element, value.element);
|
|
114
|
+
}
|
|
115
|
+
if (MindElement.hasImage(previous.element) && !MindElement.hasImage(this.element)) {
|
|
116
|
+
this.imageGenerator.destroy();
|
|
117
|
+
}
|
|
118
|
+
this.updateTopic();
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const hasSameSelected = value.selected === previous.selected;
|
|
122
|
+
const hasSameParent = value.parent === previous.parent;
|
|
123
|
+
if (!hasSameSelected) {
|
|
124
|
+
this.activeGenerator.draw(this.element, this.g, { selected: this.selected, isEditing: this.textManage.isEditing });
|
|
125
|
+
}
|
|
126
|
+
if (!hasSameParent) {
|
|
127
|
+
this.drawLink();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
drawEmojis() {
|
|
132
|
+
const g = this.nodeEmojisDrawer.drawEmojis(this.element);
|
|
133
|
+
if (g) {
|
|
134
|
+
this.g.append(g);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
drawLink() {
|
|
138
|
+
if (PlaitMind.isMind(this.element)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const parent = MindElement.getParent(this.element);
|
|
142
|
+
const parentNode = MindElement.getNode(parent);
|
|
143
|
+
if (this.linkG) {
|
|
144
|
+
this.linkG.remove();
|
|
145
|
+
}
|
|
146
|
+
const layout = MindQueries.getLayoutByElement(parent);
|
|
147
|
+
if (AbstractNode.isAbstract(this.node.origin)) {
|
|
148
|
+
this.linkG = drawAbstractLink(this.board, this.node, isHorizontalLayout(layout));
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.linkG = drawLink(this.board, parentNode, this.node, isHorizontalLayout(layout));
|
|
152
|
+
}
|
|
153
|
+
this.g.append(this.linkG);
|
|
154
|
+
}
|
|
155
|
+
destroyLine() {
|
|
156
|
+
if (this.linkG) {
|
|
157
|
+
this.linkG.remove();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
drawExtend() {
|
|
161
|
+
this.destroyExtend();
|
|
162
|
+
this.extendG = createG();
|
|
163
|
+
this.extendG.classList.add('extend');
|
|
164
|
+
this.g.append(this.extendG);
|
|
165
|
+
if (this.element.isCollapsed) {
|
|
166
|
+
this.g.classList.add('collapsed');
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
this.g.classList.remove('collapsed');
|
|
170
|
+
}
|
|
171
|
+
this.nodeInsertDrawer.draw(this.element, this.extendG);
|
|
172
|
+
this.collapseDrawer.draw(this.element, this.extendG);
|
|
173
|
+
}
|
|
174
|
+
destroyExtend() {
|
|
175
|
+
if (this.extendG) {
|
|
176
|
+
this.extendG.remove();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
drawTopic() {
|
|
180
|
+
this.textManage.draw(this.element.data.topic);
|
|
181
|
+
this.g.append(this.textManage.g);
|
|
182
|
+
}
|
|
183
|
+
updateTopic() {
|
|
184
|
+
this.textManage.updateText(this.element.data.topic);
|
|
185
|
+
this.textManage.updateRectangle();
|
|
186
|
+
}
|
|
187
|
+
editTopic() {
|
|
188
|
+
this.activeGenerator.draw(this.element, this.g, { selected: this.selected, isEditing: true });
|
|
189
|
+
this.textManage.edit((origin) => {
|
|
190
|
+
if (origin === ExitOrigin.default) {
|
|
191
|
+
this.activeGenerator.draw(this.element, this.g, { selected: this.selected, isEditing: false });
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
ngOnDestroy() {
|
|
196
|
+
super.ngOnDestroy();
|
|
197
|
+
this.textManage.destroy();
|
|
198
|
+
this.nodeEmojisDrawer.destroy();
|
|
199
|
+
this.imageGenerator.destroy();
|
|
200
|
+
this.destroy$.next();
|
|
201
|
+
this.destroy$.complete();
|
|
202
|
+
if (ELEMENT_TO_NODE.get(this.element) === this.node) {
|
|
203
|
+
ELEMENT_TO_NODE.delete(this.element);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: MindNodeComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
207
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: MindNodeComponent, isStandalone: true, selector: "plait-mind-node", usesInheritance: true, ngImport: i0, template: `
|
|
208
|
+
<plait-children
|
|
209
|
+
*ngIf="!element.isCollapsed"
|
|
210
|
+
[board]="board"
|
|
211
|
+
[parent]="element"
|
|
212
|
+
[effect]="effect"
|
|
213
|
+
[parentG]="parentG"
|
|
214
|
+
></plait-children>
|
|
215
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PlaitChildrenElementComponent, selector: "plait-children", inputs: ["board", "parent", "effect", "parentG"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
216
|
+
}
|
|
217
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: MindNodeComponent, decorators: [{
|
|
218
|
+
type: Component,
|
|
219
|
+
args: [{
|
|
220
|
+
selector: 'plait-mind-node',
|
|
221
|
+
template: `
|
|
222
|
+
<plait-children
|
|
223
|
+
*ngIf="!element.isCollapsed"
|
|
224
|
+
[board]="board"
|
|
225
|
+
[parent]="element"
|
|
226
|
+
[effect]="effect"
|
|
227
|
+
[parentG]="parentG"
|
|
228
|
+
></plait-children>
|
|
229
|
+
`,
|
|
230
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
231
|
+
standalone: true,
|
|
232
|
+
imports: [NgIf, PlaitChildrenElementComponent]
|
|
233
|
+
}]
|
|
234
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } });
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL21pbmQtbm9kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFDSCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFlBQVksRUFDWixhQUFhLEVBR2IsZUFBZSxFQUNmLDZCQUE2QixFQUNoQyxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFtQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQWtCbkQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUFnRDtJQThCbkYsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQW9CLGdCQUFrQyxFQUFZLEdBQXNCO1FBQ3BGLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURLLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBWSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXhCeEYsV0FBTSxHQUF1QixJQUFJLENBQUM7UUFNbEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFzTS9CLFlBQU8sR0FBRyxDQUFDLEtBQWEsRUFBRSxJQUFjLEVBQUUsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztJQXBMRixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN6RSxZQUFZLEVBQUUsQ0FBQyxPQUErQixFQUFFLEVBQUU7Z0JBQzlDLE9BQU8sd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0UsQ0FBQztZQUNELFlBQVksRUFBRSxDQUFDLE9BQStCLEVBQUUsRUFBRTtnQkFDOUMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM5QixDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBa0IsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDNUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDakUsWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDZixNQUFNLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUQsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUNELG1CQUFtQixFQUFFLENBQUMsYUFBNEIsRUFBRSxFQUFFO2dCQUNsRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO2dCQUNsQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO2dCQUNwQyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7b0JBQ3hCLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxRQUF1QixFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDM0c7cUJBQU07b0JBQ0gsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUN4RTtZQUNMLENBQUM7WUFDRCxXQUFXLEVBQUUsT0FBTztZQUNwQixXQUFXLEVBQUUsR0FBRyxFQUFFO2dCQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7b0JBQzFCLE9BQU8sU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNsRTtxQkFBTTtvQkFDSCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7aUJBQ3BIO1lBQ0wsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBb0IsQ0FBQztRQUM3RyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDbkgsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBaUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hHLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FDWixLQUE2RCxFQUM3RCxRQUFnRTtRQUVoRSxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDcEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLE9BQU8sSUFBSSxhQUFhLEVBQUU7WUFDckUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNuSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUN6RTtZQUNELElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzlFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUMzQixJQUFJLENBQUMsQ0FBQyxFQUNOLFFBQVEsQ0FBQyxPQUFpQyxFQUMxQyxLQUFLLENBQUMsT0FBaUMsQ0FDMUMsQ0FBQzthQUNMO1lBQ0QsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMvRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2pDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDSCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDN0QsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7YUFDdEg7WUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkI7U0FDSjtJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEVBQUU7WUFDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoQyxPQUFPO1NBQ1Y7UUFFRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7UUFFRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFtQixDQUFDO1FBQ3hFLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDcEY7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN4RjtRQUNELElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDckM7YUFBTTtZQUNILElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN4QztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBa0IsRUFBRSxFQUFFO1lBQ3hDLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ2xHO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBTUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzhHQXBPUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixrR0FiaEI7Ozs7Ozs7O0tBUVQsNERBR1MsSUFBSSw2RkFBRSw2QkFBNkI7OzJGQUVwQyxpQkFBaUI7a0JBZjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7OztLQVFUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLDZCQUE2QixDQUFDO2lCQUNqRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBjcmVhdGVHLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIE5PREVfVE9fSU5ERVgsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBPbkNvbnRleHRDaGFuZ2VkLFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBQbGFpdENoaWxkcmVuRWxlbWVudENvbXBvbmVudFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMYXlvdXQsIEFic3RyYWN0Tm9kZSwgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBUZXh0TWFuYWdlUmVmLCBUZXh0TWFuYWdlLCBFeGl0T3JpZ2luIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgRUxFTUVOVF9UT19OT0RFIH0gZnJvbSAnLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgZHJhd0Fic3RyYWN0TGluayB9IGZyb20gJy4vdXRpbHMvZHJhdy9ub2RlLWxpbmsvYWJzdHJhY3QtbGluayc7XG5pbXBvcnQgeyBOb2RlRW1vamlzRHJhd2VyIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1lbW9qaXMuZHJhd2VyJztcbmltcG9ydCB7IE1pbmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IE5vZGVJbnNlcnREcmF3ZXIgfSBmcm9tICcuL2RyYXdlci9ub2RlLWluc2VydC5kcmF3ZXInO1xuaW1wb3J0IHsgUGxhaXRNaW5kQm9hcmQgfSBmcm9tICcuL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcbmltcG9ydCB7IGRyYXdMaW5rIH0gZnJvbSAnLi91dGlscy9kcmF3L25vZGUtbGluay9kcmF3LWxpbmsnO1xuaW1wb3J0IHsgZ2V0VG9waWNSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuL3V0aWxzL3Bvc2l0aW9uL3RvcGljJztcbmltcG9ydCB7IE5vZGVBY3RpdmVHZW5lcmF0b3IgfSBmcm9tICcuL2RyYXdlci9ub2RlLWFjdGl2ZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgQ29sbGFwc2VEcmF3ZXIgfSBmcm9tICcuL2RyYXdlci9ub2RlLWNvbGxhcHNlLmRyYXdlcic7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tICcuL3V0aWxzL3NwYWNlL25vZGUtc3BhY2UnO1xuaW1wb3J0IHsgTm9kZVRvcGljVGhyZXNob2xkIH0gZnJvbSAnLi9jb25zdGFudHMvbm9kZS10b3BpYy1zdHlsZSc7XG5pbXBvcnQgeyBDb21tb25QbHVnaW5FbGVtZW50LCBJbWFnZUdlbmVyYXRvciwgV2l0aFRleHRPcHRpb25zLCBXaXRoVGV4dFBsdWdpbktleSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgTm9kZVNoYXBlR2VuZXJhdG9yIH0gZnJvbSAnLi9kcmF3ZXIvbm9kZS1zaGFwZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBnZXRJbWFnZUZvcmVpZ25SZWN0YW5nbGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEltYWdlRGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGxhaXQtbWluZC1ub2RlJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8cGxhaXQtY2hpbGRyZW5cbiAgICAgICAgICAgICpuZ0lmPVwiIWVsZW1lbnQuaXNDb2xsYXBzZWRcIlxuICAgICAgICAgICAgW2JvYXJkXT1cImJvYXJkXCJcbiAgICAgICAgICAgIFtwYXJlbnRdPVwiZWxlbWVudFwiXG4gICAgICAgICAgICBbZWZmZWN0XT1cImVmZmVjdFwiXG4gICAgICAgICAgICBbcGFyZW50R109XCJwYXJlbnRHXCJcbiAgICAgICAgPjwvcGxhaXQtY2hpbGRyZW4+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBQbGFpdENoaWxkcmVuRWxlbWVudENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTWluZE5vZGVDb21wb25lbnQgZXh0ZW5kcyBDb21tb25QbHVnaW5FbGVtZW50PE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNvbnRleHRDaGFuZ2VkPE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD4ge1xuICAgIHJvdWdoU1ZHITogUm91Z2hTVkc7XG5cbiAgICBub2RlITogTWluZE5vZGU7XG5cbiAgICBpbmRleCE6IG51bWJlcjtcblxuICAgIHBhcmVudEchOiBTVkdHRWxlbWVudDtcblxuICAgIHNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxpbmtHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBleHRlbmRHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBub2RlRW1vamlzRHJhd2VyITogTm9kZUVtb2ppc0RyYXdlcjtcblxuICAgIG5vZGVTaGFwZUdlbmVyYXRvciE6IE5vZGVTaGFwZUdlbmVyYXRvcjtcblxuICAgIG5vZGVJbnNlcnREcmF3ZXIhOiBOb2RlSW5zZXJ0RHJhd2VyO1xuXG4gICAgaW1hZ2VHZW5lcmF0b3IhOiBJbWFnZUdlbmVyYXRvcjxNaW5kRWxlbWVudDxJbWFnZURhdGE+PjtcblxuICAgIGFjdGl2ZUdlbmVyYXRvciE6IE5vZGVBY3RpdmVHZW5lcmF0b3I7XG5cbiAgICBjb2xsYXBzZURyYXdlciE6IENvbGxhcHNlRHJhd2VyO1xuXG4gICAgZ2V0IHRleHRNYW5hZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRleHRNYW5hZ2VzKClbMF07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVEcmF3ZXIoKSB7XG4gICAgICAgIHRoaXMubm9kZVNoYXBlR2VuZXJhdG9yID0gbmV3IE5vZGVTaGFwZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5ub2RlRW1vamlzRHJhd2VyID0gbmV3IE5vZGVFbW9qaXNEcmF3ZXIodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5ub2RlSW5zZXJ0RHJhd2VyID0gbmV3IE5vZGVJbnNlcnREcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yID0gbmV3IE5vZGVBY3RpdmVHZW5lcmF0b3IodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VEcmF3ZXIgPSBuZXcgQ29sbGFwc2VEcmF3ZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuaW1hZ2VHZW5lcmF0b3IgPSBuZXcgSW1hZ2VHZW5lcmF0b3I8TWluZEVsZW1lbnQ8SW1hZ2VEYXRhPj4odGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogTWluZEVsZW1lbnQ8SW1hZ2VEYXRhPikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbWFnZUZvcmVpZ25SZWN0YW5nbGUodGhpcy5ib2FyZCBhcyBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0SW1hZ2VJdGVtOiAoZWxlbWVudDogTWluZEVsZW1lbnQ8SW1hZ2VEYXRhPikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmRhdGEuaW1hZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5ib2FyZC5nZXRQbHVnaW5PcHRpb25zPFdpdGhUZXh0T3B0aW9ucz4oV2l0aFRleHRQbHVnaW5LZXkpLnRleHRQbHVnaW5zO1xuICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gbmV3IFRleHRNYW5hZ2UodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB7XG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gZ2V0VG9waWNSZWN0YW5nbGVCeU5vZGUodGhpcy5ib2FyZCwgdGhpcy5ub2RlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblZhbHVlQ2hhbmdlSGFuZGxlOiAodGV4dE1hbmFnZVJlZjogVGV4dE1hbmFnZVJlZikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGV4dE1hbmFnZVJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0ZXh0TWFuYWdlUmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAodGV4dE1hbmFnZVJlZi5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpYyh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHRleHRNYW5hZ2VSZWYubmV3VmFsdWUgYXMgTWluZEVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldFRvcGljU2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0UGx1Z2luczogcGx1Z2lucyxcbiAgICAgICAgICAgIGdldE1heFdpZHRoOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5tYW51YWxXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZVNwYWNlLmdldE5vZGVEeW5hbWljV2lkdGgodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoTm9kZVNwYWNlLmdldE5vZGVEeW5hbWljV2lkdGgodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSwgTm9kZVRvcGljVGhyZXNob2xkLmRlZmF1bHRUZXh0TWF4V2lkdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRNYW5hZ2VzKFt0ZXh0TWFuYWdlXSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZURyYXdlcigpO1xuICAgICAgICB0aGlzLm5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIHRoaXMuaW5kZXggPSBOT0RFX1RPX0lOREVYLmdldCh0aGlzLmVsZW1lbnQpIHx8IDA7XG4gICAgICAgIHRoaXMucm91Z2hTVkcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnBhcmVudEcgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KE1pbmRFbGVtZW50LmdldFJvb3QodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSkucm9vdEcgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIHRoaXMubm9kZVNoYXBlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgbm9kZTogdGhpcy5ub2RlIH0pO1xuICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgIHRoaXMuZHJhd1RvcGljKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIGlzRWRpdGluZzogdGhpcy50ZXh0TWFuYWdlLmlzRWRpdGluZyB9KTtcbiAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgIHRoaXMuZHJhd0V4dGVuZCgpO1xuICAgICAgICB0aGlzLmltYWdlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50IGFzIE1pbmRFbGVtZW50PEltYWdlRGF0YT4sIHRoaXMuZywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQodGhpcy5jb250ZXh0LnBhcmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdicmFuY2gnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZWQoXG4gICAgICAgIHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD4sXG4gICAgICAgIHByZXZpb3VzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PE1pbmRFbGVtZW50LCBQbGFpdE1pbmRCb2FyZD5cbiAgICApIHtcbiAgICAgICAgY29uc3QgbmV3Tm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUodmFsdWUuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGlzRXF1YWxOb2RlID0gUmVjdGFuZ2xlQ2xpZW50LmlzRXF1YWwodGhpcy5ub2RlLCBuZXdOb2RlKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbmV3Tm9kZTtcbiAgICAgICAgY29uc3QgaXNDaGFuZ2VUaGVtZSA9IHRoaXMuYm9hcmQub3BlcmF0aW9ucy5maW5kKG9wID0+IG9wLnR5cGUgPT09ICdzZXRfdGhlbWUnKTtcbiAgICAgICAgaWYgKCFpc0VxdWFsTm9kZSB8fCB2YWx1ZS5lbGVtZW50ICE9PSBwcmV2aW91cy5lbGVtZW50IHx8IGlzQ2hhbmdlVGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIGlzRWRpdGluZzogdGhpcy50ZXh0TWFuYWdlLmlzRWRpdGluZyB9KTtcbiAgICAgICAgICAgIHRoaXMubm9kZVNoYXBlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgbm9kZTogdGhpcy5ub2RlIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmF3TGluaygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdFeHRlbmQoKTtcbiAgICAgICAgICAgIGlmICghTWluZEVsZW1lbnQuaGFzSW1hZ2UocHJldmlvdXMuZWxlbWVudCkgJiYgTWluZEVsZW1lbnQuaGFzSW1hZ2UodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VHZW5lcmF0b3IuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChNaW5kRWxlbWVudC5oYXNJbWFnZShwcmV2aW91cy5lbGVtZW50KSAmJiBNaW5kRWxlbWVudC5oYXNJbWFnZSh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUdlbmVyYXRvci51cGRhdGVJbWFnZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cy5lbGVtZW50IGFzIE1pbmRFbGVtZW50PEltYWdlRGF0YT4sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmVsZW1lbnQgYXMgTWluZEVsZW1lbnQ8SW1hZ2VEYXRhPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoTWluZEVsZW1lbnQuaGFzSW1hZ2UocHJldmlvdXMuZWxlbWVudCkgJiYgIU1pbmRFbGVtZW50Lmhhc0ltYWdlKHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlVG9waWMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVTZWxlY3RlZCA9IHZhbHVlLnNlbGVjdGVkID09PSBwcmV2aW91cy5zZWxlY3RlZDtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVQYXJlbnQgPSB2YWx1ZS5wYXJlbnQgPT09IHByZXZpb3VzLnBhcmVudDtcbiAgICAgICAgICAgIGlmICghaGFzU2FtZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZywgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgaXNFZGl0aW5nOiB0aGlzLnRleHRNYW5hZ2UuaXNFZGl0aW5nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFoYXNTYW1lUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3TGluaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0Vtb2ppcygpIHtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMubm9kZUVtb2ppc0RyYXdlci5kcmF3RW1vamlzKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGlmIChnKSB7XG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kKGcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0xpbmsoKSB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudCh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLmxpbmtHKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdCh0aGlzLm5vZGUub3JpZ2luKSkge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdBYnN0cmFjdExpbmsodGhpcy5ib2FyZCwgdGhpcy5ub2RlLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0xpbmsodGhpcy5ib2FyZCwgcGFyZW50Tm9kZSwgdGhpcy5ub2RlLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLmxpbmtHKTtcbiAgICB9XG5cbiAgICBkZXN0cm95TGluZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RXh0ZW5kKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lFeHRlbmQoKTtcblxuICAgICAgICB0aGlzLmV4dGVuZEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIHRoaXMuZXh0ZW5kRy5jbGFzc0xpc3QuYWRkKCdleHRlbmQnKTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLmV4dGVuZEcpO1xuXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QucmVtb3ZlKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm9kZUluc2VydERyYXdlci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5leHRlbmRHISk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VEcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQsIHRoaXMuZXh0ZW5kRyEpO1xuICAgIH1cblxuICAgIGRlc3Ryb3lFeHRlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmV4dGVuZEcpIHtcbiAgICAgICAgICAgIHRoaXMuZXh0ZW5kRy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdUb3BpYygpIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmRyYXcodGhpcy5lbGVtZW50LmRhdGEudG9waWMpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMudGV4dE1hbmFnZS5nKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUb3BpYygpIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLnVwZGF0ZVRleHQodGhpcy5lbGVtZW50LmRhdGEudG9waWMpO1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2UudXBkYXRlUmVjdGFuZ2xlKCk7XG4gICAgfVxuXG4gICAgZWRpdFRvcGljKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kcmF3KHRoaXMuZWxlbWVudCwgdGhpcy5nLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBpc0VkaXRpbmc6IHRydWUgfSk7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZS5lZGl0KChvcmlnaW46IEV4aXRPcmlnaW4pID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW4gPT09IEV4aXRPcmlnaW4uZGVmYXVsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRyYXcodGhpcy5lbGVtZW50LCB0aGlzLmcsIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIGlzRWRpdGluZzogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgbm9kZTogTWluZE5vZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG5vZGUub3JpZ2luLmlkO1xuICAgIH07XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5ub2RlRW1vamlzRHJhd2VyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5pbWFnZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmIChFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgPT09IHRoaXMubm9kZSkge1xuICAgICAgICAgICAgRUxFTUVOVF9UT19OT0RFLmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { PlaitChildrenElementComponent, depthFirstRecursion } from '@plait/core';
|
|
3
|
+
import { GlobalLayout } from '@plait/layouts';
|
|
4
|
+
import { ELEMENT_TO_NODE } from './utils/weak-maps';
|
|
5
|
+
import { MindNodeComponent } from './mind-node.component';
|
|
6
|
+
import { getLayoutOptions } from './utils/space/layout-options';
|
|
7
|
+
import { getDefaultLayout } from './utils/layout';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class PlaitMindComponent extends MindNodeComponent {
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
this.updateMindLayout();
|
|
12
|
+
super.ngOnInit();
|
|
13
|
+
this.g.classList.add('root');
|
|
14
|
+
}
|
|
15
|
+
beforeContextChange(value) {
|
|
16
|
+
if (value.element !== this.element && this.initialized) {
|
|
17
|
+
this.updateMindLayout(value.element);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
updateMindLayout(element = this.element) {
|
|
21
|
+
const mindLayoutType = element.layout || getDefaultLayout();
|
|
22
|
+
this.root = GlobalLayout.layout(element, getLayoutOptions(this.board), mindLayoutType);
|
|
23
|
+
this.updateMindNodeLocation(element);
|
|
24
|
+
}
|
|
25
|
+
updateMindNodeLocation(element) {
|
|
26
|
+
const { x, y, hGap, vGap } = this.root;
|
|
27
|
+
const offsetX = x + hGap;
|
|
28
|
+
const offsetY = y + vGap;
|
|
29
|
+
depthFirstRecursion(this.root, node => {
|
|
30
|
+
node.x = node.x - offsetX + element.points[0][0];
|
|
31
|
+
node.y = node.y - offsetY + element.points[0][1];
|
|
32
|
+
ELEMENT_TO_NODE.set(node.origin, node);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: PlaitMindComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: PlaitMindComponent, isStandalone: true, selector: "plait-mind", usesInheritance: true, ngImport: i0, template: `
|
|
37
|
+
<plait-children [board]="board" [parent]="element" [effect]="effect" [parentG]="rootG"></plait-children>
|
|
38
|
+
`, isInline: true, dependencies: [{ kind: "component", type: PlaitChildrenElementComponent, selector: "plait-children", inputs: ["board", "parent", "effect", "parentG"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: PlaitMindComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{
|
|
43
|
+
selector: 'plait-mind',
|
|
44
|
+
template: `
|
|
45
|
+
<plait-children [board]="board" [parent]="element" [effect]="effect" [parentG]="rootG"></plait-children>
|
|
46
|
+
`,
|
|
47
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
48
|
+
standalone: true,
|
|
49
|
+
imports: [PlaitChildrenElementComponent, MindNodeComponent]
|
|
50
|
+
}]
|
|
51
|
+
}] });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9taW5kLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRzNFLE9BQU8sRUFBdUIsNkJBQTZCLEVBQTZCLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBV2xELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFLckQsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQTJDO1FBQzNELElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU87UUFDbkMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxJQUFJLEdBQUksWUFBWSxDQUFDLE1BQU0sQ0FDM0IsT0FBaUMsRUFDbEMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUM1QixjQUFjLENBQ08sQ0FBQztRQUMxQixJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBb0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFrQjtRQUNyQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsbUJBQW1CLENBQVcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBcENRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDZGQVBqQjs7S0FFVCw0REFHUyw2QkFBNkI7OzJGQUU5QixrQkFBa0I7a0JBVDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRTs7S0FFVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixFQUFFLGlCQUFpQixDQUFDO2lCQUM5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRNaW5kIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBCZWZvcmVDb250ZXh0Q2hhbmdlLCBQbGFpdENoaWxkcmVuRWxlbWVudENvbXBvbmVudCwgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCwgZGVwdGhGaXJzdFJlY3Vyc2lvbiB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEdsb2JhbExheW91dCwgT3JpZ2luTm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IEVMRU1FTlRfVE9fTk9ERSB9IGZyb20gJy4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi9taW5kLW5vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IGdldExheW91dE9wdGlvbnMgfSBmcm9tICcuL3V0aWxzL3NwYWNlL2xheW91dC1vcHRpb25zJztcbmltcG9ydCB7IGdldERlZmF1bHRMYXlvdXQgfSBmcm9tICcuL3V0aWxzL2xheW91dCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGxhaXQtbWluZCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHBsYWl0LWNoaWxkcmVuIFtib2FyZF09XCJib2FyZFwiIFtwYXJlbnRdPVwiZWxlbWVudFwiIFtlZmZlY3RdPVwiZWZmZWN0XCIgW3BhcmVudEddPVwicm9vdEdcIj48L3BsYWl0LWNoaWxkcmVuPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUGxhaXRDaGlsZHJlbkVsZW1lbnRDb21wb25lbnQsIE1pbmROb2RlQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBQbGFpdE1pbmRDb21wb25lbnQgZXh0ZW5kcyBNaW5kTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQmVmb3JlQ29udGV4dENoYW5nZTxQbGFpdE1pbmQ+IHtcbiAgICByb290ITogTWluZE5vZGU7XG5cbiAgICByb290RyE6IFNWR0dFbGVtZW50O1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluZExheW91dCgpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LmFkZCgncm9vdCcpO1xuICAgIH1cblxuICAgIGJlZm9yZUNvbnRleHRDaGFuZ2UodmFsdWU6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRNaW5kPikge1xuICAgICAgICBpZiAodmFsdWUuZWxlbWVudCAhPT0gdGhpcy5lbGVtZW50ICYmIHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTWluZExheW91dCh2YWx1ZS5lbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZU1pbmRMYXlvdXQoZWxlbWVudCA9IHRoaXMuZWxlbWVudCkge1xuICAgICAgICBjb25zdCBtaW5kTGF5b3V0VHlwZSA9IGVsZW1lbnQubGF5b3V0IHx8IGdldERlZmF1bHRMYXlvdXQoKTtcbiAgICAgICAgdGhpcy5yb290ID0gKEdsb2JhbExheW91dC5sYXlvdXQoXG4gICAgICAgICAgICAoZWxlbWVudCBhcyB1bmtub3duKSBhcyBPcmlnaW5Ob2RlLFxuICAgICAgICAgICAgZ2V0TGF5b3V0T3B0aW9ucyh0aGlzLmJvYXJkKSxcbiAgICAgICAgICAgIG1pbmRMYXlvdXRUeXBlXG4gICAgICAgICkgYXMgdW5rbm93bikgYXMgTWluZE5vZGU7XG4gICAgICAgIHRoaXMudXBkYXRlTWluZE5vZGVMb2NhdGlvbihlbGVtZW50IGFzIFBsYWl0TWluZCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTWluZE5vZGVMb2NhdGlvbihlbGVtZW50OiBQbGFpdE1pbmQpIHtcbiAgICAgICAgY29uc3QgeyB4LCB5LCBoR2FwLCB2R2FwIH0gPSB0aGlzLnJvb3Q7XG4gICAgICAgIGNvbnN0IG9mZnNldFggPSB4ICsgaEdhcDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IHkgKyB2R2FwO1xuICAgICAgICBkZXB0aEZpcnN0UmVjdXJzaW9uPE1pbmROb2RlPih0aGlzLnJvb3QsIG5vZGUgPT4ge1xuICAgICAgICAgICAgbm9kZS54ID0gbm9kZS54IC0gb2Zmc2V0WCArIGVsZW1lbnQucG9pbnRzWzBdWzBdO1xuICAgICAgICAgICAgbm9kZS55ID0gbm9kZS55IC0gb2Zmc2V0WSArIGVsZW1lbnQucG9pbnRzWzBdWzFdO1xuICAgICAgICAgICAgRUxFTUVOVF9UT19OT0RFLnNldChub2RlLm9yaWdpbiwgbm9kZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { BOARD_TO_HOST, PlaitBoard, PlaitElement, Transforms, getSelectedElements, isMainPointer, toPoint, transformPoint } from '@plait/core';
|
|
2
|
+
import { AbstractNode, isHorizontalLayout, isStandardLayout } from '@plait/layouts';
|
|
3
|
+
import { MindElement } from '../interfaces';
|
|
4
|
+
import { findLocationLeftIndex, getHitAbstractHandle, getLocationScope, handleTouchedAbstract } from '../utils/abstract/resize';
|
|
5
|
+
import { separateChildren } from '../utils/abstract/common';
|
|
6
|
+
import { AbstractHandlePosition, AbstractResizeState } from './with-abstract-resize.board';
|
|
7
|
+
import { MindQueries } from '../queries';
|
|
8
|
+
export const withAbstract = (board) => {
|
|
9
|
+
const newBoard = board;
|
|
10
|
+
const { mousedown, mousemove, mouseup } = board;
|
|
11
|
+
let activeAbstractElement;
|
|
12
|
+
let abstractHandlePosition;
|
|
13
|
+
let touchedAbstract;
|
|
14
|
+
let startPoint;
|
|
15
|
+
let newProperty;
|
|
16
|
+
board.mousedown = (event) => {
|
|
17
|
+
if (!isMainPointer(event)) {
|
|
18
|
+
mousedown(event);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const activeAbstractElements = getSelectedElements(board).filter(element => AbstractNode.isAbstract(element));
|
|
22
|
+
const host = BOARD_TO_HOST.get(board);
|
|
23
|
+
const point = transformPoint(board, toPoint(event.x, event.y, host));
|
|
24
|
+
activeAbstractElement = activeAbstractElements.find(element => {
|
|
25
|
+
abstractHandlePosition = getHitAbstractHandle(board, element, point);
|
|
26
|
+
return abstractHandlePosition;
|
|
27
|
+
});
|
|
28
|
+
if (activeAbstractElement) {
|
|
29
|
+
if (newBoard?.onAbstractResize) {
|
|
30
|
+
newBoard.onAbstractResize(AbstractResizeState.start);
|
|
31
|
+
}
|
|
32
|
+
startPoint = point;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
mousedown(event);
|
|
36
|
+
};
|
|
37
|
+
board.mousemove = (event) => {
|
|
38
|
+
getSelectedElements(board);
|
|
39
|
+
const host = BOARD_TO_HOST.get(board);
|
|
40
|
+
const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
|
|
41
|
+
touchedAbstract = handleTouchedAbstract(board, touchedAbstract, endPoint);
|
|
42
|
+
if (abstractHandlePosition && activeAbstractElement) {
|
|
43
|
+
// prevent text from being selected
|
|
44
|
+
event.preventDefault();
|
|
45
|
+
const abstractComponent = PlaitElement.getComponent(activeAbstractElement);
|
|
46
|
+
const element = abstractComponent.element;
|
|
47
|
+
const nodeLayout = MindQueries.getCorrectLayoutByElement(board, activeAbstractElement);
|
|
48
|
+
const isHorizontal = isHorizontalLayout(nodeLayout);
|
|
49
|
+
const parentElement = MindElement.getParent(element);
|
|
50
|
+
let children = parentElement.children;
|
|
51
|
+
const parentLayout = MindQueries.getLayoutByElement(parentElement);
|
|
52
|
+
if (isStandardLayout(parentLayout)) {
|
|
53
|
+
const rightNodeCount = parentElement.rightNodeCount;
|
|
54
|
+
const { leftChildren, rightChildren } = separateChildren(parentElement);
|
|
55
|
+
if (activeAbstractElement.end < rightNodeCount) {
|
|
56
|
+
children = rightChildren;
|
|
57
|
+
}
|
|
58
|
+
if (activeAbstractElement.start >= rightNodeCount) {
|
|
59
|
+
children = leftChildren;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (newBoard?.onAbstractResize) {
|
|
63
|
+
newBoard.onAbstractResize(AbstractResizeState.resizing);
|
|
64
|
+
}
|
|
65
|
+
const resizingLocation = isHorizontal ? endPoint[1] : endPoint[0];
|
|
66
|
+
const parent = MindElement.getNode(parentElement);
|
|
67
|
+
const scope = getLocationScope(board, abstractHandlePosition, children, element, parent, isHorizontal);
|
|
68
|
+
const location = Math.min(scope.max, Math.max(scope.min, resizingLocation));
|
|
69
|
+
let locationIndex = findLocationLeftIndex(board, children, location, isHorizontal);
|
|
70
|
+
const isPropertyUnchanged = (abstractHandlePosition === AbstractHandlePosition.start &&
|
|
71
|
+
locationIndex + 1 === activeAbstractElement.start) ||
|
|
72
|
+
(abstractHandlePosition === AbstractHandlePosition.end && locationIndex === activeAbstractElement.end);
|
|
73
|
+
if (isPropertyUnchanged) {
|
|
74
|
+
newProperty = undefined;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (isStandardLayout(parent.layout)) {
|
|
78
|
+
const rightNodeCount = parent.origin.rightNodeCount;
|
|
79
|
+
let start = element.start;
|
|
80
|
+
if (start >= rightNodeCount) {
|
|
81
|
+
locationIndex += rightNodeCount;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
newProperty =
|
|
85
|
+
abstractHandlePosition === AbstractHandlePosition.start ? { start: locationIndex + 1 } : { end: locationIndex };
|
|
86
|
+
}
|
|
87
|
+
abstractComponent.activeGenerator.updateAbstractOutline(activeAbstractElement, abstractHandlePosition, location);
|
|
88
|
+
}
|
|
89
|
+
mousemove(event);
|
|
90
|
+
};
|
|
91
|
+
board.mouseup = (event) => {
|
|
92
|
+
startPoint = undefined;
|
|
93
|
+
abstractHandlePosition = undefined;
|
|
94
|
+
if (activeAbstractElement) {
|
|
95
|
+
if (newBoard?.onAbstractResize) {
|
|
96
|
+
newBoard.onAbstractResize(AbstractResizeState.end);
|
|
97
|
+
}
|
|
98
|
+
if (newProperty) {
|
|
99
|
+
const path = PlaitBoard.findPath(board, activeAbstractElement);
|
|
100
|
+
Transforms.setNode(board, newProperty, path);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const abstractComponent = PlaitElement.getComponent(activeAbstractElement);
|
|
104
|
+
abstractComponent.activeGenerator.updateAbstractOutline(activeAbstractElement);
|
|
105
|
+
}
|
|
106
|
+
activeAbstractElement = undefined;
|
|
107
|
+
}
|
|
108
|
+
mouseup(event);
|
|
109
|
+
};
|
|
110
|
+
return board;
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFHWixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHekMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQixDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUMzRCxNQUFNLFFBQVEsR0FBRyxLQUF3QyxDQUFDO0lBRTFELE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNoRCxJQUFJLHFCQUE4QyxDQUFDO0lBQ25ELElBQUksc0JBQTBELENBQUM7SUFDL0QsSUFBSSxlQUF3QyxDQUFDO0lBQzdDLElBQUksVUFBNkIsQ0FBQztJQUNsQyxJQUFJLFdBQTRELENBQUM7SUFFakUsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtB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cUJBQXFCLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUNuRjtZQUNELHFCQUFxQixHQUFHLFNBQVMsQ0FBQztTQUNyQztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJPQVJEX1RPX0hPU1QsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRQbHVnaW4sXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGlzTWFpblBvaW50ZXIsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQsIGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZmluZExvY2F0aW9uTGVmdEluZGV4LCBnZXRIaXRBYnN0cmFjdEhhbmRsZSwgZ2V0TG9jYXRpb25TY29wZSwgaGFuZGxlVG91Y2hlZEFic3RyYWN0IH0gZnJvbSAnLi4vdXRpbHMvYWJzdHJhY3QvcmVzaXplJztcbmltcG9ydCB7IHNlcGFyYXRlQ2hpbGRyZW4gfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9jb21tb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgQWJzdHJhY3RSZXNpemVTdGF0ZSwgUGxhaXRBYnN0cmFjdEJvYXJkIH0gZnJvbSAnLi93aXRoLWFic3RyYWN0LXJlc2l6ZS5ib2FyZCc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9taW5kLW5vZGUuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IHdpdGhBYnN0cmFjdDogUGxhaXRQbHVnaW4gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdEFic3RyYWN0Qm9hcmQ7XG5cbiAgICBjb25zdCB7IG1vdXNlZG93biwgbW91c2Vtb3ZlLCBtb3VzZXVwIH0gPSBib2FyZDtcbiAgICBsZXQgYWN0aXZlQWJzdHJhY3RFbGVtZW50OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdG91Y2hlZEFic3RyYWN0OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgc3RhcnRQb2ludDogUG9pbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG5ld1Byb3BlcnR5OiB7IGVuZDogbnVtYmVyIH0gfCB7IHN0YXJ0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzTWFpblBvaW50ZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aXZlQWJzdHJhY3RFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmZpbHRlcihlbGVtZW50ID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGhvc3QhKSk7XG5cbiAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gYWN0aXZlQWJzdHJhY3RFbGVtZW50cy5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9IGdldEhpdEFic3RyYWN0SGFuZGxlKGJvYXJkLCBlbGVtZW50IGFzIE1pbmRFbGVtZW50LCBwb2ludCk7XG4gICAgICAgICAgICByZXR1cm4gYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5vbkFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQub25BYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuXG4gICAgICAgIHRvdWNoZWRBYnN0cmFjdCA9IGhhbmRsZVRvdWNoZWRBYnN0cmFjdChib2FyZCwgdG91Y2hlZEFic3RyYWN0LCBlbmRQb2ludCk7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gJiYgYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGFic3RyYWN0Q29tcG9uZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBub2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChwYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudEVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH0gPSBzZXBhcmF0ZUNoaWxkcmVuKHBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSByaWdodENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gbGVmdENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5vbkFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQub25BYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnJlc2l6aW5nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzaXppbmdMb2NhdGlvbiA9IGlzSG9yaXpvbnRhbCA/IGVuZFBvaW50WzFdIDogZW5kUG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSAoTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnRFbGVtZW50KSBhcyB1bmtub3duKSBhcyBMYXlvdXROb2RlO1xuICAgICAgICAgICAgY29uc3Qgc2NvcGUgPSBnZXRMb2NhdGlvblNjb3BlKGJvYXJkLCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBjaGlsZHJlbiwgZWxlbWVudCwgcGFyZW50LCBpc0hvcml6b250YWwpO1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBNYXRoLm1pbihzY29wZS5tYXgsIE1hdGgubWF4KHNjb3BlLm1pbiwgcmVzaXppbmdMb2NhdGlvbikpO1xuXG4gICAgICAgICAgICBsZXQgbG9jYXRpb25JbmRleCA9IGZpbmRMb2NhdGlvbkxlZnRJbmRleChib2FyZCwgY2hpbGRyZW4sIGxvY2F0aW9uLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgICAgICBjb25zdCBpc1Byb3BlcnR5VW5jaGFuZ2VkID1cbiAgICAgICAgICAgICAgICAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCAmJlxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICsgMSA9PT0gKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhKSB8fFxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZCAmJiBsb2NhdGlvbkluZGV4ID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhKTtcblxuICAgICAgICAgICAgaWYgKGlzUHJvcGVydHlVbmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50LmxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBlbGVtZW50LnN0YXJ0ITtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICs9IHJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPVxuICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ID8geyBzdGFydDogbG9jYXRpb25JbmRleCArIDEgfSA6IHsgZW5kOiBsb2NhdGlvbkluZGV4IH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS5hY3RpdmVHZW5lcmF0b3IudXBkYXRlQWJzdHJhY3RPdXRsaW5lKGFjdGl2ZUFic3RyYWN0RWxlbWVudCwgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgbG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNlbW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNldXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgc3RhcnRQb2ludCA9IHVuZGVmaW5lZDtcbiAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5vbkFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQub25BYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLmVuZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3UHJvcGVydHksIHBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBhYnN0cmFjdENvbXBvbmVudCEuYWN0aXZlR2VuZXJhdG9yLnVwZGF0ZUFic3RyYWN0T3V0bGluZShhY3RpdmVBYnN0cmFjdEVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNldXAoZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -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=
|