@plait/mind 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,21 @@
1
1
  import { getRectangleByNode } from '../position/node';
2
2
  import { PlaitBoard, drawRoundRectangle } from '@plait/core';
3
- import { getStrokeByMindElement } from '../node-style/shape';
3
+ import { getFillByElement, getStrokeByMindElement, getStrokeWidthByElement } from '../node-style/shape';
4
4
  import { DefaultNodeStyle } from '../../constants/node-style';
5
- import { getMindThemeColor } from '../node-style/branch';
6
5
  export function drawRoundRectangleByNode(board, node) {
7
6
  const rectangle = getRectangleByNode(node);
8
7
  return drawRoundRectangleByElement(board, rectangle, node.origin);
9
8
  }
10
9
  export function drawRoundRectangleByElement(board, nodeRectangle, element) {
11
- const defaultRootFill = getMindThemeColor(board).rootFill;
12
- const fill = element.fill ? element.fill : element.isRoot ? defaultRootFill : DefaultNodeStyle.fill;
10
+ const fill = getFillByElement(board, element);
13
11
  const stroke = getStrokeByMindElement(board, element);
14
- const strokeWidth = element.strokeWidth ? element.strokeWidth : DefaultNodeStyle.strokeWidth;
12
+ const strokeWidth = getStrokeWidthByElement(board, element);
15
13
  const nodeG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), nodeRectangle.x, nodeRectangle.y, nodeRectangle.x + nodeRectangle.width, nodeRectangle.y + nodeRectangle.height, {
16
14
  stroke,
17
15
  strokeWidth,
18
16
  fill,
19
17
  fillStyle: 'solid'
20
- });
18
+ }, false, DefaultNodeStyle.shape.rectangleRadius);
21
19
  return nodeG;
22
20
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zaGFwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1zaGFwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBaUIsRUFBRSxJQUFjO0lBQ3RFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sMkJBQTJCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxLQUFpQixFQUFFLGFBQThCLEVBQUUsT0FBb0I7SUFDL0csTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzFELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0lBQ3BHLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7SUFFN0YsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQzVCLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLGFBQWEsQ0FBQyxDQUFDLEVBQ2YsYUFBYSxDQUFDLENBQUMsRUFDZixhQUFhLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQ3JDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFDdEM7UUFDSSxNQUFNO1FBQ04sV0FBVztRQUNYLElBQUk7UUFDSixTQUFTLEVBQUUsT0FBTztLQUNyQixDQUNKLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBSZWN0YW5nbGVDbGllbnQsIGRyYXdSb3VuZFJlY3RhbmdsZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFN0cm9rZUJ5TWluZEVsZW1lbnQgfSBmcm9tICcuLi9ub2RlLXN0eWxlL3NoYXBlJztcbmltcG9ydCB7IERlZmF1bHROb2RlU3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS1zdHlsZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TWluZFRoZW1lQ29sb3IgfSBmcm9tICcuLi9ub2RlLXN0eWxlL2JyYW5jaCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3Um91bmRSZWN0YW5nbGVCeU5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmROb2RlKSB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpO1xuICAgIHJldHVybiBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQoYm9hcmQsIHJlY3RhbmdsZSwgbm9kZS5vcmlnaW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhd1JvdW5kUmVjdGFuZ2xlQnlFbGVtZW50KGJvYXJkOiBQbGFpdEJvYXJkLCBub2RlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3QgZGVmYXVsdFJvb3RGaWxsID0gZ2V0TWluZFRoZW1lQ29sb3IoYm9hcmQpLnJvb3RGaWxsO1xuICAgIGNvbnN0IGZpbGwgPSBlbGVtZW50LmZpbGwgPyBlbGVtZW50LmZpbGwgOiBlbGVtZW50LmlzUm9vdCA/IGRlZmF1bHRSb290RmlsbCA6IERlZmF1bHROb2RlU3R5bGUuZmlsbDtcbiAgICBjb25zdCBzdHJva2UgPSBnZXRTdHJva2VCeU1pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGVsZW1lbnQuc3Ryb2tlV2lkdGggPyBlbGVtZW50LnN0cm9rZVdpZHRoIDogRGVmYXVsdE5vZGVTdHlsZS5zdHJva2VXaWR0aDtcblxuICAgIGNvbnN0IG5vZGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgbm9kZVJlY3RhbmdsZS54LFxuICAgICAgICBub2RlUmVjdGFuZ2xlLnksXG4gICAgICAgIG5vZGVSZWN0YW5nbGUueCArIG5vZGVSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgIG5vZGVSZWN0YW5nbGUueSArIG5vZGVSZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgICBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIGZpbGwsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gbm9kZUc7XG59XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zaGFwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1zaGFwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc5RCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBaUIsRUFBRSxJQUFjO0lBQ3RFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sMkJBQTJCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxLQUFpQixFQUFFLGFBQThCLEVBQUUsT0FBb0I7SUFDL0csTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFNUQsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQzVCLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLGFBQWEsQ0FBQyxDQUFDLEVBQ2YsYUFBYSxDQUFDLENBQUMsRUFDZixhQUFhLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQ3JDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFDdEM7UUFDSSxNQUFNO1FBQ04sV0FBVztRQUNYLElBQUk7UUFDSixTQUFTLEVBQUUsT0FBTztLQUNyQixFQUNELEtBQUssRUFDTCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUN6QyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4uL3Bvc2l0aW9uL25vZGUnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUmVjdGFuZ2xlQ2xpZW50LCBkcmF3Um91bmRSZWN0YW5nbGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRGaWxsQnlFbGVtZW50LCBnZXRTdHJva2VCeU1pbmRFbGVtZW50LCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL25vZGUtc3R5bGUvc2hhcGUnO1xuaW1wb3J0IHsgRGVmYXVsdE5vZGVTdHlsZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3Um91bmRSZWN0YW5nbGVCeU5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmROb2RlKSB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpO1xuICAgIHJldHVybiBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQoYm9hcmQsIHJlY3RhbmdsZSwgbm9kZS5vcmlnaW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhd1JvdW5kUmVjdGFuZ2xlQnlFbGVtZW50KGJvYXJkOiBQbGFpdEJvYXJkLCBub2RlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZSA9IGdldFN0cm9rZUJ5TWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuXG4gICAgY29uc3Qgbm9kZUcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLFxuICAgICAgICBub2RlUmVjdGFuZ2xlLngsXG4gICAgICAgIG5vZGVSZWN0YW5nbGUueSxcbiAgICAgICAgbm9kZVJlY3RhbmdsZS54ICsgbm9kZVJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgbm9kZVJlY3RhbmdsZS55ICsgbm9kZVJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgZmlsbCxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5yZWN0YW5nbGVSYWRpdXNcbiAgICApO1xuXG4gICAgcmV0dXJuIG5vZGVHO1xufVxuIl19
@@ -28,13 +28,13 @@ export const getAbstractBranchWidth = (board, element) => {
28
28
  if (!isNullOrUndefined(element.branchWidth)) {
29
29
  return element.branchWidth;
30
30
  }
31
- return DefaultAbstractNodeStyle.branchWidth;
31
+ return DefaultAbstractNodeStyle.branch.width;
32
32
  };
