@plait/layouts 0.77.2 → 0.78.0-next.0
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/fesm2022/plait-layouts.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/algorithms/non-overlapping-tree-layout.mjs +0 -192
- package/esm2022/interfaces/layout-node.mjs +0 -134
- package/esm2022/interfaces/layout-tree-node.mjs +0 -26
- package/esm2022/interfaces/mind.mjs +0 -29
- package/esm2022/layouts/base-layout.mjs +0 -129
- package/esm2022/layouts/global-layout.mjs +0 -62
- package/esm2022/layouts/indent.mjs +0 -89
- package/esm2022/layouts/logic.mjs +0 -55
- package/esm2022/plait-layouts.mjs +0 -5
- package/esm2022/public-api.mjs +0 -9
- package/esm2022/utils/abstract.mjs +0 -69
- package/esm2022/utils/layout.mjs +0 -73
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { toHorizontal } from '../interfaces/layout-node';
|
|
2
|
-
import { LayoutTreeNode } from '../interfaces/layout-tree-node';
|
|
3
|
-
import { AbstractNode } from '../interfaces/mind';
|
|
4
|
-
import { getCorrectStartEnd } from '../utils/abstract';
|
|
5
|
-
export function setLayoutTreeResult(tree, root, isHorizontal) {
|
|
6
|
-
if (isHorizontal) {
|
|
7
|
-
root.y = tree.x;
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
root.x = tree.x;
|
|
11
|
-
}
|
|
12
|
-
tree.children.forEach((child, i) => {
|
|
13
|
-
setLayoutTreeResult(child, root.children[i], isHorizontal);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
export function separateYAxle(node, isHorizontal, d = 0) {
|
|
17
|
-
if (isHorizontal) {
|
|
18
|
-
if (AbstractNode.isAbstract(node.origin)) {
|
|
19
|
-
const { start, end } = getCorrectStartEnd(node.origin, node.parent);
|
|
20
|
-
for (let i = start; i <= end; i++) {
|
|
21
|
-
const right = node.parent?.children[i].getBoundingBox().right;
|
|
22
|
-
d = Math.max(right, d);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
node.x = d;
|
|
26
|
-
d += node.width;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
if (AbstractNode.isAbstract(node.origin)) {
|
|
30
|
-
for (let i = node.origin.start; i <= node.origin.end; i++) {
|
|
31
|
-
const bottom = node.parent?.children[i].getBoundingBox().bottom;
|
|
32
|
-
d = Math.max(bottom, d);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
node.y = d;
|
|
36
|
-
d += node.height;
|
|
37
|
-
}
|
|
38
|
-
node.children.forEach(child => {
|
|
39
|
-
separateYAxle(child, isHorizontal, d);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
export const buildLayoutTree = (root, isHorizontal) => {
|
|
43
|
-
const children = [];
|
|
44
|
-
root.children.forEach(child => {
|
|
45
|
-
children.push(buildLayoutTree(child, isHorizontal));
|
|
46
|
-
});
|
|
47
|
-
if (isHorizontal) {
|
|
48
|
-
if (root.blackNode) {
|
|
49
|
-
root.blackNode = toHorizontal(root.blackNode);
|
|
50
|
-
}
|
|
51
|
-
return new LayoutTreeNode(root.height, root.width, root.x, children, root);
|
|
52
|
-
}
|
|
53
|
-
return new LayoutTreeNode(root.width, root.height, root.y, children, root);
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXRzL3NyYy9sYXlvdXRzL2xvZ2ljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFvQixFQUFFLElBQWdCLEVBQUUsWUFBcUI7SUFDN0YsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO1NBQU0sQ0FBQztRQUNKLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDL0IsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFnQixFQUFFLFlBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDeEUsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNmLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU8sQ0FBQyxDQUFDO1lBRXJFLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBTSxFQUFFLENBQUMsSUFBSSxHQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUM5RCxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVYLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7U0FBTSxDQUFDO1FBQ0osSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFNLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFDaEUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDMUIsYUFBYSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBZ0IsRUFBRSxZQUFxQixFQUFFLEVBQUU7SUFDdkUsTUFBTSxRQUFRLEdBQXFCLEVBQUUsQ0FBQztJQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksWUFBWSxFQUFFLENBQUM7UUFDZixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXROb2RlLCB0b0hvcml6b250YWwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xheW91dC1ub2RlJztcbmltcG9ydCB7IExheW91dFRyZWVOb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sYXlvdXQtdHJlZS1ub2RlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbWluZCc7XG5pbXBvcnQgeyBnZXRDb3JyZWN0U3RhcnRFbmQgfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRMYXlvdXRUcmVlUmVzdWx0KHRyZWU6IExheW91dFRyZWVOb2RlLCByb290OiBMYXlvdXROb2RlLCBpc0hvcml6b250YWw6IEJvb2xlYW4pIHtcbiAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgIHJvb3QueSA9IHRyZWUueDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByb290LnggPSB0cmVlLng7XG4gICAgfVxuICAgIHRyZWUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgc2V0TGF5b3V0VHJlZVJlc3VsdChjaGlsZCwgcm9vdC5jaGlsZHJlbltpXSwgaXNIb3Jpem9udGFsKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlWUF4bGUobm9kZTogTGF5b3V0Tm9kZSwgaXNIb3Jpem9udGFsOiBib29sZWFuLCBkID0gMCkge1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KG5vZGUub3JpZ2luKSkge1xuICAgICAgICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBnZXRDb3JyZWN0U3RhcnRFbmQobm9kZS5vcmlnaW4sIG5vZGUucGFyZW50ISk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGFydCE7IGkgPD0gZW5kITsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBub2RlLnBhcmVudD8uY2hpbGRyZW5baV0uZ2V0Qm91bmRpbmdCb3goKS5yaWdodDtcbiAgICAgICAgICAgICAgICBkID0gTWF0aC5tYXgocmlnaHQhLCBkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBub2RlLnggPSBkO1xuXG4gICAgICAgIGQgKz0gbm9kZS53aWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3Qobm9kZS5vcmlnaW4pKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbm9kZS5vcmlnaW4uc3RhcnQhOyBpIDw9IG5vZGUub3JpZ2luLmVuZCE7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG5vZGUucGFyZW50Py5jaGlsZHJlbltpXS5nZXRCb3VuZGluZ0JveCgpLmJvdHRvbTtcbiAgICAgICAgICAgICAgICBkID0gTWF0aC5tYXgoYm90dG9tISwgZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS55ID0gZDtcbiAgICAgICAgZCArPSBub2RlLmhlaWdodDtcbiAgICB9XG4gICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgc2VwYXJhdGVZQXhsZShjaGlsZCwgaXNIb3Jpem9udGFsLCBkKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkTGF5b3V0VHJlZSA9IChyb290OiBMYXlvdXROb2RlLCBpc0hvcml6b250YWw6IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBjaGlsZHJlbjogTGF5b3V0VHJlZU5vZGVbXSA9IFtdO1xuICAgIHJvb3QuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goYnVpbGRMYXlvdXRUcmVlKGNoaWxkLCBpc0hvcml6b250YWwpKTtcbiAgICB9KTtcbiAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgIGlmIChyb290LmJsYWNrTm9kZSkge1xuICAgICAgICAgICAgcm9vdC5ibGFja05vZGUgPSB0b0hvcml6b250YWwocm9vdC5ibGFja05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTGF5b3V0VHJlZU5vZGUocm9vdC5oZWlnaHQsIHJvb3Qud2lkdGgsIHJvb3QueCwgY2hpbGRyZW4sIHJvb3QpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IExheW91dFRyZWVOb2RlKHJvb3Qud2lkdGgsIHJvb3QuaGVpZ2h0LCByb290LnksIGNoaWxkcmVuLCByb290KTtcbn07XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaXQtbGF5b3V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2xheW91dHMvc3JjL3BsYWl0LWxheW91dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of layouts
|
|
3
|
-
*/
|
|
4
|
-
export * from './layouts/global-layout';
|
|
5
|
-
export * from './utils/layout';
|
|
6
|
-
export * from './utils/abstract';
|
|
7
|
-
export * from './interfaces/layout-node';
|
|
8
|
-
export * from './interfaces/mind';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2xheW91dHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxheW91dHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xheW91dHMvZ2xvYmFsLWxheW91dCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2xheW91dCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2Fic3RyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9sYXlvdXQtbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvbWluZCc7XG4iXX0=
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { LayoutNode } from '../interfaces/layout-node';
|
|
2
|
-
import { LayoutTreeNode } from '../interfaces/layout-tree-node';
|
|
3
|
-
import { AbstractNode } from '../interfaces/mind';
|
|
4
|
-
import { isStandardLayout } from './layout';
|
|
5
|
-
export const getNonAbstractChildren = (parentNode) => {
|
|
6
|
-
if (parentNode.children) {
|
|
7
|
-
return parentNode.children?.filter(child => {
|
|
8
|
-
if (child instanceof LayoutNode) {
|
|
9
|
-
return !AbstractNode.isAbstract(child.origin);
|
|
10
|
-
}
|
|
11
|
-
if (child instanceof LayoutTreeNode) {
|
|
12
|
-
return !AbstractNode.isAbstract(child.origin.origin);
|
|
13
|
-
}
|
|
14
|
-
return !AbstractNode.isAbstract(child);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
return [];
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
export const findAbstractByEndNode = (parentNode, endNode) => {
|
|
22
|
-
const index = parentNode.children.indexOf(endNode);
|
|
23
|
-
return parentNode.children.find(child => {
|
|
24
|
-
if (child instanceof LayoutNode) {
|
|
25
|
-
return AbstractNode.isAbstract(child.origin) && child.origin.end === index;
|
|
26
|
-
}
|
|
27
|
-
if (child instanceof LayoutTreeNode && parentNode instanceof LayoutTreeNode) {
|
|
28
|
-
if (AbstractNode.isAbstract(child.origin.origin)) {
|
|
29
|
-
const { end } = getCorrectStartEnd(child.origin.origin, parentNode.origin);
|
|
30
|
-
return end === index;
|
|
31
|
-
}
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
return AbstractNode.isAbstract(child) && child.end === index;
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
export const findAbstractByStartNode = (parentNode, startNode) => {
|
|
38
|
-
const index = parentNode.children.indexOf(startNode);
|
|
39
|
-
return parentNode.children.find(child => {
|
|
40
|
-
if (child instanceof LayoutNode) {
|
|
41
|
-
return AbstractNode.isAbstract(child.origin) && child.origin.start === index;
|
|
42
|
-
}
|
|
43
|
-
if (child instanceof LayoutTreeNode && parentNode instanceof LayoutTreeNode) {
|
|
44
|
-
if (AbstractNode.isAbstract(child.origin.origin)) {
|
|
45
|
-
const { start } = getCorrectStartEnd(child.origin.origin, parentNode.origin);
|
|
46
|
-
return start === index;
|
|
47
|
-
}
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
return AbstractNode.isAbstract(child) && child.start === index;
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* handle standard layout effect
|
|
55
|
-
* the abstract correct start and end should sub rightNodeCount when it is set on left area
|
|
56
|
-
*/
|
|
57
|
-
export const getCorrectStartEnd = (abstract, parent) => {
|
|
58
|
-
let start = abstract.start;
|
|
59
|
-
let end = abstract.end;
|
|
60
|
-
if (isStandardLayout(parent.layout)) {
|
|
61
|
-
const rightNodeCount = parent.origin.rightNodeCount;
|
|
62
|
-
if (start >= rightNodeCount) {
|
|
63
|
-
end -= rightNodeCount;
|
|
64
|
-
start -= rightNodeCount;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return { start, end };
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXRzL3NyYy91dGlscy9hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBNkQsVUFBYSxFQUFFLEVBQUU7SUFDaEgsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBTyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QyxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLEtBQUssWUFBWSxjQUFjLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBQ0QsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQTRELFVBQWEsRUFBRSxPQUFVLEVBQUUsRUFBRTtJQUMxSCxNQUFNLEtBQUssR0FB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Q0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXlvdXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sYXlvdXQtbm9kZSc7XG5pbXBvcnQgeyBMYXlvdXRUcmVlTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGF5b3V0LXRyZWUtbm9kZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL21pbmQnO1xuaW1wb3J0IHsgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcblxuZXhwb3J0IGNvbnN0IGdldE5vbkFic3RyYWN0Q2hpbGRyZW4gPSA8VCBleHRlbmRzIHsgY2hpbGRyZW4/OiBUW10gfSA9IExheW91dE5vZGUgfCBMYXlvdXRUcmVlTm9kZT4ocGFyZW50Tm9kZTogVCkgPT4ge1xuICAgIGlmIChwYXJlbnROb2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnROb2RlLmNoaWxkcmVuPy5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgTGF5b3V0Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQub3JpZ2luKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIExheW91dFRyZWVOb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZC5vcmlnaW4ub3JpZ2luKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRBYnN0cmFjdEJ5RW5kTm9kZSA9IDxUIGV4dGVuZHMgeyBjaGlsZHJlbjogVFtdIH0gPSBMYXlvdXROb2RlIHwgTGF5b3V0VHJlZU5vZGU+KHBhcmVudE5vZGU6IFQsIGVuZE5vZGU6IFQpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHBhcmVudE5vZGUuY2hpbGRyZW4uaW5kZXhPZihlbmROb2RlKTtcbiAgICByZXR1cm4gcGFyZW50Tm9kZS5jaGlsZHJlbi5maW5kKGNoaWxkID0+IHtcbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgTGF5b3V0Tm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkLm9yaWdpbikgJiYgY2hpbGQub3JpZ2luLmVuZCA9PT0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgTGF5b3V0VHJlZU5vZGUgJiYgcGFyZW50Tm9kZSBpbnN0YW5jZW9mIExheW91dFRyZWVOb2RlKSB7XG4gICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQub3JpZ2luLm9yaWdpbikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGVuZCB9ID0gZ2V0Q29ycmVjdFN0YXJ0RW5kKGNoaWxkLm9yaWdpbi5vcmlnaW4sIHBhcmVudE5vZGUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5kID09PSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA9PT0gaW5kZXg7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZEFic3RyYWN0QnlTdGFydE5vZGUgPSA8VCBleHRlbmRzIHsgY2hpbGRyZW46IFRbXSB9ID0gTGF5b3V0Tm9kZSB8IExheW91dFRyZWVOb2RlPihwYXJlbnROb2RlOiBULCBzdGFydE5vZGU6IFQpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHBhcmVudE5vZGUuY2hpbGRyZW4uaW5kZXhPZihzdGFydE5vZGUpO1xuICAgIHJldHVybiBwYXJlbnROb2RlLmNoaWxkcmVuLmZpbmQoY2hpbGQgPT4ge1xuICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBMYXlvdXROb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQub3JpZ2luKSAmJiBjaGlsZC5vcmlnaW4uc3RhcnQgPT09IGluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIExheW91dFRyZWVOb2RlICYmIHBhcmVudE5vZGUgaW5zdGFuY2VvZiBMYXlvdXRUcmVlTm9kZSkge1xuICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkLm9yaWdpbi5vcmlnaW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydCB9ID0gZ2V0Q29ycmVjdFN0YXJ0RW5kKGNoaWxkLm9yaWdpbi5vcmlnaW4sIHBhcmVudE5vZGUub3JpZ2luKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgPT09IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuc3RhcnQgPT09IGluZGV4O1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBoYW5kbGUgc3RhbmRhcmQgbGF5b3V0IGVmZmVjdFxuICogdGhlIGFic3RyYWN0IGNvcnJlY3Qgc3RhcnQgYW5kIGVuZCBzaG91bGQgc3ViIHJpZ2h0Tm9kZUNvdW50IHdoZW4gaXQgaXMgc2V0IG9uIGxlZnQgYXJlYVxuICovXG5leHBvcnQgY29uc3QgZ2V0Q29ycmVjdFN0YXJ0RW5kID0gKGFic3RyYWN0OiBBYnN0cmFjdE5vZGUsIHBhcmVudDogTGF5b3V0Tm9kZSkgPT4ge1xuICAgIGxldCBzdGFydCA9IGFic3RyYWN0LnN0YXJ0O1xuICAgIGxldCBlbmQgPSBhYnN0cmFjdC5lbmQ7XG4gICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50LmxheW91dCkpIHtcbiAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICBpZiAoc3RhcnQgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgIGVuZCAtPSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgIHN0YXJ0IC09IHJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTtcbn07XG4iXX0=
|
package/esm2022/utils/layout.mjs
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { AbstractNode, LayoutType, MindLayoutType } from '../interfaces/mind';
|
|
2
|
-
export function findLayoutType(node) {
|
|
3
|
-
if (node.origin.layout) {
|
|
4
|
-
return node.origin.layout;
|
|
5
|
-
}
|
|
6
|
-
if (AbstractNode.isAbstract(node.origin)) {
|
|
7
|
-
return getAbstractLayout(findLayoutType(node.parent));
|
|
8
|
-
}
|
|
9
|
-
if (node.parent) {
|
|
10
|
-
return findLayoutType(node.parent);
|
|
11
|
-
}
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
export const isIndentedLayout = (layout) => {
|
|
15
|
-
return (layout === MindLayoutType.rightBottomIndented ||
|
|
16
|
-
layout === MindLayoutType.rightTopIndented ||
|
|
17
|
-
layout === MindLayoutType.leftBottomIndented ||
|
|
18
|
-
layout === MindLayoutType.leftTopIndented);
|
|
19
|
-
};
|
|
20
|
-
export const isLogicLayout = (layout) => {
|
|
21
|
-
return (layout === MindLayoutType.right ||
|
|
22
|
-
layout === MindLayoutType.left ||
|
|
23
|
-
layout === MindLayoutType.downward ||
|
|
24
|
-
layout === MindLayoutType.upward);
|
|
25
|
-
};
|
|
26
|
-
export const isStandardLayout = (layout) => {
|
|
27
|
-
return layout === MindLayoutType.standard;
|
|
28
|
-
};
|
|
29
|
-
export const isHorizontalLayout = (layout) => {
|
|
30
|
-
return (layout === MindLayoutType.right || layout === MindLayoutType.left || layout === MindLayoutType.standard || isIndentedLayout(layout));
|
|
31
|
-
};
|
|
32
|
-
export const isHorizontalLogicLayout = (layout) => {
|
|
33
|
-
return layout === MindLayoutType.right || layout === MindLayoutType.left || layout === MindLayoutType.standard;
|
|
34
|
-
};
|
|
35
|
-
export const isVerticalLogicLayout = (layout) => {
|
|
36
|
-
return layout === MindLayoutType.upward || layout === MindLayoutType.downward;
|
|
37
|
-
};
|
|
38
|
-
export const isTopLayout = (layout) => {
|
|
39
|
-
return layout === MindLayoutType.leftTopIndented || layout === MindLayoutType.rightTopIndented || layout === MindLayoutType.upward;
|
|
40
|
-
};
|
|
41
|
-
export const isBottomLayout = (layout) => {
|
|
42
|
-
return (layout === MindLayoutType.leftBottomIndented || layout === MindLayoutType.rightBottomIndented || layout === MindLayoutType.downward);
|
|
43
|
-
};
|
|
44
|
-
export const isLeftLayout = (layout) => {
|
|
45
|
-
return layout === MindLayoutType.left || layout === MindLayoutType.leftTopIndented || layout === MindLayoutType.leftBottomIndented;
|
|
46
|
-
};
|
|
47
|
-
export const isRightLayout = (layout) => {
|
|
48
|
-
return layout === MindLayoutType.right || layout === MindLayoutType.rightTopIndented || layout === MindLayoutType.rightBottomIndented;
|
|
49
|
-
};
|
|
50
|
-
export const extractLayoutType = (mindLayoutType) => {
|
|
51
|
-
if (isIndentedLayout(mindLayoutType)) {
|
|
52
|
-
return LayoutType.indented;
|
|
53
|
-
}
|
|
54
|
-
if (isStandardLayout(mindLayoutType)) {
|
|
55
|
-
return LayoutType.logic;
|
|
56
|
-
}
|
|
57
|
-
if (isLogicLayout(mindLayoutType)) {
|
|
58
|
-
return LayoutType.logic;
|
|
59
|
-
}
|
|
60
|
-
return LayoutType.logic;
|
|
61
|
-
};
|
|
62
|
-
export const getAbstractLayout = (parentLayout) => {
|
|
63
|
-
if (isIndentedLayout(parentLayout)) {
|
|
64
|
-
if (isRightLayout(parentLayout)) {
|
|
65
|
-
return MindLayoutType.right;
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
return MindLayoutType.left;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return parentLayout;
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0cy9zcmMvdXRpbHMvbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlFLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBZ0I7SUFDM0MsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUF3QixDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkMsT0FBTyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFzQixFQUFFLEVBQUU7SUFDdkQsT0FBTyxDQUNILE1BQU0sS0FBSyxjQUFjLENBQUMsbUJBQW1CO1FBQzdDLE1BQU0sS0FBSyxjQUFjLENBQUMsZ0JBQWdCO1FBQzFDLE1BQU0sS0FBSyxjQUFjLENBQUMsa0JBQWtCO1FBQzVDLE1BQU0sS0FBSyxjQUFjLENBQUMsZUFBZSxDQUM1QyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBc0IsRUFBRSxFQUFFO0lBQ3BELE9BQU8sQ0FDSCxNQUFNLEtBQUssY0FBYyxDQUFDLEtBQUs7UUFDL0Is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QUFNLGlCQUFpQixHQUFHLENBQUMsWUFBNEIsRUFBRSxFQUFFO0lBQzlELElBQUksZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExheW91dE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xheW91dC1ub2RlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgTGF5b3V0VHlwZSwgTWluZExheW91dFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL21pbmQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZExheW91dFR5cGUobm9kZTogTGF5b3V0Tm9kZSk6IE1pbmRMYXlvdXRUeXBlIHwgbnVsbCB7XG4gICAgaWYgKG5vZGUub3JpZ2luLmxheW91dCkge1xuICAgICAgICByZXR1cm4gbm9kZS5vcmlnaW4ubGF5b3V0IGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgIH1cblxuICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChub2RlLm9yaWdpbikpIHtcbiAgICAgICAgcmV0dXJuIGdldEFic3RyYWN0TGF5b3V0KGZpbmRMYXlvdXRUeXBlKG5vZGUucGFyZW50ISkhKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5wYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZpbmRMYXlvdXRUeXBlKG5vZGUucGFyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IGlzSW5kZW50ZWRMYXlvdXQgPSAobGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIGxheW91dCA9PT0gTWluZExheW91dFR5cGUucmlnaHRCb3R0b21JbmRlbnRlZCB8fFxuICAgICAgICBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnJpZ2h0VG9wSW5kZW50ZWQgfHxcbiAgICAgICAgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5sZWZ0Qm90dG9tSW5kZW50ZWQgfHxcbiAgICAgICAgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5sZWZ0VG9wSW5kZW50ZWRcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTG9naWNMYXlvdXQgPSAobGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIGxheW91dCA9PT0gTWluZExheW91dFR5cGUucmlnaHQgfHxcbiAgICAgICAgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5sZWZ0IHx8XG4gICAgICAgIGxheW91dCA9PT0gTWluZExheW91dFR5cGUuZG93bndhcmQgfHxcbiAgICAgICAgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS51cHdhcmRcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU3RhbmRhcmRMYXlvdXQgPSAobGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIHJldHVybiBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSG9yaXpvbnRhbExheW91dCA9IChsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5yaWdodCB8fCBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLmxlZnQgfHwgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5zdGFuZGFyZCB8fCBpc0luZGVudGVkTGF5b3V0KGxheW91dClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0ID0gKGxheW91dDogTWluZExheW91dFR5cGUpID0+IHtcbiAgICByZXR1cm4gbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5yaWdodCB8fCBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLmxlZnQgfHwgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5zdGFuZGFyZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZlcnRpY2FsTG9naWNMYXlvdXQgPSAobGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIHJldHVybiBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnVwd2FyZCB8fCBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLmRvd253YXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVG9wTGF5b3V0ID0gKGxheW91dDogTWluZExheW91dFR5cGUpID0+IHtcbiAgICByZXR1cm4gbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5sZWZ0VG9wSW5kZW50ZWQgfHwgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5yaWdodFRvcEluZGVudGVkIHx8IGxheW91dCA9PT0gTWluZExheW91dFR5cGUudXB3YXJkO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQm90dG9tTGF5b3V0ID0gKGxheW91dDogTWluZExheW91dFR5cGUpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLmxlZnRCb3R0b21JbmRlbnRlZCB8fCBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnJpZ2h0Qm90dG9tSW5kZW50ZWQgfHwgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5kb3dud2FyZFxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNMZWZ0TGF5b3V0ID0gKGxheW91dDogTWluZExheW91dFR5cGUpID0+IHtcbiAgICByZXR1cm4gbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5sZWZ0IHx8IGxheW91dCA9PT0gTWluZExheW91dFR5cGUubGVmdFRvcEluZGVudGVkIHx8IGxheW91dCA9PT0gTWluZExheW91dFR5cGUubGVmdEJvdHRvbUluZGVudGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUmlnaHRMYXlvdXQgPSAobGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIHJldHVybiBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnJpZ2h0IHx8IGxheW91dCA9PT0gTWluZExheW91dFR5cGUucmlnaHRUb3BJbmRlbnRlZCB8fCBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnJpZ2h0Qm90dG9tSW5kZW50ZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdExheW91dFR5cGUgPSAobWluZExheW91dFR5cGU6IE1pbmRMYXlvdXRUeXBlKTogTGF5b3V0VHlwZSA9PiB7XG4gICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobWluZExheW91dFR5cGUpKSB7XG4gICAgICAgIHJldHVybiBMYXlvdXRUeXBlLmluZGVudGVkO1xuICAgIH1cbiAgICBpZiAoaXNTdGFuZGFyZExheW91dChtaW5kTGF5b3V0VHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIExheW91dFR5cGUubG9naWM7XG4gICAgfVxuICAgIGlmIChpc0xvZ2ljTGF5b3V0KG1pbmRMYXlvdXRUeXBlKSkge1xuICAgICAgICByZXR1cm4gTGF5b3V0VHlwZS5sb2dpYztcbiAgICB9XG4gICAgcmV0dXJuIExheW91dFR5cGUubG9naWM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWJzdHJhY3RMYXlvdXQgPSAocGFyZW50TGF5b3V0OiBNaW5kTGF5b3V0VHlwZSkgPT4ge1xuICAgIGlmIChpc0luZGVudGVkTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgaWYgKGlzUmlnaHRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIE1pbmRMYXlvdXRUeXBlLnJpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1pbmRMYXlvdXRUeXBlLmxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudExheW91dDtcbn07XG4iXX0=
|