@plait/mind 0.2.0-next.7 → 0.2.0-next.9

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.
Files changed (98) hide show
  1. package/constants/abstract-node.d.ts +4 -0
  2. package/constants/default.d.ts +1 -2
  3. package/constants/index.d.ts +4 -1
  4. package/constants/node-rule.d.ts +1 -0
  5. package/constants/node-style.d.ts +17 -0
  6. package/constants/node-topic-style.d.ts +4 -0
  7. package/draw/richtext.d.ts +4 -3
  8. package/esm2020/constants/abstract-node.mjs +5 -0
  9. package/esm2020/constants/default.mjs +2 -3
  10. package/esm2020/constants/index.mjs +5 -2
  11. package/esm2020/constants/node-rule.mjs +2 -0
  12. package/esm2020/constants/node-style.mjs +19 -0
  13. package/esm2020/constants/node-topic-style.mjs +5 -0
  14. package/esm2020/draw/abstract.mjs +4 -3
  15. package/esm2020/draw/indented-link.mjs +14 -14
  16. package/esm2020/draw/link/abstract-link.mjs +6 -4
  17. package/esm2020/draw/link/logic-link.mjs +7 -7
  18. package/esm2020/draw/link.mjs +6 -5
  19. package/esm2020/draw/richtext.mjs +7 -7
  20. package/esm2020/draw/shape.mjs +4 -4
  21. package/esm2020/drawer/quick-insert.drawer.mjs +11 -12
  22. package/esm2020/interfaces/abstract.mjs +1 -1
  23. package/esm2020/interfaces/element.mjs +6 -1
  24. package/esm2020/interfaces/node.mjs +1 -1
  25. package/esm2020/interfaces/options.mjs +2 -0
  26. package/esm2020/layout-option.mjs +5 -5
  27. package/esm2020/mind.component.mjs +2 -2
  28. package/esm2020/node.component.mjs +15 -13
  29. package/esm2020/plugins/emoji/emoji.drawer.mjs +3 -4
  30. package/esm2020/plugins/emoji/emoji.mjs +7 -3
  31. package/esm2020/plugins/emoji/index.mjs +1 -2
  32. package/esm2020/plugins/with-abstract.mjs +2 -2
  33. package/esm2020/plugins/with-dnd.mjs +12 -117
  34. package/esm2020/plugins/with-extend-mind.mjs +11 -0
  35. package/esm2020/plugins/with-mind.mjs +9 -7
  36. package/esm2020/public-api.mjs +2 -1
  37. package/esm2020/queries/get-available-sublayouts-by-element.mjs +4 -9
  38. package/esm2020/queries/get-branch-layouts.mjs +4 -4
  39. package/esm2020/queries/get-correct-layout-by-element.mjs +28 -31
  40. package/esm2020/queries/get-layout-by-element.mjs +10 -8
  41. package/esm2020/queries/index.mjs +1 -3
  42. package/esm2020/transforms/abstract-node.mjs +68 -0
  43. package/esm2020/transforms/index.mjs +6 -2
  44. package/esm2020/transforms/layout.mjs +3 -3
  45. package/esm2020/transforms/node.mjs +2 -2
  46. package/esm2020/utils/abstract/common.mjs +90 -70
  47. package/esm2020/utils/abstract/resize.mjs +3 -3
  48. package/esm2020/utils/clipboard.mjs +54 -14
  49. package/esm2020/utils/direction-corrector.mjs +11 -11
  50. package/esm2020/utils/dnd.mjs +118 -0
  51. package/esm2020/utils/draw-placeholder.mjs +5 -5
  52. package/esm2020/utils/drop-target-corrector.mjs +11 -10
  53. package/esm2020/utils/layout.mjs +1 -1
  54. package/esm2020/utils/mind.mjs +23 -58
  55. package/esm2020/utils/node-space.mjs +5 -5
  56. package/esm2020/utils/node-style/branch.mjs +33 -6
  57. package/esm2020/utils/node-style/node.mjs +6 -5
  58. package/esm2020/utils/path.mjs +4 -3
  59. package/esm2020/utils/shape.mjs +3 -3
  60. package/fesm2015/plait-mind.mjs +724 -602
  61. package/fesm2015/plait-mind.mjs.map +1 -1
  62. package/fesm2020/plait-mind.mjs +726 -600
  63. package/fesm2020/plait-mind.mjs.map +1 -1
  64. package/interfaces/abstract.d.ts +3 -0
  65. package/interfaces/element.d.ts +5 -2
  66. package/interfaces/options.d.ts +4 -0
  67. package/layout-option.d.ts +2 -1
  68. package/mind.component.d.ts +2 -2
  69. package/node.component.d.ts +5 -4
  70. package/package.json +1 -1
  71. package/plugins/emoji/emoji.d.ts +2 -1
  72. package/plugins/emoji/emoji.drawer.d.ts +3 -3
  73. package/plugins/emoji/index.d.ts +0 -1
  74. package/plugins/with-dnd.d.ts +0 -9
  75. package/plugins/with-extend-mind.d.ts +10 -0
  76. package/plugins/with-mind.d.ts +1 -1
  77. package/public-api.d.ts +1 -0
  78. package/queries/get-available-sublayouts-by-element.d.ts +2 -6
  79. package/queries/get-branch-layouts.d.ts +2 -1
  80. package/queries/get-correct-layout-by-element.d.ts +2 -1
  81. package/queries/index.d.ts +3 -4
  82. package/styles/styles.scss +0 -3
  83. package/transforms/abstract-node.d.ts +6 -0
  84. package/transforms/index.d.ts +3 -0
  85. package/utils/abstract/common.d.ts +6 -8
  86. package/utils/direction-corrector.d.ts +2 -1
  87. package/utils/dnd.d.ts +16 -0
  88. package/utils/drop-target-corrector.d.ts +2 -1
  89. package/utils/mind.d.ts +3 -3
  90. package/utils/node-space.d.ts +3 -2
  91. package/utils/node-style/branch.d.ts +3 -0
  92. package/utils/shape.d.ts +2 -3
  93. package/constants/node.d.ts +0 -17
  94. package/esm2020/constants/node.mjs +0 -19
  95. package/esm2020/plugins/emoji/with-mind-emoji.mjs +0 -8
  96. package/esm2020/queries/get-layout-parent-by-element.mjs +0 -17
  97. package/plugins/emoji/with-mind-emoji.d.ts +0 -8
  98. package/queries/get-layout-parent-by-element.d.ts +0 -8
@@ -1,41 +1,41 @@
1
- import { PlaitElement } from '@plait/core';
2
- import { MindElement } from '../interfaces';
3
- import { correctLayoutByDirection, findUpElement, getDefaultLayout, getInCorrectLayoutDirection } from '../utils';
4
- import { AbstractNode, MindLayoutType, getAbstractLayout, isIndentedLayout, isChildOfAbstract } from '@plait/layouts';
1
+ import { MindElement, PlaitMind } from '../interfaces';
2
+ import { correctLayoutByDirection, getInCorrectLayoutDirection, getRootLayout } from '../utils';
3
+ import { AbstractNode, MindLayoutType, getAbstractLayout } from '@plait/layouts';
5
4
  /**
6
5
  * get correctly layout:
7
6
  * 1. root is standard -> left or right
8
7
  * 2. correct layout by incorrect layout direction
9
8
  * @param element
10
9
  */