33
33
  export const getAbstractBranchColor = (board, element) => {
34
34
  if (element.branchColor) {
35
35
  return element.branchColor;
36
36
  }
37
- return DefaultAbstractNodeStyle.branchColor;
37
+ return DefaultAbstractNodeStyle.branch.color;
38
38
  };
39
39
  export const getNextBranchColor = (board, root) => {
40
40
  const index = root.children.length;
@@ -60,4 +60,4 @@ export const getMindThemeColor = (board) => {
60
60
  return MindDefaultThemeColor;
61
61
  }
62
62
  };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUNuRixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZFLE9BQU8sc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2pEO0lBRUQsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RSxPQUFPLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcs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dGMuIG9mIHRoZSBtaW5kIG5vZGVcbiAqL1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBCcmFuY2hTaGFwZSwgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgQlJBTkNIX1dJRFRIIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2RlZmF1bHQnO1xuaW1wb3J0IHsgRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vZGUtc3R5bGUnO1xuaW1wb3J0IHsgZ2V0QXZhaWxhYmxlUHJvcGVydHkgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBNaW5kRGVmYXVsdFRoZW1lQ29sb3IsIE1pbmRUaGVtZUNvbG9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aGVtZS1jb2xvcic7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc0NoaWxkT2ZBYnN0cmFjdCB9IGZyb20gJy4uL2Fic3RyYWN0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpIHx8IGlzQ2hpbGRPZkFic3RyYWN0KGJvYXJkLCBlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gZ2V0QWJzdHJhY3RCcmFuY2hDb2xvcihib2FyZCwgZWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgYnJhbmNoQ29sb3IgPSBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ2JyYW5jaENvbG9yJyk7XG4gICAgcmV0dXJuIGJyYW5jaENvbG9yIHx8IGdldERlZmF1bHRCcmFuY2hDb2xvcihib2FyZCwgZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoU2hhcGVCeU1pbmRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGJyYW5jaFNoYXBlID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdicmFuY2hTaGFwZScpO1xuICAgIHJldHVybiBicmFuY2hTaGFwZSB8fCBCcmFuY2hTaGFwZS5iaWdodDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYnJhbmNoV2lkdGggPSBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ2JyYW5jaFdpZHRoJyk7XG4gICAgcmV0dXJuIGJyYW5jaFdpZHRoIHx8IEJSQU5DSF9XSURUSDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBYnN0cmFjdEJyYW5jaFdpZHRoID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZWxlbWVudC5icmFuY2hXaWR0aCkpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuYnJhbmNoV2lkdGg7XG4gICAgfVxuICAgIHJldHVybiBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUuYnJhbmNoV2lkdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWJzdHJhY3RCcmFuY2hDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBpZiAoZWxlbWVudC5icmFuY2hDb2xvcikge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5icmFuY2hDb2xvcjtcbiAgICB9XG4gICAgcmV0dXJuIERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2hDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXROZXh0QnJhbmNoQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJvb3Q6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSByb290LmNoaWxkcmVuLmxlbmd0aDtcbiAgICByZXR1cm4gZ2V0RGVmYXVsdEJyYW5jaENvbG9yQnlJbmRleChib2FyZCwgaW5kZXgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRCcmFuY2hDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXgoYm9hcmQsIHBhdGhbMV0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB0aGVtZUNvbG9yID0gZ2V0TWluZFRoZW1lQ29sb3IoYm9hcmQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoZW1lQ29sb3IuYnJhbmNoQ29sb3JzLmxlbmd0aDtcbiAgICBjb25zdCByZW1haW5kZXIgPSBpbmRleCAlIGxlbmd0aDtcbiAgICByZXR1cm4gdGhlbWVDb2xvci5icmFuY2hDb2xvcnNbcmVtYWluZGVyXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5kVGhlbWVDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHRoZW1lQ29sb3JzID0gUGxhaXRCb2FyZC5nZXRUaGVtZUNvbG9ycyhib2FyZCk7XG4gICAgY29uc3QgdGhlbWVDb2xvciA9IHRoZW1lQ29sb3JzLmZpbmQodmFsID0+IHZhbC5tb2RlID09PSBib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZSk7XG4gICAgaWYgKHRoZW1lQ29sb3IgJiYgTWluZFRoZW1lQ29sb3IuaXNNaW5kVGhlbWVDb2xvcih0aGVtZUNvbG9yKSkge1xuICAgICAgICByZXR1cm4gdGhlbWVDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTWluZERlZmF1bHRUaGVtZUNvbG9yXG4gICAgfVxufTtcbiJdfQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUNuRixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZFLE9BQU8sc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2pEO0lBRUQsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RSxPQUFPLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcs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bG9yLCB3aWR0aCwgc3R5bGUsIGV0Yy4gb2YgdGhlIG1pbmQgbm9kZVxuICovXG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEJyYW5jaFNoYXBlLCBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBCUkFOQ0hfV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZGVmYXVsdCc7XG5pbXBvcnQgeyBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS1zdHlsZSc7XG5pbXBvcnQgeyBnZXRBdmFpbGFibGVQcm9wZXJ0eSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IE1pbmREZWZhdWx0VGhlbWVDb2xvciwgTWluZFRoZW1lQ29sb3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RoZW1lLWNvbG9yJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzQ2hpbGRPZkFic3RyYWN0IH0gZnJvbSAnLi4vYWJzdHJhY3QvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgfHwgaXNDaGlsZE9mQWJzdHJhY3QoYm9hcmQsIGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBnZXRBYnN0cmFjdEJyYW5jaENvbG9yKGJvYXJkLCBlbGVtZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBicmFuY2hDb2xvciA9IGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnYnJhbmNoQ29sb3InKTtcbiAgICByZXR1cm4gYnJhbmNoQ29sb3IgfHwgZ2V0RGVmYXVsdEJyYW5jaENvbG9yKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYnJhbmNoU2hhcGUgPSBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ2JyYW5jaFNoYXBlJyk7XG4gICAgcmV0dXJuIGJyYW5jaFNoYXBlIHx8IEJyYW5jaFNoYXBlLmJpZ2h0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBicmFuY2hXaWR0aCA9IGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnYnJhbmNoV2lkdGgnKTtcbiAgICByZXR1cm4gYnJhbmNoV2lkdGggfHwgQlJBTkNIX1dJRFRIO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFic3RyYWN0QnJhbmNoV2lkdGggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChlbGVtZW50LmJyYW5jaFdpZHRoKSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5icmFuY2hXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2gud2lkdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWJzdHJhY3RCcmFuY2hDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBpZiAoZWxlbWVudC5icmFuY2hDb2xvcikge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5icmFuY2hDb2xvcjtcbiAgICB9XG4gICAgcmV0dXJuIERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2guY29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmV4dEJyYW5jaENvbG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCByb290OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gcm9vdC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgcmV0dXJuIGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXgoYm9hcmQsIGluZGV4KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0QnJhbmNoQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIHJldHVybiBnZXREZWZhdWx0QnJhbmNoQ29sb3JCeUluZGV4KGJvYXJkLCBwYXRoWzFdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0QnJhbmNoQ29sb3JCeUluZGV4ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdGhlbWVDb2xvciA9IGdldE1pbmRUaGVtZUNvbG9yKGJvYXJkKTtcbiAgICBjb25zdCBsZW5ndGggPSB0aGVtZUNvbG9yLmJyYW5jaENvbG9ycy5sZW5ndGg7XG4gICAgY29uc3QgcmVtYWluZGVyID0gaW5kZXggJSBsZW5ndGg7XG4gICAgcmV0dXJuIHRoZW1lQ29sb3IuYnJhbmNoQ29sb3JzW3JlbWFpbmRlcl07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluZFRoZW1lQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB0aGVtZUNvbG9ycyA9IFBsYWl0Qm9hcmQuZ2V0VGhlbWVDb2xvcnMoYm9hcmQpO1xuICAgIGNvbnN0IHRoZW1lQ29sb3IgPSB0aGVtZUNvbG9ycy5maW5kKHZhbCA9PiB2YWwubW9kZSA9PT0gYm9hcmQudGhlbWUudGhlbWVDb2xvck1vZGUpO1xuICAgIGlmICh0aGVtZUNvbG9yICYmIE1pbmRUaGVtZUNvbG9yLmlzTWluZFRoZW1lQ29sb3IodGhlbWVDb2xvcikpIHtcbiAgICAgICAgcmV0dXJuIHRoZW1lQ29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE1pbmREZWZhdWx0VGhlbWVDb2xvcjtcbiAgICB9XG59O1xuIl19
