@plait/mind 0.2.2 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{drawer/base/base.d.ts → base/base.drawer.d.ts} +1 -1
- package/{plugins/emoji → base}/emoji-base.component.d.ts +2 -2
- package/{plugins/emoji → base}/index.d.ts +1 -1
- package/draw/abstract.d.ts +2 -1
- package/draw/indented-link.d.ts +1 -1
- package/draw/link/logic-link.d.ts +1 -1
- package/draw/node.d.ts +5 -0
- package/draw/topic.d.ts +16 -0
- package/{plugins/emoji → drawer}/emoji.drawer.d.ts +3 -3
- package/drawer/quick-insert.drawer.d.ts +1 -1
- package/esm2020/base/base.drawer.mjs +17 -0
- package/esm2020/base/emoji-base.component.mjs +33 -0
- package/esm2020/base/index.mjs +3 -0
- package/esm2020/draw/abstract.mjs +8 -7
- package/esm2020/draw/indented-link.mjs +3 -3
- package/esm2020/draw/link/abstract-link.mjs +9 -15
- package/esm2020/draw/link/logic-link.mjs +9 -9
- package/esm2020/draw/node.mjs +21 -0
- package/esm2020/draw/topic.mjs +32 -0
- package/esm2020/drawer/emoji.drawer.mjs +73 -0
- package/esm2020/drawer/quick-insert.drawer.mjs +3 -3
- package/esm2020/interfaces/index.mjs +2 -2
- package/esm2020/interfaces/pointer.mjs +5 -0
- package/esm2020/mind.component.mjs +2 -2
- package/esm2020/mind.module.mjs +5 -5
- package/esm2020/node.component.mjs +11 -10
- package/esm2020/plugins/with-abstract-resize.board.mjs +12 -0
- package/esm2020/plugins/with-abstract-resize.mjs +107 -0
- package/esm2020/plugins/with-mind-create.mjs +85 -0
- package/esm2020/plugins/with-mind-extend.mjs +11 -0
- package/esm2020/plugins/with-mind.board.mjs +2 -0
- package/esm2020/plugins/with-mind.mjs +30 -16
- package/esm2020/plugins/with-node-dnd.mjs +162 -0
- package/esm2020/public-api.mjs +5 -3
- package/esm2020/transforms/abstract-node.mjs +3 -2
- package/esm2020/transforms/emoji.mjs +37 -0
- package/esm2020/transforms/index.mjs +7 -3
- package/esm2020/transforms/node.mjs +40 -33
- package/esm2020/utils/abstract/common.mjs +64 -31
- package/esm2020/utils/abstract/resize.mjs +3 -2
- package/esm2020/utils/clipboard.mjs +16 -18
- package/esm2020/utils/dnd/common.mjs +35 -0
- package/esm2020/utils/dnd/detector.mjs +268 -0
- package/esm2020/utils/dnd/draw.mjs +161 -0
- package/esm2020/utils/index.mjs +6 -6
- package/esm2020/utils/mind.mjs +6 -129
- package/esm2020/utils/node/adjust-node.mjs +49 -0
- package/esm2020/utils/node/common.mjs +6 -0
- package/esm2020/utils/node/create-node.mjs +61 -0
- package/esm2020/utils/node/index.mjs +4 -0
- package/esm2020/utils/point-placement.mjs +22 -2
- package/esm2020/utils/position/emoji.mjs +31 -0
- package/esm2020/utils/position/index.mjs +4 -0
- package/esm2020/utils/position/node.mjs +34 -0
- package/esm2020/utils/position/topic.mjs +14 -0
- package/esm2020/utils/space/emoji.mjs +19 -0
- package/esm2020/utils/space/layout-options.mjs +72 -0
- package/esm2020/utils/space/node-space.mjs +77 -0
- package/fesm2015/plait-mind.mjs +1464 -1631
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +1486 -1642
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/interfaces/index.d.ts +1 -1
- package/interfaces/pointer.d.ts +3 -0
- package/mind.module.d.ts +2 -2
- package/node.component.d.ts +3 -3
- package/package.json +3 -3
- package/{interfaces/abstract.d.ts → plugins/with-abstract-resize.board.d.ts} +2 -2
- package/plugins/with-mind-create.d.ts +11 -0
- package/plugins/with-mind-extend.d.ts +3 -0
- package/plugins/{with-extend-mind.d.ts → with-mind.board.d.ts} +4 -4
- package/plugins/with-mind.d.ts +1 -1
- package/public-api.d.ts +4 -2
- package/styles/styles.scss +5 -2
- package/transforms/abstract-node.d.ts +1 -1
- package/transforms/emoji.d.ts +6 -0
- package/transforms/index.d.ts +3 -0
- package/transforms/node.d.ts +5 -5
- package/utils/abstract/common.d.ts +19 -4
- package/utils/abstract/resize.d.ts +2 -1
- package/utils/dnd/common.d.ts +7 -0
- package/utils/dnd/detector.d.ts +31 -0
- package/utils/dnd/draw.d.ts +9 -0
- package/utils/index.d.ts +5 -5
- package/utils/mind.d.ts +3 -22
- package/utils/node/adjust-node.d.ts +5 -0
- package/utils/{node.d.ts → node/common.d.ts} +1 -1
- package/utils/node/create-node.d.ts +14 -0
- package/utils/node/index.d.ts +3 -0
- package/utils/point-placement.d.ts +8 -1
- package/utils/position/emoji.d.ts +7 -0
- package/utils/position/index.d.ts +3 -0
- package/utils/position/node.d.ts +12 -0
- package/utils/position/topic.d.ts +16 -0
- package/utils/space/emoji.d.ts +7 -0
- package/{layout-option.d.ts → utils/space/layout-options.d.ts} +1 -1
- package/utils/{node-space.d.ts → space/node-space.d.ts} +4 -4
- package/draw/link.d.ts +0 -3
- package/draw/richtext.d.ts +0 -15
- package/draw/shape.d.ts +0 -3
- package/esm2020/draw/link.mjs +0 -160
- package/esm2020/draw/richtext.mjs +0 -39
- package/esm2020/draw/shape.mjs +0 -18
- package/esm2020/drawer/base/base.mjs +0 -17
- package/esm2020/interfaces/abstract.mjs +0 -12
- package/esm2020/layout-option.mjs +0 -72
- package/esm2020/plugins/emoji/emoji-base.component.mjs +0 -33
- package/esm2020/plugins/emoji/emoji.drawer.mjs +0 -72
- package/esm2020/plugins/emoji/emoji.mjs +0 -47
- package/esm2020/plugins/emoji/index.mjs +0 -3
- package/esm2020/plugins/with-abstract.mjs +0 -106
- package/esm2020/plugins/with-dnd.mjs +0 -179
- package/esm2020/plugins/with-extend-mind.mjs +0 -11
- package/esm2020/utils/direction-corrector.mjs +0 -54
- package/esm2020/utils/direction-detector.mjs +0 -56
- package/esm2020/utils/dnd.mjs +0 -122
- package/esm2020/utils/draw-placeholder.mjs +0 -313
- package/esm2020/utils/drop-target-corrector.mjs +0 -87
- package/esm2020/utils/graph.mjs +0 -24
- package/esm2020/utils/node-space.mjs +0 -77
- package/esm2020/utils/node.mjs +0 -6
- package/plugins/emoji/emoji.d.ts +0 -11
- package/utils/direction-corrector.d.ts +0 -4
- package/utils/direction-detector.d.ts +0 -9
- package/utils/dnd.d.ts +0 -16
- package/utils/draw-placeholder.d.ts +0 -42
- package/utils/drop-target-corrector.d.ts +0 -9
- package/utils/graph.d.ts +0 -5
- /package/plugins/{with-abstract.d.ts → with-abstract-resize.d.ts} +0 -0
- /package/plugins/{with-dnd.d.ts → with-node-dnd.d.ts} +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Path, PlaitBoard, Transforms } from '@plait/core';
|
|
2
2
|
import { AbstractNode, isStandardLayout } from '@plait/layouts';
|
|
3
|
-
import {
|
|
3
|
+
import { divideElementByParent, getFirstLevelElement } from '../utils/mind';
|
|
4
4
|
import { MindQueries } from '../queries';
|
|
5
5
|
import { DefaultAbstractNodeStyle } from '../constants/node-style';
|
|
6
|
+
import { createMindElement } from '../utils/node/create-node';
|
|
6
7
|
export const setAbstractsByRefs = (board, abstractRefs) => {
|
|
7
8
|
abstractRefs.forEach((newProperty, element) => {
|
|
8
9
|
const start = element.start + newProperty.start;
|
|
@@ -65,4 +66,4 @@ const insertAbstractNode = (board, path, start, end) => {
|
|
|
65
66
|
mindElement.end = end;
|
|
66
67
|
Transforms.insertNode(board, mindElement, path);
|
|
67
68
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3RyYW5zZm9ybXMvYWJzdHJhY3Qtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBZ0IsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsWUFBMEIsRUFBRSxFQUFFO0lBQ2hGLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztRQUMzQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFzQixDQUFDLENBQUM7UUFFaEUsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFlLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDM0MsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksY0FBYyxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO0lBQ3pHLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxRQUFRLEVBQUU7UUFDVixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDaEU7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXdCLEVBQUUsRUFBRTtJQUMxRSxJQUFJLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxRQUF5QixDQUFDLENBQUM7SUFDbkUsTUFBTSxFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXZGLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM1QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQXdCLEVBQUUsS0FBb0IsRUFBRSxFQUFFO0lBQ2hHLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRyxNQUFNLGNBQWMsR0FBRyxXQUFXLEVBQUUsY0FBYyxDQUFDO0lBQ25ELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFDdkIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTVDLElBQ0ksZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdELGNBQWM7UUFDZCxLQUFLLEdBQUcsY0FBYztRQUN0QixHQUFHLElBQUksY0FBYyxFQUN2QjtRQUNFLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMxRSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLGNBQWMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLENBQUM7UUFDekUsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0RztTQUFNO1FBQ0gsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkYsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDL0M7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxJQUFVLEVBQUUsS0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQ3JGLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ2hELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2pELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2pELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2pELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO0tBQ3BELENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFdBQVcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBRXRCLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFJlZnMgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLmJvYXJkJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGRpdmlkZUVsZW1lbnRCeVBhcmVudCwgZ2V0Rmlyc3RMZXZlbEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9taW5kJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUgfSBmcm9tICcuLi9jb25zdGFudHMvbm9kZS1zdHlsZSc7XG5pbXBvcnQgeyBjcmVhdGVNaW5kRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL25vZGUvY3JlYXRlLW5vZGUnO1xuXG5leHBvcnQgY29uc3Qgc2V0QWJzdHJhY3RzQnlSZWZzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBhYnN0cmFjdFJlZnM6IEFic3RyYWN0UmVmcykgPT4ge1xuICAgIGFic3RyYWN0UmVmcy5mb3JFYWNoKChuZXdQcm9wZXJ0eSwgZWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IGVsZW1lbnQuc3RhcnQhICsgbmV3UHJvcGVydHkuc3RhcnQ7XG4gICAgICAgIGNvbnN0IGVuZCA9IGVsZW1lbnQuZW5kISArIG5ld1Byb3BlcnR5LmVuZDtcbiAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQgYXMgTWluZEVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChzdGFydCA+IGVuZCkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlKGJvYXJkLCBwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBzdGFydCwgZW5kIH0sIHBhdGgpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QWJzdHJhY3RCeVN0YW5kYXJkTGF5b3V0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gZWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgY29uc3QgYWJzdHJhY3QgPSBlbGVtZW50LmNoaWxkcmVuLmZpbmQoY2hpbGQgPT4ge1xuICAgICAgICByZXR1cm4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA+PSByaWdodE5vZGVDb3VudCAmJiBjaGlsZC5zdGFydCA8IHJpZ2h0Tm9kZUNvdW50O1xuICAgIH0pO1xuXG4gICAgaWYgKGFic3RyYWN0KSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhYnN0cmFjdCk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBlbmQ6IHJpZ2h0Tm9kZUNvdW50IC0gMSB9LCBwYXRoKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0QWJzdHJhY3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCBlbGVtZW50R3JvdXAgPSBnZXRGaXJzdExldmVsRWxlbWVudChlbGVtZW50cyBhcyBNaW5kRWxlbWVudFtdKTtcbiAgICBjb25zdCB7IHBhcmVudEVsZW1lbnRzLCBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzIH0gPSBkaXZpZGVFbGVtZW50QnlQYXJlbnQoZWxlbWVudEdyb3VwKTtcblxuICAgIGFic3RyYWN0SW5jbHVkZWRHcm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwUGFyZW50ID0gcGFyZW50RWxlbWVudHNbaW5kZXhdO1xuICAgICAgICBzZXRBYnN0cmFjdEJ5RWxlbWVudHMoYm9hcmQsIGdyb3VwUGFyZW50LCBncm91cCk7XG4gICAgfSk7XG59O1xuXG5jb25zdCBzZXRBYnN0cmFjdEJ5RWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdyb3VwUGFyZW50OiBNaW5kRWxlbWVudCwgZ3JvdXA6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBpbmRleEFycmF5ID0gZ3JvdXAubWFwKGNoaWxkID0+IGdyb3VwUGFyZW50IS5jaGlsZHJlbi5pbmRleE9mKGNoaWxkKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gZ3JvdXBQYXJlbnQ/LnJpZ2h0Tm9kZUNvdW50O1xuICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXhBcnJheVswXSxcbiAgICAgICAgZW5kID0gaW5kZXhBcnJheVtpbmRleEFycmF5Lmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKFxuICAgICAgICBpc1N0YW5kYXJkTGF5b3V0KE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChncm91cFBhcmVudCkpICYmXG4gICAgICAgIHJpZ2h0Tm9kZUNvdW50ICYmXG4gICAgICAgIHN0YXJ0IDwgcmlnaHROb2RlQ291bnQgJiZcbiAgICAgICAgZW5kID49IHJpZ2h0Tm9kZUNvdW50XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuTGVuZ3RoID0gZ3JvdXBQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXRoID0gWy4uLlBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGdyb3VwUGFyZW50KSwgY2hpbGRyZW5MZW5ndGhdO1xuICAgICAgICBjb25zdCBsZWZ0Q2hpbGRyZW4gPSBpbmRleEFycmF5LmZpbHRlcihpbmRleCA9PiBpbmRleCA+PSByaWdodE5vZGVDb3VudCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q2hpbGRyZW4gPSBpbmRleEFycmF5LmZpbHRlcihpbmRleCA9PiBpbmRleCA8IHJpZ2h0Tm9kZUNvdW50KTtcbiAgICAgICAgaW5zZXJ0QWJzdHJhY3ROb2RlKGJvYXJkLCBwYXRoLCByaWdodENoaWxkcmVuWzBdLCByaWdodENoaWxkcmVuW3JpZ2h0Q2hpbGRyZW4ubGVuZ3RoIC0gMV0pO1xuICAgICAgICBpbnNlcnRBYnN0cmFjdE5vZGUoYm9hcmQsIFBhdGgubmV4dChwYXRoKSwgbGVmdENoaWxkcmVuWzBdLCBsZWZ0Q2hpbGRyZW5bbGVmdENoaWxkcmVuLmxlbmd0aCAtIDFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXRoID0gWy4uLlBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGdyb3VwUGFyZW50KSwgZ3JvdXBQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoXTtcbiAgICAgICAgaW5zZXJ0QWJzdHJhY3ROb2RlKGJvYXJkLCBwYXRoLCBzdGFydCwgZW5kKTtcbiAgICB9XG59O1xuXG5jb25zdCBpbnNlcnRBYnN0cmFjdE5vZGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhdGg6IFBhdGgsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbWluZEVsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCgn5qaC6KaBJywgMjgsIDIwLCB7XG4gICAgICAgIHN0cm9rZUNvbG9yOiBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUuc3Ryb2tlQ29sb3IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUuYnJhbmNoV2lkdGgsXG4gICAgICAgIGJyYW5jaENvbG9yOiBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUuYnJhbmNoQ29sb3IsXG4gICAgICAgIGJyYW5jaFdpZHRoOiBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUuYnJhbmNoV2lkdGhcbiAgICB9KTtcblxuICAgIG1pbmRFbGVtZW50LnN0YXJ0ID0gc3RhcnQ7XG4gICAgbWluZEVsZW1lbnQuZW5kID0gZW5kO1xuXG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBtaW5kRWxlbWVudCwgcGF0aCk7XG59O1xuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PlaitBoard, Transforms } from '@plait/core';
|
|
2
|
+
export const addEmoji = (board, element, emojiItem) => {
|
|
3
|
+
const emojis = element.data.emojis || [];
|
|
4
|
+
const newEmojis = [...emojis];
|
|
5
|
+
newEmojis.push(emojiItem);
|
|
6
|
+
const newElement = {
|
|
7
|
+
data: { topic: element.data.topic, emojis: newEmojis }
|
|
8
|
+
};
|
|
9
|
+
const path = PlaitBoard.findPath(board, element);
|
|
10
|
+
Transforms.setNode(board, newElement, path);
|
|
11
|
+
};
|
|
12
|
+
export const removeEmoji = (board, element, emojiItem) => {
|
|
13
|
+
const emojis = element.data.emojis.filter(value => value !== emojiItem);
|
|
14
|
+
const newElement = {
|
|
15
|
+
data: { topic: element.data.topic }
|
|
16
|
+
};
|
|
17
|
+
if (emojis.length > 0) {
|
|
18
|
+
newElement.data.emojis = emojis;
|
|
19
|
+
}
|
|
20
|
+
const path = PlaitBoard.findPath(board, element);
|
|
21
|
+
Transforms.setNode(board, newElement, path);
|
|
22
|
+
};
|
|
23
|
+
export const replaceEmoji = (board, element, oldEmoji, newEmoji) => {
|
|
24
|
+
const newElement = {
|
|
25
|
+
data: { topic: element.data.topic }
|
|
26
|
+
};
|
|
27
|
+
const newEmojis = element.data.emojis.map(value => {
|
|
28
|
+
if (value === oldEmoji) {
|
|
29
|
+
return newEmoji;
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
});
|
|
33
|
+
newElement.data.emojis = newEmojis;
|
|
34
|
+
const path = PlaitBoard.findPath(board, element);
|
|
35
|
+
Transforms.setNode(board, newElement, path);
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy90cmFuc2Zvcm1zL2Vtb2ppLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxTQUFvQixFQUFFLEVBQUU7SUFDdEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3pDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sVUFBVSxHQUFHO1FBQ2YsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7S0FDMUMsQ0FBQztJQUNqQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUErQixFQUFFLFNBQW9CLEVBQUUsRUFBRTtJQUNwRyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDeEUsTUFBTSxVQUFVLEdBQUc7UUFDZixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7S0FDdkIsQ0FBQztJQUNqQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztLQUNuQztJQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQStCLEVBQUUsUUFBbUIsRUFBRSxRQUFtQixFQUFFLEVBQUU7SUFDekgsTUFBTSxVQUFVLEdBQUc7UUFDZixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7S0FDdkIsQ0FBQztJQUNqQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUMsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3BCLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDSCxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcblxuZXhwb3J0IGNvbnN0IGFkZEVtb2ppID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgZW1vamlJdGVtOiBFbW9qaUl0ZW0pID0+IHtcbiAgICBjb25zdCBlbW9qaXMgPSBlbGVtZW50LmRhdGEuZW1vamlzIHx8IFtdO1xuICAgIGNvbnN0IG5ld0Vtb2ppcyA9IFsuLi5lbW9qaXNdO1xuICAgIG5ld0Vtb2ppcy5wdXNoKGVtb2ppSXRlbSk7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHtcbiAgICAgICAgZGF0YTogeyB0b3BpYzogZWxlbWVudC5kYXRhLnRvcGljLCBlbW9qaXM6IG5ld0Vtb2ppcyB9XG4gICAgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVFbW9qaSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPiwgZW1vamlJdGVtOiBFbW9qaUl0ZW0pID0+IHtcbiAgICBjb25zdCBlbW9qaXMgPSBlbGVtZW50LmRhdGEuZW1vamlzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gZW1vamlJdGVtKTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0ge1xuICAgICAgICBkYXRhOiB7IHRvcGljOiBlbGVtZW50LmRhdGEudG9waWMgfVxuICAgIH0gYXMgTWluZEVsZW1lbnQ7XG4gICAgaWYgKGVtb2ppcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG5ld0VsZW1lbnQuZGF0YS5lbW9qaXMgPSBlbW9qaXM7XG4gICAgfVxuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2VFbW9qaSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPiwgb2xkRW1vamk6IEVtb2ppSXRlbSwgbmV3RW1vamk6IEVtb2ppSXRlbSkgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7XG4gICAgICAgIGRhdGE6IHsgdG9waWM6IGVsZW1lbnQuZGF0YS50b3BpYyB9XG4gICAgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBjb25zdCBuZXdFbW9qaXMgPSBlbGVtZW50LmRhdGEuZW1vamlzLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gb2xkRW1vamkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdFbW9qaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG4gICAgbmV3RWxlbWVudC5kYXRhLmVtb2ppcyA9IG5ld0Vtb2ppcztcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbn07XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { insertAbstract, setAbstractsByRefs, setAbstractByStandardLayout } from './abstract-node';
|
|
2
2
|
import { setLayout } from './layout';
|
|
3
|
-
import {
|
|
3
|
+
import { setTopic, setTopicSize, removeElements, insertNodes, insertAbstractNodes } from './node';
|
|
4
|
+
import { addEmoji, removeEmoji, replaceEmoji } from './emoji';
|
|
4
5
|
export const MindTransforms = {
|
|
5
6
|
setLayout,
|
|
6
7
|
setTopic,
|
|
@@ -10,6 +11,9 @@ export const MindTransforms = {
|
|
|
10
11
|
replaceEmoji,
|
|
11
12
|
insertAbstract,
|
|
12
13
|
setAbstractsByRefs,
|
|
13
|
-
setAbstractByStandardLayout
|
|
14
|
+
setAbstractByStandardLayout,
|
|
15
|
+
removeElements,
|
|
16
|
+
insertNodes,
|
|
17
|
+
insertAbstractNodes
|
|
14
18
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTlELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixTQUFTO0lBQ1QsUUFBUTtJQUNSLFlBQVk7SUFDWixRQUFRO0lBQ1IsV0FBVztJQUNYLFlBQVk7SUFDWixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLDJCQUEyQjtJQUMzQixjQUFjO0lBQ2QsV0FBVztJQUNYLG1CQUFtQjtDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zZXJ0QWJzdHJhY3QsIHNldEFic3RyYWN0c0J5UmVmcywgc2V0QWJzdHJhY3RCeVN0YW5kYXJkTGF5b3V0IH0gZnJvbSAnLi9hYnN0cmFjdC1ub2RlJztcbmltcG9ydCB7IHNldExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcbmltcG9ydCB7IHNldFRvcGljLCBzZXRUb3BpY1NpemUsIHJlbW92ZUVsZW1lbnRzLCBpbnNlcnROb2RlcywgaW5zZXJ0QWJzdHJhY3ROb2RlcyB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBhZGRFbW9qaSwgcmVtb3ZlRW1vamksIHJlcGxhY2VFbW9qaSB9IGZyb20gJy4vZW1vamknO1xuXG5leHBvcnQgY29uc3QgTWluZFRyYW5zZm9ybXMgPSB7XG4gICAgc2V0TGF5b3V0LFxuICAgIHNldFRvcGljLFxuICAgIHNldFRvcGljU2l6ZSxcbiAgICBhZGRFbW9qaSxcbiAgICByZW1vdmVFbW9qaSxcbiAgICByZXBsYWNlRW1vamksXG4gICAgaW5zZXJ0QWJzdHJhY3QsXG4gICAgc2V0QWJzdHJhY3RzQnlSZWZzLFxuICAgIHNldEFic3RyYWN0QnlTdGFuZGFyZExheW91dCxcbiAgICByZW1vdmVFbGVtZW50cyxcbiAgICBpbnNlcnROb2RlcyxcbiAgICBpbnNlcnRBYnN0cmFjdE5vZGVzXG59O1xuIl19
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { Path } from 'slate';
|
|
1
2
|
import { MindElement } from '../interfaces/element';
|
|
2
3
|
import { NODE_MIN_WIDTH } from '../constants/node-rule';
|
|
3
|
-
import { PlaitBoard, Transforms } from '@plait/core';
|
|
4
|
+
import { PlaitBoard, PlaitNode, Transforms } from '@plait/core';
|
|
5
|
+
import { changeRightNodeCount, getFirstLevelElement, isInRightBranchOfStandardLayout } from '../utils/mind';
|
|
6
|
+
import { getRelativeStartEndByAbstractRef } from '../utils/abstract/common';
|
|
4
7
|
export const setTopic = (board, element, topic, width, height) => {
|
|
5
8
|
const newElement = {
|
|
6
9
|
data: { topic },
|
|
@@ -21,39 +24,43 @@ export const setTopicSize = (board, element, width, height) => {
|
|
|
21
24
|
const path = PlaitBoard.findPath(board, element);
|
|
22
25
|
Transforms.setNode(board, newElement, path);
|
|
23
26
|
};
|
|
24
|
-
export const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
newElement.data.emojis = emojis;
|
|
41
|
-
}
|
|
42
|
-
const path = PlaitBoard.findPath(board, element);
|
|
43
|
-
Transforms.setNode(board, newElement, path);
|
|
27
|
+
export const removeElements = (board, elements) => {
|
|
28
|
+
const deletableElements = getFirstLevelElement(elements).reverse();
|
|
29
|
+
//翻转,从下到上修改,防止找不到 path
|
|
30
|
+
deletableElements
|
|
31
|
+
.map(element => {
|
|
32
|
+
const path = PlaitBoard.findPath(board, element);
|
|
33
|
+
return () => {
|
|
34
|
+
if (isInRightBranchOfStandardLayout(element)) {
|
|
35
|
+
changeRightNodeCount(board, path.slice(0, 1), -1);
|
|
36
|
+
}
|
|
37
|
+
Transforms.removeNode(board, path);
|
|
38
|
+
};
|
|
39
|
+
})
|
|
40
|
+
.forEach(action => {
|
|
41
|
+
action();
|
|
42
|
+
});
|
|
44
43
|
};
|
|
45
|
-
export const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (value === oldEmoji) {
|
|
51
|
-
return newEmoji;
|
|
44
|
+
export const insertNodes = (board, elements, path) => {
|
|
45
|
+
const pathRef = board.pathRef(path);
|
|
46
|
+
elements.forEach(element => {
|
|
47
|
+
if (pathRef.current) {
|
|
48
|
+
Transforms.insertNode(board, element, pathRef.current);
|
|
52
49
|
}
|
|
53
|
-
return value;
|
|
54
50
|
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
51
|
+
pathRef.unref();
|
|
52
|
+
};
|
|
53
|
+
export const insertAbstractNodes = (board, validAbstractRefs, elements, path) => {
|
|
54
|
+
const parent = PlaitNode.get(board, Path.parent(path));
|
|
55
|
+
const abstractPath = [...Path.parent(path), parent.children?.length];
|
|
56
|
+
const abstracts = validAbstractRefs.map(refs => {
|
|
57
|
+
const { start, end } = getRelativeStartEndByAbstractRef(refs, elements);
|
|
58
|
+
return {
|
|
59
|
+
...refs.abstract,
|
|
60
|
+
start: start + path[path.length - 1],
|
|
61
|
+
end: end + path[path.length - 1]
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
insertNodes(board, abstracts, abstractPath);
|
|
58
65
|
};
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3RyYW5zZm9ybXMvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQWUsZ0NBQWdDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsS0FBYyxFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUMvRyxNQUFNLFVBQVUsR0FBRztRQUNmLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtRQUNmLEtBQUssRUFBRSxLQUFLLEdBQUcsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUk7UUFDbEcsTUFBTSxFQUFFLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUk7S0FDeEIsQ0FBQztJQUNqQixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDaEQ7SUFDRCxNQUFNLElBQUks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SUFBSSxDQUFDLEVBQUU7UUFDM0MsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEUsT0FBTztZQUNILEdBQUcsSUFBSSxDQUFDLFFBQVE7WUFDaEIsS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDcEMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDbkMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudCwgUGF0aCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE5PREVfTUlOX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzL25vZGUtcnVsZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdE5vZGUsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBjaGFuZ2VSaWdodE5vZGVDb3VudCwgZ2V0Rmlyc3RMZXZlbEVsZW1lbnQsIGlzSW5SaWdodEJyYW5jaE9mU3RhbmRhcmRMYXlvdXQgfSBmcm9tICcuLi91dGlscy9taW5kJztcbmltcG9ydCB7IEFic3RyYWN0UmVmLCBnZXRSZWxhdGl2ZVN0YXJ0RW5kQnlBYnN0cmFjdFJlZiB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBzZXRUb3BpYyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQsIHRvcGljOiBFbGVtZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7XG4gICAgICAgIGRhdGE6IHsgdG9waWMgfSxcbiAgICAgICAgd2lkdGg6IHdpZHRoIDwgTk9ERV9NSU5fV0lEVEggKiBib2FyZC52aWV3cG9ydC56b29tID8gTk9ERV9NSU5fV0lEVEggOiB3aWR0aCAvIGJvYXJkLnZpZXdwb3J0Lnpvb20sXG4gICAgICAgIGhlaWdodDogaGVpZ2h0IC8gYm9hcmQudmlld3BvcnQuem9vbVxuICAgIH0gYXMgTWluZEVsZW1lbnQ7XG4gICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSkge1xuICAgICAgICBuZXdFbGVtZW50LmRhdGEuZW1vamlzID0gZWxlbWVudC5kYXRhLmVtb2ppcztcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0VG9waWNTaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0ge1xuICAgICAgICB3aWR0aDogd2lkdGggPCBOT0RFX01JTl9XSURUSCAqIGJvYXJkLnZpZXdwb3J0Lnpvb20gPyBOT0RFX01JTl9XSURUSCA6IHdpZHRoIC8gYm9hcmQudmlld3BvcnQuem9vbSxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLyBib2FyZC52aWV3cG9ydC56b29tXG4gICAgfTtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBkZWxldGFibGVFbGVtZW50cyA9IGdldEZpcnN0TGV2ZWxFbGVtZW50KGVsZW1lbnRzKS5yZXZlcnNlKCk7XG5cbiAgICAvL+e/u+i9rO+8jOS7juS4i+WIsOS4iuS/ruaUue+8jOmYsuatouaJvuS4jeWIsCBwYXRoXG4gICAgZGVsZXRhYmxlRWxlbWVudHNcbiAgICAgICAgLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzSW5SaWdodEJyYW5jaE9mU3RhbmRhcmRMYXlvdXQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlUmlnaHROb2RlQ291bnQoYm9hcmQsIHBhdGguc2xpY2UoMCwgMSksIC0xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlKGJvYXJkLCBwYXRoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICAgICAgICBhY3Rpb24oKTtcbiAgICAgICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Tm9kZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdLCBwYXRoOiBQYXRoKSA9PiB7XG4gICAgY29uc3QgcGF0aFJlZiA9IGJvYXJkLnBhdGhSZWYocGF0aCk7XG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKHBhdGhSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBlbGVtZW50LCBwYXRoUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcGF0aFJlZi51bnJlZigpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEFic3RyYWN0Tm9kZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHZhbGlkQWJzdHJhY3RSZWZzOiBBYnN0cmFjdFJlZltdLCBlbGVtZW50czogTWluZEVsZW1lbnRbXSwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucGFyZW50KHBhdGgpKTtcbiAgICBjb25zdCBhYnN0cmFjdFBhdGggPSBbLi4uUGF0aC5wYXJlbnQocGF0aCksIHBhcmVudC5jaGlsZHJlbj8ubGVuZ3RoIV07XG4gICAgY29uc3QgYWJzdHJhY3RzID0gdmFsaWRBYnN0cmFjdFJlZnMubWFwKHJlZnMgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGdldFJlbGF0aXZlU3RhcnRFbmRCeUFic3RyYWN0UmVmKHJlZnMsIGVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlZnMuYWJzdHJhY3QsXG4gICAgICAgICAgICBzdGFydDogc3RhcnQgKyBwYXRoW3BhdGgubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgICBlbmQ6IGVuZCArIHBhdGhbcGF0aC5sZW5ndGggLSAxXVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgaW5zZXJ0Tm9kZXMoYm9hcmQsIGFic3RyYWN0cywgYWJzdHJhY3RQYXRoKTtcbn07XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AbstractNode } from '@plait/layouts';
|
|
2
2
|
import { MindElement, PlaitMind } from '../../interfaces/element';
|
|
3
|
-
import { Path,
|
|
3
|
+
import { Path, PlaitElement, PlaitNode } from '@plait/core';
|
|
4
4
|
export const separateChildren = (parentElement) => {
|
|
5
5
|
const rightNodeCount = parentElement.rightNodeCount;
|
|
6
6
|
const children = parentElement.children;
|
|
@@ -25,13 +25,13 @@ export const separateChildren = (parentElement) => {
|
|
|
25
25
|
return { leftChildren, rightChildren };
|
|
26
26
|
};
|
|
27
27
|
export const isSetAbstract = (element) => {
|
|
28
|
-
|
|
29
|
-
return !!getCorrespondingAbstract(parent, element);
|
|
28
|
+
return !!getCorrespondingAbstract(element);
|
|
30
29
|
};
|
|
31
30
|
export const canSetAbstract = (element) => {
|
|
32
31
|
return !PlaitElement.isRootElement(element) && !AbstractNode.isAbstract(element) && !isSetAbstract(element);
|
|
33
32
|
};
|
|
34
|
-
export const getCorrespondingAbstract = (
|
|
33
|
+
export const getCorrespondingAbstract = (element) => {
|
|
34
|
+
const parent = MindElement.findParent(element);
|
|
35
35
|
if (!parent)
|
|
36
36
|
return undefined;
|
|
37
37
|
const elementIndex = parent.children.indexOf(element);
|
|
@@ -39,18 +39,23 @@ export const getCorrespondingAbstract = (parent, element) => {
|
|
|
39
39
|
return AbstractNode.isAbstract(child) && elementIndex >= child.start && elementIndex <= child.end;
|
|
40
40
|
});
|
|
41
41
|
};
|
|
42
|
-
export const getBehindAbstracts = (
|
|
42
|
+
export const getBehindAbstracts = (element) => {
|
|
43
|
+
const parent = MindElement.findParent(element);
|
|
44
|
+
if (!parent)
|
|
45
|
+
return [];
|
|
43
46
|
const index = parent.children.indexOf(element);
|
|
44
47
|
return parent.children.filter(child => AbstractNode.isAbstract(child) && child.start > index);
|
|
45
48
|
};
|
|
49
|
+
/**
|
|
50
|
+
* return corresponding abstract that is not child of elements
|
|
51
|
+
*/
|
|
46
52
|
export const getOverallAbstracts = (board, elements) => {
|
|
47
53
|
const overallAbstracts = [];
|
|
48
54
|
elements
|
|
49
55
|
.filter(value => !AbstractNode.isAbstract(value) && !PlaitMind.isMind(value))
|
|
50
56
|
.forEach(value => {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
if (abstract && overallAbstracts.indexOf(abstract) === -1) {
|
|
57
|
+
const abstract = getCorrespondingAbstract(value);
|
|
58
|
+
if (abstract && elements.indexOf(abstract) === -1 && overallAbstracts.indexOf(abstract) === -1) {
|
|
54
59
|
const { start, end } = abstract;
|
|
55
60
|
const parent = MindElement.getParent(value);
|
|
56
61
|
const isOverall = parent.children.slice(start, end + 1).every(includedElement => elements.indexOf(includedElement) > -1);
|
|
@@ -61,9 +66,38 @@ export const getOverallAbstracts = (board, elements) => {
|
|
|
61
66
|
});
|
|
62
67
|
return overallAbstracts;
|
|
63
68
|
};
|
|
64
|
-
|
|
69
|
+
/**
|
|
70
|
+
* abstract node is valid when elements contains at least one element it is referenced with
|
|
71
|
+
*/
|
|
72
|
+
export const getValidAbstractRefs = (board, elements) => {
|
|
73
|
+
const validAbstractRefs = [];
|
|
74
|
+
elements
|
|
75
|
+
.filter(value => !AbstractNode.isAbstract(value) && !PlaitMind.isMind(value))
|
|
76
|
+
.forEach(value => {
|
|
77
|
+
const abstract = getCorrespondingAbstract(value);
|
|
78
|
+
if (abstract && elements.indexOf(abstract) > 0) {
|
|
79
|
+
const index = validAbstractRefs.findIndex(value => value.abstract === abstract);
|
|
80
|
+
if (index === -1) {
|
|
81
|
+
validAbstractRefs.push({
|
|
82
|
+
abstract: abstract,
|
|
83
|
+
references: [value]
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
validAbstractRefs[index].references.push(value);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return validAbstractRefs;
|
|
92
|
+
};
|
|
93
|
+
export function getRelativeStartEndByAbstractRef(abstractRef, elements) {
|
|
94
|
+
const start = elements.indexOf(abstractRef.references[0]);
|
|
95
|
+
const end = elements.indexOf(abstractRef.references[abstractRef.references.length - 1]);
|
|
96
|
+
return { start, end };
|
|
97
|
+
}
|
|
98
|
+
export const insertElementHandleAbstract = (board, path, step = 1,
|
|
65
99
|
//由此区分拖拽和新增到概要概括最后一个节点
|
|
66
|
-
isExtendPreviousNode = true,
|
|
100
|
+
isExtendPreviousNode = true, effectedAbstracts = new Map()) => {
|
|
67
101
|
const parent = PlaitNode.parent(board, path);
|
|
68
102
|
const hasPreviousNode = path[path.length - 1] !== 0;
|
|
69
103
|
let behindAbstracts;
|
|
@@ -72,62 +106,61 @@ isExtendPreviousNode = true, abstractRefs = new Map()) => {
|
|
|
72
106
|
}
|
|
73
107
|
else {
|
|
74
108
|
const selectedElement = PlaitNode.get(board, Path.previous(path));
|
|
75
|
-
behindAbstracts = getBehindAbstracts(
|
|
109
|
+
behindAbstracts = getBehindAbstracts(selectedElement);
|
|
76
110
|
}
|
|
77
111
|
if (behindAbstracts.length) {
|
|
78
112
|
behindAbstracts.forEach(abstract => {
|
|
79
|
-
let newProperties =
|
|
113
|
+
let newProperties = effectedAbstracts.get(abstract);
|
|
80
114
|
if (!newProperties) {
|
|
81
115
|
newProperties = { start: 0, end: 0 };
|
|
82
|
-
|
|
116
|
+
effectedAbstracts.set(abstract, newProperties);
|
|
83
117
|
}
|
|
84
|
-
newProperties.start = newProperties.start +
|
|
85
|
-
newProperties.end = newProperties.end +
|
|
118
|
+
newProperties.start = newProperties.start + step;
|
|
119
|
+
newProperties.end = newProperties.end + step;
|
|
86
120
|
});
|
|
87
121
|
}
|
|
88
122
|
if (!hasPreviousNode) {
|
|
89
|
-
return
|
|
123
|
+
return effectedAbstracts;
|
|
90
124
|
}
|
|
91
125
|
const selectedElement = PlaitNode.get(board, Path.previous(path));
|
|
92
|
-
const correspondingAbstract = getCorrespondingAbstract(
|
|
126
|
+
const correspondingAbstract = getCorrespondingAbstract(selectedElement);
|
|
93
127
|
const isDragToLast = !isExtendPreviousNode && correspondingAbstract && correspondingAbstract.end === path[path.length - 1] - 1;
|
|
94
128
|
if (correspondingAbstract && !isDragToLast) {
|
|
95
|
-
let newProperties =
|
|
129
|
+
let newProperties = effectedAbstracts.get(correspondingAbstract);
|
|
96
130
|
if (!newProperties) {
|
|
97
131
|
newProperties = { start: 0, end: 0 };
|
|
98
|
-
|
|
132
|
+
effectedAbstracts.set(correspondingAbstract, newProperties);
|
|
99
133
|
}
|
|
100
|
-
newProperties.end = newProperties.end +
|
|
134
|
+
newProperties.end = newProperties.end + step;
|
|
101
135
|
}
|
|
102
|
-
return
|
|
136
|
+
return effectedAbstracts;
|
|
103
137
|
};
|
|
104
|
-
export const deleteElementHandleAbstract = (board, deletableElements,
|
|
138
|
+
export const deleteElementHandleAbstract = (board, deletableElements, effectedAbstracts = new Map()) => {
|
|
105
139
|
deletableElements.forEach(node => {
|
|
106
140
|
if (!PlaitMind.isMind(node)) {
|
|
107
|
-
const
|
|
108
|
-
const behindAbstracts = getBehindAbstracts(parent, node).filter(abstract => !deletableElements.includes(abstract));
|
|
141
|
+
const behindAbstracts = getBehindAbstracts(node).filter(abstract => !deletableElements.includes(abstract));
|
|
109
142
|
if (behindAbstracts.length) {
|
|
110
143
|
behindAbstracts.forEach(abstract => {
|
|
111
|
-
let newProperties =
|
|
144
|
+
let newProperties = effectedAbstracts.get(abstract);
|
|
112
145
|
if (!newProperties) {
|
|
113
146
|
newProperties = { start: 0, end: 0 };
|
|
114
|
-
|
|
147
|
+
effectedAbstracts.set(abstract, newProperties);
|
|
115
148
|
}
|
|
116
149
|
newProperties.start = newProperties.start - 1;
|
|
117
150
|
newProperties.end = newProperties.end - 1;
|
|
118
151
|
});
|
|
119
152
|
}
|
|
120
|
-
const correspondingAbstract = getCorrespondingAbstract(
|
|
153
|
+
const correspondingAbstract = getCorrespondingAbstract(node);
|
|
121
154
|
if (correspondingAbstract && !deletableElements.includes(correspondingAbstract)) {
|
|
122
|
-
let newProperties =
|
|
155
|
+
let newProperties = effectedAbstracts.get(correspondingAbstract);
|
|
123
156
|
if (!newProperties) {
|
|
124
157
|
newProperties = { start: 0, end: 0 };
|
|
125
|
-
|
|
158
|
+
effectedAbstracts.set(correspondingAbstract, newProperties);
|
|
126
159
|
}
|
|
127
160
|
newProperties.end = newProperties.end - 1;
|
|
128
161
|
}
|
|
129
162
|
}
|
|
130
163
|
});
|
|
131
|
-
return
|
|
164
|
+
return effectedAbstracts;
|
|
132
165
|
};
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxhQUEwQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWUsQ0FBQztJQUNyRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3hDLElBQUksYUFBYSxHQUFHLEVBQUUsRUFDbEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsY0FBYyxFQUFFO1lBQzlELGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsU0FBUztTQUNaO1FBQ0QsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksY0FBYyxFQUFFO1lBQ2pFLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsU0FBUztTQUNaO1FBRUQsSUFBSSxD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RyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSxxQkFBcUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO2dCQUM3RSxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2hCLGFBQWEsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUVyQyxZQUFZLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQzdDO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQbGFpdE5vZGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBzZXBhcmF0ZUNoaWxkcmVuID0gKHBhcmVudEVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50ITtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG4gICAgbGV0IHJpZ2h0Q2hpbGRyZW4gPSBbXSxcbiAgICAgICAgbGVmdENoaWxkcmVuID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuZW5kIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgIHJpZ2h0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLnN0YXJ0ID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICBsZWZ0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgIHJpZ2h0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZWZ0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBsZWZ0Q2hpbGRyZW4sIHJpZ2h0Q2hpbGRyZW4gfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NldEFic3RyYWN0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcbiAgICByZXR1cm4gISFnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QocGFyZW50LCBlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYW5TZXRBYnN0cmFjdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gIVBsYWl0RWxlbWVudC5pc1Jvb3RFbGVtZW50KGVsZW1lbnQpICYmICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSAmJiAhaXNTZXRBYnN0cmFjdChlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QgPSAocGFyZW50OiBNaW5kRWxlbWVudCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmluZChjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgZWxlbWVudEluZGV4ID49IGNoaWxkLnN0YXJ0ISAmJiBlbGVtZW50SW5kZXggPD0gY2hpbGQuZW5kITtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCZWhpbmRBYnN0cmFjdHMgPSAocGFyZW50OiBNaW5kRWxlbWVudCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCEgPiBpbmRleCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3ZlcmFsbEFic3RyYWN0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBvdmVyYWxsQWJzdHJhY3RzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgZWxlbWVudHNcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodmFsdWUpICYmICFQbGFpdE1pbmQuaXNNaW5kKHZhbHVlKSlcbiAgICAgICAgLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHBhcmVudCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKGFic3RyYWN0ICYmIG92ZXJhbGxBYnN0cmFjdHMuaW5kZXhPZihhYnN0cmFjdCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBhYnN0cmFjdDtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQodmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzT3ZlcmFsbCA9IHBhcmVudC5jaGlsZHJlbi5zbGljZShzdGFydCEsIGVuZCEgKyAxKS5ldmVyeShpbmNsdWRlZEVsZW1lbnQgPT4gZWxlbWVudHMuaW5kZXhPZihpbmNsdWRlZEVsZW1lbnQpID4gLTEpO1xuICAgICAgICAgICAgICAgIGlmIChpc092ZXJhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmFsbEFic3RyYWN0cy5wdXNoKGFic3RyYWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBvdmVyYWxsQWJzdHJhY3RzIGFzIChNaW5kRWxlbWVudCAmIEFic3RyYWN0Tm9kZSlbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcGF0aDogUGF0aCxcbiAgICAvL+eUseatpOWMuuWIhuaLluaLveWSjOaWsOWinuWIsOamguimgeamguaLrOacgOWQjuS4gOS4quiKgueCuVxuICAgIGlzRXh0ZW5kUHJldmlvdXNOb2RlOiBib29sZWFuID0gdHJ1ZSxcbiAgICBhYnN0cmFjdFJlZnMgPSBuZXcgTWFwPE1pbmRFbGVtZW50LCBQaWNrPEFic3RyYWN0Tm9kZSwgJ3N0YXJ0JyB8ICdlbmQnPj4oKVxuKSA9PiB7XG4gICAgY29uc3QgcGFyZW50ID0gUGxhaXROb2RlLnBhcmVudChib2FyZCwgcGF0aCkgYXMgTWluZEVsZW1lbnQ7XG4gICAgY29uc3QgaGFzUHJldmlvdXNOb2RlID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdICE9PSAwO1xuICAgIGxldCBiZWhpbmRBYnN0cmFjdHM6IE1pbmRFbGVtZW50W107XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSkge1xuICAgICAgICBiZWhpbmRBYnN0cmFjdHMgPSBwYXJlbnQuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyhwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgIGJlaGluZEFic3RyYWN0cyA9IGdldEJlaGluZEFic3RyYWN0cyhwYXJlbnQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKGJlaGluZEFic3RyYWN0cy5sZW5ndGgpIHtcbiAgICAgICAgYmVoaW5kQWJzdHJhY3RzLmZvckVhY2goYWJzdHJhY3QgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld1Byb3BlcnRpZXMgPSBhYnN0cmFjdFJlZnMuZ2V0KGFic3RyYWN0KTtcbiAgICAgICAgICAgIGlmICghbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgICAgICBhYnN0cmFjdFJlZnMuc2V0KGFic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuc3RhcnQgPSBuZXdQcm9wZXJ0aWVzLnN0YXJ0ICsgMTtcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuZW5kID0gbmV3UHJvcGVydGllcy5lbmQgKyAxO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSkge1xuICAgICAgICByZXR1cm4gYWJzdHJhY3RSZWZzO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucHJldmlvdXMocGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChwYXJlbnQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgY29uc3QgaXNEcmFnVG9MYXN0ID0gIWlzRXh0ZW5kUHJldmlvdXNOb2RlICYmIGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiBjb3JyZXNwb25kaW5nQWJzdHJhY3QuZW5kID09PSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gLSAxO1xuXG4gICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhaXNEcmFnVG9MYXN0KSB7XG4gICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gYWJzdHJhY3RSZWZzLmdldChjb3JyZXNwb25kaW5nQWJzdHJhY3QpO1xuICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgIGFic3RyYWN0UmVmcy5zZXQoY29ycmVzcG9uZGluZ0Fic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdQcm9wZXJ0aWVzLmVuZCA9IG5ld1Byb3BlcnRpZXMuZW5kICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWJzdHJhY3RSZWZzO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkZWxldGFibGVFbGVtZW50czogTWluZEVsZW1lbnRbXSxcbiAgICBhYnN0cmFjdFJlZnMgPSBuZXcgTWFwPE1pbmRFbGVtZW50LCBQaWNrPEFic3RyYWN0Tm9kZSwgJ3N0YXJ0JyB8ICdlbmQnPj4oKVxuKSA9PiB7XG4gICAgZGVsZXRhYmxlRWxlbWVudHMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgaWYgKCFQbGFpdE1pbmQuaXNNaW5kKG5vZGUpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUucGFyZW50KGJvYXJkLCBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBub2RlKSkgYXMgTWluZEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IGJlaGluZEFic3RyYWN0cyA9IGdldEJlaGluZEFic3RyYWN0cyhwYXJlbnQsIG5vZGUpLmZpbHRlcihhYnN0cmFjdCA9PiAhZGVsZXRhYmxlRWxlbWVudHMuaW5jbHVkZXMoYWJzdHJhY3QpKTtcbiAgICAgICAgICAgIGlmIChiZWhpbmRBYnN0cmFjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYmVoaW5kQWJzdHJhY3RzLmZvckVhY2goYWJzdHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3UHJvcGVydGllcyA9IGFic3RyYWN0UmVmcy5nZXQoYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFic3RyYWN0UmVmcy5zZXQoYWJzdHJhY3QsIG5ld1Byb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuc3RhcnQgPSBuZXdQcm9wZXJ0aWVzLnN0YXJ0IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcy5lbmQgPSBuZXdQcm9wZXJ0aWVzLmVuZCAtIDE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChwYXJlbnQsIG5vZGUpO1xuICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhZGVsZXRhYmxlRWxlbWVudHMuaW5jbHVkZXMoY29ycmVzcG9uZGluZ0Fic3RyYWN0KSkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gYWJzdHJhY3RSZWZzLmdldChjb3JyZXNwb25kaW5nQWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgIGlmICghbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzID0geyBzdGFydDogMCwgZW5kOiAwIH07XG5cbiAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RSZWZzLnNldChjb3JyZXNwb25kaW5nQWJzdHJhY3QsIG5ld1Byb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzLmVuZCA9IG5ld1Byb3BlcnRpZXMuZW5kIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhYnN0cmFjdFJlZnM7XG59O1xuIl19
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQWMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGFBQTBCLEVBQUUsRUFBRTtJQUMzRCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBZSxDQUFDO0lBQ3JELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDeEMsSUFBSSxhQUFhLEdBQUcsRUFBRSxFQUNsQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxjQUFjLEVBQUU7WUFDOUQsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixTQUFTO1NBQ1o7UUFDRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxjQUFjLEVBQUU7WUFDakUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixTQUFTO1NBQ1o7UUFFRCxJQUFJLENBQUMsR0FBRyxj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UUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO3FCQUNsRDtvQkFDRCxhQUFhLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUM5QyxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLHFCQUFxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUU7Z0JBQzdFLElBQUksYUFBYSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNoQixhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFFckMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFDO2lCQUMvRDtnQkFDRCxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQzdDO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8saUJBQWlCLENBQUM7QUFDN0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3ROb2RlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBsYWl0Tm9kZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IHNlcGFyYXRlQ2hpbGRyZW4gPSAocGFyZW50RWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudEVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbjtcbiAgICBsZXQgcmlnaHRDaGlsZHJlbiA9IFtdLFxuICAgICAgICBsZWZ0Q2hpbGRyZW4gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5lbmQgPCByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgcmlnaHRDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuc3RhcnQgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgIGxlZnRDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGkgPCByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgcmlnaHRDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxlZnRDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGxlZnRDaGlsZHJlbiwgcmlnaHRDaGlsZHJlbiB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2V0QWJzdHJhY3QgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuICEhZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KGVsZW1lbnQgYXMgTWluZEVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhblNldEFic3RyYWN0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIHJldHVybiAhUGxhaXRFbGVtZW50LmlzUm9vdEVsZW1lbnQoZWxlbWVudCkgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpICYmICFpc1NldEFic3RyYWN0KGVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IChlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoZWxlbWVudCBhcyBNaW5kRWxlbWVudCk7XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBlbGVtZW50SW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KTtcbiAgICByZXR1cm4gcGFyZW50LmNoaWxkcmVuLmZpbmQoY2hpbGQgPT4ge1xuICAgICAgICByZXR1cm4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGVsZW1lbnRJbmRleCA+PSBjaGlsZC5zdGFydCEgJiYgZWxlbWVudEluZGV4IDw9IGNoaWxkLmVuZCE7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmVoaW5kQWJzdHJhY3RzID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZWxlbWVudCk7XG4gICAgcmV0dXJuIHBhcmVudC5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLnN0YXJ0ISA+IGluZGV4KTtcbn07XG5cbi8qKlxuICogcmV0dXJuIGNvcnJlc3BvbmRpbmcgYWJzdHJhY3QgdGhhdCBpcyBub3QgY2hpbGQgb2YgZWxlbWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE92ZXJhbGxBYnN0cmFjdHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgb3ZlcmFsbEFic3RyYWN0czogTWluZEVsZW1lbnRbXSA9IFtdO1xuICAgIGVsZW1lbnRzXG4gICAgICAgIC5maWx0ZXIodmFsdWUgPT4gIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHZhbHVlKSAmJiAhUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpXG4gICAgICAgIC5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChhYnN0cmFjdCAmJiBlbGVtZW50cy5pbmRleE9mKGFic3RyYWN0KSA9PT0gLTEgJiYgb3ZlcmFsbEFic3RyYWN0cy5pbmRleE9mKGFic3RyYWN0KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGFic3RyYWN0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPdmVyYWxsID0gcGFyZW50LmNoaWxkcmVuLnNsaWNlKHN0YXJ0ISwgZW5kISArIDEpLmV2ZXJ5KGluY2x1ZGVkRWxlbWVudCA9PiBlbGVtZW50cy5pbmRleE9mKGluY2x1ZGVkRWxlbWVudCkgPiAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzT3ZlcmFsbCkge1xuICAgICAgICAgICAgICAgICAgICBvdmVyYWxsQWJzdHJhY3RzLnB1c2goYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIG92ZXJhbGxBYnN0cmFjdHMgYXMgKE1pbmRFbGVtZW50ICYgQWJzdHJhY3ROb2RlKVtdO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdFJlZiB7XG4gICAgYWJzdHJhY3Q6IE1pbmRFbGVtZW50ICYgQWJzdHJhY3ROb2RlO1xuICAgIHJlZmVyZW5jZXM6IE1pbmRFbGVtZW50W107XG59XG5cbi8qKlxuICogYWJzdHJhY3Qgbm9kZSBpcyB2YWxpZCB3aGVuIGVsZW1lbnRzIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBlbGVtZW50IGl0IGlzIHJlZmVyZW5jZWQgd2l0aFxuICovXG5leHBvcnQgY29uc3QgZ2V0VmFsaWRBYnN0cmFjdFJlZnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3QgdmFsaWRBYnN0cmFjdFJlZnM6IEFic3RyYWN0UmVmW10gPSBbXTtcbiAgICBlbGVtZW50c1xuICAgICAgICAuZmlsdGVyKHZhbHVlID0+ICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdCh2YWx1ZSkgJiYgIVBsYWl0TWluZC5pc01pbmQodmFsdWUpKVxuICAgICAgICAuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdCh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoYWJzdHJhY3QgJiYgZWxlbWVudHMuaW5kZXhPZihhYnN0cmFjdCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB2YWxpZEFic3RyYWN0UmVmcy5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUuYWJzdHJhY3QgPT09IGFic3RyYWN0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkQWJzdHJhY3RSZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3Q6IGFic3RyYWN0IGFzIE1pbmRFbGVtZW50ICYgQWJzdHJhY3ROb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlczogW3ZhbHVlXVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZEFic3RyYWN0UmVmc1tpbmRleF0ucmVmZXJlbmNlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiB2YWxpZEFic3RyYWN0UmVmcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWxhdGl2ZVN0YXJ0RW5kQnlBYnN0cmFjdFJlZihhYnN0cmFjdFJlZjogQWJzdHJhY3RSZWYsIGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBlbGVtZW50cy5pbmRleE9mKGFic3RyYWN0UmVmLnJlZmVyZW5jZXNbMF0pO1xuICAgIGNvbnN0IGVuZCA9IGVsZW1lbnRzLmluZGV4T2YoYWJzdHJhY3RSZWYucmVmZXJlbmNlc1thYnN0cmFjdFJlZi5yZWZlcmVuY2VzLmxlbmd0aCAtIDFdKTtcbiAgICByZXR1cm4geyBzdGFydCwgZW5kIH07XG59XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcGF0aDogUGF0aCxcbiAgICBzdGVwID0gMSxcbiAgICAvL+eUseatpOWMuuWIhuaLluaLveWSjOaWsOWinuWIsOamguimgeamguaLrOacgOWQjuS4gOS4quiKgueCuVxuICAgIGlzRXh0ZW5kUHJldmlvdXNOb2RlOiBib29sZWFuID0gdHJ1ZSxcbiAgICBlZmZlY3RlZEFic3RyYWN0cyA9IG5ldyBNYXA8TWluZEVsZW1lbnQsIFBpY2s8QWJzdHJhY3ROb2RlLCAnc3RhcnQnIHwgJ2VuZCc+PigpXG4pID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUucGFyZW50KGJvYXJkLCBwYXRoKSBhcyBNaW5kRWxlbWVudDtcbiAgICBjb25zdCBoYXNQcmV2aW91c05vZGUgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gIT09IDA7XG4gICAgbGV0IGJlaGluZEFic3RyYWN0czogTWluZEVsZW1lbnRbXTtcblxuICAgIGlmICghaGFzUHJldmlvdXNOb2RlKSB7XG4gICAgICAgIGJlaGluZEFic3RyYWN0cyA9IHBhcmVudC5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnByZXZpb3VzKHBhdGgpKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgYmVoaW5kQWJzdHJhY3RzID0gZ2V0QmVoaW5kQWJzdHJhY3RzKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKGJlaGluZEFic3RyYWN0cy5sZW5ndGgpIHtcbiAgICAgICAgYmVoaW5kQWJzdHJhY3RzLmZvckVhY2goYWJzdHJhY3QgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld1Byb3BlcnRpZXMgPSBlZmZlY3RlZEFic3RyYWN0cy5nZXQoYWJzdHJhY3QpO1xuICAgICAgICAgICAgaWYgKCFuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcyA9IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuICAgICAgICAgICAgICAgIGVmZmVjdGVkQWJzdHJhY3RzLnNldChhYnN0cmFjdCwgbmV3UHJvcGVydGllcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdQcm9wZXJ0aWVzLnN0YXJ0ID0gbmV3UHJvcGVydGllcy5zdGFydCArIHN0ZXA7XG4gICAgICAgICAgICBuZXdQcm9wZXJ0aWVzLmVuZCA9IG5ld1Byb3BlcnRpZXMuZW5kICsgc3RlcDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNQcmV2aW91c05vZGUpIHtcbiAgICAgICAgcmV0dXJuIGVmZmVjdGVkQWJzdHJhY3RzO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucHJldmlvdXMocGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChzZWxlY3RlZEVsZW1lbnQpO1xuICAgIGNvbnN0IGlzRHJhZ1RvTGFzdCA9ICFpc0V4dGVuZFByZXZpb3VzTm9kZSAmJiBjb3JyZXNwb25kaW5nQWJzdHJhY3QgJiYgY29ycmVzcG9uZGluZ0Fic3RyYWN0LmVuZCA9PT0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdIC0gMTtcblxuICAgIGlmIChjb3JyZXNwb25kaW5nQWJzdHJhY3QgJiYgIWlzRHJhZ1RvTGFzdCkge1xuICAgICAgICBsZXQgbmV3UHJvcGVydGllcyA9IGVmZmVjdGVkQWJzdHJhY3RzLmdldChjb3JyZXNwb25kaW5nQWJzdHJhY3QpO1xuICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgIGVmZmVjdGVkQWJzdHJhY3RzLnNldChjb3JyZXNwb25kaW5nQWJzdHJhY3QsIG5ld1Byb3BlcnRpZXMpO1xuICAgICAgICB9XG4gICAgICAgIG5ld1Byb3BlcnRpZXMuZW5kID0gbmV3UHJvcGVydGllcy5lbmQgKyBzdGVwO1xuICAgIH1cblxuICAgIHJldHVybiBlZmZlY3RlZEFic3RyYWN0cztcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVFbGVtZW50SGFuZGxlQWJzdHJhY3QgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZGVsZXRhYmxlRWxlbWVudHM6IE1pbmRFbGVtZW50W10sXG4gICAgZWZmZWN0ZWRBYnN0cmFjdHMgPSBuZXcgTWFwPE1pbmRFbGVtZW50LCBQaWNrPEFic3RyYWN0Tm9kZSwgJ3N0YXJ0JyB8ICdlbmQnPj4oKVxuKSA9PiB7XG4gICAgZGVsZXRhYmxlRWxlbWVudHMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgaWYgKCFQbGFpdE1pbmQuaXNNaW5kKG5vZGUpKSB7XG4gICAgICAgICAgICBjb25zdCBiZWhpbmRBYnN0cmFjdHMgPSBnZXRCZWhpbmRBYnN0cmFjdHMobm9kZSkuZmlsdGVyKGFic3RyYWN0ID0+ICFkZWxldGFibGVFbGVtZW50cy5pbmNsdWRlcyhhYnN0cmFjdCkpO1xuICAgICAgICAgICAgaWYgKGJlaGluZEFic3RyYWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBiZWhpbmRBYnN0cmFjdHMuZm9yRWFjaChhYnN0cmFjdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gZWZmZWN0ZWRBYnN0cmFjdHMuZ2V0KGFic3RyYWN0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzID0geyBzdGFydDogMCwgZW5kOiAwIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RlZEFic3RyYWN0cy5zZXQoYWJzdHJhY3QsIG5ld1Byb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuc3RhcnQgPSBuZXdQcm9wZXJ0aWVzLnN0YXJ0IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcy5lbmQgPSBuZXdQcm9wZXJ0aWVzLmVuZCAtIDE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChub2RlKTtcbiAgICAgICAgICAgIGlmIChjb3JyZXNwb25kaW5nQWJzdHJhY3QgJiYgIWRlbGV0YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3UHJvcGVydGllcyA9IGVmZmVjdGVkQWJzdHJhY3RzLmdldChjb3JyZXNwb25kaW5nQWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgIGlmICghbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzID0geyBzdGFydDogMCwgZW5kOiAwIH07XG5cbiAgICAgICAgICAgICAgICAgICAgZWZmZWN0ZWRBYnN0cmFjdHMuc2V0KGNvcnJlc3BvbmRpbmdBYnN0cmFjdCwgbmV3UHJvcGVydGllcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuZW5kID0gbmV3UHJvcGVydGllcy5lbmQgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGVmZmVjdGVkQWJzdHJhY3RzO1xufTtcbiJdfQ==
|