11
- export const getCorrectLayoutByElement = (element) => {
12
- const { root } = findUpElement(element);
13
- const rootLayout = root.layout || getDefaultLayout();
14
- let correctRootLayout = rootLayout;
15
- if (element.isRoot) {
16
- return correctRootLayout;
17
- }
18
- const component = PlaitElement.getComponent(element);
19
- let layout = element.layout;
20
- let parentComponent = null;
21
- let parent = component.parent.origin;
22
- while (!layout && parent) {
23
- parentComponent = PlaitElement.getComponent(parent);
24
- layout = parentComponent.node.origin.layout;
25
- parent = parentComponent.parent?.origin;
26
- }
27
- if ((AbstractNode.isAbstract(element) || isChildOfAbstract(MindElement.getNode(element))) &&
28
- isIndentedLayout(layout)) {
29
- return getAbstractLayout(layout);
10
+ export const getCorrectLayoutByElement = (board, element) => {
11
+ const ancestors = MindElement.getAncestors(board, element);
12
+ ancestors.unshift(element);
13
+ const root = ancestors[ancestors.length - 1];
14
+ let rootLayout = getRootLayout(root);
15
+ if (PlaitMind.isMind(element)) {
16
+ return rootLayout;
30
17
  }
31
- // handle root standard
18
+ const node = MindElement.getNode(element);
19
+ let correctRootLayout = rootLayout;
32
20
  if (rootLayout === MindLayoutType.standard) {
33
- correctRootLayout = component?.node.left ? MindLayoutType.left : MindLayoutType.right;
21
+ correctRootLayout = node.left ? MindLayoutType.left : MindLayoutType.right;
34
22
  }
35
- if (parentComponent && parentComponent.node.origin.isRoot) {
23
+ let layout = null;
24
+ const elementWithLayout = ancestors.find(value => value.layout || AbstractNode.isAbstract(value));
25
+ if (elementWithLayout) {
26
+ if (AbstractNode.isAbstract(elementWithLayout)) {
27
+ const parent = MindElement.getParent(elementWithLayout);
28
+ const parentLayout = getCorrectLayoutByElement(board, parent);
29
+ layout = getAbstractLayout(parentLayout);
30
+ }
31
+ else {
32
+ layout = elementWithLayout?.layout;
33
+ }
34
+ }
35
+ if (layout === MindLayoutType.standard || !layout) {
36
36
  return correctRootLayout;
37
37
  }
38
- if (layout) {
38
+ else {
39
39
  const incorrectDirection = getInCorrectLayoutDirection(correctRootLayout, layout);
40
40
  if (incorrectDirection) {
41
41
  return correctLayoutByDirection(layout, incorrectDirection);
@@ -44,8 +44,5 @@ export const getCorrectLayoutByElement = (element) => {
44
44
  return layout;
45
45
  }
46
46
  }
47
- else {
48
- return correctRootLayout;
49
- }
50
47
  };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNvcnJlY3QtbGF5b3V0LWJ5LWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9xdWVyaWVzL2dldC1jb3JyZWN0LWxheW91dC1ieS1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFjLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEk7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtJQUM5RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUNyRCxJQUFJLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztJQUVuQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDaEIsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtJQUVELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFzQixDQUFDO0lBQzFFLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFFNUIsSUFBSSxlQUFlLEdBQTZCLElBQUksQ0FBQztJQUNyRCxJQUFJLE1BQU0sR0FBNEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFOUQsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUU7UUFDdEIsZUFBZSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFzQixDQUFDO1FBQ3pFLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0tBQzNDO0lBQ0QsSUFDSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQTJCLENBQUMsQ0FBQztRQUNoSCxnQkFBZ0IsQ0FBQyxNQUFPLENBQUMsRUFDM0I7UUFDRSxPQUFPLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsdUJBQXVCO0lBQ3ZCLElBQUksVUFBVSxLQUFLLGNBQWMsQ0FBQyxRQUFRLEVBQUU7UUFDeEMsaUJBQWlCLEdBQUcsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7S0FDekY7SUFFRCxJQUFJLGVBQWUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDdkQsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtJQUVELElBQUksTUFBTSxFQUFFO1FBQ1IsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRixJQUFJLGtCQUFrQixFQUFFO1lBQ3BCLE9BQU8sd0JBQXdCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0tBQ0o7U0FBTTtRQUNILE9BQU8saUJBQWlCLENBQUM7S0FDNUI7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb3JyZWN0TGF5b3V0QnlEaXJlY3Rpb24sIGZpbmRVcEVsZW1lbnQsIGdldERlZmF1bHRMYXlvdXQsIGdldEluQ29ycmVjdExheW91dERpcmVjdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgTWluZExheW91dFR5cGUsIGdldEFic3RyYWN0TGF5b3V0LCBpc0luZGVudGVkTGF5b3V0LCBMYXlvdXROb2RlLCBpc0NoaWxkT2ZBYnN0cmFjdCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcblxuLyoqXG4gKiBnZXQgY29ycmVjdGx5IGxheW91dO+8mlxuICogMS4gcm9vdCBpcyBzdGFuZGFyZCAtPiBsZWZ0IG9yIHJpZ2h0XG4gKiAyLiBjb3JyZWN0IGxheW91dCBieSBpbmNvcnJlY3QgbGF5b3V0IGRpcmVjdGlvblxuICogQHBhcmFtIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB7IHJvb3QgfSA9IGZpbmRVcEVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgcm9vdExheW91dCA9IHJvb3QubGF5b3V0IHx8IGdldERlZmF1bHRMYXlvdXQoKTtcbiAgICBsZXQgY29ycmVjdFJvb3RMYXlvdXQgPSByb290TGF5b3V0O1xuXG4gICAgaWYgKGVsZW1lbnQuaXNSb290KSB7XG4gICAgICAgIHJldHVybiBjb3JyZWN0Um9vdExheW91dDtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGxldCBsYXlvdXQgPSBlbGVtZW50LmxheW91dDtcblxuICAgIGxldCBwYXJlbnRDb21wb25lbnQ6IE1pbmROb2RlQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHBhcmVudDogTWluZEVsZW1lbnQgfCB1bmRlZmluZWQgPSBjb21wb25lbnQucGFyZW50Lm9yaWdpbjtcblxuICAgIHdoaWxlICghbGF5b3V0ICYmIHBhcmVudCkge1xuICAgICAgICBwYXJlbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHBhcmVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGxheW91dCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5sYXlvdXQ7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudENvbXBvbmVudC5wYXJlbnQ/Lm9yaWdpbjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgICAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgfHwgaXNDaGlsZE9mQWJzdHJhY3QoKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCkgYXMgdW5rbm93bikgYXMgTGF5b3V0Tm9kZSkpICYmXG4gICAgICAgIGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0ISlcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGdldEFic3RyYWN0TGF5b3V0KGxheW91dCEpO1xuICAgIH1cblxuICAgIC8vIGhhbmRsZSByb290IHN0YW5kYXJkXG4gICAgaWYgKHJvb3RMYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkKSB7XG4gICAgICAgIGNvcnJlY3RSb290TGF5b3V0ID0gY29tcG9uZW50Py5ub2RlLmxlZnQgPyBNaW5kTGF5b3V0VHlwZS5sZWZ0IDogTWluZExheW91dFR5cGUucmlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudENvbXBvbmVudCAmJiBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgIHJldHVybiBjb3JyZWN0Um9vdExheW91dDtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0KSB7XG4gICAgICAgIGNvbnN0IGluY29ycmVjdERpcmVjdGlvbiA9IGdldEluQ29ycmVjdExheW91dERpcmVjdGlvbihjb3JyZWN0Um9vdExheW91dCwgbGF5b3V0KTtcbiAgICAgICAgaWYgKGluY29ycmVjdERpcmVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGNvcnJlY3RMYXlvdXRCeURpcmVjdGlvbihsYXlvdXQsIGluY29ycmVjdERpcmVjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbGF5b3V0O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvcnJlY3RSb290TGF5b3V0O1xuICAgIH1cbn07XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNvcnJlY3QtbGF5b3V0LWJ5LWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9xdWVyaWVzL2dldC1jb3JyZWN0LWxheW91dC1ieS1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDakYsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFrQixDQUFDO0lBQzVFLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsSUFBSSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJDLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixPQUFPLFVBQVUsQ0FBQztLQUNyQjtJQUVELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsSUFBSSxpQkFBaUIsR0FBRyxVQUFVLENBQUM7SUFDbkMsSUFBSSxVQUFVLEtBQUssY0FBYyxDQUFDLFFBQVEsRUFBRTtRQUN4QyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0tBQzlFO0lBRUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLElBQUksaUJBQWlCLEVBQUU7UUFDbkIsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDNUMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sWUFBWSxHQUFHLHlCQUF5QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM5RCxNQUFNLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNILE1BQU0sR0FBRyxpQkFBaUIsRUFBRSxNQUFNLENBQUM7U0FDdEM7S0FDSjtJQUVELElBQUksTUFBTSxLQUFLLGNBQWMsQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDL0MsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtTQUFNO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRixJQUFJLGtCQUFrQixFQUFFO1lBQ3BCLE9BQU8sd0JBQXdCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0tBQ0o7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY29ycmVjdExheW91dEJ5RGlyZWN0aW9uLCBnZXRJbkNvcnJlY3RMYXlvdXREaXJlY3Rpb24sIGdldFJvb3RMYXlvdXQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBnZXRBYnN0cmFjdExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcblxuLyoqXG4gKiBnZXQgY29ycmVjdGx5IGxheW91dO+8mlxuICogMS4gcm9vdCBpcyBzdGFuZGFyZCAtPiBsZWZ0IG9yIHJpZ2h0XG4gKiAyLiBjb3JyZWN0IGxheW91dCBieSBpbmNvcnJlY3QgbGF5b3V0IGRpcmVjdGlvblxuICogQHBhcmFtIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gTWluZEVsZW1lbnQuZ2V0QW5jZXN0b3JzKGJvYXJkLCBlbGVtZW50KSBhcyBNaW5kRWxlbWVudFtdO1xuICAgIGFuY2VzdG9ycy51bnNoaWZ0KGVsZW1lbnQpO1xuICAgIGNvbnN0IHJvb3QgPSBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aCAtIDFdO1xuICAgIGxldCByb290TGF5b3V0ID0gZ2V0Um9vdExheW91dChyb290KTtcblxuICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiByb290TGF5b3V0O1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpO1xuICAgIGxldCBjb3JyZWN0Um9vdExheW91dCA9IHJvb3RMYXlvdXQ7XG4gICAgaWYgKHJvb3RMYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkKSB7XG4gICAgICAgIGNvcnJlY3RSb290TGF5b3V0ID0gbm9kZS5sZWZ0ID8gTWluZExheW91dFR5cGUubGVmdCA6IE1pbmRMYXlvdXRUeXBlLnJpZ2h0O1xuICAgIH1cblxuICAgIGxldCBsYXlvdXQgPSBudWxsO1xuICAgIGNvbnN0IGVsZW1lbnRXaXRoTGF5b3V0ID0gYW5jZXN0b3JzLmZpbmQodmFsdWUgPT4gdmFsdWUubGF5b3V0IHx8IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHZhbHVlKSk7XG4gICAgaWYgKGVsZW1lbnRXaXRoTGF5b3V0KSB7XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50V2l0aExheW91dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50V2l0aExheW91dCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBnZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBwYXJlbnQpO1xuICAgICAgICAgICAgbGF5b3V0ID0gZ2V0QWJzdHJhY3RMYXlvdXQocGFyZW50TGF5b3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxheW91dCA9IGVsZW1lbnRXaXRoTGF5b3V0Py5sYXlvdXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5zdGFuZGFyZCB8fCAhbGF5b3V0KSB7XG4gICAgICAgIHJldHVybiBjb3JyZWN0Um9vdExheW91dDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbmNvcnJlY3REaXJlY3Rpb24gPSBnZXRJbkNvcnJlY3RMYXlvdXREaXJlY3Rpb24oY29ycmVjdFJvb3RMYXlvdXQsIGxheW91dCk7XG4gICAgICAgIGlmIChpbmNvcnJlY3REaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBjb3JyZWN0TGF5b3V0QnlEaXJlY3Rpb24obGF5b3V0LCBpbmNvcnJlY3REaXJlY3Rpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxheW91dDtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=
@@ -1,16 +1,18 @@
1
1
  import { MindElement } from '../interfaces';
2
- import { AbstractNode, getAbstractLayout, isIndentedLayout, isChildOfAbstract } from '@plait/layouts';
3
- import { getLayoutParentByElement } from './get-layout-parent-by-element';
2
+ import { AbstractNode, getAbstractLayout } from '@plait/layouts';
3
+ import { getDefaultLayout } from '../utils/layout';
4
4
  export const getLayoutByElement = (element) => {
5
5
  const layout = element.layout;
6
6
  if (layout) {
7
7
  return layout;
8
8
  }
9
- if (AbstractNode.isAbstract(element) ||
10
- (isChildOfAbstract(MindElement.getNode(element)) && isIndentedLayout(layout))) {
11
- const parentLayout = getLayoutParentByElement(element);
12
- return getAbstractLayout(parentLayout);
9
+ const parent = MindElement.getParent(element);
10
+ if (AbstractNode.isAbstract(element)) {
11
+ return getAbstractLayout(getLayoutByElement(parent));
13
12
  }
14
- return getLayoutParentByElement(element);
13
+ if (parent) {
14
+ return getLayoutByElement(parent);
15
+ }
16
+ return getDefaultLayout();
15
17
  };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWxheW91dC1ieS1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcXVlcmllcy9nZXQtbGF5b3V0LWJ5LWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFrQixpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBb0IsRUFBa0IsRUFBRTtJQUN2RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzlCLElBQUksTUFBTSxFQUFFO1FBQ1IsT0FBTyxNQUFNLENBQUM7S0FDakI7SUFFRCxJQUNJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ2hDLENBQUMsaUJBQWlCLENBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQTJCLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFPLENBQUMsQ0FBQyxFQUMzRztRQUNFLE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELE9BQU8saUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDMUM7SUFDRCxPQUFPLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBnZXRBYnN0cmFjdExheW91dCwgaXNJbmRlbnRlZExheW91dCwgaXNDaGlsZE9mQWJzdHJhY3QsIExheW91dE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBnZXRMYXlvdXRQYXJlbnRCeUVsZW1lbnQgfSBmcm9tICcuL2dldC1sYXlvdXQtcGFyZW50LWJ5LWVsZW1lbnQnO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5b3V0QnlFbGVtZW50ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KTogTWluZExheW91dFR5cGUgPT4ge1xuICAgIGNvbnN0IGxheW91dCA9IGVsZW1lbnQubGF5b3V0O1xuICAgIGlmIChsYXlvdXQpIHtcbiAgICAgICAgcmV0dXJuIGxheW91dDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAgIEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpIHx8XG4gICAgICAgIChpc0NoaWxkT2ZBYnN0cmFjdCgoTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KSBhcyB1bmtub3duKSBhcyBMYXlvdXROb2RlKSAmJiBpc0luZGVudGVkTGF5b3V0KGxheW91dCEpKVxuICAgICkge1xuICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBnZXRMYXlvdXRQYXJlbnRCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBnZXRBYnN0cmFjdExheW91dChwYXJlbnRMYXlvdXQpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0TGF5b3V0UGFyZW50QnlFbGVtZW50KGVsZW1lbnQpO1xufTtcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWxheW91dC1ieS1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcXVlcmllcy9nZXQtbGF5b3V0LWJ5LWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFrQixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBb0IsRUFBa0IsRUFBRTtJQUN2RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzlCLElBQUksTUFBTSxFQUFFO1FBQ1IsT0FBTyxNQUFNLENBQUM7S0FDakI7SUFFRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlDLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNsQyxPQUFPLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxJQUFJLE1BQU0sRUFBRTtRQUNSLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDckM7SUFFRCxPQUFPLGdCQUFnQixFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgTWluZExheW91dFR5cGUsIGdldEFic3RyYWN0TGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdExheW91dCB9IGZyb20gJy4uL3V0aWxzL2xheW91dCc7XG5cbmV4cG9ydCBjb25zdCBnZXRMYXlvdXRCeUVsZW1lbnQgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpOiBNaW5kTGF5b3V0VHlwZSA9PiB7XG4gICAgY29uc3QgbGF5b3V0ID0gZWxlbWVudC5sYXlvdXQ7XG4gICAgaWYgKGxheW91dCkge1xuICAgICAgICByZXR1cm4gbGF5b3V0O1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcblxuICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gZ2V0QWJzdHJhY3RMYXlvdXQoZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudCkpO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGdldExheW91dEJ5RWxlbWVudChwYXJlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXREZWZhdWx0TGF5b3V0KCk7XG59O1xuIl19
@@ -2,12 +2,10 @@ import { getAvailableSubLayoutsByElement } from './get-available-sublayouts-by-e
2
2
  import { getBranchLayouts } from './get-branch-layouts';
3
3
  import { getCorrectLayoutByElement } from './get-correct-layout-by-element';
4
4
  import { getLayoutByElement } from './get-layout-by-element';
5
- import { getLayoutParentByElement } from './get-layout-parent-by-element';
6
5
  export const MindQueries = {
7
6
  getAvailableSubLayoutsByElement,
8
- getLayoutParentByElement,
9
7
  getBranchLayouts,
10
8
  getLayoutByElement,
11
9
  getCorrectLayoutByElement
12
10
  };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9xdWVyaWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTFFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN2QiwrQkFBK0I7SUFDL0Isd0JBQXdCO0lBQ3hCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIseUJBQXlCO0NBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBdmFpbGFibGVTdWJMYXlvdXRzQnlFbGVtZW50IH0gZnJvbSAnLi9nZXQtYXZhaWxhYmxlLXN1YmxheW91dHMtYnktZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRCcmFuY2hMYXlvdXRzIH0gZnJvbSAnLi9nZXQtYnJhbmNoLWxheW91dHMnO1xuaW1wb3J0IHsgZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCB9IGZyb20gJy4vZ2V0LWNvcnJlY3QtbGF5b3V0LWJ5LWVsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0TGF5b3V0QnlFbGVtZW50IH0gZnJvbSAnLi9nZXQtbGF5b3V0LWJ5LWVsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0TGF5b3V0UGFyZW50QnlFbGVtZW50IH0gZnJvbSAnLi9nZXQtbGF5b3V0LXBhcmVudC1ieS1lbGVtZW50JztcblxuZXhwb3J0IGNvbnN0IE1pbmRRdWVyaWVzID0ge1xuICAgIGdldEF2YWlsYWJsZVN1YkxheW91dHNCeUVsZW1lbnQsXG4gICAgZ2V0TGF5b3V0UGFyZW50QnlFbGVtZW50LFxuICAgIGdldEJyYW5jaExheW91dHMsXG4gICAgZ2V0TGF5b3V0QnlFbGVtZW50LFxuICAgIGdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnRcbn07XG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9xdWVyaWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN2QiwrQkFBK0I7SUFDL0IsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQix5QkFBeUI7Q0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEF2YWlsYWJsZVN1YkxheW91dHNCeUVsZW1lbnQgfSBmcm9tICcuL2dldC1hdmFpbGFibGUtc3VibGF5b3V0cy1ieS1lbGVtZW50JztcbmltcG9ydCB7IGdldEJyYW5jaExheW91dHMgfSBmcm9tICcuL2dldC1icmFuY2gtbGF5b3V0cyc7XG5pbXBvcnQgeyBnZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50IH0gZnJvbSAnLi9nZXQtY29ycmVjdC1sYXlvdXQtYnktZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRMYXlvdXRCeUVsZW1lbnQgfSBmcm9tICcuL2dldC1sYXlvdXQtYnktZWxlbWVudCc7XG5cbmV4cG9ydCBjb25zdCBNaW5kUXVlcmllcyA9IHtcbiAgICBnZXRBdmFpbGFibGVTdWJMYXlvdXRzQnlFbGVtZW50LFxuICAgIGdldEJyYW5jaExheW91dHMsXG4gICAgZ2V0TGF5b3V0QnlFbGVtZW50LFxuICAgIGdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnRcbn07XG4iXX0=
@@ -0,0 +1,68 @@
1
+ import { Path, PlaitBoard, Transforms } from '@plait/core';
2
+ import { AbstractNode, isStandardLayout } from '@plait/layouts';
3
+ import { createMindElement, divideElementByParent, filterChildElement } from '../utils/mind';
4
+ import { MindQueries } from '../queries';
5
+ import { DefaultAbstractNodeStyle } from '../constants/node-style';
6
+ export const setAbstractsByRefs = (board, abstractRefs) => {
7
+ abstractRefs.forEach((newProperty, element) => {
8
+ const start = element.start + newProperty.start;
9
+ const end = element.end + newProperty.end;
10
+ const path = PlaitBoard.findPath(board, element);
11
+ if (start > end) {
12
+ Transforms.removeNode(board, path);
13
+ }
14
+ else {
15
+ Transforms.setNode(board, { start, end }, path);
16
+ }
17
+ });
18
+ };
19
+ export const setAbstractByStandardLayout = (board, element) => {
20
+ const rightNodeCount = element.rightNodeCount;
21
+ const abstract = element.children.find(child => {
22
+ return AbstractNode.isAbstract(child) && child.end >= rightNodeCount && child.start < rightNodeCount;
23
+ });
24
+ if (abstract) {
25
+ const path = PlaitBoard.findPath(board, abstract);
26
+ Transforms.setNode(board, { end: rightNodeCount - 1 }, path);
27
+ }
28
+ };
29
+ export const insertAbstract = (board, elements) => {
30
+ let elementGroup = filterChildElement(elements);
31
+ const { parentElements, abstractIncludedGroups } = divideElementByParent(elementGroup);
32
+ abstractIncludedGroups.forEach((group, index) => {
33
+ const groupParent = parentElements[index];
34
+ setAbstractByElements(board, groupParent, group);
35
+ });
36
+ };
37
+ const setAbstractByElements = (board, groupParent, group) => {
38
+ const indexArray = group.map(child => groupParent.children.indexOf(child)).sort((a, b) => a - b);
39
+ const rightNodeCount = groupParent?.rightNodeCount;
40
+ const start = indexArray[0], end = indexArray[indexArray.length - 1];
41
+ if (isStandardLayout(MindQueries.getLayoutByElement(groupParent)) &&
42
+ rightNodeCount &&
43
+ start < rightNodeCount &&
44
+ end >= rightNodeCount) {
45
+ const childrenLength = groupParent.children.length;
46
+ const path = [...PlaitBoard.findPath(board, groupParent), childrenLength];
47
+ const leftChildren = indexArray.filter(index => index >= rightNodeCount);
48
+ const rightChildren = indexArray.filter(index => index < rightNodeCount);
49
+ insertAbstractNode(board, path, rightChildren[0], rightChildren[rightChildren.length - 1]);
50
+ insertAbstractNode(board, Path.next(path), leftChildren[0], leftChildren[leftChildren.length - 1]);
51
+ }
52
+ else {
53
+ const path = [...PlaitBoard.findPath(board, groupParent), groupParent.children.length];
54
+ insertAbstractNode(board, path, start, end);
55
+ }
56
+ };
57
+ const insertAbstractNode = (board, path, start, end) => {
58
+ const mindElement = createMindElement('概要', 28, 20, {
59
+ strokeColor: DefaultAbstractNodeStyle.strokeColor,
60
+ strokeWidth: DefaultAbstractNodeStyle.branchWidth,
61
+ branchColor: DefaultAbstractNodeStyle.branchColor,
62
+ branchWidth: DefaultAbstractNodeStyle.branchWidth
63
+ });
64
+ mindElement.start = start;
65
+ mindElement.end = end;
66
+ Transforms.insertNode(board, mindElement, path);
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3RyYW5zZm9ybXMvYWJzdHJhY3Qtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBZ0IsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsWUFBMEIsRUFBRSxFQUFFO0lBQ2hGLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztRQUMzQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFzQixDQUFDLENBQUM7UUFFaEUsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFD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QUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0RztTQUFNO1FBQ0gsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkYsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDL0M7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxJQUFVLEVBQUUsS0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQ3JGLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ2hELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2pELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2pELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2pELFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO0tBQ3BELENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFdBQVcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBRXRCLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFJlZnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Fic3RyYWN0JztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGNyZWF0ZU1pbmRFbGVtZW50LCBkaXZpZGVFbGVtZW50QnlQYXJlbnQsIGZpbHRlckNoaWxkRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL21pbmQnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcblxuZXhwb3J0IGNvbnN0IHNldEFic3RyYWN0c0J5UmVmcyA9IChib2FyZDogUGxhaXRCb2FyZCwgYWJzdHJhY3RSZWZzOiBBYnN0cmFjdFJlZnMpID0+IHtcbiAgICBhYnN0cmFjdFJlZnMuZm9yRWFjaCgobmV3UHJvcGVydHksIGVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBlbGVtZW50LnN0YXJ0ISArIG5ld1Byb3BlcnR5LnN0YXJ0O1xuICAgICAgICBjb25zdCBlbmQgPSBlbGVtZW50LmVuZCEgKyBuZXdQcm9wZXJ0eS5lbmQ7XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcblxuICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZShib2FyZCwgcGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgc3RhcnQsIGVuZCB9LCBwYXRoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEFic3RyYWN0QnlTdGFuZGFyZExheW91dCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IGVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgIGNvbnN0IGFic3RyYWN0ID0gZWxlbWVudC5jaGlsZHJlbi5maW5kKGNoaWxkID0+IHtcbiAgICAgICAgcmV0dXJuIEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5lbmQgPj0gcmlnaHROb2RlQ291bnQgJiYgY2hpbGQuc3RhcnQgPCByaWdodE5vZGVDb3VudDtcbiAgICB9KTtcblxuICAgIGlmIChhYnN0cmFjdCkge1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgYWJzdHJhY3QpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgZW5kOiByaWdodE5vZGVDb3VudCAtIDEgfSwgcGF0aCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEFic3RyYWN0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBsZXQgZWxlbWVudEdyb3VwID0gZmlsdGVyQ2hpbGRFbGVtZW50KGVsZW1lbnRzIGFzIE1pbmRFbGVtZW50W10pO1xuICAgIGNvbnN0IHsgcGFyZW50RWxlbWVudHMsIGFic3RyYWN0SW5jbHVkZWRHcm91cHMgfSA9IGRpdmlkZUVsZW1lbnRCeVBhcmVudChlbGVtZW50R3JvdXApO1xuXG4gICAgYWJzdHJhY3RJbmNsdWRlZEdyb3Vwcy5mb3JFYWNoKChncm91cCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBQYXJlbnQgPSBwYXJlbnRFbGVtZW50c1tpbmRleF07XG4gICAgICAgIHNldEFic3RyYWN0QnlFbGVtZW50cyhib2FyZCwgZ3JvdXBQYXJlbnQsIGdyb3VwKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldEFic3RyYWN0QnlFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXBQYXJlbnQ6IE1pbmRFbGVtZW50LCBncm91cDogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGluZGV4QXJyYXkgPSBncm91cC5tYXAoY2hpbGQgPT4gZ3JvdXBQYXJlbnQhLmNoaWxkcmVuLmluZGV4T2YoY2hpbGQpKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBncm91cFBhcmVudD8ucmlnaHROb2RlQ291bnQ7XG4gICAgY29uc3Qgc3RhcnQgPSBpbmRleEFycmF5WzBdLFxuICAgICAgICBlbmQgPSBpbmRleEFycmF5W2luZGV4QXJyYXkubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoXG4gICAgICAgIGlzU3RhbmRhcmRMYXlvdXQoTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KGdyb3VwUGFyZW50KSkgJiZcbiAgICAgICAgcmlnaHROb2RlQ291bnQgJiZcbiAgICAgICAgc3RhcnQgPCByaWdodE5vZGVDb3VudCAmJlxuICAgICAgICBlbmQgPj0gcmlnaHROb2RlQ291bnRcbiAgICApIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MZW5ndGggPSBncm91cFBhcmVudC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBhdGggPSBbLi4uUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZ3JvdXBQYXJlbnQpLCBjaGlsZHJlbkxlbmd0aF07XG4gICAgICAgIGNvbnN0IGxlZnRDaGlsZHJlbiA9IGluZGV4QXJyYXkuZmlsdGVyKGluZGV4ID0+IGluZGV4ID49IHJpZ2h0Tm9kZUNvdW50KTtcbiAgICAgICAgY29uc3QgcmlnaHRDaGlsZHJlbiA9IGluZGV4QXJyYXkuZmlsdGVyKGluZGV4ID0+IGluZGV4IDwgcmlnaHROb2RlQ291bnQpO1xuICAgICAgICBpbnNlcnRBYnN0cmFjdE5vZGUoYm9hcmQsIHBhdGgsIHJpZ2h0Q2hpbGRyZW5bMF0sIHJpZ2h0Q2hpbGRyZW5bcmlnaHRDaGlsZHJlbi5sZW5ndGggLSAxXSk7XG4gICAgICAgIGluc2VydEFic3RyYWN0Tm9kZShib2FyZCwgUGF0aC5uZXh0KHBhdGgpLCBsZWZ0Q2hpbGRyZW5bMF0sIGxlZnRDaGlsZHJlbltsZWZ0Q2hpbGRyZW4ubGVuZ3RoIC0gMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBbLi4uUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZ3JvdXBQYXJlbnQpLCBncm91cFBhcmVudC5jaGlsZHJlbi5sZW5ndGhdO1xuICAgICAgICBpbnNlcnRBYnN0cmFjdE5vZGUoYm9hcmQsIHBhdGgsIHN0YXJ0LCBlbmQpO1xuICAgIH1cbn07XG5cbmNvbnN0IGluc2VydEFic3RyYWN0Tm9kZSA9IChib2FyZDogUGxhaXRCb2FyZCwgcGF0aDogUGF0aCwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBtaW5kRWxlbWVudCA9IGNyZWF0ZU1pbmRFbGVtZW50KCfmpoLopoEnLCAyOCwgMjAsIHtcbiAgICAgICAgc3Ryb2tlQ29sb3I6IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5zdHJva2VDb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2hXaWR0aCxcbiAgICAgICAgYnJhbmNoQ29sb3I6IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2hDb2xvcixcbiAgICAgICAgYnJhbmNoV2lkdGg6IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2hXaWR0aFxuICAgIH0pO1xuXG4gICAgbWluZEVsZW1lbnQuc3RhcnQgPSBzdGFydDtcbiAgICBtaW5kRWxlbWVudC5lbmQgPSBlbmQ7XG5cbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG1pbmRFbGVtZW50LCBwYXRoKTtcbn07XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { insertAbstract, setAbstractsByRefs, setAbstractByStandardLayout } from './abstract-node';
1
2
  import { setLayout } from './layout';
2
3
  import { addEmoji, removeEmoji, setTopic, setTopicSize, replaceEmoji } from './node';
3
4
  export const MindTransforms = {
@@ -6,6 +7,9 @@ export const MindTransforms = {
6
7
  setTopicSize,
7
8
  addEmoji,
8
9
  removeEmoji,
9
- replaceEmoji
10
+ replaceEmoji,
11
+ insertAbstract,
12
+ setAbstractsByRefs,
13
+ setAbstractByStandardLayout
10
14
  };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLFNBQVM7SUFDVCxRQUFRO0lBQ1IsWUFBWTtJQUNaLFFBQVE7SUFDUixXQUFXO0lBQ1gsWUFBWTtDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXRMYXlvdXQgfSBmcm9tICcuL2xheW91dCc7XG5pbXBvcnQgeyBhZGRFbW9qaSwgcmVtb3ZlRW1vamksIHNldFRvcGljLCBzZXRUb3BpY1NpemUsIHJlcGxhY2VFbW9qaSB9IGZyb20gJy4vbm9kZSc7XG5cbmV4cG9ydCBjb25zdCBNaW5kVHJhbnNmb3JtcyA9IHtcbiAgICBzZXRMYXlvdXQsXG4gICAgc2V0VG9waWMsXG4gICAgc2V0VG9waWNTaXplLFxuICAgIGFkZEVtb2ppLFxuICAgIHJlbW92ZUVtb2ppLFxuICAgIHJlcGxhY2VFbW9qaVxufTtcbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixTQUFTO0lBQ1QsUUFBUTtJQUNSLFlBQVk7SUFDWixRQUFRO0lBQ1IsV0FBVztJQUNYLFlBQVk7SUFDWixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLDJCQUEyQjtDQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zZXJ0QWJzdHJhY3QsIHNldEFic3RyYWN0c0J5UmVmcywgc2V0QWJzdHJhY3RCeVN0YW5kYXJkTGF5b3V0IH0gZnJvbSAnLi9hYnN0cmFjdC1ub2RlJztcbmltcG9ydCB7IHNldExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcbmltcG9ydCB7IGFkZEVtb2ppLCByZW1vdmVFbW9qaSwgc2V0VG9waWMsIHNldFRvcGljU2l6ZSwgcmVwbGFjZUVtb2ppIH0gZnJvbSAnLi9ub2RlJztcblxuZXhwb3J0IGNvbnN0IE1pbmRUcmFuc2Zvcm1zID0ge1xuICAgIHNldExheW91dCxcbiAgICBzZXRUb3BpYyxcbiAgICBzZXRUb3BpY1NpemUsXG4gICAgYWRkRW1vamksXG4gICAgcmVtb3ZlRW1vamksXG4gICAgcmVwbGFjZUVtb2ppLFxuICAgIGluc2VydEFic3RyYWN0LFxuICAgIHNldEFic3RyYWN0c0J5UmVmcyxcbiAgICBzZXRBYnN0cmFjdEJ5U3RhbmRhcmRMYXlvdXRcbn07XG4iXX0=
@@ -1,12 +1,12 @@
1
1
  import { PlaitNode, Transforms } from '@plait/core';
2
2
  import { isHorizontalLogicLayout, isStandardLayout, isVerticalLogicLayout } from '@plait/layouts';
3
3
  import { PlaitMind } from '../interfaces/element';
4
- import { handleAbstractIncluded } from '../utils/abstract/common';
4
+ import { MindTransforms } from '.';
5
5
  export const setLayout = (board, layout, path) => {
6
6
  correctLogicLayoutNode(board, layout, path);
7
7
  const element = PlaitNode.get(board, path);
8
8
  if (PlaitMind.isMind(element) && isStandardLayout(layout)) {
9
- handleAbstractIncluded(board, element);
9
+ MindTransforms.setAbstractByStandardLayout(board, element);
10
10
  }
11
11
  Transforms.setNode(board, { layout }, path);
12
12
  };
@@ -26,4 +26,4 @@ const correctLogicLayoutNode = (board, layout, path) => {
26
26
  });
27
27
  }
28
28
  };
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdHJhbnNmb3Jtcy9sYXlvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQWUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxNQUFzQixFQUFFLElBQVUsRUFBRSxFQUFFO0lBQy9FLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFnQixDQUFDO0lBRTFELElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN2RCxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDMUM7SUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsSUFBVSxFQUFFLEVBQUU7SUFDckYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBZ0IsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsSUFDSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDMUU7b0JBQ0UsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNqRTtnQkFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO29CQUN4QixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0tBQ047QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQYXRoLCBQbGFpdE5vZGUsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMb2dpY0xheW91dCwgaXNTdGFuZGFyZExheW91dCwgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LCBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgaGFuZGxlQWJzdHJhY3RJbmNsdWRlZCB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBzZXRMYXlvdXQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGxheW91dDogTWluZExheW91dFR5cGUsIHBhdGg6IFBhdGgpID0+IHtcbiAgICBjb3JyZWN0TG9naWNMYXlvdXROb2RlKGJvYXJkLCBsYXlvdXQsIHBhdGgpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKSBhcyBNaW5kRWxlbWVudDtcblxuICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpICYmIGlzU3RhbmRhcmRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBoYW5kbGVBYnN0cmFjdEluY2x1ZGVkKGJvYXJkLCBlbGVtZW50KTtcbiAgICB9XG5cbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgbGF5b3V0IH0sIHBhdGgpO1xufTtcblxuY29uc3QgY29ycmVjdExvZ2ljTGF5b3V0Tm9kZSA9IChib2FyZDogUGxhaXRCb2FyZCwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKTtcbiAgICBpZiAobm9kZSAmJiBsYXlvdXQpIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgodmFsdWU6IFBsYWl0Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChpc0hvcml6b250YWxMb2dpY0xheW91dChsYXlvdXQpICYmIGlzVmVydGljYWxMb2dpY0xheW91dCh2YWx1ZS5sYXlvdXQpKSB8fFxuICAgICAgICAgICAgICAgICAgICAoaXNWZXJ0aWNhbExvZ2ljTGF5b3V0KGxheW91dCkgJiYgaXNIb3Jpem9udGFsTG9naWNMYXlvdXQodmFsdWUubGF5b3V0KSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGxheW91dDogbnVsbCB9LCBbLi4ucGF0aCwgaW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29ycmVjdExvZ2ljTGF5b3V0Tm9kZShib2FyZCwgbGF5b3V0LCBbLi4ucGF0aCwgaW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdHJhbnNmb3Jtcy9sYXlvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQWUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUVuQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsSUFBVSxFQUFFLEVBQUU7SUFDL0Usc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQWdCLENBQUM7SUFFMUQsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3ZELGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDOUQ7SUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsSUFBVSxFQUFFLEVBQUU7SUFDckYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBZ0IsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsSUFDSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDMUU7b0JBQ0UsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNqRTtnQkFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO29CQUN4QixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0tBQ047QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQYXRoLCBQbGFpdE5vZGUsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMb2dpY0xheW91dCwgaXNTdGFuZGFyZExheW91dCwgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LCBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgTWluZFRyYW5zZm9ybXMgfSBmcm9tICcuJztcblxuZXhwb3J0IGNvbnN0IHNldExheW91dCA9IChib2FyZDogUGxhaXRCb2FyZCwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvcnJlY3RMb2dpY0xheW91dE5vZGUoYm9hcmQsIGxheW91dCwgcGF0aCk7XG4gICAgY29uc3QgZWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpIGFzIE1pbmRFbGVtZW50O1xuXG4gICAgaWYgKFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCkgJiYgaXNTdGFuZGFyZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldEFic3RyYWN0QnlTdGFuZGFyZExheW91dChib2FyZCwgZWxlbWVudCk7XG4gICAgfVxuXG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGxheW91dCB9LCBwYXRoKTtcbn07XG5cbmNvbnN0IGNvcnJlY3RMb2dpY0xheW91dE5vZGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGxheW91dDogTWluZExheW91dFR5cGUsIHBhdGg6IFBhdGgpID0+IHtcbiAgICBjb25zdCBub2RlID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCk7XG4gICAgaWYgKG5vZGUgJiYgbGF5b3V0KSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2goKHZhbHVlOiBQbGFpdE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUubGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoaXNIb3Jpem9udGFsTG9naWNMYXlvdXQobGF5b3V0KSAmJiBpc1ZlcnRpY2FsTG9naWNMYXlvdXQodmFsdWUubGF5b3V0KSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGlzVmVydGljYWxMb2dpY0xheW91dChsYXlvdXQpICYmIGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0KHZhbHVlLmxheW91dCkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBsYXlvdXQ6IG51bGwgfSwgWy4uLnBhdGgsIGluZGV4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvcnJlY3RMb2dpY0xheW91dE5vZGUoYm9hcmQsIGxheW91dCwgWy4uLnBhdGgsIGluZGV4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuIl19
@@ -1,5 +1,5 @@
1
1
  import { MindElement } from '../interfaces/element';
2
- import { NODE_MIN_WIDTH } from '../constants/node';
2
+ import { NODE_MIN_WIDTH } from '../constants/node-rule';
3
3
  import { PlaitBoard, Transforms } from '@plait/core';
4
4
  export const setTopic = (board, element, topic, width, height) => {
5
5
  const newElement = {
@@ -56,4 +56,4 @@ export const replaceEmoji = (board, element, oldEmoji, newEmoji) => {
56
56
  const path = PlaitBoard.findPath(board, element);
57
57
  Transforms.setNode(board, newElement, path);
58
58
  };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3RyYW5zZm9ybXMvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxLQUFjLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQy9HLE1BQU0sVUFBVSxHQUFHO1FBQ2YsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFO1FBQ2YsS0FBSyxFQUFFLEtBQUssR0FBRyxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtRQUNsRyxNQUFNLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtLQUN4QixDQUFDO0lBQ2pCLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNoRDtJQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxL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VUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBOT0RFX01JTl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcblxuZXhwb3J0IGNvbnN0IHNldFRvcGljID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgdG9waWM6IEVsZW1lbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHtcbiAgICAgICAgZGF0YTogeyB0b3BpYyB9LFxuICAgICAgICB3aWR0aDogd2lkdGggPCBOT0RFX01JTl9XSURUSCAqIGJvYXJkLnZpZXdwb3J0Lnpvb20gPyBOT0RFX01JTl9XSURUSCA6IHdpZHRoIC8gYm9hcmQudmlld3BvcnQuem9vbSxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLyBib2FyZC52aWV3cG9ydC56b29tXG4gICAgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBpZiAoTWluZEVsZW1lbnQuaGFzRW1vamlzKGVsZW1lbnQpKSB7XG4gICAgICAgIG5ld0VsZW1lbnQuZGF0YS5lbW9qaXMgPSBlbGVtZW50LmRhdGEuZW1vamlzO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRUb3BpY1NpemUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7XG4gICAgICAgIHdpZHRoOiB3aWR0aCA8IE5PREVfTUlOX1dJRFRIICogYm9hcmQudmlld3BvcnQuem9vbSA/IE5PREVfTUlOX1dJRFRIIDogd2lkdGggLyBib2FyZC52aWV3cG9ydC56b29tLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCAvIGJvYXJkLnZpZXdwb3J0Lnpvb21cbiAgICB9O1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEVtb2ppID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgZW1vamlJdGVtOiBFbW9qaUl0ZW0pID0+IHtcbiAgICBjb25zdCBlbW9qaXMgPSBlbGVtZW50LmRhdGEuZW1vamlzIHx8IFtdO1xuICAgIGNvbnN0IG5ld0Vtb2ppcyA9IFsuLi5lbW9qaXNdO1xuICAgIG5ld0Vtb2ppcy5wdXNoKGVtb2ppSXRlbSk7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHtcbiAgICAgICAgZGF0YTogeyB0b3BpYzogZWxlbWVudC5kYXRhLnRvcGljLCBlbW9qaXM6IG5ld0Vtb2ppcyB9XG4gICAgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVFbW9qaSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPiwgZW1vamlJdGVtOiBFbW9qaUl0ZW0pID0+IHtcbiAgICBjb25zdCBlbW9qaXMgPSBlbGVtZW50LmRhdGEuZW1vamlzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gZW1vamlJdGVtKTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0ge1xuICAgICAgICBkYXRhOiB7IHRvcGljOiBlbGVtZW50LmRhdGEudG9waWMgfVxuICAgIH0gYXMgTWluZEVsZW1lbnQ7XG4gICAgaWYgKGVtb2ppcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG5ld0VsZW1lbnQuZGF0YS5lbW9qaXMgPSBlbW9qaXM7XG4gICAgfVxuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2VFbW9qaSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPiwgb2xkRW1vamk6IEVtb2ppSXRlbSwgbmV3RW1vamk6IEVtb2ppSXRlbSkgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7XG4gICAgICAgIGRhdGE6IHsgdG9waWM6IGVsZW1lbnQuZGF0YS50b3BpYyB9XG4gICAgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBjb25zdCBuZXdFbW9qaXMgPSBlbGVtZW50LmRhdGEuZW1vamlzLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gb2xkRW1vamkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXdFbW9qaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG4gICAgbmV3RWxlbWVudC5kYXRhLmVtb2ppcyA9IG5ld0Vtb2ppcztcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbn07XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3RyYW5zZm9ybXMvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxLQUFjLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFO0lBQy9HLE1BQU0sVUFBVSxHQUFHO1FBQ2YsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFO1FBQ2YsS0FBSyxFQUFFLEtBQUssR0FBRyxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtRQUNsRyxNQUFNLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtLQUN4QixDQUFDO0lBQ2pCLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNoRDtJQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxL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VUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBOT0RFX01JTl9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXJ1bGUnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgVHJhbnNmb3JtcyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEVtb2ppRGF0YSwgRW1vamlJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50LWRhdGEnO1xuXG5leHBvcnQgY29uc3Qgc2V0VG9waWMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCB0b3BpYzogRWxlbWVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0ge1xuICAgICAgICBkYXRhOiB7IHRvcGljIH0sXG4gICAgICAgIHdpZHRoOiB3aWR0aCA8IE5PREVfTUlOX1dJRFRIICogYm9hcmQudmlld3BvcnQuem9vbSA/IE5PREVfTUlOX1dJRFRIIDogd2lkdGggLyBib2FyZC52aWV3cG9ydC56b29tLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCAvIGJvYXJkLnZpZXdwb3J0Lnpvb21cbiAgICB9IGFzIE1pbmRFbGVtZW50O1xuICAgIGlmIChNaW5kRWxlbWVudC5oYXNFbW9qaXMoZWxlbWVudCkpIHtcbiAgICAgICAgbmV3RWxlbWVudC5kYXRhLmVtb2ppcyA9IGVsZW1lbnQuZGF0YS5lbW9qaXM7XG4gICAgfVxuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFRvcGljU2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoIDwgTk9ERV9NSU5fV0lEVEggKiBib2FyZC52aWV3cG9ydC56b29tID8gTk9ERV9NSU5fV0lEVEggOiB3aWR0aCAvIGJvYXJkLnZpZXdwb3J0Lnpvb20sXG4gICAgICAgIGhlaWdodDogaGVpZ2h0IC8gYm9hcmQudmlld3BvcnQuem9vbVxuICAgIH07XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkRW1vamkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCBlbW9qaUl0ZW06IEVtb2ppSXRlbSkgPT4ge1xuICAgIGNvbnN0IGVtb2ppcyA9IGVsZW1lbnQuZGF0YS5lbW9qaXMgfHwgW107XG4gICAgY29uc3QgbmV3RW1vamlzID0gWy4uLmVtb2ppc107XG4gICAgbmV3RW1vamlzLnB1c2goZW1vamlJdGVtKTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0ge1xuICAgICAgICBkYXRhOiB7IHRvcGljOiBlbGVtZW50LmRhdGEudG9waWMsIGVtb2ppczogbmV3RW1vamlzIH1cbiAgICB9IGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUVtb2ppID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudDxFbW9qaURhdGE+LCBlbW9qaUl0ZW06IEVtb2ppSXRlbSkgPT4ge1xuICAgIGNvbnN0IGVtb2ppcyA9IGVsZW1lbnQuZGF0YS5lbW9qaXMuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBlbW9qaUl0ZW0pO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSB7XG4gICAgICAgIGRhdGE6IHsgdG9waWM6IGVsZW1lbnQuZGF0YS50b3BpYyB9XG4gICAgfSBhcyBNaW5kRWxlbWVudDtcbiAgICBpZiAoZW1vamlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbmV3RWxlbWVudC5kYXRhLmVtb2ppcyA9IGVtb2ppcztcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVwbGFjZUVtb2ppID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudDxFbW9qaURhdGE+LCBvbGRFbW9qaTogRW1vamlJdGVtLCBuZXdFbW9qaTogRW1vamlJdGVtKSA9PiB7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHtcbiAgICAgICAgZGF0YTogeyB0b3BpYzogZWxlbWVudC5kYXRhLnRvcGljIH1cbiAgICB9IGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IG5ld0Vtb2ppcyA9IGVsZW1lbnQuZGF0YS5lbW9qaXMubWFwKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBvbGRFbW9qaSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ld0Vtb2ppO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgICBuZXdFbGVtZW50LmRhdGEuZW1vamlzID0gbmV3RW1vamlzO1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xufTtcbiJdfQ==
@@ -1,9 +1,6 @@
1
- import { AbstractNode, isStandardLayout } from '@plait/layouts';
2
- import { MindElement } from '../../interfaces/element';
3
- import { Path, PlaitBoard, PlaitElement, Transforms } from '@plait/core';
4
- import { createMindElement, divideElementByParent, filterChildElement } from '../mind';
5
- import { GRAY_COLOR } from '../../constants';
6
- import { MindQueries } from '../../queries';
1
+ import { AbstractNode } from '@plait/layouts';
2
+ import { MindElement, PlaitMind } from '../../interfaces/element';
3
+ import { Path, PlaitBoard, PlaitElement, PlaitNode } from '@plait/core';
7
4
  export const separateChildren = (parentElement) => {
8
5
  const rightNodeCount = parentElement.rightNodeCount;
9
6
  const children = parentElement.children;
@@ -28,60 +25,13 @@ export const separateChildren = (parentElement) => {
28
25
  return { leftChildren, rightChildren };
29
26
  };
30
27
  export const isSetAbstract = (element) => {
31
- return !!getCorrespondingAbstract(element);
28
+ const parent = MindElement.getParent(element);
29
+ return !!getCorrespondingAbstract(parent, element);
32
30
  };
33
31
  export const canSetAbstract = (element) => {
34
32
  return !PlaitElement.isRootElement(element) && !AbstractNode.isAbstract(element) && !isSetAbstract(element);
35
33
  };
36
- export const setAbstract = (board, elements) => {
37
- let elementGroup = filterChildElement(elements);
38
- const { parentElements, abstractIncludedGroups } = divideElementByParent(elementGroup);
39
- abstractIncludedGroups.forEach((group, index) => {
40
- const groupParent = parentElements[index];
41
- setAbstractByElements(board, groupParent, group);
42
- });
43
- };
44
- export const setAbstractByElements = (board, groupParent, group) => {
45
- const indexArray = group.map(child => groupParent.children.indexOf(child)).sort((a, b) => a - b);
46
- const rightNodeCount = groupParent?.rightNodeCount;
47
- const start = indexArray[0], end = indexArray[indexArray.length - 1];
48
- if (isStandardLayout(MindQueries.getLayoutByElement(groupParent)) &&
49
- rightNodeCount &&
50
- start < rightNodeCount &&
51
- end >= rightNodeCount) {
52
- const childrenLength = groupParent.children.length;
53
- const path = [...PlaitBoard.findPath(board, groupParent), childrenLength];
54
- const leftChildren = indexArray.filter(index => index >= rightNodeCount);
55
- const rightChildren = indexArray.filter(index => index < rightNodeCount);
56
- insertAbstractNode(board, path, rightChildren[0], rightChildren[rightChildren.length - 1]);
57
- insertAbstractNode(board, Path.next(path), leftChildren[0], leftChildren[leftChildren.length - 1]);
58
- }
59
- else {
60
- const path = [...PlaitBoard.findPath(board, groupParent), groupParent.children.length];
61
- insertAbstractNode(board, path, start, end);
62
- }
63
- };
64
- export const insertAbstractNode = (board, path, start, end) => {
65
- const mindElement = createMindElement('概要', 28, 20, {
66
- strokeColor: GRAY_COLOR,
67
- branchColor: GRAY_COLOR
68
- });
69
- mindElement.start = start;
70
- mindElement.end = end;
71
- Transforms.insertNode(board, mindElement, path);
72
- };
73
- export const handleAbstractIncluded = (board, element) => {
74
- const rightNodeCount = element.rightNodeCount;
75
- const abstract = element.children.find(child => {
76
- return AbstractNode.isAbstract(child) && child.end >= rightNodeCount && child.start < rightNodeCount;
77
- });
78
- if (abstract) {
79
- const path = PlaitBoard.findPath(board, abstract);
80
- Transforms.setNode(board, { end: rightNodeCount - 1 }, path);
81
- }
82
- };
83
- export const getCorrespondingAbstract = (element) => {
84
- const parent = MindElement.getParent(element);
34
+ export const getCorrespondingAbstract = (parent, element) => {
85
35
  if (!parent)
86
36
  return undefined;
87
37
  const elementIndex = parent.children.indexOf(element);
@@ -89,25 +39,95 @@ export const getCorrespondingAbstract = (element) => {
89
39
  return AbstractNode.isAbstract(child) && elementIndex >= child.start && elementIndex <= child.end;
90
40
  });
91
41
  };
92
- export const getBehindAbstracts = (element) => {
93
- const parent = MindElement.getParent(element);
42
+ export const getBehindAbstracts = (parent, element) => {
94
43
  const index = parent.children.indexOf(element);
95
44
  return parent.children.filter(child => AbstractNode.isAbstract(child) && child.start > index);
96
45
  };
97
- export const insertSiblingElementHandleAbstract = (board, selectedElement) => {
98
- const abstract = getCorrespondingAbstract(selectedElement);
99
- if (abstract) {
100
- PlaitBoard.findPath(board, abstract);
101
- Transforms.setNode(board, { end: abstract.end + 1 }, PlaitBoard.findPath(board, abstract));
46
+ export const getOverallAbstracts = (board, elements) => {
47
+ const overallAbstracts = [];
48
+ elements
49
+ .filter(value => !AbstractNode.isAbstract(value) && !PlaitMind.isMind(value))
50
+ .forEach(value => {
51
+ const parent = MindElement.getParent(value);
52
+ const abstract = getCorrespondingAbstract(parent, value);
53
+ if (abstract && overallAbstracts.indexOf(abstract) === -1) {
54
+ const { start, end } = abstract;
55
+ const parent = MindElement.getParent(value);
56
+ const isOverall = parent.children.slice(start, end + 1).every(includedElement => elements.indexOf(includedElement) > -1);
57
+ if (isOverall) {
58
+ overallAbstracts.push(abstract);
59
+ }
60
+ }
61
+ });
62
+ return overallAbstracts;
63
+ };
64
+ export const insertElementHandleAbstract = (board, path,
65
+ //由此区分拖拽和新增到概要概括最后一个节点
66
+ isExtendPreviousNode = true, abstractRefs = new Map()) => {
67
+ const parent = PlaitNode.parent(board, path);
68
+ const hasPreviousNode = path[path.length - 1] !== 0;
69
+ let behindAbstracts;
70
+ if (!hasPreviousNode) {
71
+ behindAbstracts = parent.children.filter(child => AbstractNode.isAbstract(child));
102
72
  }
103
- const abstracts = getBehindAbstracts(selectedElement);
104
- if (abstracts.length) {
105
- moveAbstractPosition(board, abstracts, 1);
73
+ else {
74
+ const selectedElement = PlaitNode.get(board, Path.previous(path));
75
+ behindAbstracts = getBehindAbstracts(parent, selectedElement);
106
76
  }
77
+ if (behindAbstracts.length) {
78
+ behindAbstracts.forEach(abstract => {
79
+ let newProperties = abstractRefs.get(abstract);
80
+ if (!newProperties) {
81
+ newProperties = { start: 0, end: 0 };
82
+ abstractRefs.set(abstract, newProperties);
83
+ }
84
+ newProperties.start = newProperties.start + 1;
85
+ newProperties.end = newProperties.end + 1;
86
+ });
87
+ }
88
+ if (!hasPreviousNode) {
89
+ return abstractRefs;
90
+ }
91
+ const selectedElement = PlaitNode.get(board, Path.previous(path));
92
+ const correspondingAbstract = getCorrespondingAbstract(parent, selectedElement);
93
+ const isDragToLast = !isExtendPreviousNode && correspondingAbstract && correspondingAbstract.end === path[path.length - 1] - 1;
94
+ if (correspondingAbstract && !isDragToLast) {
95
+ let newProperties = abstractRefs.get(correspondingAbstract);
96
+ if (!newProperties) {
97
+ newProperties = { start: 0, end: 0 };
98
+ abstractRefs.set(correspondingAbstract, newProperties);
99
+ }
100
+ newProperties.end = newProperties.end + 1;
101
+ }
102
+ return abstractRefs;
107
103
  };
108
- export const moveAbstractPosition = (board, abstracts, step) => {
109
- abstracts.forEach(abstract => {
110
- Transforms.setNode(board, { start: abstract.start + step, end: abstract.end + step }, PlaitBoard.findPath(board, abstract));
104
+ export const deleteElementHandleAbstract = (board, deletableElements, abstractRefs = new Map()) => {
105
+ deletableElements.forEach(node => {
106
+ if (!PlaitMind.isMind(node)) {
107
+ const parent = PlaitNode.parent(board, PlaitBoard.findPath(board, node));
108
+ const behindAbstracts = getBehindAbstracts(parent, node).filter(abstract => !deletableElements.includes(abstract));
109
+ if (behindAbstracts.length) {
110
+ behindAbstracts.forEach(abstract => {
111
+ let newProperties = abstractRefs.get(abstract);
112
+ if (!newProperties) {
113
+ newProperties = { start: 0, end: 0 };
114
+ abstractRefs.set(abstract, newProperties);
115
+ }
116
+ newProperties.start = newProperties.start - 1;
117
+ newProperties.end = newProperties.end - 1;
118
+ });
119
+ }
120
+ const correspondingAbstract = getCorrespondingAbstract(parent, node);
121
+ if (correspondingAbstract && !deletableElements.includes(correspondingAbstract)) {
122
+ let newProperties = abstractRefs.get(correspondingAbstract);
123
+ if (!newProperties) {
124
+ newProperties = { start: 0, end: 0 };
125
+ abstractRefs.set(correspondingAbstract, newProperties);
126
+ }
127
+ newProperties.end = newProperties.end - 1;
128
+ }
129
+ }
111
130
  });
131
+ return abstractRefs;
112
132
  };
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxhQUEwQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWUsQ0FBQztJQUNyRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3hDLElBQUksYUFBYSxHQUFHLEVBQUUsRUFDbEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsY0FBYyxFQUFFO1lBQzlELGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIs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LEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQU0sR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsSSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Tm9kZSwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgVHJhbnNmb3JtcyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZU1pbmRFbGVtZW50LCBkaXZpZGVFbGVtZW50QnlQYXJlbnQsIGZpbHRlckNoaWxkRWxlbWVudCB9IGZyb20gJy4uL21pbmQnO1xuaW1wb3J0IHsgR1JBWV9DT0xPUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgc2VwYXJhdGVDaGlsZHJlbiA9IChwYXJlbnRFbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgIGxldCByaWdodENoaWxkcmVuID0gW10sXG4gICAgICAgIGxlZnRDaGlsZHJlbiA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZXRBYnN0cmFjdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gISFnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QoZWxlbWVudCBhcyBNaW5kRWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FuU2V0QWJzdHJhY3QgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuICFQbGFpdEVsZW1lbnQuaXNSb290RWxlbWVudChlbGVtZW50KSAmJiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgJiYgIWlzU2V0QWJzdHJhY3QoZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QWJzdHJhY3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCBlbGVtZW50R3JvdXAgPSBmaWx0ZXJDaGlsZEVsZW1lbnQoZWxlbWVudHMgYXMgTWluZEVsZW1lbnRbXSk7XG4gICAgY29uc3QgeyBwYXJlbnRFbGVtZW50cywgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyB9ID0gZGl2aWRlRWxlbWVudEJ5UGFyZW50KGVsZW1lbnRHcm91cCk7XG5cbiAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cFBhcmVudCA9IHBhcmVudEVsZW1lbnRzW2luZGV4XTtcbiAgICAgICAgc2V0QWJzdHJhY3RCeUVsZW1lbnRzKGJvYXJkLCBncm91cFBhcmVudCwgZ3JvdXApO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEFic3RyYWN0QnlFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXBQYXJlbnQ6IE1pbmRFbGVtZW50LCBncm91cDogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGluZGV4QXJyYXkgPSBncm91cC5tYXAoY2hpbGQgPT4gZ3JvdXBQYXJlbnQhLmNoaWxkcmVuLmluZGV4T2YoY2hpbGQpKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBncm91cFBhcmVudD8ucmlnaHROb2RlQ291bnQ7XG4gICAgY29uc3Qgc3RhcnQgPSBpbmRleEFycmF5WzBdLFxuICAgICAgICBlbmQgPSBpbmRleEFycmF5W2luZGV4QXJyYXkubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoXG4gICAgICAgIGlzU3RhbmRhcmRMYXlvdXQoTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KGdyb3VwUGFyZW50KSkgJiZcbiAgICAgICAgcmlnaHROb2RlQ291bnQgJiZcbiAgICAgICAgc3RhcnQgPCByaWdodE5vZGVDb3VudCAmJlxuICAgICAgICBlbmQgPj0gcmlnaHROb2RlQ291bnRcbiAgICApIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MZW5ndGggPSBncm91cFBhcmVudC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBhdGggPSBbLi4uUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZ3JvdXBQYXJlbnQpLCBjaGlsZHJlbkxlbmd0aF07XG4gICAgICAgIGNvbnN0IGxlZnRDaGlsZHJlbiA9IGluZGV4QXJyYXkuZmlsdGVyKGluZGV4ID0+IGluZGV4ID49IHJpZ2h0Tm9kZUNvdW50KTtcbiAgICAgICAgY29uc3QgcmlnaHRDaGlsZHJlbiA9IGluZGV4QXJyYXkuZmlsdGVyKGluZGV4ID0+IGluZGV4IDwgcmlnaHROb2RlQ291bnQpO1xuXG4gICAgICAgIGluc2VydEFic3RyYWN0Tm9kZShib2FyZCwgcGF0aCwgcmlnaHRDaGlsZHJlblswXSwgcmlnaHRDaGlsZHJlbltyaWdodENoaWxkcmVuLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgaW5zZXJ0QWJzdHJhY3ROb2RlKGJvYXJkLCBQYXRoLm5leHQocGF0aCksIGxlZnRDaGlsZHJlblswXSwgbGVmdENoaWxkcmVuW2xlZnRDaGlsZHJlbi5sZW5ndGggLSAxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IFsuLi5QbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBncm91cFBhcmVudCksIGdyb3VwUGFyZW50LmNoaWxkcmVuLmxlbmd0aF07XG5cbiAgICAgICAgaW5zZXJ0QWJzdHJhY3ROb2RlKGJvYXJkLCBwYXRoLCBzdGFydCwgZW5kKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0QWJzdHJhY3ROb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwYXRoOiBQYXRoLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1pbmRFbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJ+amguimgScsIDI4LCAyMCwge1xuICAgICAgICBzdHJva2VDb2xvcjogR1JBWV9DT0xPUixcbiAgICAgICAgYnJhbmNoQ29sb3I6IEdSQVlfQ09MT1JcbiAgICB9KTtcblxuICAgIG1pbmRFbGVtZW50LnN0YXJ0ID0gc3RhcnQ7XG4gICAgbWluZEVsZW1lbnQuZW5kID0gZW5kO1xuXG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBtaW5kRWxlbWVudCwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQWJzdHJhY3RJbmNsdWRlZCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IGVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgIGNvbnN0IGFic3RyYWN0ID0gZWxlbWVudC5jaGlsZHJlbi5maW5kKGNoaWxkID0+IHtcbiAgICAgICAgcmV0dXJuIEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5lbmQgPj0gcmlnaHROb2RlQ291bnQgJiYgY2hpbGQuc3RhcnQgPCByaWdodE5vZGVDb3VudDtcbiAgICB9KTtcblxuICAgIGlmIChhYnN0cmFjdCkge1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgYWJzdHJhY3QpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgZW5kOiByaWdodE5vZGVDb3VudCAtIDEgfSwgcGF0aCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IChlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmluZChjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgZWxlbWVudEluZGV4ID49IGNoaWxkLnN0YXJ0ISAmJiBlbGVtZW50SW5kZXggPD0gY2hpbGQuZW5kITtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCZWhpbmRBYnN0cmFjdHMgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KTtcbiAgICByZXR1cm4gcGFyZW50LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuc3RhcnQhID4gaW5kZXgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydFNpYmxpbmdFbGVtZW50SGFuZGxlQWJzdHJhY3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGVkRWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChzZWxlY3RlZEVsZW1lbnQpO1xuICAgIGlmIChhYnN0cmFjdCkge1xuICAgICAgICBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhYnN0cmFjdCk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBlbmQ6IGFic3RyYWN0LmVuZCEgKyAxIH0sIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFic3RyYWN0KSk7XG4gICAgfVxuXG4gICAgY29uc3QgYWJzdHJhY3RzID0gZ2V0QmVoaW5kQWJzdHJhY3RzKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgaWYgKGFic3RyYWN0cy5sZW5ndGgpIHtcbiAgICAgICAgbW92ZUFic3RyYWN0UG9zaXRpb24oYm9hcmQsIGFic3RyYWN0cywgMSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVBYnN0cmFjdFBvc2l0aW9uID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBhYnN0cmFjdHM6IE1pbmRFbGVtZW50W10sIHN0ZXA6IG51bWJlcikgPT4ge1xuICAgIGFic3RyYWN0cy5mb3JFYWNoKGFic3RyYWN0ID0+IHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHN0YXJ0OiBhYnN0cmFjdC5zdGFydCEgKyBzdGVwLCBlbmQ6IGFic3RyYWN0LmVuZCEgKyBzdGVwIH0sIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFic3RyYWN0KSk7XG4gICAgfSk7XG59O1xuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxhQUEwQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWUsQ0FBQztJQUNyRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3hDLElBQUksYUFBYSxHQUFHLEVBQUUsRUFDbEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsY0FBYyxFQUFFO1lBQzlELGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsU0FBUztTQUNaO1FBQ0QsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksY0FBYyxFQUFFO1lBQ2pFLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsU0FBUztTQUNaO1FBRUQsSUFBSSxD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RyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSxxQkFBcUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO2dCQUM3RSxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2hCLGFBQWEsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUVyQyxZQUFZLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQzdDO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQbGFpdE5vZGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBzZXBhcmF0ZUNoaWxkcmVuID0gKHBhcmVudEVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50ITtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG4gICAgbGV0IHJpZ2h0Q2hpbGRyZW4gPSBbXSxcbiAgICAgICAgbGVmdENoaWxkcmVuID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuZW5kIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgIHJpZ2h0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLnN0YXJ0ID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICBsZWZ0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgIHJpZ2h0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZWZ0Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBsZWZ0Q2hpbGRyZW4sIHJpZ2h0Q2hpbGRyZW4gfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NldEFic3RyYWN0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcbiAgICByZXR1cm4gISFnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QocGFyZW50LCBlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYW5TZXRBYnN0cmFjdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gIVBsYWl0RWxlbWVudC5pc1Jvb3RFbGVtZW50KGVsZW1lbnQpICYmICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSAmJiAhaXNTZXRBYnN0cmFjdChlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QgPSAocGFyZW50OiBNaW5kRWxlbWVudCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmluZChjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgZWxlbWVudEluZGV4ID49IGNoaWxkLnN0YXJ0ISAmJiBlbGVtZW50SW5kZXggPD0gY2hpbGQuZW5kITtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCZWhpbmRBYnN0cmFjdHMgPSAocGFyZW50OiBNaW5kRWxlbWVudCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCEgPiBpbmRleCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3ZlcmFsbEFic3RyYWN0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBvdmVyYWxsQWJzdHJhY3RzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgZWxlbWVudHNcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodmFsdWUpICYmICFQbGFpdE1pbmQuaXNNaW5kKHZhbHVlKSlcbiAgICAgICAgLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHBhcmVudCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKGFic3RyYWN0ICYmIG92ZXJhbGxBYnN0cmFjdHMuaW5kZXhPZihhYnN0cmFjdCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBhYnN0cmFjdDtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQodmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzT3ZlcmFsbCA9IHBhcmVudC5jaGlsZHJlbi5zbGljZShzdGFydCEsIGVuZCEgKyAxKS5ldmVyeShpbmNsdWRlZEVsZW1lbnQgPT4gZWxlbWVudHMuaW5kZXhPZihpbmNsdWRlZEVsZW1lbnQpID4gLTEpO1xuICAgICAgICAgICAgICAgIGlmIChpc092ZXJhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmFsbEFic3RyYWN0cy5wdXNoKGFic3RyYWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIHJldHVybiBvdmVyYWxsQWJzdHJhY3RzIGFzIChNaW5kRWxlbWVudCAmIEFic3RyYWN0Tm9kZSlbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcGF0aDogUGF0aCxcbiAgICAvL+eUseatpOWMuuWIhuaLluaLveWSjOaWsOWinuWIsOamguimgeamguaLrOacgOWQjuS4gOS4quiKgueCuVxuICAgIGlzRXh0ZW5kUHJldmlvdXNOb2RlOiBib29sZWFuID0gdHJ1ZSxcbiAgICBhYnN0cmFjdFJlZnMgPSBuZXcgTWFwPE1pbmRFbGVtZW50LCBQaWNrPEFic3RyYWN0Tm9kZSwgJ3N0YXJ0JyB8ICdlbmQnPj4oKVxuKSA9PiB7XG4gICAgY29uc3QgcGFyZW50ID0gUGxhaXROb2RlLnBhcmVudChib2FyZCwgcGF0aCkgYXMgTWluZEVsZW1lbnQ7XG4gICAgY29uc3QgaGFzUHJldmlvdXNOb2RlID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdICE9PSAwO1xuICAgIGxldCBiZWhpbmRBYnN0cmFjdHM6IE1pbmRFbGVtZW50W107XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSkge1xuICAgICAgICBiZWhpbmRBYnN0cmFjdHMgPSBwYXJlbnQuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyhwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgIGJlaGluZEFic3RyYWN0cyA9IGdldEJlaGluZEFic3RyYWN0cyhwYXJlbnQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKGJlaGluZEFic3RyYWN0cy5sZW5ndGgpIHtcbiAgICAgICAgYmVoaW5kQWJzdHJhY3RzLmZvckVhY2goYWJzdHJhY3QgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld1Byb3BlcnRpZXMgPSBhYnN0cmFjdFJlZnMuZ2V0KGFic3RyYWN0KTtcbiAgICAgICAgICAgIGlmICghbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgICAgICBhYnN0cmFjdFJlZnMuc2V0KGFic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuc3RhcnQgPSBuZXdQcm9wZXJ0aWVzLnN0YXJ0ICsgMTtcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuZW5kID0gbmV3UHJvcGVydGllcy5lbmQgKyAxO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSkge1xuICAgICAgICByZXR1cm4gYWJzdHJhY3RSZWZzO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucHJldmlvdXMocGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChwYXJlbnQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgY29uc3QgaXNEcmFnVG9MYXN0ID0gIWlzRXh0ZW5kUHJldmlvdXNOb2RlICYmIGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiBjb3JyZXNwb25kaW5nQWJzdHJhY3QuZW5kID09PSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gLSAxO1xuXG4gICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhaXNEcmFnVG9MYXN0KSB7XG4gICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gYWJzdHJhY3RSZWZzLmdldChjb3JyZXNwb25kaW5nQWJzdHJhY3QpO1xuICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgIGFic3RyYWN0UmVmcy5zZXQoY29ycmVzcG9uZGluZ0Fic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdQcm9wZXJ0aWVzLmVuZCA9IG5ld1Byb3BlcnRpZXMuZW5kICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWJzdHJhY3RSZWZzO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkZWxldGFibGVFbGVtZW50czogTWluZEVsZW1lbnRbXSxcbiAgICBhYnN0cmFjdFJlZnMgPSBuZXcgTWFwPE1pbmRFbGVtZW50LCBQaWNrPEFic3RyYWN0Tm9kZSwgJ3N0YXJ0JyB8ICdlbmQnPj4oKVxuKSA9PiB7XG4gICAgZGVsZXRhYmxlRWxlbWVudHMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgaWYgKCFQbGFpdE1pbmQuaXNNaW5kKG5vZGUpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUucGFyZW50KGJvYXJkLCBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBub2RlKSkgYXMgTWluZEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IGJlaGluZEFic3RyYWN0cyA9IGdldEJlaGluZEFic3RyYWN0cyhwYXJlbnQsIG5vZGUpLmZpbHRlcihhYnN0cmFjdCA9PiAhZGVsZXRhYmxlRWxlbWVudHMuaW5jbHVkZXMoYWJzdHJhY3QpKTtcbiAgICAgICAgICAgIGlmIChiZWhpbmRBYnN0cmFjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYmVoaW5kQWJzdHJhY3RzLmZvckVhY2goYWJzdHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3UHJvcGVydGllcyA9IGFic3RyYWN0UmVmcy5nZXQoYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFic3RyYWN0UmVmcy5zZXQoYWJzdHJhY3QsIG5ld1Byb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuc3RhcnQgPSBuZXdQcm9wZXJ0aWVzLnN0YXJ0IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcy5lbmQgPSBuZXdQcm9wZXJ0aWVzLmVuZCAtIDE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChwYXJlbnQsIG5vZGUpO1xuICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhZGVsZXRhYmxlRWxlbWVudHMuaW5jbHVkZXMoY29ycmVzcG9uZGluZ0Fic3RyYWN0KSkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gYWJzdHJhY3RSZWZzLmdldChjb3JyZXNwb25kaW5nQWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgIGlmICghbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzID0geyBzdGFydDogMCwgZW5kOiAwIH07XG5cbiAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RSZWZzLnNldChjb3JyZXNwb25kaW5nQWJzdHJhY3QsIG5ld1Byb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzLmVuZCA9IG5ld1Byb3BlcnRpZXMuZW5kIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhYnN0cmFjdFJlZnM7XG59O1xuIl19