@@ -3,20 +3,31 @@ import { getAvailableProperty } from './common';
3
3
  import { getDefaultBranchColor, getMindThemeColor } from './branch';
4
4
  import { AbstractNode } from '@plait/layouts';
5
5
  import { isChildOfAbstract } from '../abstract/common';
6
- import { DefaultAbstractNodeStyle } from '../../constants/node-style';
6
+ import { DefaultAbstractNodeStyle, DefaultNodeStyle } from '../../constants/node-style';
7
7
  export const getStrokeByMindElement = (board, element) => {
8
8
  if (PlaitMind.isMind(element)) {
9
9
  const defaultRootStroke = getMindThemeColor(board).rootFill;
10
10
  return element.strokeColor || defaultRootStroke;
11
11
  }
12
12
  if (AbstractNode.isAbstract(element) || isChildOfAbstract(board, element)) {
13
- return element.strokeColor || DefaultAbstractNodeStyle.strokeColor;
14
- ;
13
+ return element.strokeColor || DefaultAbstractNodeStyle.shape.strokeColor;
15
14
  }
16
15
  return getAvailableProperty(board, element, 'strokeColor') || getDefaultBranchColor(board, element);
17
16
  };
17
+ export const getStrokeWidthByElement = (board, element) => {
18
+ const strokeWidth = element.strokeWidth ||
19
+ (AbstractNode.isAbstract(element) ? DefaultAbstractNodeStyle.shape.strokeWidth : DefaultNodeStyle.shape.strokeWidth);
20
+ return strokeWidth;
21
+ };
22
+ export const getFillByElement = (board, element) => {
23
+ if (element.fill) {
24
+ return element.fill;
25
+ }
26
+ const defaultRootFill = getMindThemeColor(board).rootFill;
27
+ return element.isRoot ? defaultRootFill : DefaultNodeStyle.shape.fill;
28
+ };
18
29
  export const getShapeByElement = (board, element) => {
19
30
  const shape = getAvailableProperty(board, element, 'shape');
20
31
  return shape || MindElementShape.roundRectangle;
21
32
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlLXN0eWxlL3NoYXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQzlFLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1RCxPQUFPLE9BQU8sQ0FBQyxXQUFXLElBQUksaUJBQWlCLENBQUM7S0FDbkQ7SUFFRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLFdBQVcsSUFBSSx3QkFBd0IsQ0FBQyxXQUFXLENBQUM7UUFBQSxDQUFDO0tBQ3ZFO0lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBb0IsRUFBRTtJQUMzRixNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELE9BQU8sS0FBSyxJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztBQUNwRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIE1pbmRFbGVtZW50U2hhcGUsIFBsYWl0TWluZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRBdmFpbGFibGVQcm9wZXJ0eSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IGdldERlZmF1bHRCcmFuY2hDb2xvciwgZ2V0TWluZFRoZW1lQ29sb3IgfSBmcm9tICcuL2JyYW5jaCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc0NoaWxkT2ZBYnN0cmFjdCB9IGZyb20gJy4uL2Fic3RyYWN0L2NvbW1vbic7XG5pbXBvcnQgeyBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS1zdHlsZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VCeU1pbmRFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSb290U3Ryb2tlID0gZ2V0TWluZFRoZW1lQ29sb3IoYm9hcmQpLnJvb3RGaWxsO1xuICAgICAgICByZXR1cm4gZWxlbWVudC5zdHJva2VDb2xvciB8fCBkZWZhdWx0Um9vdFN0cm9rZTtcbiAgICB9XG5cbiAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgfHwgaXNDaGlsZE9mQWJzdHJhY3QoYm9hcmQsIGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnN0cm9rZUNvbG9yIHx8IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5zdHJva2VDb2xvcjs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnc3Ryb2tlQ29sb3InKSB8fCBnZXREZWZhdWx0QnJhbmNoQ29sb3IoYm9hcmQsIGVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNoYXBlQnlFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCk6IE1pbmRFbGVtZW50U2hhcGUgPT4ge1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdzaGFwZScpO1xuICAgIHJldHVybiBzaGFwZSB8fCBNaW5kRWxlbWVudFNoYXBlLnJvdW5kUmVjdGFuZ2xlO1xufTtcbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlLXN0eWxlL3NoYXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQzlFLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1RCxPQUFPLE9BQU8sQ0FBQyxXQUFXLElBQUksaUJBQWlCLENBQUM7S0FDbkQ7SUFFRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLFdBQVcsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQy9FLE1BQU0sV0FBVyxHQUNiLE9BQU8sQ0FBQyxXQUFXO1FBQ25CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pILE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1FBQ2QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDO0tBQ3ZCO0lBQ0QsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzFELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzFFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFvQixFQUFFO0lBQzNGLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsT0FBTyxLQUFLLElBQUksZ0JBQWdCLENBQUMsY0FBYyxDQUFDO0FBQ3BELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgTWluZEVsZW1lbnRTaGFwZSwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IGdldEF2YWlsYWJsZVByb3BlcnR5IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEJyYW5jaENvbG9yLCBnZXRNaW5kVGhlbWVDb2xvciB9IGZyb20gJy4vYnJhbmNoJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzQ2hpbGRPZkFic3RyYWN0IH0gZnJvbSAnLi4vYWJzdHJhY3QvY29tbW9uJztcbmltcG9ydCB7IERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZSwgRGVmYXVsdE5vZGVTdHlsZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcblxuZXhwb3J0IGNvbnN0IGdldFN0cm9rZUJ5TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJvb3RTdHJva2UgPSBnZXRNaW5kVGhlbWVDb2xvcihib2FyZCkucm9vdEZpbGw7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnN0cm9rZUNvbG9yIHx8IGRlZmF1bHRSb290U3Ryb2tlO1xuICAgIH1cblxuICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSB8fCBpc0NoaWxkT2ZBYnN0cmFjdChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuc3Ryb2tlQ29sb3IgfHwgRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLnNoYXBlLnN0cm9rZUNvbG9yO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ3N0cm9rZUNvbG9yJykgfHwgZ2V0RGVmYXVsdEJyYW5jaENvbG9yKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9XG4gICAgICAgIGVsZW1lbnQuc3Ryb2tlV2lkdGggfHxcbiAgICAgICAgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpID8gRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLnNoYXBlLnN0cm9rZVdpZHRoIDogRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5zdHJva2VXaWR0aCk7XG4gICAgcmV0dXJuIHN0cm9rZVdpZHRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGxCeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKGVsZW1lbnQuZmlsbCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5maWxsO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0Um9vdEZpbGwgPSBnZXRNaW5kVGhlbWVDb2xvcihib2FyZCkucm9vdEZpbGw7XG4gICAgcmV0dXJuIGVsZW1lbnQuaXNSb290ID8gZGVmYXVsdFJvb3RGaWxsIDogRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5maWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNoYXBlQnlFbGVtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCk6IE1pbmRFbGVtZW50U2hhcGUgPT4ge1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0QXZhaWxhYmxlUHJvcGVydHkoYm9hcmQsIGVsZW1lbnQsICdzaGFwZScpO1xuICAgIHJldHVybiBzaGFwZSB8fCBNaW5kRWxlbWVudFNoYXBlLnJvdW5kUmVjdGFuZ2xlO1xufTtcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Input, Component, ChangeDetectionStrategy, NgModule, NgZone, HostListener } from '@angular/core';
3
3
  import * as i2 from '@plait/core';
