@plait/mind 0.69.2 → 0.71.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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { PlaitBoard, isNullOrUndefined } from '@plait/core';
5
5
  import { BranchShape } from '../../interfaces/element';
6
- import { BRANCH_WIDTH } from '../../constants/default';
6
+ import { STROKE_WIDTH } from '../../constants/default';
7
7
  import { DefaultAbstractNodeStyle } from '../../constants/node-style';
8
8
  import { getAvailableProperty } from './common';
9
9
  import { MindDefaultThemeColor, MindThemeColor } from '../../interfaces/theme-color';
@@ -13,7 +13,7 @@ export const getBranchColorByMindElement = (board, element) => {
13
13
  if (AbstractNode.isAbstract(element) || isChildOfAbstract(board, element)) {
14
14
  return getAbstractBranchColor(board, element);
15
15
  }
16
- const branchColor = getAvailableProperty(board, element, 'branchColor');
16
+ const branchColor = getAvailableProperty(board, element, 'branchColor') || getAvailableProperty(board, element, 'strokeColor');
17
17
  return branchColor || getDefaultBranchColor(board, element);
18
18
  };
19
19
  export const getBranchShapeByMindElement = (board, element) => {
@@ -21,8 +21,8 @@ export const getBranchShapeByMindElement = (board, element) => {
21
21
  return branchShape || BranchShape.bight;
22
22
  };
23
23
  export const getBranchWidthByMindElement = (board, element) => {
24
- const branchWidth = getAvailableProperty(board, element, 'branchWidth');
25
- return branchWidth || BRANCH_WIDTH;
24
+ const branchWidth = getAvailableProperty(board, element, 'branchWidth') || getAvailableProperty(board, element, 'strokeWidth');
25
+ return branchWidth || STROKE_WIDTH;
26
26
  };
27
27
  export const getAbstractBranchWidth = (board, element) => {
28
28
  if (!isNullOrUndefined(element.branchWidth)) {
@@ -31,8 +31,8 @@ export const getAbstractBranchWidth = (board, element) => {
31
31
  return DefaultAbstractNodeStyle.branch.width;
32
32
  };
33
33
  export const getAbstractBranchColor = (board, element) => {
34
- if (element.branchColor) {
35
- return element.branchColor;
34
+ if (element.branchColor || element.strokeColor) {
35
+ return element.branchColor || element.strokeColor;
36
36
  }
37
37
  return DefaultAbstractNodeStyle.branch.color;
38
38
  };
@@ -60,4 +60,4 @@ export const getMindThemeColor = (board) => {
60
60
  return MindDefaultThemeColor;
61
61
  }
62
62
  };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUNuRixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDeEUsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDeEUsT0FBTyxXQUFXLElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJC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InNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvY2Vzc2luZyBvZiBicmFuY2ggY29sb3IsIHdpZHRoLCBzdHlsZSwgZXRjLiBvZiB0aGUgbWluZCBub2RlXG4gKi9cbmltcG9ydCB7IFBsYWl0Qm9hcmQsIGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQnJhbmNoU2hhcGUsIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IEJSQU5DSF9XSURUSCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IGdldEF2YWlsYWJsZVByb3BlcnR5IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgTWluZERlZmF1bHRUaGVtZUNvbG9yLCBNaW5kVGhlbWVDb2xvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGhlbWUtY29sb3InO1xuaW1wb3J0IHsgQWJzdHJhY3ROb2RlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaXNDaGlsZE9mQWJzdHJhY3QgfSBmcm9tICcuLi9hYnN0cmFjdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSB8fCBpc0NoaWxkT2ZBYnN0cmFjdChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGdldEFic3RyYWN0QnJhbmNoQ29sb3IoYm9hcmQsIGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGJyYW5jaENvbG9yID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdicmFuY2hDb2xvcicpO1xuICAgIHJldHVybiBicmFuY2hDb2xvciB8fCBnZXREZWZhdWx0QnJhbmNoQ29sb3IoYm9hcmQsIGVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJyYW5jaFNoYXBlQnlNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBicmFuY2hTaGFwZSA9IGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnYnJhbmNoU2hhcGUnKTtcbiAgICByZXR1cm4gYnJhbmNoU2hhcGUgfHwgQnJhbmNoU2hhcGUuYmlnaHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoV2lkdGhCeU1pbmRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGJyYW5jaFdpZHRoID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdicmFuY2hXaWR0aCcpO1xuICAgIHJldHVybiBicmFuY2hXaWR0aCB8fCBCUkFOQ0hfV0lEVEg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWJzdHJhY3RCcmFuY2hXaWR0aCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGVsZW1lbnQuYnJhbmNoV2lkdGgpKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmJyYW5jaFdpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLmJyYW5jaC53aWR0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBYnN0cmFjdEJyYW5jaENvbG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50LmJyYW5jaENvbG9yKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmJyYW5jaENvbG9yO1xuICAgIH1cbiAgICByZXR1cm4gRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLmJyYW5jaC5jb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROZXh0QnJhbmNoQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJvb3Q6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSByb290LmNoaWxkcmVuLmxlbmd0aDtcbiAgICByZXR1cm4gZ2V0RGVmYXVsdEJyYW5jaENvbG9yQnlJbmRleChib2FyZCwgaW5kZXgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRCcmFuY2hDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXgoYm9hcmQsIHBhdGhbMV0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB0aGVtZUNvbG9yID0gZ2V0TWluZFRoZW1lQ29sb3IoYm9hcmQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoZW1lQ29sb3IuYnJhbmNoQ29sb3JzLmxlbmd0aDtcbiAgICBjb25zdCByZW1haW5kZXIgPSBpbmRleCAlIGxlbmd0aDtcbiAgICByZXR1cm4gdGhlbWVDb2xvci5icmFuY2hDb2xvcnNbcmVtYWluZGVyXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5kVGhlbWVDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHRoZW1lQ29sb3JzID0gUGxhaXRCb2FyZC5nZXRUaGVtZUNvbG9ycyhib2FyZCk7XG4gICAgY29uc3QgdGhlbWVDb2xvciA9IHRoZW1lQ29sb3JzLmZpbmQodmFsID0+IHZhbC5tb2RlID09PSBib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZSk7XG4gICAgaWYgKHRoZW1lQ29sb3IgJiYgTWluZFRoZW1lQ29sb3IuaXNNaW5kVGhlbWVDb2xvcih0aGVtZUNvbG9yKSkge1xuICAgICAgICByZXR1cm4gdGhlbWVDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTWluZERlZmF1bHRUaGVtZUNvbG9yO1xuICAgIH1cbn07XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUNuRixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDeEUsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUksb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvSCxPQUFPLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxD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SSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8scUJBQXFCLENBQUM7SUFDakMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvY2Vzc2luZyBvZiBicmFuY2ggY29sb3IsIHdpZHRoLCBzdHlsZSwgZXRjLiBvZiB0aGUgbWluZCBub2RlXG4gKi9cbmltcG9ydCB7IFBsYWl0Qm9hcmQsIGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQnJhbmNoU2hhcGUsIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFNUUk9LRV9XSURUSCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IGdldEF2YWlsYWJsZVByb3BlcnR5IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgTWluZERlZmF1bHRUaGVtZUNvbG9yLCBNaW5kVGhlbWVDb2xvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGhlbWUtY29sb3InO1xuaW1wb3J0IHsgQWJzdHJhY3ROb2RlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaXNDaGlsZE9mQWJzdHJhY3QgfSBmcm9tICcuLi9hYnN0cmFjdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSB8fCBpc0NoaWxkT2ZBYnN0cmFjdChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGdldEFic3RyYWN0QnJhbmNoQ29sb3IoYm9hcmQsIGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGJyYW5jaENvbG9yID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdicmFuY2hDb2xvcicpIHx8IGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnc3Ryb2tlQ29sb3InKTtcbiAgICByZXR1cm4gYnJhbmNoQ29sb3IgfHwgZ2V0RGVmYXVsdEJyYW5jaENvbG9yKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYnJhbmNoU2hhcGUgPSBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ2JyYW5jaFNoYXBlJyk7XG4gICAgcmV0dXJuIGJyYW5jaFNoYXBlIHx8IEJyYW5jaFNoYXBlLmJpZ2h0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBicmFuY2hXaWR0aCA9IGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnYnJhbmNoV2lkdGgnKSB8fCBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ3N0cm9rZVdpZHRoJyk7XG4gICAgcmV0dXJuIGJyYW5jaFdpZHRoIHx8IFNUUk9LRV9XSURUSDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBYnN0cmFjdEJyYW5jaFdpZHRoID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZWxlbWVudC5icmFuY2hXaWR0aCkpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuYnJhbmNoV2lkdGggYXMgbnVtYmVyO1xuICAgIH1cbiAgICByZXR1cm4gRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLmJyYW5jaC53aWR0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBYnN0cmFjdEJyYW5jaENvbG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50LmJyYW5jaENvbG9yIHx8IGVsZW1lbnQuc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuYnJhbmNoQ29sb3IgfHwgZWxlbWVudC5zdHJva2VDb2xvcjtcbiAgICB9XG4gICAgcmV0dXJuIERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2guY29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmV4dEJyYW5jaENvbG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCByb290OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gcm9vdC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgcmV0dXJuIGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXgoYm9hcmQsIGluZGV4KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0QnJhbmNoQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIHJldHVybiBnZXREZWZhdWx0QnJhbmNoQ29sb3JCeUluZGV4KGJvYXJkLCBwYXRoWzFdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0QnJhbmNoQ29sb3JCeUluZGV4ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdGhlbWVDb2xvciA9IGdldE1pbmRUaGVtZUNvbG9yKGJvYXJkKTtcbiAgICBjb25zdCBsZW5ndGggPSB0aGVtZUNvbG9yLmJyYW5jaENvbG9ycy5sZW5ndGg7XG4gICAgY29uc3QgcmVtYWluZGVyID0gaW5kZXggJSBsZW5ndGg7XG4gICAgcmV0dXJuIHRoZW1lQ29sb3IuYnJhbmNoQ29sb3JzW3JlbWFpbmRlcl07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluZFRoZW1lQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB0aGVtZUNvbG9ycyA9IFBsYWl0Qm9hcmQuZ2V0VGhlbWVDb2xvcnMoYm9hcmQpO1xuICAgIGNvbnN0IHRoZW1lQ29sb3IgPSB0aGVtZUNvbG9ycy5maW5kKHZhbCA9PiB2YWwubW9kZSA9PT0gYm9hcmQudGhlbWUudGhlbWVDb2xvck1vZGUpO1xuICAgIGlmICh0aGVtZUNvbG9yICYmIE1pbmRUaGVtZUNvbG9yLmlzTWluZFRoZW1lQ29sb3IodGhlbWVDb2xvcikpIHtcbiAgICAgICAgcmV0dXJuIHRoZW1lQ29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE1pbmREZWZhdWx0VGhlbWVDb2xvcjtcbiAgICB9XG59O1xuIl19
@@ -4,7 +4,8 @@ import { getDefaultBranchColor, getMindThemeColor } from './branch';
4
4
  import { AbstractNode } from '@plait/layouts';
5
5
  import { isChildOfAbstract } from '../abstract/common';
6
6
  import { DefaultAbstractNodeStyle, DefaultNodeStyle } from '../../constants/node-style';
7
- export const getStrokeByMindElement = (board, element) => {
7
+ import { StrokeStyle } from '@plait/common';
8
+ export const getStrokeColorByElement = (board, element) => {
8
9
  if (PlaitMind.isMind(element)) {
9
10
  const defaultRootStroke = getMindThemeColor(board).rootFill;
10
11
  return element.strokeColor || defaultRootStroke;
@@ -14,6 +15,9 @@ export const getStrokeByMindElement = (board, element) => {
14
15
  }
15
16
  return getAvailableProperty(board, element, 'strokeColor') || getDefaultBranchColor(board, element);
16
17
  };
18
+ export const getStrokeStyleByElement = (board, element) => {
19
+ return element.strokeStyle || StrokeStyle.solid;
20
+ };
17
21
  export const getStrokeWidthByElement = (board, element) => {
18
22
  const strokeWidth = element.strokeWidth ||
19
23
  (AbstractNode.isAbstract(element) ? DefaultAbstractNodeStyle.shape.strokeWidth : DefaultNodeStyle.shape.strokeWidth);
@@ -30,4 +34,4 @@ export const getShapeByElement = (board, element) => {
30
34
  const shape = getAvailableProperty(board, element, 'shape');
31
35
  return shape || MindElementShape.roundRectangle;
32
36
  };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlLXN0eWxlL3NoYXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQzlFLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzVELE9BQU8sT0FBTyxDQUFDLFdBQVcsSUFBSSxpQkFBaUIsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sT0FBTyxDQUFDLFdBQVcsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQzdFLENBQUM7SUFFRCxPQUFPLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hHLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDL0UsTUFBTSxXQUFXLEdBQ2IsT0FBTyxDQUFDLFdBQVc7UUFDbkIsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekgsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNmLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ0QsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzFELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzFFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFvQixFQUFFO0lBQzNGLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsT0FBTyxLQUFLLElBQUksZ0JBQWdCLENBQUMsY0FBYyxDQUFDO0FBQ3BELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgTWluZEVsZW1lbnRTaGFwZSwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IGdldEF2YWlsYWJsZVByb3BlcnR5IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEJyYW5jaENvbG9yLCBnZXRNaW5kVGhlbWVDb2xvciB9IGZyb20gJy4vYnJhbmNoJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzQ2hpbGRPZkFic3RyYWN0IH0gZnJvbSAnLi4vYWJzdHJhY3QvY29tbW9uJztcbmltcG9ydCB7IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZSwgRGVmYXVsdE5vZGVTdHlsZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcblxuZXhwb3J0IGNvbnN0IGdldFN0cm9rZUJ5TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJvb3RTdHJva2UgPSBnZXRNaW5kVGhlbWVDb2xvcihib2FyZCkucm9vdEZpbGw7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnN0cm9rZUNvbG9yIHx8IGRlZmF1bHRSb290U3Ryb2tlO1xuICAgIH1cblxuICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSB8fCBpc0NoaWxkT2ZBYnN0cmFjdChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuc3Ryb2tlQ29sb3IgfHwgRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLnNoYXBlLnN0cm9rZUNvbG9yO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ3N0cm9rZUNvbG9yJykgfHwgZ2V0RGVmYXVsdEJyYW5jaENvbG9yKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9XG4gICAgICAgIGVsZW1lbnQuc3Ryb2tlV2lkdGggfHxcbiAgICAgICAgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpID8gRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLnNoYXBlLnN0cm9rZVdpZHRoIDogRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5zdHJva2VXaWR0aCk7XG4gICAgcmV0dXJuIHN0cm9rZVdpZHRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGxCeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKGVsZW1lbnQuZmlsbCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5maWxsO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0Um9vdEZpbGwgPSBnZXRNaW5kVGhlbWVDb2xvcihib2FyZCkucm9vdEZpbGw7XG4gICAgcmV0dXJuIGVsZW1lbnQuaXNSb290ID8gZGVmYXVsdFJvb3RGaWxsIDogRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5maWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNoYXBlQnlFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCk6IE1pbmRFbGVtZW50U2hhcGUgPT4ge1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdzaGFwZScpO1xuICAgIHJldHVybiBzaGFwZSB8fCBNaW5kRWxlbWVudFNoYXBlLnJvdW5kUmVjdGFuZ2xlO1xufTtcbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlLXN0eWxlL3NoYXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDL0UsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDNUQsT0FBTyxPQUFPLENBQUMsV0FBVyxJQUFJLGlCQUFpQixDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDeEUsT0FBTyxPQUFPLENBQUMsV0FBVyxJQUFJLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDN0UsQ0FBQztJQUVELE9BQU8sb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUMvRSxPQUFPLE9BQU8sQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQy9FLE1BQU0sV0FBVyxHQUNiLE9BQU8sQ0FBQyxXQUFXO1FBQ25CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pILE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUMxRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBb0IsRUFBRTtJQUMzRixNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELE9BQU8sS0FBSyxJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztBQUNwRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIE1pbmRFbGVtZW50U2hhcGUsIFBsYWl0TWluZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRBdmFpbGFibGVQcm9wZXJ0eSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IGdldERlZmF1bHRCcmFuY2hDb2xvciwgZ2V0TWluZFRoZW1lQ29sb3IgfSBmcm9tICcuL2JyYW5jaCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc0NoaWxkT2ZBYnN0cmFjdCB9IGZyb20gJy4uL2Fic3RyYWN0L2NvbW1vbic7XG5pbXBvcnQgeyBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUsIERlZmF1bHROb2RlU3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS1zdHlsZSc7XG5pbXBvcnQgeyBTdHJva2VTdHlsZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJvb3RTdHJva2UgPSBnZXRNaW5kVGhlbWVDb2xvcihib2FyZCkucm9vdEZpbGw7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnN0cm9rZUNvbG9yIHx8IGRlZmF1bHRSb290U3Ryb2tlO1xuICAgIH1cblxuICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSB8fCBpc0NoaWxkT2ZBYnN0cmFjdChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuc3Ryb2tlQ29sb3IgfHwgRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLnNoYXBlLnN0cm9rZUNvbG9yO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ3N0cm9rZUNvbG9yJykgfHwgZ2V0RGVmYXVsdEJyYW5jaENvbG9yKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VTdHlsZUJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudC5zdHJva2VTdHlsZSB8fCBTdHJva2VTdHlsZS5zb2xpZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9XG4gICAgICAgIGVsZW1lbnQuc3Ryb2tlV2lkdGggfHxcbiAgICAgICAgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpID8gRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLnNoYXBlLnN0cm9rZVdpZHRoIDogRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5zdHJva2VXaWR0aCk7XG4gICAgcmV0dXJuIHN0cm9rZVdpZHRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGxCeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKGVsZW1lbnQuZmlsbCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5maWxsO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0Um9vdEZpbGwgPSBnZXRNaW5kVGhlbWVDb2xvcihib2FyZCkucm9vdEZpbGw7XG4gICAgcmV0dXJuIGVsZW1lbnQuaXNSb290ID8gZGVmYXVsdFJvb3RGaWxsIDogRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5maWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNoYXBlQnlFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCk6IE1pbmRFbGVtZW50U2hhcGUgPT4ge1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdzaGFwZScpO1xuICAgIHJldHVybiBzaGFwZSB8fCBNaW5kRWxlbWVudFNoYXBlLnJvdW5kUmVjdGFuZ2xlO1xufTtcbiJdfQ==
@@ -1,6 +1,6 @@
1
- import { DefaultThemeColor, DEFAULT_COLOR, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, PlaitElement, PlaitNode, Path, isNullOrUndefined, PlaitBoard, getSelectedElements, idCreator, Transforms, clearSelectedElement, addSelectedElement, distanceBetweenPointAndRectangle, RectangleClient, setDragging, depthFirstRecursion, getIsRecursionFunc, drawRoundRectangle, drawLinearPath, drawBezierPath, createG, createForeignObject, updateForeignObject, getRectangleByElements, setStrokeLinecap, ACTIVE_STROKE_WIDTH, SELECTION_RECTANGLE_CLASS_NAME, NODE_TO_PARENT, removeSelectedElement, PlaitHistoryBoard, createText, PlaitPointerType, NODE_TO_INDEX, isMainPointer, toViewBoxPoint, toHostPoint, getHitElementByPoint, distanceBetweenPointAndPoint, isDragging, CoreTransforms, BOARD_TO_HOST, BoardTransforms, throttleRAF, isContextmenu, temporaryDisableSelection, hotkeys, createClipboardContext, WritableClipboardType, ResizeCursorClass, Point, WritableClipboardOperationType, addClipboardContext } from '@plait/core';
1
+ import { DefaultThemeColor, DEFAULT_COLOR, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, PlaitElement, PlaitNode, Path, isNullOrUndefined, PlaitBoard, getSelectedElements, idCreator, Transforms, clearSelectedElement, addSelectedElement, distanceBetweenPointAndRectangle, RectangleClient, setDragging, depthFirstRecursion, getIsRecursionFunc, drawRoundRectangle, drawLinearPath, drawBezierPath, setStrokeLinecap, createG, createForeignObject, updateForeignObject, getRectangleByElements, ACTIVE_STROKE_WIDTH, SELECTION_RECTANGLE_CLASS_NAME, NODE_TO_PARENT, removeSelectedElement, PlaitHistoryBoard, createText, PlaitPointerType, NODE_TO_INDEX, isMainPointer, toViewBoxPoint, toHostPoint, getHitElementByPoint, distanceBetweenPointAndPoint, isDragging, CoreTransforms, BOARD_TO_HOST, BoardTransforms, throttleRAF, isContextmenu, temporaryDisableSelection, hotkeys, createClipboardContext, WritableClipboardType, ResizeCursorClass, Point, WritableClipboardOperationType, addClipboardContext } from '@plait/core';
2
2
  import { MindLayoutType, AbstractNode, isIndentedLayout, isHorizontalLayout, isHorizontalLogicLayout, ConnectingPosition, getNonAbstractChildren, isStandardLayout, isLeftLayout, isRightLayout, isVerticalLogicLayout, isTopLayout, isBottomLayout, getCorrectStartEnd, getAbstractLayout, GlobalLayout } from '@plait/layouts';
3
- import { getFirstTextManage, buildText, getFirstTextEditor, RESIZE_HANDLE_DIAMETER, getRectangleResizeHandleRefs, addElementOfFocusedImage, ImageGenerator, removeElementOfFocusedImage, Generator, PropertyTransforms, CommonElementFlavour, WithTextPluginKey, TextManage, isDrawingMode, isDndMode, setCreationMode, BoardCreationMode, isExpandHotkey, isTabHotkey, isEnterHotkey, isVirtualKey, isDelete, isSpaceHotkey, getElementOfFocusedImage, acceptImageTypes, buildImage, withResize, measureElement, getElementsText } from '@plait/common';
3
+ import { StrokeStyle, getFirstTextManage, buildText, getFirstTextEditor, RESIZE_HANDLE_DIAMETER, getRectangleResizeHandleRefs, addElementOfFocusedImage, ImageGenerator, removeElementOfFocusedImage, getStrokeLineDash, Generator, PropertyTransforms, CommonElementFlavour, WithTextPluginKey, TextManage, isDrawingMode, isDndMode, setCreationMode, BoardCreationMode, isExpandHotkey, isTabHotkey, isEnterHotkey, isVirtualKey, isDelete, isSpaceHotkey, getElementOfFocusedImage, acceptImageTypes, buildImage, withResize, measureElement, getElementsText } from '@plait/common';
4
4
  import { TEXT_DEFAULT_HEIGHT, PlaitMarkEditor, MarkTypes, DEFAULT_FONT_SIZE } from '@plait/text-plugins';
5
5
  import { Node as Node$1, Path as Path$1 } from 'slate';
6
6
  import { pointsOnBezierCurves } from 'points-on-curve';
@@ -180,7 +180,6 @@ const BASE = 4;
180
180
  const PRIMARY_COLOR = '#6698FF';
181
181
  const GRAY_COLOR = '#AAAAAA';
182
182
  const STROKE_WIDTH = 3;
183
- const BRANCH_WIDTH = 3;
184
183
  const EXTEND_OFFSET = 8;
185
184
  const EXTEND_DIAMETER = 16;
186
185
  const QUICK_INSERT_CIRCLE_OFFSET = 9;
@@ -402,7 +401,7 @@ const getBranchColorByMindElement = (board, element) => {
402
401
  if (AbstractNode.isAbstract(element) || isChildOfAbstract(board, element)) {
403
402
  return getAbstractBranchColor(board, element);
404
403
  }
405
- const branchColor = getAvailableProperty(board, element, 'branchColor');
404
+ const branchColor = getAvailableProperty(board, element, 'branchColor') || getAvailableProperty(board, element, 'strokeColor');
406
405
  return branchColor || getDefaultBranchColor(board, element);
407
406
  };
408
407
  const getBranchShapeByMindElement = (board, element) => {
@@ -410,8 +409,8 @@ const getBranchShapeByMindElement = (board, element) => {
410
409
  return branchShape || BranchShape.bight;
411
410
  };
412
411
  const getBranchWidthByMindElement = (board, element) => {
413
- const branchWidth = getAvailableProperty(board, element, 'branchWidth');
414
- return branchWidth || BRANCH_WIDTH;
412
+ const branchWidth = getAvailableProperty(board, element, 'branchWidth') || getAvailableProperty(board, element, 'strokeWidth');
413
+ return branchWidth || STROKE_WIDTH;
415
414
  };
416
415
  const getAbstractBranchWidth = (board, element) => {
417
416
  if (!isNullOrUndefined(element.branchWidth)) {
@@ -420,8 +419,8 @@ const getAbstractBranchWidth = (board, element) => {
420
419
  return DefaultAbstractNodeStyle.branch.width;
421
420
  };
422
421
  const getAbstractBranchColor = (board, element) => {
423
- if (element.branchColor) {
424
- return element.branchColor;
422
+ if (element.branchColor || element.strokeColor) {
423
+ return element.branchColor || element.strokeColor;
425
424
  }
426
425
  return DefaultAbstractNodeStyle.branch.color;
427
426
  };
@@ -450,7 +449,7 @@ const getMindThemeColor = (board) => {
450
449
  }
451
450
  };
452
451
 
453
- const getStrokeByMindElement = (board, element) => {
452
+ const getStrokeColorByElement = (board, element) => {
454
453
  if (PlaitMind.isMind(element)) {
455
454
  const defaultRootStroke = getMindThemeColor(board).rootFill;
456
455
  return element.strokeColor || defaultRootStroke;
@@ -460,6 +459,9 @@ const getStrokeByMindElement = (board, element) => {
460
459
  }
461
460
  return getAvailableProperty(board, element, 'strokeColor') || getDefaultBranchColor(board, element);
462
461
  };
462
+ const getStrokeStyleByElement = (board, element) => {
463
+ return element.strokeStyle || StrokeStyle.solid;
464
+ };
463
465
  const getStrokeWidthByElement = (board, element) => {
464
466
  const strokeWidth = element.strokeWidth ||
465
467
  (AbstractNode.isAbstract(element) ? DefaultAbstractNodeStyle.shape.strokeWidth : DefaultNodeStyle.shape.strokeWidth);
@@ -710,6 +712,7 @@ const INHERIT_ATTRIBUTE_KEYS = [
710
712
  'fill',
711
713
  'strokeColor',
712
714
  'strokeWidth',
715
+ 'strokeStyle',
713
716
  'shape',
714
717
  'layout',
715
718
  'branchColor',
@@ -745,11 +748,11 @@ const getFirstLevelElement = (elements) => {
745
748
  });
746
749
  return result;
747
750
  };
748
- const isChildRight = (node, child) => {
749
- return node.x < child.x;
751
+ const isChildRight = (parent, child) => {
752
+ return parent.x < child.x;
750
753
  };
751
- const isChildUp = (node, child) => {
752
- return node.y > child.y;
754
+ const isChildUp = (parent, child) => {
755
+ return parent.y > child.y;
753
756
  };
754
757
  const copyNewNode = (node) => {
755
758
  const newNode = { ...node };
@@ -1328,14 +1331,17 @@ function drawRoundRectangleByNode(board, node) {
1328
1331
  }
1329
1332
  function drawRoundRectangleByElement(board, nodeRectangle, element) {
1330
1333
  const fill = getFillByElement(board, element);
1331
- const stroke = getStrokeByMindElement(board, element);
1334
+ const stroke = getStrokeColorByElement(board, element);
1332
1335
  const strokeWidth = getStrokeWidthByElement(board, element);
1336
+ const strokeStyle = getStrokeStyleByElement(board, element);
1337
+ const strokeLineDash = getStrokeLineDash(strokeStyle, strokeWidth);
1333
1338
  const newNodeRectangle = RectangleClient.inflate(nodeRectangle, -strokeWidth);
1334
1339
  const nodeG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), newNodeRectangle.x, newNodeRectangle.y, newNodeRectangle.x + newNodeRectangle.width, newNodeRectangle.y + newNodeRectangle.height, {
1335
1340
  stroke,
1336
1341
  strokeWidth,
1337
1342
  fill,
1338
- fillStyle: 'solid'
1343
+ fillStyle: 'solid',
1344
+ strokeLineDash
1339
1345
  }, false, DefaultNodeStyle.shape.rectangleRadius);
1340
1346
  return nodeG;
1341
1347
  }
@@ -1475,19 +1481,20 @@ const transformPlacement = (placement, direction) => {
1475
1481
  }
1476
1482
  };
1477
1483
 
1478
- function drawIndentedLink(board, node, child, defaultStroke = null, needDrawUnderline = true, defaultStrokeWidth) {
1479
- const branchShape = getBranchShapeByMindElement(board, node.origin);
1480
- const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, node.origin);
1481
- const branchColor = defaultStroke || node.origin?.branchColor || getBranchColorByMindElement(board, child.origin);
1484
+ function drawIndentedLink(board, parent, child, needDrawUnderline = true, defaultStrokeColor = null, defaultStrokeWidth, defaultStrokeStyle) {
1485
+ const branchShape = getBranchShapeByMindElement(board, parent.origin);
1486
+ const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, child.origin);
1487
+ const branchColor = defaultStrokeColor || getBranchColorByMindElement(board, child.origin);
1488
+ const strokeStyle = defaultStrokeStyle || getStrokeStyleByElement(board, child.origin);
1482
1489
  const isUnderlineShape = getShapeByElement(board, child.origin) === MindElementShape.underline;
1483
- let beginX, beginY, endX, endY, beginNode = node, endNode = child;
1490
+ let beginX, beginY, endX, endY, beginNode = parent, endNode = child;
1484
1491
  const beginRectangle = getRectangleByNode(beginNode);
1485
1492
  const endRectangle = getRectangleByNode(endNode);
1486
1493
  beginX = beginNode.x + beginNode.width / 2;
1487
- beginY = isChildUp(node, child) ? beginRectangle.y : beginRectangle.y + beginRectangle.height;
1488
- endX = node.left ? endNode.x + endNode.hGap + endRectangle.width : endNode.x + endNode.hGap;
1494
+ beginY = isChildUp(parent, child) ? beginRectangle.y : beginRectangle.y + beginRectangle.height;
1495
+ endX = parent.left ? endNode.x + endNode.hGap + endRectangle.width : endNode.x + endNode.hGap;
1489
1496
  endY = isUnderlineShape ? endNode.y + endNode.height - endNode.vGap : endNode.y + endNode.height / 2;
1490
- let plusMinus = isChildUp(node, child) ? (node.left ? [-1, -1] : [1, -1]) : node.left ? [-1, 1] : [1, 1];
1497
+ let plusMinus = isChildUp(parent, child) ? (parent.left ? [-1, -1] : [1, -1]) : parent.left ? [-1, 1] : [1, 1];
1491
1498
  let curve = [
1492
1499
  [beginX, beginY],
1493
1500
  [beginX, beginY],
@@ -1500,6 +1507,7 @@ function drawIndentedLink(board, node, child, defaultStroke = null, needDrawUnde
1500
1507
  isUnderlineShape && needDrawUnderline ? [endX + (endNode.width - endNode.hGap * 2) * plusMinus[0], endY] : [endX, endY],
1501
1508
  isUnderlineShape && needDrawUnderline ? [endX + (endNode.width - endNode.hGap * 2) * plusMinus[0], endY] : [endX, endY]
1502
1509
  ];
1510
+ const strokeLineDash = getStrokeLineDash(strokeStyle, branchWidth);
1503
1511
  if (branchShape === BranchShape.polyline) {
1504
1512
  const polylinePoints = [
1505
1513
  [beginX, beginY],
@@ -1507,16 +1515,17 @@ function drawIndentedLink(board, node, child, defaultStroke = null, needDrawUnde
1507
1515
  [endX, endY],
1508
1516
  isUnderlineShape && needDrawUnderline ? [endX + (endNode.width - endNode.hGap * 2) * plusMinus[0], endY] : [endX, endY]
1509
1517
  ];
1510
- return drawLinearPath(polylinePoints, { stroke: branchColor, strokeWidth: branchWidth });
1518
+ return drawLinearPath(polylinePoints, { stroke: branchColor, strokeWidth: branchWidth, strokeLineDash });
1511
1519
  }
1512
1520
  const points = pointsOnBezierCurves(curve, 0.001);
1513
- return drawBezierPath(points, { stroke: branchColor, strokeWidth: branchWidth });
1521
+ return drawBezierPath(points, { stroke: branchColor, strokeWidth: branchWidth, strokeLineDash });
1514
1522
  }
1515
1523
 
1516
- function drawLogicLink(board, parent, node, isHorizontal, defaultStroke = null, defaultStrokeWidth) {
1524
+ function drawLogicLink(board, parent, node, isHorizontal, defaultStrokeColor = null, defaultStrokeWidth, defaultStrokeStyle) {
1517
1525
  const branchShape = getBranchShapeByMindElement(board, parent.origin);
1518
- const branchColor = defaultStroke || parent.origin?.branchColor || getBranchColorByMindElement(board, node.origin);
1519
- const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, parent.origin);
1526
+ const branchColor = defaultStrokeColor || getBranchColorByMindElement(board, node.origin);
1527
+ const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, node.origin);
1528
+ const strokeStyle = defaultStrokeStyle || getStrokeStyleByElement(board, node.origin);
1520
1529
  const hasStraightLine = branchShape === BranchShape.polyline ? true : !parent.origin.isRoot;
1521
1530
  const parentShape = getShapeByElement(board, parent.origin);
1522
1531
  const shape = getShapeByElement(board, node.origin);
@@ -1557,6 +1566,9 @@ function drawLogicLink(board, parent, node, isHorizontal, defaultStroke = null,
1557
1566
  const underlineEnd = moveXOfPoint(endPoint, nodeClient.width, linkDirection);
1558
1567
  const underline = hasUnderlineShape && isHorizontal ? [underlineEnd, underlineEnd, underlineEnd] : [];
1559
1568
  const points = pointsOnBezierCurves([...straightLine, ...curve, ...underline]);
1569
+ const strokeLineDash = getStrokeLineDash(strokeStyle, branchWidth);
1570
+ console.log(`strokeStyle: ${strokeStyle}, strokeLineDash: `, strokeLineDash);
1571
+ let linkG;
1560
1572
  if (branchShape === BranchShape.polyline) {
1561
1573
  const buffer = 8;
1562
1574
  const movePoint = moveXOfPoint(beginPoint2, buffer, linkDirection);
@@ -1567,15 +1579,21 @@ function drawLogicLink(board, parent, node, isHorizontal, defaultStroke = null,
1567
1579
  endPoint,
1568
1580
  ...underline
1569
1581
  ];
1570
- return drawLinearPath(polylinePoints, { stroke: branchColor, strokeWidth: branchWidth });
1582
+ linkG = drawLinearPath(polylinePoints, { stroke: branchColor, strokeWidth: branchWidth, strokeLineDash });
1571
1583
  }
1572
- return PlaitBoard.getRoughSVG(board).curve(points, { stroke: branchColor, strokeWidth: branchWidth });
1584
+ else {
1585
+ linkG = PlaitBoard.getRoughSVG(board).curve(points, { stroke: branchColor, strokeWidth: branchWidth, strokeLineDash });
1586
+ }
1587
+ if (strokeStyle === StrokeStyle.dotted) {
1588
+ setStrokeLinecap(linkG, 'round');
1589
+ }
1590
+ return linkG;
1573
1591
  }
1574
1592
 
1575
- function drawLink(board, parentNode, node, isHorizontal, needDrawUnderline, defaultStroke, defaultStrokeWidth) {
1593
+ function drawLink(board, parentNode, node, isHorizontal, needDrawUnderline, defaultStrokeColor, defaultStrokeWidth, defaultStrokeStyle) {
1576
1594
  return MindElement.isIndentedLayout(parentNode.origin)
1577
- ? drawIndentedLink(board, parentNode, node, defaultStroke, needDrawUnderline, defaultStrokeWidth)
1578
- : drawLogicLink(board, parentNode, node, isHorizontal, defaultStroke, defaultStrokeWidth);
1595
+ ? drawIndentedLink(board, parentNode, node, needDrawUnderline, defaultStrokeColor, defaultStrokeWidth, defaultStrokeStyle)
1596
+ : drawLogicLink(board, parentNode, node, isHorizontal, defaultStrokeColor, defaultStrokeWidth, defaultStrokeStyle);
1579
1597
  }
1580
1598
 
1581
1599
  const FOREIGN_OBJECT_EMOJI_CLASS_NAME = 'foreign-object-emoji';
@@ -2381,6 +2399,7 @@ function drawAbstractLink(board, node, isHorizontal) {
2381
2399
  const linkPadding = 15;
2382
2400
  const branchWidth = getAbstractBranchWidth(board, node.origin);
2383
2401
  const branchColor = getAbstractBranchColor(board, node.origin);
2402
+ const strokeStyle = getStrokeStyleByElement(board, node.origin);
2384
2403
  const parent = node.parent;
2385
2404
  const branchShape = getBranchShapeByMindElement(board, node.origin);
2386
2405
  const abstractRectangle = getRectangleByNode(node);
@@ -2404,6 +2423,7 @@ function drawAbstractLink(board, node, isHorizontal) {
2404
2423
  bezierEndPoint = moveXOfPoint(bezierEndPoint, linkPadding, linkDirection);
2405
2424
  let c2 = moveXOfPoint(bezierEndPoint, curveDistance, linkDirection);
2406
2425
  let bezierConnectorPoint = moveXOfPoint(abstractConnectorPoint, -linkPadding, linkDirection);
2426
+ const strokeLineDash = getStrokeLineDash(strokeStyle, branchWidth);
2407
2427
  if (branchShape === BranchShape.polyline) {
2408
2428
  const g = createG();
2409
2429
  const polyline = drawLinearPath([bezierBeginPoint, c1, bezierConnectorPoint, c2, bezierEndPoint], {
@@ -2412,7 +2432,8 @@ function drawAbstractLink(board, node, isHorizontal) {
2412
2432
  });
2413
2433
  const straightLine = drawLinearPath([abstractConnectorPoint, bezierConnectorPoint], {
2414
2434
  stroke: branchColor,
2415
- strokeWidth: branchWidth
2435
+ strokeWidth: branchWidth,
2436
+ strokeLineDash
2416
2437
  });
2417
2438
  g.appendChild(polyline);
2418
2439
  g.appendChild(straightLine);
@@ -2420,7 +2441,8 @@ function drawAbstractLink(board, node, isHorizontal) {
2420
2441
  }
2421
2442
  const link = PlaitBoard.getRoughSVG(board).path(`M${bezierBeginPoint[0]},${bezierBeginPoint[1]} Q${c1[0]},${c1[1]} ${bezierConnectorPoint[0]},${bezierConnectorPoint[1]} Q${c2[0]},${c2[1]} ${bezierEndPoint[0]},${bezierEndPoint[1]} M${abstractConnectorPoint[0]},${abstractConnectorPoint[1]} L${bezierConnectorPoint[0]},${bezierConnectorPoint[1]}`, {
2422
2443
  stroke: branchColor,
2423
- strokeWidth: branchWidth
2444
+ strokeWidth: branchWidth,
2445
+ strokeLineDash
2424
2446
  });
2425
2447
  return link;
2426
2448
  }
@@ -4149,5 +4171,5 @@ class MindEmojiBaseComponent {
4149
4171
  * Generated bundle index. Do not edit.
4150
4172
  */
4151
4173
 
4152
- export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BranchShape, DEFAULT_FONT_FAMILY, DEFAULT_MIND_IMAGE_WIDTH, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NodeSpace, NodeTopicThreshold, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, ROOT_TOPIC_WIDTH, STROKE_WIDTH, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, WithMindPluginKey, addActiveOnDragOrigin, addImageFocus, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, findLastChild, findLocationLeftIndex, findNewChildNodePath, findNewSiblingNodePath, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getDefaultMindElementFontSize, getEmojiFontSize, getEmojiForeignRectangle, getEmojiRectangle, getEmojisWidthHeight, getFillByElement, getFirstLevelElement, getFontSizeBySlateElement, getHitAbstractHandle, getHitImageResizeHandleDirection, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutOptions, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNewNodeHeight, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getSelectedMindElements, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, removeActiveOnDragOrigin, removeImageFocus, separateChildren, setMindDragging, withEmoji, withMind, withMindExtend };
4174
+ export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BranchShape, DEFAULT_FONT_FAMILY, DEFAULT_MIND_IMAGE_WIDTH, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NodeSpace, NodeTopicThreshold, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, ROOT_TOPIC_WIDTH, STROKE_WIDTH, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, WithMindPluginKey, addActiveOnDragOrigin, addImageFocus, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, findLastChild, findLocationLeftIndex, findNewChildNodePath, findNewSiblingNodePath, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getDefaultMindElementFontSize, getEmojiFontSize, getEmojiForeignRectangle, getEmojiRectangle, getEmojisWidthHeight, getFillByElement, getFirstLevelElement, getFontSizeBySlateElement, getHitAbstractHandle, getHitImageResizeHandleDirection, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutOptions, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNewNodeHeight, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getSelectedMindElements, getShapeByElement, getStrokeColorByElement, getStrokeStyleByElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, removeActiveOnDragOrigin, removeImageFocus, separateChildren, setMindDragging, withEmoji, withMind, withMindExtend };
4153
4175
  //# sourceMappingURL=plait-mind.mjs.map