@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.
@@ -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==
@@ -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=
@@ -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=