4
- import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitNode, Path, PlaitBoard, depthFirstRecursion, drawLinearPath, drawBezierPath, createG, updateForeignObject, drawRoundRectangle, getRectangleByElements, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, drawAbstractRoundRectangle, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, isMainPointer, BOARD_TO_HOST, PlaitPluginKey, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys } from '@plait/core';
4
+ import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, RectangleClient, PlaitElement, idCreator, isNullOrUndefined, Transforms, clearSelectedElement, addSelectedElement, PlaitNode, Path, PlaitBoard, depthFirstRecursion, drawLinearPath, drawBezierPath, createG, updateForeignObject, drawRoundRectangle, getRectangleByElements, getSelectedElements, NODE_TO_PARENT, distanceBetweenPointAndRectangle, createForeignObject, createText, PlaitPointerType, PlaitPluginElementComponent, NODE_TO_INDEX, PlaitModule, transformPoint, toPoint, getHitElements, distanceBetweenPointAndPoint, CLIP_BOARD_FORMAT_KEY, isMainPointer, BOARD_TO_HOST, PlaitPluginKey, throttleRAF, BoardTransforms, removeSelectedElement, PlaitHistoryBoard, hotkeys } from '@plait/core';
5
5
  import { MindLayoutType, isIndentedLayout, AbstractNode, getNonAbstractChildren, isStandardLayout, isLeftLayout, isRightLayout, isVerticalLogicLayout, isHorizontalLogicLayout, isTopLayout, isBottomLayout, isHorizontalLayout, getCorrectStartEnd, getAbstractLayout, ConnectingPosition, GlobalLayout } from '@plait/layouts';
6
6
  import { TEXT_DEFAULT_HEIGHT, buildText, getTextSize, TextManage, ExitOrigin, TextModule, getTextFromClipboard } from '@plait/text';
7
7
  import { fromEvent, Subject } from 'rxjs';
@@ -626,15 +626,21 @@ const adjustNodeToRoot = (board, node) => {
626
626
  };
627
627
 
628
628
  const DefaultAbstractNodeStyle = {
629
- strokeColor: GRAY_COLOR,
630
- strokeWidth: 2,
631
- branchColor: GRAY_COLOR,
632
- branchWidth: 2
629
+ branch: { color: GRAY_COLOR, width: 2 },
630
+ shape: {
631
+ strokeColor: GRAY_COLOR,
632
+ strokeWidth: 2
633
+ }
633
634
  };
634
635
  const DefaultNodeStyle = {
635
- strokeWidth: 3,
636
- branchWidth: 3,
637
- fill: 'none'
636
+ branch: {
637
+ width: 3
638
+ },
639
+ shape: {
640
+ rectangleRadius: 4,
641
+ strokeWidth: 3,
642
+ fill: 'none'
643
+ }
638
644
  };
639
645
 
640
646
  const getAvailableProperty = (board, element, propertyKey) => {
@@ -830,13 +836,13 @@ const getAbstractBranchWidth = (board, element) => {
830
836
  if (!isNullOrUndefined(element.branchWidth)) {
831
837
  return element.branchWidth;
832
838
  }
833
- return DefaultAbstractNodeStyle.branchWidth;
839
+ return DefaultAbstractNodeStyle.branch.width;
834
840
  };
835
841
  const getAbstractBranchColor = (board, element) => {
836
842
  if (element.branchColor) {
837
843
  return element.branchColor;
838
844
  }
839
- return DefaultAbstractNodeStyle.branchColor;
845
+ return DefaultAbstractNodeStyle.branch.color;
840
846
  };
841
847
  const getNextBranchColor = (board, root) => {
842
848
  const index = root.children.length;
@@ -869,11 +875,22 @@ const getStrokeByMindElement = (board, element) => {
869
875
  return element.strokeColor || defaultRootStroke;
870
876
  }
871
877
  if (AbstractNode.isAbstract(element) || isChildOfAbstract(board, element)) {
872
- return element.strokeColor || DefaultAbstractNodeStyle.strokeColor;
873
- ;
878
+ return element.strokeColor || DefaultAbstractNodeStyle.shape.strokeColor;
874
879
  }
875
880
  return getAvailableProperty(board, element, 'strokeColor') || getDefaultBranchColor(board, element);
876
881
  };
882
+ const getStrokeWidthByElement = (board, element) => {
883
+ const strokeWidth = element.strokeWidth ||
884
+ (AbstractNode.isAbstract(element) ? DefaultAbstractNodeStyle.shape.strokeWidth : DefaultNodeStyle.shape.strokeWidth);
885
+ return strokeWidth;
886
+ };
887
+ const getFillByElement = (board, element) => {
888
+ if (element.fill) {
889
+ return element.fill;
890
+ }
891
+ const defaultRootFill = getMindThemeColor(board).rootFill;
892
+ return element.isRoot ? defaultRootFill : DefaultNodeStyle.shape.fill;
893
+ };
877
894
  const getShapeByElement = (board, element) => {
878
895
  const shape = getAvailableProperty(board, element, 'shape');
879
896
  return shape || MindElementShape.roundRectangle;
@@ -1314,7 +1331,7 @@ function drawLogicLink(board, parent, node, isHorizontal, defaultStroke = null,
1314
1331
  const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, parent.origin);
1315
1332
  const hasStraightLine = branchShape === BranchShape.polyline ? true : !parent.origin.isRoot;
1316
1333
  const parentShape = getShapeByElement(board, parent.origin);
1317
- const shape = node.origin.shape ? node.origin.shape : parentShape;
1334
+ const shape = getShapeByElement(board, node.origin);
1318
1335
  const hasUnderlineShape = shape === MindElementShape.underline;
1319
1336
  const hasUnderlineShapeOfParent = parentShape === MindElementShape.underline;
1320
1337
  const nodeClient = getRectangleByNode(node);
@@ -1979,16 +1996,15 @@ function drawRoundRectangleByNode(board, node) {
1979
1996
  return drawRoundRectangleByElement(board, rectangle, node.origin);
1980
1997
  }
1981
1998
  function drawRoundRectangleByElement(board, nodeRectangle, element) {
1982
- const defaultRootFill = getMindThemeColor(board).rootFill;
1983
- const fill = element.fill ? element.fill : element.isRoot ? defaultRootFill : DefaultNodeStyle.fill;
1999
+ const fill = getFillByElement(board, element);
1984
2000
  const stroke = getStrokeByMindElement(board, element);
1985
- const strokeWidth = element.strokeWidth ? element.strokeWidth : DefaultNodeStyle.strokeWidth;
2001
+ const strokeWidth = getStrokeWidthByElement(board, element);
1986
2002
  const nodeG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), nodeRectangle.x, nodeRectangle.y, nodeRectangle.x + nodeRectangle.width, nodeRectangle.y + nodeRectangle.height, {
1987
2003
  stroke,
1988
2004
  strokeWidth,
1989
2005
  fill,
1990
2006
  fillStyle: 'solid'
1991
- });
2007
+ }, false, DefaultNodeStyle.shape.rectangleRadius);
1992
2008
  return nodeG;
1993
2009
  }
1994
2010
 
@@ -2161,8 +2177,8 @@ const setAbstractByElements = (board, groupParent, group) => {
2161
2177
  };
2162
2178
  const insertAbstractNode = (board, path, start, end) => {
2163
2179
  const mindElement = createMindElement('概要', 28, 20, {
2164
- strokeWidth: DefaultAbstractNodeStyle.branchWidth,
2165
- branchWidth: DefaultAbstractNodeStyle.branchWidth
2180
+ strokeWidth: DefaultAbstractNodeStyle.branch.width,
2181
+ branchWidth: DefaultAbstractNodeStyle.branch.width
2166
2182
  });
2167
2183
  mindElement.start = start;
2168
2184
  mindElement.end = end;
@@ -2500,6 +2516,48 @@ function handleBoardClass(board, activeHandlePosition, isHorizontal) {
2500
2516
  PlaitBoard.getBoardContainer(board).classList.remove('abstract-resizing-vertical');
2501
2517
  }
2502
2518
  }
2519
+ function drawAbstractRoundRectangle(rs, x1, y1, x2, y2, isHorizontal, options) {
2520
+ const width = Math.abs(x1 - x2);
2521
+ const height = Math.abs(y1 - y2);
2522
+ const radius = 5;
2523
+ const handleGap = 4;
2524
+ const handleLength = 10;
2525
+ const handleSpace = handleLength + handleGap * 2;
2526
+ if (isHorizontal) {
2527
+ const handleSideLine = (width - handleSpace - radius * 2) / 2;
2528
+ const sideLine = height - radius * 2;
2529
+ return rs.path(`M${x1 + radius},${y1}
2530
+ l${handleSideLine},0
2531
+ m${handleSpace},0
2532
+ l${handleSideLine},0
2533
+ a${radius},${radius},0,0,1,${radius},${radius}
2534
+ l0,${sideLine}
2535
+ a${radius},${radius},0,0,1,-${radius},${radius}
2536
+ l-${handleSideLine},0
2537
+ m-${handleSpace},0
2538
+ l-${handleSideLine},0
2539
+ a${radius},${radius},0,0,1,-${radius},-${radius}
2540
+ l0,-${sideLine}
2541
+ a${radius},${radius},0,0,1,${radius},-${radius}`, options);
2542
+ }
2543
+ else {
2544
+ const handleSideLine = (height - handleSpace - radius * 2) / 2;
2545
+ const sideLine = width - radius * 2;
2546
+ return rs.path(`M${x1 + radius},${y1}
2547
+ l${sideLine},0
2548
+ a${radius},${radius},0,0,1,${radius},${radius}
2549
+ l0,${handleSideLine}
2550
+ m0,${handleSpace}
2551
+ l0,${handleSideLine}
2552
+ a${radius},${radius},0,0,1,-${radius},${radius}
2553
+ l-${sideLine},0
2554
+ a${radius},${radius},0,0,1,-${radius},-${radius}
2555
+ l0,-${handleSideLine}
2556
+ m0,-${handleSpace}
2557
+ l0,-${handleSideLine}
2558
+ a${radius},${radius},0,0,1,${radius},-${radius}`, options);
2559
+ }
2560
+ }
2503
2561
 
2504
2562
  class NodeActiveDrawer extends BaseDrawer {
2505
2563
  canDraw(element, data) {
@@ -2518,14 +2576,13 @@ class NodeActiveDrawer extends BaseDrawer {
2518
2576
  activeG.append(this.abstractOutlineG);
2519
2577
  }
2520
2578
  const node = MindElement.getNode(element);
2521
- let { x, y, width, height } = getRectangleByNode(node);
2522
- const strokeG = drawRoundRectangle(PlaitBoard.getRoughSVG(this.board), x - 2, y - 2, x + width + 2, y + height + 2, { stroke: PRIMARY_COLOR, strokeWidth: 2, fill: '' }, true);
2579
+ const rectangle = getRectangleByNode(node);
2580
+ const activeStrokeWidth = 2;
2581
+ // add 0.1 to avoid white gap
2582
+ const offset = (getStrokeWidthByElement(this.board, element) + activeStrokeWidth) / 2 - 0.1;
2583
+ const activeRectangle = RectangleClient.getOutlineRectangle(rectangle, -offset);
2584
+ const strokeG = drawRoundRectangle(PlaitBoard.getRoughSVG(this.board), activeRectangle.x, activeRectangle.y, activeRectangle.x + activeRectangle.width, activeRectangle.y + activeRectangle.height, { stroke: PRIMARY_COLOR, strokeWidth: activeStrokeWidth, fill: '' }, true, DefaultNodeStyle.shape.rectangleRadius + offset);
2523
2585
  this.g.appendChild(strokeG);
2524
- if (!data.isEditing) {
2525
- const fillG = drawRoundRectangle(PlaitBoard.getRoughSVG(this.board), x - 2, y - 2, x + width + 2, y + height + 2, { stroke: PRIMARY_COLOR, fill: PRIMARY_COLOR, fillStyle: 'solid' }, true);
2526
- fillG.style.opacity = '0.15';
2527
- this.g.appendChild(fillG);
2528
- }
2529
2586
  return activeG;
2530
2587
  }
2531
2588
  updateAbstractOutline(element, activeHandlePosition, resizingLocation) {
@@ -3765,15 +3822,9 @@ const withMind = (board) => {
3765
3822
  board.applyTheme = (element) => {
3766
3823
  const mindElement = element;
3767
3824
  const shouldClearProperty = !PlaitBoard.isBoard(element) && ((mindElement === null || mindElement === void 0 ? void 0 : mindElement.branchColor) || (mindElement === null || mindElement === void 0 ? void 0 : mindElement.fill) || (mindElement === null || mindElement === void 0 ? void 0 : mindElement.strokeColor));
3768
- const isAbstract = AbstractNode.isAbstract(element);
3769
3825
  if (shouldClearProperty) {
3770
3826
  const path = PlaitBoard.findPath(board, element);
3771
- if (isAbstract) {
3772
- Transforms.setNode(board, { fill: null, strokeColor: DefaultAbstractNodeStyle.strokeColor, branchColor: DefaultAbstractNodeStyle.branchColor }, path);
3773
- }
3774
- else {
3775
- Transforms.setNode(board, { fill: null, strokeColor: null, branchColor: null }, path);
3776
- }
3827
+ Transforms.setNode(board, { fill: null, strokeColor: null, branchColor: null }, path);
3777
3828
  }
3778
3829
  };
3779
3830
  board.getRectangle = element => {
@@ -3922,5 +3973,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
3922
3973
  * Generated bundle index. Do not edit.
3923
3974
  */
3924
3975
 
3925
- export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BaseDrawer, BranchShape, DEFAULT_FONT_FAMILY, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindImageBaseComponent, MindModule, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NODE_MIN_WIDTH, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, TRANSPARENT, WithMindPluginKey, addActiveOnDragOrigin, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, extractNodesText, findLastChild, findLocationLeftIndex, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getEmojiForeignRectangle, getEmojiRectangle, getFirstLevelElement, getHitAbstractHandle, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getShapeByElement, getStrokeByMindElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasAfterDraw, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, isVirtualKey, removeActiveOnDragOrigin, separateChildren, setIsDragging, withMind, withMindExtend };
3976
+ export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BaseDrawer, BranchShape, DEFAULT_FONT_FAMILY, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindImageBaseComponent, MindModule, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NODE_MIN_WIDTH, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, TRANSPARENT, WithMindPluginKey, addActiveOnDragOrigin, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, extractNodesText, findLastChild, findLocationLeftIndex, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getEmojiForeignRectangle, getEmojiRectangle, getFillByElement, getFirstLevelElement, getHitAbstractHandle, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasAfterDraw, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, isVirtualKey, removeActiveOnDragOrigin, separateChildren, setIsDragging, withMind, withMindExtend };
3926
3977
  //# sourceMappingURL=plait-mind.mjs.map