@plait/mind 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/drawer/{emoji.drawer.d.ts → emojis.drawer.d.ts} +2 -1
- package/esm2020/base/emoji-base.component.mjs +3 -3
- package/esm2020/drawer/emojis.drawer.mjs +73 -0
- package/esm2020/interfaces/element.mjs +6 -1
- package/esm2020/mind.component.mjs +3 -3
- package/esm2020/mind.module.mjs +4 -4
- package/esm2020/node.component.mjs +11 -15
- package/esm2020/plugins/with-abstract-resize.mjs +6 -2
- package/esm2020/plugins/with-mind-create.mjs +5 -4
- package/esm2020/plugins/with-mind.mjs +9 -4
- package/esm2020/plugins/with-node-dnd.mjs +13 -12
- package/esm2020/transforms/index.mjs +4 -3
- package/esm2020/transforms/node.mjs +11 -8
- package/esm2020/utils/dnd/common.mjs +29 -1
- package/esm2020/utils/dnd/detector.mjs +1 -7
- package/esm2020/utils/draw/abstract-outline.mjs +75 -0
- package/esm2020/utils/draw/node-dnd.mjs +133 -0
- package/esm2020/utils/draw/node-link/abstract-link.mjs +54 -0
- package/esm2020/utils/draw/node-link/draw-link.mjs +9 -0
- package/esm2020/utils/draw/node-link/indented-link.mjs +54 -0
- package/esm2020/utils/draw/node-link/logic-link.mjs +67 -0
- package/esm2020/utils/draw/node-shape.mjs +21 -0
- package/esm2020/utils/draw/node-topic.mjs +32 -0
- package/esm2020/utils/index.mjs +4 -2
- package/esm2020/utils/mind.mjs +2 -27
- package/esm2020/utils/node/common.mjs +6 -0
- package/esm2020/utils/node/index.mjs +4 -0
- package/esm2020/utils/node/right-node-count.mjs +45 -0
- package/esm2020/utils/node-style/branch.mjs +6 -1
- package/fesm2015/plait-mind.mjs +985 -911
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +1005 -931
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/interfaces/element.d.ts +5 -0
- package/node.component.d.ts +1 -1
- package/package.json +1 -1
- package/transforms/index.d.ts +1 -0
- package/transforms/node.d.ts +2 -0
- package/utils/dnd/common.d.ts +5 -1
- package/utils/dnd/detector.d.ts +0 -6
- package/{draw/abstract.d.ts → utils/draw/abstract-outline.d.ts} +2 -2
- package/utils/{dnd/draw.d.ts → draw/node-dnd.d.ts} +1 -5
- package/{draw/link → utils/draw/node-link}/abstract-link.d.ts +1 -1
- package/utils/draw/node-link/draw-link.d.ts +3 -0
- package/{draw → utils/draw/node-link}/indented-link.d.ts +1 -1
- package/utils/draw/node-link/logic-link.d.ts +3 -0
- package/{draw/node.d.ts → utils/draw/node-shape.d.ts} +2 -2
- package/{draw/topic.d.ts → utils/draw/node-topic.d.ts} +3 -3
- package/utils/index.d.ts +3 -1
- package/utils/mind.d.ts +0 -2
- package/utils/{node.d.ts → node/common.d.ts} +1 -1
- package/utils/node/index.d.ts +3 -0
- package/utils/node/right-node-count.d.ts +9 -0
- package/utils/node-style/branch.d.ts +1 -0
- package/draw/link/logic-link.d.ts +0 -3
- package/esm2020/draw/abstract.mjs +0 -75
- package/esm2020/draw/indented-link.mjs +0 -45
- package/esm2020/draw/link/abstract-link.mjs +0 -38
- package/esm2020/draw/link/logic-link.mjs +0 -54
- package/esm2020/draw/node.mjs +0 -21
- package/esm2020/draw/topic.mjs +0 -32
- package/esm2020/drawer/emoji.drawer.mjs +0 -73
- package/esm2020/utils/dnd/draw.mjs +0 -161
- package/esm2020/utils/node.mjs +0 -6
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { PlaitBoard, createG, drawLinearPath, getRectangleByElements } from '@plait/core';
|
|
2
|
+
import { getRectangleByNode } from '../../position/node';
|
|
3
|
+
import { HorizontalPlacement, VerticalPlacement } from '../../../interfaces/types';
|
|
4
|
+
import { getLayoutDirection, getPointByPlacement, getXDistanceBetweenPoint, moveXOfPoint, transformPlacement } from '../../point-placement';
|
|
5
|
+
import { getAbstractBranchColor, getAbstractBranchWidth, getBranchShapeByMindElement } from '../../node-style/branch';
|
|
6
|
+
import { BranchShape } from '../../../interfaces/element';
|
|
7
|
+
export function drawAbstractLink(board, node, isHorizontal) {
|
|
8
|
+
const linkPadding = 15;
|
|
9
|
+
const branchWidth = getAbstractBranchWidth(board, node.origin);
|
|
10
|
+
const branchColor = getAbstractBranchColor(board, node.origin);
|
|
11
|
+
const parent = node.parent;
|
|
12
|
+
const branchShape = getBranchShapeByMindElement(board, parent.origin);
|
|
13
|
+
const abstractRectangle = getRectangleByNode(node);
|
|
14
|
+
let includedElements = parent.children.slice(node.origin.start, node.origin.end + 1).map(node => {
|
|
15
|
+
return node.origin;
|
|
16
|
+
});
|
|
17
|
+
const includedElementsRectangle = getRectangleByElements(board, includedElements, true);
|
|
18
|
+
const linkDirection = getLayoutDirection(node, isHorizontal);
|
|
19
|
+
const bezierBeginPlacement = [HorizontalPlacement.right, VerticalPlacement.top];
|
|
20
|
+
const bezierEndPlacement = [HorizontalPlacement.right, VerticalPlacement.bottom];
|
|
21
|
+
const abstractConnectorPlacement = [HorizontalPlacement.left, VerticalPlacement.middle];
|
|
22
|
+
transformPlacement(bezierBeginPlacement, linkDirection);
|
|
23
|
+
transformPlacement(bezierEndPlacement, linkDirection);
|
|
24
|
+
transformPlacement(abstractConnectorPlacement, linkDirection);
|
|
25
|
+
let bezierBeginPoint = getPointByPlacement(includedElementsRectangle, bezierBeginPlacement);
|
|
26
|
+
let bezierEndPoint = getPointByPlacement(includedElementsRectangle, bezierEndPlacement);
|
|
27
|
+
let abstractConnectorPoint = getPointByPlacement(abstractRectangle, abstractConnectorPlacement);
|
|
28
|
+
let curveDistance = getXDistanceBetweenPoint(abstractConnectorPoint, bezierBeginPoint, isHorizontal) - linkPadding * 2;
|
|
29
|
+
bezierBeginPoint = moveXOfPoint(bezierBeginPoint, linkPadding, linkDirection);
|
|
30
|
+
let c1 = moveXOfPoint(bezierBeginPoint, curveDistance, linkDirection);
|
|
31
|
+
bezierEndPoint = moveXOfPoint(bezierEndPoint, linkPadding, linkDirection);
|
|
32
|
+
let c2 = moveXOfPoint(bezierEndPoint, curveDistance, linkDirection);
|
|
33
|
+
let bezierConnectorPoint = moveXOfPoint(abstractConnectorPoint, -linkPadding, linkDirection);
|
|
34
|
+
if (branchShape === BranchShape.polyline) {
|
|
35
|
+
const g = createG();
|
|
36
|
+
const polyline = drawLinearPath([bezierBeginPoint, c1, bezierConnectorPoint, c2, bezierEndPoint], {
|
|
37
|
+
stroke: branchColor,
|
|
38
|
+
strokeWidth: branchWidth
|
|
39
|
+
});
|
|
40
|
+
const straightLine = drawLinearPath([abstractConnectorPoint, bezierConnectorPoint], {
|
|
41
|
+
stroke: branchColor,
|
|
42
|
+
strokeWidth: branchWidth
|
|
43
|
+
});
|
|
44
|
+
g.appendChild(polyline);
|
|
45
|
+
g.appendChild(straightLine);
|
|
46
|
+
return g;
|
|
47
|
+
}
|
|
48
|
+
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]}`, {
|
|
49
|
+
stroke: branchColor,
|
|
50
|
+
strokeWidth: branchWidth
|
|
51
|
+
});
|
|
52
|
+
return link;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1saW5rL2Fic3RyYWN0LWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUyxPQUFPLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUksT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFpQixFQUFFLElBQWMsRUFBRSxZQUFxQjtJQUNyRixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDdkIsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0IsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLGlCQUFpQixHQUFHLGtC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QUNaO0lBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzNDLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDeFM7UUFDSSxNQUFNLEVBQUUsV0FBVztRQUNuQixXQUFXLEVBQUUsV0FBVztLQUMzQixDQUNKLENBQUM7SUFDRixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGNyZWF0ZUcsIGRyYXdMaW5lYXJQYXRoLCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vLi4vcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBIb3Jpem9udGFsUGxhY2VtZW50LCBQb2ludFBsYWNlbWVudCwgVmVydGljYWxQbGFjZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3R5cGVzJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgZ2V0WERpc3RhbmNlQmV0d2VlblBvaW50LCBtb3ZlWE9mUG9pbnQsIHRyYW5zZm9ybVBsYWNlbWVudCB9IGZyb20gJy4uLy4uL3BvaW50LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBnZXRBYnN0cmFjdEJyYW5jaENvbG9yLCBnZXRBYnN0cmFjdEJyYW5jaFdpZHRoLCBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9ub2RlLXN0eWxlL2JyYW5jaCc7XG5pbXBvcnQgeyBCcmFuY2hTaGFwZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3QWJzdHJhY3RMaW5rKGJvYXJkOiBQbGFpdEJvYXJkLCBub2RlOiBNaW5kTm9kZSwgaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgY29uc3QgbGlua1BhZGRpbmcgPSAxNTtcbiAgICBjb25zdCBicmFuY2hXaWR0aCA9IGdldEFic3RyYWN0QnJhbmNoV2lkdGgoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBicmFuY2hDb2xvciA9IGdldEFic3RyYWN0QnJhbmNoQ29sb3IoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBwYXJlbnQgPSBub2RlLnBhcmVudDtcbiAgICBjb25zdCBicmFuY2hTaGFwZSA9IGdldEJyYW5jaFNoYXBlQnlNaW5kRWxlbWVudChib2FyZCwgcGFyZW50Lm9yaWdpbik7XG4gICAgY29uc3QgYWJzdHJhY3RSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUobm9kZSk7XG4gICAgbGV0IGluY2x1ZGVkRWxlbWVudHMgPSBwYXJlbnQuY2hpbGRyZW4uc2xpY2Uobm9kZS5vcmlnaW4uc3RhcnQsIG5vZGUub3JpZ2luLmVuZCEgKyAxKS5tYXAobm9kZSA9PiB7XG4gICAgICAgIHJldHVybiBub2RlLm9yaWdpbjtcbiAgICB9KTtcbiAgICBjb25zdCBpbmNsdWRlZEVsZW1lbnRzUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgaW5jbHVkZWRFbGVtZW50cywgdHJ1ZSk7XG5cbiAgICBjb25zdCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKG5vZGUsIGlzSG9yaXpvbnRhbCk7XG4gICAgY29uc3QgYmV6aWVyQmVnaW5QbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCwgVmVydGljYWxQbGFjZW1lbnQudG9wXSBhcyBQb2ludFBsYWNlbWVudDtcbiAgICBjb25zdCBiZXppZXJFbmRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCwgVmVydGljYWxQbGFjZW1lbnQuYm90dG9tXSBhcyBQb2ludFBsYWNlbWVudDtcbiAgICBjb25zdCBhYnN0cmFjdENvbm5lY3RvclBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQsIFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZV0gYXMgUG9pbnRQbGFjZW1lbnQ7XG5cbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoYmV6aWVyQmVnaW5QbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIHRyYW5zZm9ybVBsYWNlbWVudChiZXppZXJFbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIHRyYW5zZm9ybVBsYWNlbWVudChhYnN0cmFjdENvbm5lY3RvclBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICBsZXQgYmV6aWVyQmVnaW5Qb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQoaW5jbHVkZWRFbGVtZW50c1JlY3RhbmdsZSwgYmV6aWVyQmVnaW5QbGFjZW1lbnQpO1xuICAgIGxldCBiZXppZXJFbmRQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQoaW5jbHVkZWRFbGVtZW50c1JlY3RhbmdsZSwgYmV6aWVyRW5kUGxhY2VtZW50KTtcbiAgICBsZXQgYWJzdHJhY3RDb25uZWN0b3JQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQoYWJzdHJhY3RSZWN0YW5nbGUsIGFic3RyYWN0Q29ubmVjdG9yUGxhY2VtZW50KTtcbiAgICBsZXQgY3VydmVEaXN0YW5jZSA9IGdldFhEaXN0YW5jZUJldHdlZW5Qb2ludChhYnN0cmFjdENvbm5lY3RvclBvaW50LCBiZXppZXJCZWdpblBvaW50LCBpc0hvcml6b250YWwpIC0gbGlua1BhZGRpbmcgKiAyO1xuICAgIGJlemllckJlZ2luUG9pbnQgPSBtb3ZlWE9mUG9pbnQoYmV6aWVyQmVnaW5Qb2ludCwgbGlua1BhZGRpbmcsIGxpbmtEaXJlY3Rpb24pO1xuICAgIGxldCBjMSA9IG1vdmVYT2ZQb2ludChiZXppZXJCZWdpblBvaW50LCBjdXJ2ZURpc3RhbmNlLCBsaW5rRGlyZWN0aW9uKTtcbiAgICBiZXppZXJFbmRQb2ludCA9IG1vdmVYT2ZQb2ludChiZXppZXJFbmRQb2ludCwgbGlua1BhZGRpbmcsIGxpbmtEaXJlY3Rpb24pO1xuICAgIGxldCBjMiA9IG1vdmVYT2ZQb2ludChiZXppZXJFbmRQb2ludCwgY3VydmVEaXN0YW5jZSwgbGlua0RpcmVjdGlvbik7XG4gICAgbGV0IGJlemllckNvbm5lY3RvclBvaW50ID0gbW92ZVhPZlBvaW50KGFic3RyYWN0Q29ubmVjdG9yUG9pbnQsIC1saW5rUGFkZGluZywgbGlua0RpcmVjdGlvbik7XG5cbiAgICBpZiAoYnJhbmNoU2hhcGUgPT09IEJyYW5jaFNoYXBlLnBvbHlsaW5lKSB7XG4gICAgICAgIGNvbnN0IGcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IHBvbHlsaW5lID0gZHJhd0xpbmVhclBhdGgoW2JlemllckJlZ2luUG9pbnQsIGMxLCBiZXppZXJDb25uZWN0b3JQb2ludCwgYzIsIGJlemllckVuZFBvaW50XSwge1xuICAgICAgICAgICAgc3Ryb2tlOiBicmFuY2hDb2xvcixcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc3RyYWlnaHRMaW5lID0gZHJhd0xpbmVhclBhdGgoW2Fic3RyYWN0Q29ubmVjdG9yUG9pbnQsIGJlemllckNvbm5lY3RvclBvaW50XSwge1xuICAgICAgICAgICAgc3Ryb2tlOiBicmFuY2hDb2xvcixcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aFxuICAgICAgICB9KTtcblxuICAgICAgICBnLmFwcGVuZENoaWxkKHBvbHlsaW5lKTtcbiAgICAgICAgZy5hcHBlbmRDaGlsZChzdHJhaWdodExpbmUpO1xuXG4gICAgICAgIHJldHVybiBnO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmsgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5wYXRoKFxuICAgICAgICBgTSR7YmV6aWVyQmVnaW5Qb2ludFswXX0sJHtiZXppZXJCZWdpblBvaW50WzFdfSBRJHtjMVswXX0sJHtjMVsxXX0gJHtiZXppZXJDb25uZWN0b3JQb2ludFswXX0sJHtiZXppZXJDb25uZWN0b3JQb2ludFsxXX0gUSR7YzJbMF19LCR7YzJbMV19ICR7YmV6aWVyRW5kUG9pbnRbMF19LCR7YmV6aWVyRW5kUG9pbnRbMV19IE0ke2Fic3RyYWN0Q29ubmVjdG9yUG9pbnRbMF19LCR7YWJzdHJhY3RDb25uZWN0b3JQb2ludFsxXX0gTCR7YmV6aWVyQ29ubmVjdG9yUG9pbnRbMF19LCR7YmV6aWVyQ29ubmVjdG9yUG9pbnRbMV19YCxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBicmFuY2hDb2xvcixcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aFxuICAgICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gbGluaztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { drawIndentedLink } from './indented-link';
|
|
2
|
+
import { drawLogicLink } from './logic-link';
|
|
3
|
+
import { MindElement } from '../../../interfaces/element';
|
|
4
|
+
export function drawLink(board, parentNode, node, isHorizontal, needDrawUnderline, defaultStroke, defaultStrokeWidth) {
|
|
5
|
+
return MindElement.isIndentedLayout(parentNode.origin)
|
|
6
|
+
? drawIndentedLink(board, parentNode, node, defaultStroke, needDrawUnderline, defaultStrokeWidth)
|
|
7
|
+
: drawLogicLink(board, parentNode, node, isHorizontal, defaultStroke, defaultStrokeWidth);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvZHJhdy9ub2RlLWxpbmsvZHJhdy1saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzFELE1BQU0sVUFBVSxRQUFRLENBQ3BCLEtBQWlCLEVBQ2pCLFVBQW9CLEVBQ3BCLElBQWMsRUFDZCxZQUFxQixFQUNyQixpQkFBMkIsRUFDM0IsYUFBc0IsRUFDdEIsa0JBQTJCO0lBRTNCLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbEQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQztRQUNqRyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNsRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGRyYXdJbmRlbnRlZExpbmsgfSBmcm9tICcuL2luZGVudGVkLWxpbmsnO1xuaW1wb3J0IHsgZHJhd0xvZ2ljTGluayB9IGZyb20gJy4vbG9naWMtbGluayc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3TGluayhcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwYXJlbnROb2RlOiBNaW5kTm9kZSxcbiAgICBub2RlOiBNaW5kTm9kZSxcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW4sXG4gICAgbmVlZERyYXdVbmRlcmxpbmU/OiBib29sZWFuLFxuICAgIGRlZmF1bHRTdHJva2U/OiBzdHJpbmcsXG4gICAgZGVmYXVsdFN0cm9rZVdpZHRoPzogbnVtYmVyXG4pIHtcbiAgICByZXR1cm4gTWluZEVsZW1lbnQuaXNJbmRlbnRlZExheW91dChwYXJlbnROb2RlLm9yaWdpbilcbiAgICAgICAgPyBkcmF3SW5kZW50ZWRMaW5rKGJvYXJkLCBwYXJlbnROb2RlLCBub2RlLCBkZWZhdWx0U3Ryb2tlLCBuZWVkRHJhd1VuZGVybGluZSwgZGVmYXVsdFN0cm9rZVdpZHRoKVxuICAgICAgICA6IGRyYXdMb2dpY0xpbmsoYm9hcmQsIHBhcmVudE5vZGUsIG5vZGUsIGlzSG9yaXpvbnRhbCwgZGVmYXVsdFN0cm9rZSwgZGVmYXVsdFN0cm9rZVdpZHRoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
2
|
+
import { PlaitBoard, drawLinearPath } from '@plait/core';
|
|
3
|
+
import { getShapeByElement, getRectangleByNode, isChildUp } from '../..';
|
|
4
|
+
import { MindLayoutType } from '@plait/layouts';
|
|
5
|
+
import { MindQueries } from '../../../queries';
|
|
6
|
+
import { getBranchColorByMindElement, getBranchShapeByMindElement, getBranchWidthByMindElement } from '../../node-style/branch';
|
|
7
|
+
import { BranchShape, MindElementShape } from '../../../interfaces/element';
|
|
8
|
+
export function drawIndentedLink(board, node, child, defaultStroke = null, needDrawUnderline = true, defaultStrokeWidth) {
|
|
9
|
+
const branchShape = getBranchShapeByMindElement(board, node.origin);
|
|
10
|
+
const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, child.origin);
|
|
11
|
+
const branchColor = defaultStroke || getBranchColorByMindElement(board, child.origin);
|
|
12
|
+
const isUnderlineShape = getShapeByElement(board, child.origin) === MindElementShape.underline;
|
|
13
|
+
let beginX, beginY, endX, endY, beginNode = node, endNode = child;
|
|
14
|
+
const beginRectangle = getRectangleByNode(beginNode);
|
|
15
|
+
const endRectangle = getRectangleByNode(endNode);
|
|
16
|
+
beginX = beginNode.x + beginNode.width / 2;
|
|
17
|
+
beginY = isChildUp(node, child) ? beginRectangle.y : beginRectangle.y + beginRectangle.height;
|
|
18
|
+
endX = node.left ? endNode.x + endNode.hGap + endRectangle.width : endNode.x + endNode.hGap;
|
|
19
|
+
endY = isUnderlineShape ? endNode.y + endNode.height - endNode.vGap : endNode.y + endNode.height / 2;
|
|
20
|
+
//根据位置,设置正负参数
|
|
21
|
+
let plusMinus = isChildUp(node, child) ? (node.left ? [-1, -1] : [1, -1]) : node.left ? [-1, 1] : [1, 1];
|
|
22
|
+
const layout = MindQueries.getCorrectLayoutByElement(board, node.origin);
|
|
23
|
+
if (beginNode.origin.isRoot) {
|
|
24
|
+
if (layout === MindLayoutType.leftBottomIndented || layout === MindLayoutType.rightBottomIndented) {
|
|
25
|
+
beginY += branchWidth;
|
|
26
|
+
}
|
|
27
|
+
if (layout === MindLayoutType.leftTopIndented || layout === MindLayoutType.rightTopIndented) {
|
|
28
|
+
beginY -= branchWidth;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
let curve = [
|
|
32
|
+
[beginX, beginY],
|
|
33
|
+
[beginX, beginY],
|
|
34
|
+
[beginX, beginY],
|
|
35
|
+
[beginX, endY - (endNode.hGap * 3 * plusMinus[1]) / 5],
|
|
36
|
+
[beginX, endY - (endNode.hGap * plusMinus[1]) / 5],
|
|
37
|
+
[beginX + (endNode.hGap * plusMinus[0]) / 4, endY],
|
|
38
|
+
[beginX + (endNode.hGap * plusMinus[0] * 3) / 5, endY],
|
|
39
|
+
isUnderlineShape && needDrawUnderline ? [endX + (endNode.width - endNode.hGap * 2) * plusMinus[0], endY] : [endX, endY],
|
|
40
|
+
isUnderlineShape && needDrawUnderline ? [endX + (endNode.width - endNode.hGap * 2) * plusMinus[0], endY] : [endX, endY],
|
|
41
|
+
isUnderlineShape && needDrawUnderline ? [endX + (endNode.width - endNode.hGap * 2) * plusMinus[0], endY] : [endX, endY]
|
|
42
|
+
];
|
|
43
|
+
if (branchShape === BranchShape.polyline) {
|
|
44
|
+
const polylinePoints = [
|
|
45
|
+
[beginX, beginY],
|
|
46
|
+
[beginX, endY],
|
|
47
|
+
[endX, endY]
|
|
48
|
+
];
|
|
49
|
+
return drawLinearPath(polylinePoints, { stroke: branchColor, strokeWidth: branchWidth });
|
|
50
|
+
}
|
|
51
|
+
const points = pointsOnBezierCurves(curve);
|
|
52
|
+
return PlaitBoard.getRoughSVG(board).curve(points, { stroke: branchColor, strokeWidth: branchWidth });
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZW50ZWQtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1saW5rL2luZGVudGVkLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBUyxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RSxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLEtBQWlCLEVBQ2pCLElBQWMsRUFDZCxLQUFlLEVBQ2YsZ0JBQStCLElBQUksRUFDbkMsaUJBQWlCLEdBQUcsSUFBSSxFQUN4QixrQkFBMkI7SUFFM0IsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsSUFBSSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNGLE1BQU0sV0FBVyxHQUFHLGFBQWEsSUFBSSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRGLE1BQU0sZ0JBQWdCLEdBQUksaUJBQWlC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LEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZHO0lBRUQsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ2pILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2ludHNPbkJlemllckN1cnZlcyB9IGZyb20gJ3BvaW50cy1vbi1jdXJ2ZSc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgZHJhd0xpbmVhclBhdGggfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRTaGFwZUJ5RWxlbWVudCwgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBpc0NoaWxkVXAgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQsIGdldEJyYW5jaFNoYXBlQnlNaW5kRWxlbWVudCwgZ2V0QnJhbmNoV2lkdGhCeU1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vbm9kZS1zdHlsZS9icmFuY2gnO1xuaW1wb3J0IHsgQnJhbmNoU2hhcGUsIE1pbmRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0luZGVudGVkTGluayhcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBub2RlOiBNaW5kTm9kZSxcbiAgICBjaGlsZDogTWluZE5vZGUsXG4gICAgZGVmYXVsdFN0cm9rZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgbmVlZERyYXdVbmRlcmxpbmUgPSB0cnVlLFxuICAgIGRlZmF1bHRTdHJva2VXaWR0aD86IG51bWJlclxuKSB7XG4gICAgY29uc3QgYnJhbmNoU2hhcGUgPSBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBicmFuY2hXaWR0aCA9IGRlZmF1bHRTdHJva2VXaWR0aCB8fCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQoYm9hcmQsIGNoaWxkLm9yaWdpbik7XG4gICAgY29uc3QgYnJhbmNoQ29sb3IgPSBkZWZhdWx0U3Ryb2tlIHx8IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudChib2FyZCwgY2hpbGQub3JpZ2luKTtcblxuICAgIGNvbnN0IGlzVW5kZXJsaW5lU2hhcGUgPSAoZ2V0U2hhcGVCeUVsZW1lbnQoYm9hcmQsIGNoaWxkLm9yaWdpbikgYXMgTWluZEVsZW1lbnRTaGFwZSkgPT09IE1pbmRFbGVtZW50U2hhcGUudW5kZXJsaW5lO1xuICAgIGxldCBiZWdpblgsXG4gICAgICAgIGJlZ2luWSxcbiAgICAgICAgZW5kWCxcbiAgICAgICAgZW5kWSxcbiAgICAgICAgYmVnaW5Ob2RlID0gbm9kZSxcbiAgICAgICAgZW5kTm9kZSA9IGNoaWxkO1xuICAgIGNvbnN0IGJlZ2luUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGJlZ2luTm9kZSk7XG4gICAgY29uc3QgZW5kUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGVuZE5vZGUpO1xuXG4gICAgYmVnaW5YID0gYmVnaW5Ob2RlLnggKyBiZWdpbk5vZGUud2lkdGggLyAyO1xuICAgIGJlZ2luWSA9IGlzQ2hpbGRVcChub2RlLCBjaGlsZCkgPyBiZWdpblJlY3RhbmdsZS55IDogYmVnaW5SZWN0YW5nbGUueSArIGJlZ2luUmVjdGFuZ2xlLmhlaWdodDtcbiAgICBlbmRYID0gbm9kZS5sZWZ0ID8gZW5kTm9kZS54ICsgZW5kTm9kZS5oR2FwICsgZW5kUmVjdGFuZ2xlLndpZHRoIDogZW5kTm9kZS54ICsgZW5kTm9kZS5oR2FwO1xuICAgIGVuZFkgPSBpc1VuZGVybGluZVNoYXBlID8gZW5kTm9kZS55ICsgZW5kTm9kZS5oZWlnaHQgLSBlbmROb2RlLnZHYXAgOiBlbmROb2RlLnkgKyBlbmROb2RlLmhlaWdodCAvIDI7XG4gICAgLy/moLnmja7kvY3nva7vvIzorr7nva7mraPotJ/lj4LmlbBcbiAgICBsZXQgcGx1c01pbnVzID0gaXNDaGlsZFVwKG5vZGUsIGNoaWxkKSA/IChub2RlLmxlZnQgPyBbLTEsIC0xXSA6IFsxLCAtMV0pIDogbm9kZS5sZWZ0ID8gWy0xLCAxXSA6IFsxLCAxXTtcbiAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBub2RlLm9yaWdpbik7XG4gICAgaWYgKGJlZ2luTm9kZS5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgIGlmIChsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLmxlZnRCb3R0b21JbmRlbnRlZCB8fCBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnJpZ2h0Qm90dG9tSW5kZW50ZWQpIHtcbiAgICAgICAgICAgIGJlZ2luWSArPSBicmFuY2hXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5sZWZ0VG9wSW5kZW50ZWQgfHwgbGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5yaWdodFRvcEluZGVudGVkKSB7XG4gICAgICAgICAgICBiZWdpblkgLT0gYnJhbmNoV2lkdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGN1cnZlOiBQb2ludFtdID0gW1xuICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICBbYmVnaW5YLCBlbmRZIC0gKGVuZE5vZGUuaEdhcCAqIDMgKiBwbHVzTWludXNbMV0pIC8gNV0sXG4gICAgICAgIFtiZWdpblgsIGVuZFkgLSAoZW5kTm9kZS5oR2FwICogcGx1c01pbnVzWzFdKSAvIDVdLFxuICAgICAgICBbYmVnaW5YICsgKGVuZE5vZGUuaEdhcCAqIHBsdXNNaW51c1swXSkgLyA0LCBlbmRZXSxcbiAgICAgICAgW2JlZ2luWCArIChlbmROb2RlLmhHYXAgKiBwbHVzTWludXNbMF0gKiAzKSAvIDUsIGVuZFldLFxuICAgICAgICBpc1VuZGVybGluZVNoYXBlICYmIG5lZWREcmF3VW5kZXJsaW5lID8gW2VuZFggKyAoZW5kTm9kZS53aWR0aCAtIGVuZE5vZGUuaEdhcCAqIDIpICogcGx1c01pbnVzWzBdLCBlbmRZXSA6IFtlbmRYLCBlbmRZXSxcbiAgICAgICAgaXNVbmRlcmxpbmVTaGFwZSAmJiBuZWVkRHJhd1VuZGVybGluZSA/IFtlbmRYICsgKGVuZE5vZGUud2lkdGggLSBlbmROb2RlLmhHYXAgKiAyKSAqIHBsdXNNaW51c1swXSwgZW5kWV0gOiBbZW5kWCwgZW5kWV0sXG4gICAgICAgIGlzVW5kZXJsaW5lU2hhcGUgJiYgbmVlZERyYXdVbmRlcmxpbmUgPyBbZW5kWCArIChlbmROb2RlLndpZHRoIC0gZW5kTm9kZS5oR2FwICogMikgKiBwbHVzTWludXNbMF0sIGVuZFldIDogW2VuZFgsIGVuZFldXG4gICAgXTtcblxuICAgIGlmIChicmFuY2hTaGFwZSA9PT0gQnJhbmNoU2hhcGUucG9seWxpbmUpIHtcbiAgICAgICAgY29uc3QgcG9seWxpbmVQb2ludHMgPSBbXG4gICAgICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICAgICAgW2JlZ2luWCwgZW5kWV0sXG4gICAgICAgICAgICBbZW5kWCwgZW5kWV1cbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgocG9seWxpbmVQb2ludHMgYXMgUG9pbnRbXSwgeyBzdHJva2U6IGJyYW5jaENvbG9yLCBzdHJva2VXaWR0aDogYnJhbmNoV2lkdGggfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRzID0gcG9pbnRzT25CZXppZXJDdXJ2ZXMoY3VydmUpO1xuICAgIHJldHVybiBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5jdXJ2ZShwb2ludHMgYXMgYW55LCB7IHN0cm9rZTogYnJhbmNoQ29sb3IsIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aCB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
2
|
+
import { PlaitBoard, drawLinearPath } from '@plait/core';
|
|
3
|
+
import { getRectangleByNode, getShapeByElement } from '../..';
|
|
4
|
+
import { getLayoutDirection, getPointByPlacement, moveXOfPoint, transformPlacement } from '../../point-placement';
|
|
5
|
+
import { HorizontalPlacement, VerticalPlacement } from '../../../interfaces/types';
|
|
6
|
+
import { getBranchColorByMindElement, getBranchShapeByMindElement, getBranchWidthByMindElement } from '../../node-style/branch';
|
|
7
|
+
import { BranchShape, MindElementShape } from '../../../interfaces/element';
|
|
8
|
+
export function drawLogicLink(board, parent, node, isHorizontal, defaultStroke = null, defaultStrokeWidth) {
|
|
9
|
+
const branchShape = getBranchShapeByMindElement(board, parent.origin);
|
|
10
|
+
const branchColor = defaultStroke || getBranchColorByMindElement(board, node.origin);
|
|
11
|
+
const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, node.origin);
|
|
12
|
+
const hasStraightLine = !parent.origin.isRoot;
|
|
13
|
+
const parentShape = getShapeByElement(board, parent.origin);
|
|
14
|
+
const shape = node.origin.shape ? node.origin.shape : parentShape;
|
|
15
|
+
const hasUnderlineShape = shape === MindElementShape.underline;
|
|
16
|
+
const hasUnderlineShapeOfParent = parentShape === MindElementShape.underline;
|
|
17
|
+
const nodeClient = getRectangleByNode(node);
|
|
18
|
+
const parentClient = getRectangleByNode(parent);
|
|
19
|
+
const linkDirection = getLayoutDirection(node, isHorizontal);
|
|
20
|
+
// ① ensure begin placement and end placement
|
|
21
|
+
// begin placement represent parent connector position and end placement represent child connector
|
|
22
|
+
const beginPlacement = [HorizontalPlacement.right, VerticalPlacement.middle];
|
|
23
|
+
const endPlacement = [HorizontalPlacement.left, VerticalPlacement.middle];
|
|
24
|
+
transformPlacement(beginPlacement, linkDirection);
|
|
25
|
+
transformPlacement(endPlacement, linkDirection);
|
|
26
|
+
// underline shape and horizontal
|
|
27
|
+
if (isHorizontal && hasUnderlineShapeOfParent && !parent.origin.isRoot) {
|
|
28
|
+
beginPlacement[1] = VerticalPlacement.bottom;
|
|
29
|
+
}
|
|
30
|
+
if (isHorizontal && hasUnderlineShape) {
|
|
31
|
+
endPlacement[1] = VerticalPlacement.bottom;
|
|
32
|
+
}
|
|
33
|
+
let beginPoint = getPointByPlacement(parentClient, beginPlacement);
|
|
34
|
+
let endPoint = getPointByPlacement(nodeClient, endPlacement);
|
|
35
|
+
// ② 确定凸出直线,从起始点开始画一条直线,从直线的结束位置绘制曲线,保证收起图标可以完美覆盖起始连线,根节点不需要这条直线
|
|
36
|
+
// 绘制贝塞尔曲线要求,需要增加三个点,正常两个点就可以确定这条直线
|
|
37
|
+
const straightLineDistance = 8;
|
|
38
|
+
const beginPoint2 = hasStraightLine ? moveXOfPoint(beginPoint, straightLineDistance, linkDirection) : beginPoint;
|
|
39
|
+
let straightLine = hasStraightLine ? [beginPoint, beginPoint2, beginPoint2] : [];
|
|
40
|
+
// ③ 确定曲线
|
|
41
|
+
const beginBufferDistance = (parent.hGap + node.hGap) / 3;
|
|
42
|
+
const endBufferDistance = -(parent.hGap + node.hGap) / 2.4;
|
|
43
|
+
let curve = [
|
|
44
|
+
beginPoint2,
|
|
45
|
+
moveXOfPoint(beginPoint2, beginBufferDistance, linkDirection),
|
|
46
|
+
moveXOfPoint(endPoint, endBufferDistance, linkDirection),
|
|
47
|
+
endPoint
|
|
48
|
+
];
|
|
49
|
+
// ④ 下划线绘制,underline shape and horizontal
|
|
50
|
+
const underlineEnd = moveXOfPoint(endPoint, nodeClient.width, linkDirection);
|
|
51
|
+
const underline = hasUnderlineShape && isHorizontal ? [underlineEnd, underlineEnd, underlineEnd] : [];
|
|
52
|
+
const points = pointsOnBezierCurves([...straightLine, ...curve, ...underline]);
|
|
53
|
+
if (branchShape === BranchShape.polyline) {
|
|
54
|
+
const buffer = 8;
|
|
55
|
+
const movePoint = moveXOfPoint(beginPoint2, buffer, linkDirection);
|
|
56
|
+
const polylinePoints = [
|
|
57
|
+
...straightLine,
|
|
58
|
+
movePoint,
|
|
59
|
+
isHorizontal ? [movePoint[0], endPoint[1]] : [endPoint[0], movePoint[1]],
|
|
60
|
+
endPoint,
|
|
61
|
+
...underline
|
|
62
|
+
];
|
|
63
|
+
return drawLinearPath(polylinePoints, { stroke: branchColor, strokeWidth: branchWidth });
|
|
64
|
+
}
|
|
65
|
+
return PlaitBoard.getRoughSVG(board).curve(points, { stroke: branchColor, strokeWidth: branchWidth });
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWMtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1saW5rL2xvZ2ljLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBUyxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVFLE1BQU0sVUFBVSxhQUFhLENBQ3pCLEtBQWlCLEVBQ2pCLE1BQWdCLEVBQ2hCLElBQWMsRUFDZCxZQUFxQixFQUNyQixnQkFBK0IsSUFBSSxFQUNuQyxrQkFBMkI7SUFFM0IsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFdBQVcsR0FBRyxhQUFhLElBQUksMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsSUFBSSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFG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U0FBUyxHQUFZLGlCQUFpQixJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFL0csTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFL0UsSUFBSSxXQUFXLEtBQUssV0FBVyxDQUFDLFFBQVEsRUFBRTtRQUN0QyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkUsTUFBTSxjQUFjLEdBQUc7WUFDbkIsR0FBRyxZQUFZO1lBQ2YsU0FBUztZQUNULFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RSxRQUFRO1lBQ1IsR0FBRyxTQUFTO1NBQ2YsQ0FBQztRQUNGLE9BQU8sY0FBYyxDQUFDLGNBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZHO0lBQ0QsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ2pILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2ludHNPbkJlemllckN1cnZlcyB9IGZyb20gJ3BvaW50cy1vbi1jdXJ2ZSc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgZHJhd0xpbmVhclBhdGggfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUsIGdldFNoYXBlQnlFbGVtZW50IH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgZ2V0TGF5b3V0RGlyZWN0aW9uLCBnZXRQb2ludEJ5UGxhY2VtZW50LCBtb3ZlWE9mUG9pbnQsIHRyYW5zZm9ybVBsYWNlbWVudCB9IGZyb20gJy4uLy4uL3BvaW50LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBIb3Jpem9udGFsUGxhY2VtZW50LCBQb2ludFBsYWNlbWVudCwgVmVydGljYWxQbGFjZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3R5cGVzJztcbmltcG9ydCB7IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCwgZ2V0QnJhbmNoU2hhcGVCeU1pbmRFbGVtZW50LCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9ub2RlLXN0eWxlL2JyYW5jaCc7XG5pbXBvcnQgeyBCcmFuY2hTaGFwZSwgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3TG9naWNMaW5rKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHBhcmVudDogTWluZE5vZGUsXG4gICAgbm9kZTogTWluZE5vZGUsXG4gICAgaXNIb3Jpem9udGFsOiBib29sZWFuLFxuICAgIGRlZmF1bHRTdHJva2U6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGRlZmF1bHRTdHJva2VXaWR0aD86IG51bWJlclxuKSB7XG4gICAgY29uc3QgYnJhbmNoU2hhcGUgPSBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQoYm9hcmQsIHBhcmVudC5vcmlnaW4pO1xuICAgIGNvbnN0IGJyYW5jaENvbG9yID0gZGVmYXVsdFN0cm9rZSB8fCBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBicmFuY2hXaWR0aCA9IGRlZmF1bHRTdHJva2VXaWR0aCB8fCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBoYXNTdHJhaWdodExpbmUgPSAhcGFyZW50Lm9yaWdpbi5pc1Jvb3Q7XG4gICAgY29uc3QgcGFyZW50U2hhcGUgPSBnZXRTaGFwZUJ5RWxlbWVudChib2FyZCwgcGFyZW50Lm9yaWdpbik7XG4gICAgY29uc3Qgc2hhcGUgPSBub2RlLm9yaWdpbi5zaGFwZSA/IG5vZGUub3JpZ2luLnNoYXBlIDogcGFyZW50U2hhcGU7XG4gICAgY29uc3QgaGFzVW5kZXJsaW5lU2hhcGUgPSBzaGFwZSA9PT0gTWluZEVsZW1lbnRTaGFwZS51bmRlcmxpbmU7XG4gICAgY29uc3QgaGFzVW5kZXJsaW5lU2hhcGVPZlBhcmVudCA9IHBhcmVudFNoYXBlID09PSBNaW5kRWxlbWVudFNoYXBlLnVuZGVybGluZTtcbiAgICBjb25zdCBub2RlQ2xpZW50ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpO1xuICAgIGNvbnN0IHBhcmVudENsaWVudCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwYXJlbnQpO1xuICAgIGNvbnN0IGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24obm9kZSwgaXNIb3Jpem9udGFsKTtcblxuICAgIC8vIOKRoCBlbnN1cmUgYmVnaW4gcGxhY2VtZW50IGFuZCBlbmQgcGxhY2VtZW50XG4gICAgLy8gYmVnaW4gcGxhY2VtZW50IHJlcHJlc2VudCBwYXJlbnQgY29ubmVjdG9yIHBvc2l0aW9uIGFuZCBlbmQgcGxhY2VtZW50IHJlcHJlc2VudCBjaGlsZCBjb25uZWN0b3JcbiAgICBjb25zdCBiZWdpblBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCwgVmVydGljYWxQbGFjZW1lbnQubWlkZGxlXTtcbiAgICBjb25zdCBlbmRQbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQubGVmdCwgVmVydGljYWxQbGFjZW1lbnQubWlkZGxlXTtcblxuICAgIHRyYW5zZm9ybVBsYWNlbWVudChiZWdpblBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG4gICAgdHJhbnNmb3JtUGxhY2VtZW50KGVuZFBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAvLyB1bmRlcmxpbmUgc2hhcGUgYW5kIGhvcml6b250YWxcbiAgICBpZiAoaXNIb3Jpem9udGFsICYmIGhhc1VuZGVybGluZVNoYXBlT2ZQYXJlbnQgJiYgIXBhcmVudC5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgIGJlZ2luUGxhY2VtZW50WzFdID0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tO1xuICAgIH1cbiAgICBpZiAoaXNIb3Jpem9udGFsICYmIGhhc1VuZGVybGluZVNoYXBlKSB7XG4gICAgICAgIGVuZFBsYWNlbWVudFsxXSA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICB9XG5cbiAgICBsZXQgYmVnaW5Qb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQocGFyZW50Q2xpZW50LCBiZWdpblBsYWNlbWVudCk7XG4gICAgbGV0IGVuZFBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChub2RlQ2xpZW50LCBlbmRQbGFjZW1lbnQpO1xuXG4gICAgLy8g4pGhIOehruWumuWHuOWHuuebtOe6v++8jOS7jui1t+Wni+eCueW8gOWni+eUu+S4gOadoeebtOe6v++8jOS7juebtOe6v+eahOe7k+adn+S9jee9rue7mOWItuabsue6v++8jOS/neivgeaUtui1t+Wbvuagh+WPr+S7peWujOe+juimhueblui1t+Wni+i/nue6v++8jOagueiKgueCueS4jemcgOimgei/meadoeebtOe6v1xuICAgIC8vIOe7mOWItui0neWhnuWwlOabsue6v+imgeaxgu+8jOmcgOimgeWinuWKoOS4ieS4queCue+8jOato+W4uOS4pOS4queCueWwseWPr+S7peehruWumui/meadoeebtOe6v1xuICAgIGNvbnN0IHN0cmFpZ2h0TGluZURpc3RhbmNlID0gODtcbiAgICBjb25zdCBiZWdpblBvaW50MiA9IGhhc1N0cmFpZ2h0TGluZSA/IG1vdmVYT2ZQb2ludChiZWdpblBvaW50LCBzdHJhaWdodExpbmVEaXN0YW5jZSwgbGlua0RpcmVjdGlvbikgOiBiZWdpblBvaW50O1xuICAgIGxldCBzdHJhaWdodExpbmU6IFBvaW50W10gPSBoYXNTdHJhaWdodExpbmUgPyBbYmVnaW5Qb2ludCwgYmVnaW5Qb2ludDIsIGJlZ2luUG9pbnQyXSA6IFtdO1xuXG4gICAgLy8g4pGiIOehruWumuabsue6v1xuICAgIGNvbnN0IGJlZ2luQnVmZmVyRGlzdGFuY2UgPSAocGFyZW50LmhHYXAgKyBub2RlLmhHYXApIC8gMztcbiAgICBjb25zdCBlbmRCdWZmZXJEaXN0YW5jZSA9IC0ocGFyZW50LmhHYXAgKyBub2RlLmhHYXApIC8gMi40O1xuICAgIGxldCBjdXJ2ZTogUG9pbnRbXSA9IFtcbiAgICAgICAgYmVnaW5Qb2ludDIsXG4gICAgICAgIG1vdmVYT2ZQb2ludChiZWdpblBvaW50MiwgYmVnaW5CdWZmZXJEaXN0YW5jZSwgbGlua0RpcmVjdGlvbiksXG4gICAgICAgIG1vdmVYT2ZQb2ludChlbmRQb2ludCwgZW5kQnVmZmVyRGlzdGFuY2UsIGxpbmtEaXJlY3Rpb24pLFxuICAgICAgICBlbmRQb2ludFxuICAgIF07XG5cbiAgICAvLyDikaMg5LiL5YiS57q/57uY5Yi277yMdW5kZXJsaW5lIHNoYXBlIGFuZCBob3Jpem9udGFsXG4gICAgY29uc3QgdW5kZXJsaW5lRW5kID0gbW92ZVhPZlBvaW50KGVuZFBvaW50LCBub2RlQ2xpZW50LndpZHRoLCBsaW5rRGlyZWN0aW9uKTtcbiAgICBjb25zdCB1bmRlcmxpbmU6IFBvaW50W10gPSBoYXNVbmRlcmxpbmVTaGFwZSAmJiBpc0hvcml6b250YWwgPyBbdW5kZXJsaW5lRW5kLCB1bmRlcmxpbmVFbmQsIHVuZGVybGluZUVuZF0gOiBbXTtcblxuICAgIGNvbnN0IHBvaW50cyA9IHBvaW50c09uQmV6aWVyQ3VydmVzKFsuLi5zdHJhaWdodExpbmUsIC4uLmN1cnZlLCAuLi51bmRlcmxpbmVdKTtcblxuICAgIGlmIChicmFuY2hTaGFwZSA9PT0gQnJhbmNoU2hhcGUucG9seWxpbmUpIHtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gODtcbiAgICAgICAgY29uc3QgbW92ZVBvaW50ID0gbW92ZVhPZlBvaW50KGJlZ2luUG9pbnQyLCBidWZmZXIsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2x5bGluZVBvaW50cyA9IFtcbiAgICAgICAgICAgIC4uLnN0cmFpZ2h0TGluZSxcbiAgICAgICAgICAgIG1vdmVQb2ludCxcbiAgICAgICAgICAgIGlzSG9yaXpvbnRhbCA/IFttb3ZlUG9pbnRbMF0sIGVuZFBvaW50WzFdXSA6IFtlbmRQb2ludFswXSwgbW92ZVBvaW50WzFdXSxcbiAgICAgICAgICAgIGVuZFBvaW50LFxuICAgICAgICAgICAgLi4udW5kZXJsaW5lXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBkcmF3TGluZWFyUGF0aChwb2x5bGluZVBvaW50cyBhcyBQb2ludFtdLCB7IHN0cm9rZTogYnJhbmNoQ29sb3IsIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmN1cnZlKHBvaW50cyBhcyBhbnksIHsgc3Ryb2tlOiBicmFuY2hDb2xvciwgc3Ryb2tlV2lkdGg6IGJyYW5jaFdpZHRoIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getRectangleByNode } from '../position/node';
|
|
2
|
+
import { PlaitBoard, drawRoundRectangle } from '@plait/core';
|
|
3
|
+
import { getStrokeByMindElement } from '../node-style/shape';
|
|
4
|
+
import { DefaultNodeStyle, DefaultRootStyle } from '../../constants/node-style';
|
|
5
|
+
export function drawRoundRectangleByNode(board, node) {
|
|
6
|
+
const rectangle = getRectangleByNode(node);
|
|
7
|
+
return drawRoundRectangleByElement(board, rectangle, node.origin);
|
|
8
|
+
}
|
|
9
|
+
export function drawRoundRectangleByElement(board, nodeRectangle, element) {
|
|
10
|
+
const fill = element.fill ? element.fill : element.isRoot ? DefaultRootStyle.fill : DefaultNodeStyle.fill;
|
|
11
|
+
const stroke = getStrokeByMindElement(board, element);
|
|
12
|
+
const strokeWidth = element.strokeWidth ? element.strokeWidth : DefaultNodeStyle.strokeWidth;
|
|
13
|
+
const nodeG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), nodeRectangle.x, nodeRectangle.y, nodeRectangle.x + nodeRectangle.width, nodeRectangle.y + nodeRectangle.height, {
|
|
14
|
+
stroke,
|
|
15
|
+
strokeWidth,
|
|
16
|
+
fill,
|
|
17
|
+
fillStyle: 'solid'
|
|
18
|
+
});
|
|
19
|
+
return nodeG;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zaGFwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1zaGFwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdoRixNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBaUIsRUFBRSxJQUFjO0lBQ3RFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sMkJBQTJCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxLQUFpQixFQUFFLGFBQThCLEVBQUUsT0FBb0I7SUFDL0csTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDMUcsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztJQUU3RixNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FDNUIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDN0IsYUFBYSxDQUFDLENBQUMsRUFDZixhQUFhLENBQUMsQ0FBQyxFQUNmLGFBQWEsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFDckMsYUFBYSxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUN0QztRQUNJLE1BQU07UUFDTixXQUFXO1FBQ1gsSUFBSTtRQUNKLFNBQVMsRUFBRSxPQUFPO0tBQ3JCLENBQ0osQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgZHJhd1JvdW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlQnlNaW5kRWxlbWVudCB9IGZyb20gJy4uL25vZGUtc3R5bGUvc2hhcGUnO1xuaW1wb3J0IHsgRGVmYXVsdE5vZGVTdHlsZSwgRGVmYXVsdFJvb3RTdHlsZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3Um91bmRSZWN0YW5nbGVCeU5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmROb2RlKSB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpO1xuICAgIHJldHVybiBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQoYm9hcmQsIHJlY3RhbmdsZSwgbm9kZS5vcmlnaW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhd1JvdW5kUmVjdGFuZ2xlQnlFbGVtZW50KGJvYXJkOiBQbGFpdEJvYXJkLCBub2RlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3QgZmlsbCA9IGVsZW1lbnQuZmlsbCA/IGVsZW1lbnQuZmlsbCA6IGVsZW1lbnQuaXNSb290ID8gRGVmYXVsdFJvb3RTdHlsZS5maWxsIDogRGVmYXVsdE5vZGVTdHlsZS5maWxsO1xuICAgIGNvbnN0IHN0cm9rZSA9IGdldFN0cm9rZUJ5TWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZWxlbWVudC5zdHJva2VXaWR0aCA/IGVsZW1lbnQuc3Ryb2tlV2lkdGggOiBEZWZhdWx0Tm9kZVN0eWxlLnN0cm9rZVdpZHRoO1xuXG4gICAgY29uc3Qgbm9kZUcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLFxuICAgICAgICBub2RlUmVjdGFuZ2xlLngsXG4gICAgICAgIG5vZGVSZWN0YW5nbGUueSxcbiAgICAgICAgbm9kZVJlY3RhbmdsZS54ICsgbm9kZVJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgbm9kZVJlY3RhbmdsZS55ICsgbm9kZVJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgZmlsbCxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBub2RlRztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { drawRichtext, updateForeignObject } from '@plait/richtext';
|
|
2
|
+
import { getTopicRectangleByNode } from '../position/topic';
|
|
3
|
+
import { PlaitBoard } from '@plait/core';
|
|
4
|
+
export function drawTopicByNode(board, node, viewContainerRef) {
|
|
5
|
+
const rectangle = getTopicRectangleByNode(board, node);
|
|
6
|
+
return drawTopicByElement(board, rectangle, node.origin, viewContainerRef);
|
|
7
|
+
}
|
|
8
|
+
export function drawTopicByElement(board, rectangle, element, viewContainerRef) {
|
|
9
|
+
const containerRef = viewContainerRef || PlaitBoard.getComponent(board).viewContainerRef;
|
|
10
|
+
const classList = [];
|
|
11
|
+
if (element.isRoot) {
|
|
12
|
+
classList.push('root-node');
|
|
13
|
+
classList.push('font-size-18');
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
classList.push('child-node');
|
|
17
|
+
}
|
|
18
|
+
// COMPAT: last character can not show in safari browser
|
|
19
|
+
return drawRichtext(rectangle.x, rectangle.y, rectangle.width, rectangle.height, element.data.topic, containerRef, classList);
|
|
20
|
+
}
|
|
21
|
+
export function updateMindNodeTopicSize(board, node, g, isEditable) {
|
|
22
|
+
const { x, y, width, height } = getTopicRectangleByNode(board, node);
|
|
23
|
+
if (isEditable) {
|
|
24
|
+
// add 999, avoid changing lines when paste more text
|
|
25
|
+
updateForeignObject(g, width + 999, height + 999, x, y);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// COMPAT: last character can not show in safari browser
|
|
29
|
+
updateForeignObject(g, width, height, x, y);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10b3BpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS10b3BpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBbUIsTUFBTSxhQUFhLENBQUM7QUFHMUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFxQixFQUFFLElBQWMsRUFBRSxnQkFBbUM7SUFDdEcsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDOUIsS0FBcUIsRUFDckIsU0FBMEIsRUFDMUIsT0FBb0IsRUFDcEIsZ0JBQW1DO0lBRW5DLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFDekYsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNoQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDbEM7U0FBTTtRQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDaEM7SUFDRCx3REFBd0Q7SUFDeEQsT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEksQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxLQUFxQixFQUFFLElBQWMsRUFBRSxDQUFjLEVBQUUsVUFBbUI7SUFDOUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxJQUFJLFVBQVUsRUFBRTtRQUNaLHFEQUFxRDtRQUNyRCxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMzRDtTQUFNO1FBQ0gsd0RBQXdEO1FBQ3hELG1CQUFtQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMvQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkcmF3UmljaHRleHQsIHVwZGF0ZUZvcmVpZ25PYmplY3QgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgZ2V0VG9waWNSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi9wb3NpdGlvbi90b3BpYyc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3VG9waWNCeU5vZGUoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBub2RlOiBNaW5kTm9kZSwgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZShib2FyZCwgbm9kZSk7XG4gICAgcmV0dXJuIGRyYXdUb3BpY0J5RWxlbWVudChib2FyZCwgcmVjdGFuZ2xlLCBub2RlLm9yaWdpbiwgdmlld0NvbnRhaW5lclJlZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3VG9waWNCeUVsZW1lbnQoXG4gICAgYm9hcmQ6IFBsYWl0TWluZEJvYXJkLFxuICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGVsZW1lbnQ6IE1pbmRFbGVtZW50LFxuICAgIHZpZXdDb250YWluZXJSZWY/OiBWaWV3Q29udGFpbmVyUmVmXG4pIHtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB2aWV3Q29udGFpbmVyUmVmIHx8IFBsYWl0Qm9hcmQuZ2V0Q29tcG9uZW50KGJvYXJkKS52aWV3Q29udGFpbmVyUmVmO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFtdO1xuICAgIGlmIChlbGVtZW50LmlzUm9vdCkge1xuICAgICAgICBjbGFzc0xpc3QucHVzaCgncm9vdC1ub2RlJyk7XG4gICAgICAgIGNsYXNzTGlzdC5wdXNoKCdmb250LXNpemUtMTgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc0xpc3QucHVzaCgnY2hpbGQtbm9kZScpO1xuICAgIH1cbiAgICAvLyBDT01QQVQ6IGxhc3QgY2hhcmFjdGVyIGNhbiBub3Qgc2hvdyBpbiBzYWZhcmkgYnJvd3NlclxuICAgIHJldHVybiBkcmF3UmljaHRleHQocmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55LCByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS5oZWlnaHQsIGVsZW1lbnQuZGF0YS50b3BpYywgY29udGFpbmVyUmVmLCBjbGFzc0xpc3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTWluZE5vZGVUb3BpY1NpemUoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBub2RlOiBNaW5kTm9kZSwgZzogU1ZHR0VsZW1lbnQsIGlzRWRpdGFibGU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlKGJvYXJkLCBub2RlKTtcbiAgICBpZiAoaXNFZGl0YWJsZSkge1xuICAgICAgICAvLyBhZGQgOTk577yMIGF2b2lkIGNoYW5naW5nIGxpbmVzIHdoZW4gcGFzdGUgbW9yZSB0ZXh0XG4gICAgICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QoZywgd2lkdGggKyA5OTksIGhlaWdodCArIDk5OSwgeCwgeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ09NUEFUOiBsYXN0IGNoYXJhY3RlciBjYW4gbm90IHNob3cgaW4gc2FmYXJpIGJyb3dzZXJcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChnLCB3aWR0aCwgaGVpZ2h0LCB4LCB5KTtcbiAgICB9XG59XG4iXX0=
|
package/esm2020/utils/index.mjs
CHANGED
|
@@ -2,11 +2,13 @@ export * from './position';
|
|
|
2
2
|
export * from './weak-maps';
|
|
3
3
|
export * from './mind';
|
|
4
4
|
export * from './layout';
|
|
5
|
+
export * from './node';
|
|
5
6
|
export * from './node-style';
|
|
6
7
|
export * from './is-virtual-key';
|
|
7
8
|
export * from './dnd/common';
|
|
8
9
|
export * from './dnd/detector';
|
|
9
|
-
export * from './dnd
|
|
10
|
+
export * from './draw/node-dnd';
|
|
10
11
|
export * from './abstract/common';
|
|
11
12
|
export * from './abstract/resize';
|
|
12
|
-
|
|
13
|
+
export * from './node/right-node-count';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcG9zaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi93ZWFrLW1hcHMnO1xuZXhwb3J0ICogZnJvbSAnLi9taW5kJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0JztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL25vZGUtc3R5bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy12aXJ0dWFsLWtleSc7XG5leHBvcnQgKiBmcm9tICcuL2RuZC9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9kbmQvZGV0ZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kcmF3L25vZGUtZG5kJztcbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QvY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QvcmVzaXplJztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZS9yaWdodC1ub2RlLWNvdW50JztcbiJdfQ==
|
package/esm2020/utils/mind.mjs
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { MindLayoutType } from '@plait/layouts';
|
|
2
1
|
import { addSelectedElement, clearSelectedElement, idCreator, Transforms } from '@plait/core';
|
|
3
2
|
import { Node } from 'slate';
|
|
4
3
|
import { NODE_MIN_WIDTH } from '../constants/node-rule';
|
|
5
4
|
import { MindElementShape } from '../interfaces';
|
|
6
5
|
import { MindElement } from '../interfaces/element';
|
|
7
|
-
import { getRootLayout } from './layout';
|
|
8
6
|
import { TEXT_DEFAULT_HEIGHT } from '@plait/richtext';
|
|
9
|
-
import { enterNodeEditing } from './node';
|
|
7
|
+
import { enterNodeEditing } from './node/common';
|
|
10
8
|
import { createMindElement } from './node/create-node';
|
|
11
9
|
export const getChildrenCount = (element) => {
|
|
12
10
|
const count = element.children.reduce((p, c) => {
|
|
@@ -61,29 +59,6 @@ export const extractNodesText = (node) => {
|
|
|
61
59
|
}
|
|
62
60
|
return str;
|
|
63
61
|
};
|
|
64
|
-
export const changeRightNodeCount = (board, parentPath, changeNumber) => {
|
|
65
|
-
const _rightNodeCount = board.children[parentPath[0]].rightNodeCount;
|
|
66
|
-
Transforms.setNode(board, {
|
|
67
|
-
rightNodeCount: changeNumber >= 0
|
|
68
|
-
? _rightNodeCount + changeNumber
|
|
69
|
-
: _rightNodeCount + changeNumber < 0
|
|
70
|
-
? 0
|
|
71
|
-
: _rightNodeCount + changeNumber
|
|
72
|
-
}, parentPath);
|
|
73
|
-
};
|
|
74
|
-
export const isInRightBranchOfStandardLayout = (selectedElement) => {
|
|
75
|
-
const parentElement = MindElement.findParent(selectedElement);
|
|
76
|
-
if (parentElement) {
|
|
77
|
-
const nodeIndex = parentElement.children.findIndex(item => item.id === selectedElement.id);
|
|
78
|
-
if (parentElement.isRoot &&
|
|
79
|
-
getRootLayout(parentElement) === MindLayoutType.standard &&
|
|
80
|
-
parentElement.rightNodeCount &&
|
|
81
|
-
nodeIndex <= parentElement.rightNodeCount - 1) {
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return false;
|
|
86
|
-
};
|
|
87
62
|
// layoutLevel 用来表示插入兄弟节点还是子节点
|
|
88
63
|
export const insertMindElement = (board, inheritNode, path) => {
|
|
89
64
|
let fill, strokeColor, strokeWidth, shape = MindElementShape.roundRectangle;
|
|
@@ -124,4 +99,4 @@ export const divideElementByParent = (elements) => {
|
|
|
124
99
|
}
|
|
125
100
|
return { parentElements, abstractIncludedGroups };
|
|
126
101
|
};
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL21pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLFNBQVMsRUFHVCxVQUFVLEVBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEtBQUssR0FBVyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFjLEVBQUUsRUFBRTtRQUN4RSxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDTixPQUFPLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcs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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QzthQUFNO1lBQ0gsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO0tBQ0o7SUFDRCxPQUFPLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQge1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudCxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBpZENyZWF0b3IsXG4gICAgUGF0aCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFRyYW5zZm9ybXNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE5PREVfTUlOX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzL25vZGUtcnVsZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudFNoYXBlLCBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0Um9vdExheW91dCB9IGZyb20gJy4vbGF5b3V0JztcbmltcG9ydCB7IFRFWFRfREVGQVVMVF9IRUlHSFQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgZW50ZXJOb2RlRWRpdGluZyB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBjcmVhdGVNaW5kRWxlbWVudCB9IGZyb20gJy4vbm9kZS9jcmVhdGUtbm9kZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRDaGlsZHJlbkNvdW50ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgY291bnQ6IG51bWJlciA9IGVsZW1lbnQuY2hpbGRyZW4ucmVkdWNlKChwOiBudW1iZXIsIGM6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBwICsgZ2V0Q2hpbGRyZW5Db3VudChjKTtcbiAgICB9LCAwKTtcbiAgICByZXR1cm4gY291bnQgKyBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkRWxlbWVudCA9IChvcmlnaW46IE1pbmRFbGVtZW50LCBjaGlsZDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBsZXQgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChjaGlsZCk7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50ID09PSBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpcnN0TGV2ZWxFbGVtZW50ID0gKGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWluZEVsZW1lbnRbXSA9IFtdO1xuICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IGlzQ2hpbGQgPSBlbGVtZW50cy5zb21lKG5vZGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGlzQ2hpbGRFbGVtZW50KG5vZGUsIGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWlzQ2hpbGQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkUmlnaHQgPSAobm9kZTogTWluZE5vZGUsIGNoaWxkOiBNaW5kTm9kZSkgPT4ge1xuICAgIHJldHVybiBub2RlLnggPCBjaGlsZC54O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hpbGRVcCA9IChub2RlOiBNaW5kTm9kZSwgY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgcmV0dXJuIG5vZGUueSA+IGNoaWxkLnk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weU5ld05vZGUgPSAobm9kZTogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBuZXdOb2RlOiBNaW5kRWxlbWVudCA9IHsgLi4ubm9kZSB9O1xuICAgIG5ld05vZGUuaWQgPSBpZENyZWF0b3IoKTtcbiAgICBuZXdOb2RlLmNoaWxkcmVuID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIG5ld05vZGUuY2hpbGRyZW4ucHVzaChjb3B5TmV3Tm9kZShjaGlsZE5vZGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld05vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdE5vZGVzVGV4dCA9IChub2RlOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGxldCBzdHIgPSAnJztcbiAgICBpZiAobm9kZSkge1xuICAgICAgICBzdHIgKz0gTm9kZS5zdHJpbmcobm9kZS5kYXRhLnRvcGljLmNoaWxkcmVuWzBdKSArICcgJztcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZE5vZGUgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgc3RyICs9IGV4dHJhY3ROb2Rlc1RleHQoY2hpbGROb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVJpZ2h0Tm9kZUNvdW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwYXJlbnRQYXRoOiBQYXRoLCBjaGFuZ2VOdW1iZXI6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IF9yaWdodE5vZGVDb3VudCA9IGJvYXJkLmNoaWxkcmVuW3BhcmVudFBhdGhbMF1dLnJpZ2h0Tm9kZUNvdW50O1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJpZ2h0Tm9kZUNvdW50OlxuICAgICAgICAgICAgICAgIGNoYW5nZU51bWJlciA+PSAwXG4gICAgICAgICAgICAgICAgICAgID8gX3JpZ2h0Tm9kZUNvdW50ISArIGNoYW5nZU51bWJlclxuICAgICAgICAgICAgICAgICAgICA6IF9yaWdodE5vZGVDb3VudCEgKyBjaGFuZ2VOdW1iZXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IF9yaWdodE5vZGVDb3VudCEgKyBjaGFuZ2VOdW1iZXJcbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50UGF0aFxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJblJpZ2h0QnJhbmNoT2ZTdGFuZGFyZExheW91dCA9IChzZWxlY3RlZEVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoc2VsZWN0ZWRFbGVtZW50KTtcbiAgICBpZiAocGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlSW5kZXg6IG51bWJlciA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW4uZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gc2VsZWN0ZWRFbGVtZW50LmlkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50RWxlbWVudC5pc1Jvb3QgJiZcbiAgICAgICAgICAgIGdldFJvb3RMYXlvdXQocGFyZW50RWxlbWVudCkgPT09IE1pbmRMYXlvdXRUeXBlLnN0YW5kYXJkICYmXG4gICAgICAgICAgICBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50ICYmXG4gICAgICAgICAgICBub2RlSW5kZXggPD0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCAtIDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBsYXlvdXRMZXZlbCDnlKjmnaXooajnpLrmj5LlhaXlhYTlvJ/oioLngrnov5jmmK/lrZDoioLngrlcbmV4cG9ydCBjb25zdCBpbnNlcnRNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgaW5oZXJpdE5vZGU6IE1pbmRFbGVtZW50LCBwYXRoOiBQYXRoKSA9PiB7XG4gICAgbGV0IGZpbGwsXG4gICAgICAgIHN0cm9rZUNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aCxcbiAgICAgICAgc2hhcGUgPSBNaW5kRWxlbWVudFNoYXBlLnJvdW5kUmVjdGFuZ2xlO1xuICAgIGlmICghaW5oZXJpdE5vZGUuaXNSb290KSB7XG4gICAgICAgIGZpbGwgPSBpbmhlcml0Tm9kZS5maWxsO1xuICAgICAgICBzdHJva2VDb2xvciA9IGluaGVyaXROb2RlLnN0cm9rZUNvbG9yO1xuICAgICAgICBzdHJva2VXaWR0aCA9IGluaGVyaXROb2RlLnN0cm9rZVdpZHRoO1xuICAgIH1cblxuICAgIHNoYXBlID0gaW5oZXJpdE5vZGUuc2hhcGUgYXMgTWluZEVsZW1lbnRTaGFwZTtcblxuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCgnJywgTk9ERV9NSU5fV0lEVEgsIFRFWFRfREVGQVVMVF9IRUlHSFQsIHsgZmlsbCwgc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBzaGFwZSB9KTtcblxuICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgbmV3RWxlbWVudCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVudGVyTm9kZUVkaXRpbmcobmV3RWxlbWVudCk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZExhc3RDaGlsZCA9IChjaGlsZDogTWluZE5vZGUpID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gY2hpbGQ7XG4gICAgd2hpbGUgKHJlc3VsdC5jaGlsZHJlbi5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNoaWxkcmVuW3Jlc3VsdC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBkaXZpZGVFbGVtZW50QnlQYXJlbnQgPSAoZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzID0gW107XG4gICAgY29uc3QgcGFyZW50RWxlbWVudHM6IE1pbmRFbGVtZW50W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnRzW2ldKTtcbiAgICAgICAgY29uc3QgcGFyZW50SW5kZXggPSBwYXJlbnRFbGVtZW50cy5pbmRleE9mKHBhcmVudCk7XG4gICAgICAgIGlmIChwYXJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgIGFic3RyYWN0SW5jbHVkZWRHcm91cHMucHVzaChbZWxlbWVudHNbaV1dKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFic3RyYWN0SW5jbHVkZWRHcm91cHNbcGFyZW50SW5kZXhdLnB1c2goZWxlbWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHBhcmVudEVsZW1lbnRzLCBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzIH07XG59O1xuIl19
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL21pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBK0IsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBb0IsRUFBRSxFQUFFO0lBQ3JELE1BQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUyxFQUFFLENBQWMsRUFBRSxFQUFFO1FBQ3hFLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNOLE9BQU8sS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQW1CLEVBQUUsS0FBa0IsRUFBRSxFQUFFO0lBQ3RFLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENB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bEQsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNwQixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUM7YUFBTTtZQUNILHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RDtLQUNKO0lBQ0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmRMYXlvdXRUeXBlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgYWRkU2VsZWN0ZWRFbGVtZW50LCBjbGVhclNlbGVjdGVkRWxlbWVudCwgaWRDcmVhdG9yLCBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdE5vZGUsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgTk9ERV9NSU5fV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMvbm9kZS1ydWxlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50U2hhcGUsIE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRSb290TGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQnO1xuaW1wb3J0IHsgVEVYVF9ERUZBVUxUX0hFSUdIVCB9IGZyb20gJ0BwbGFpdC9yaWNodGV4dCc7XG5pbXBvcnQgeyBlbnRlck5vZGVFZGl0aW5nIH0gZnJvbSAnLi9ub2RlL2NvbW1vbic7XG5pbXBvcnQgeyBjcmVhdGVNaW5kRWxlbWVudCB9IGZyb20gJy4vbm9kZS9jcmVhdGUtbm9kZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRDaGlsZHJlbkNvdW50ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgY291bnQ6IG51bWJlciA9IGVsZW1lbnQuY2hpbGRyZW4ucmVkdWNlKChwOiBudW1iZXIsIGM6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBwICsgZ2V0Q2hpbGRyZW5Db3VudChjKTtcbiAgICB9LCAwKTtcbiAgICByZXR1cm4gY291bnQgKyBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkRWxlbWVudCA9IChvcmlnaW46IE1pbmRFbGVtZW50LCBjaGlsZDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBsZXQgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChjaGlsZCk7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50ID09PSBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpcnN0TGV2ZWxFbGVtZW50ID0gKGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWluZEVsZW1lbnRbXSA9IFtdO1xuICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IGlzQ2hpbGQgPSBlbGVtZW50cy5zb21lKG5vZGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGlzQ2hpbGRFbGVtZW50KG5vZGUsIGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWlzQ2hpbGQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkUmlnaHQgPSAobm9kZTogTWluZE5vZGUsIGNoaWxkOiBNaW5kTm9kZSkgPT4ge1xuICAgIHJldHVybiBub2RlLnggPCBjaGlsZC54O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hpbGRVcCA9IChub2RlOiBNaW5kTm9kZSwgY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgcmV0dXJuIG5vZGUueSA+IGNoaWxkLnk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weU5ld05vZGUgPSAobm9kZTogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBuZXdOb2RlOiBNaW5kRWxlbWVudCA9IHsgLi4ubm9kZSB9O1xuICAgIG5ld05vZGUuaWQgPSBpZENyZWF0b3IoKTtcbiAgICBuZXdOb2RlLmNoaWxkcmVuID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIG5ld05vZGUuY2hpbGRyZW4ucHVzaChjb3B5TmV3Tm9kZShjaGlsZE5vZGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld05vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdE5vZGVzVGV4dCA9IChub2RlOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGxldCBzdHIgPSAnJztcbiAgICBpZiAobm9kZSkge1xuICAgICAgICBzdHIgKz0gTm9kZS5zdHJpbmcobm9kZS5kYXRhLnRvcGljLmNoaWxkcmVuWzBdKSArICcgJztcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZE5vZGUgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgc3RyICs9IGV4dHJhY3ROb2Rlc1RleHQoY2hpbGROb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufTtcblxuLy8gbGF5b3V0TGV2ZWwg55So5p2l6KGo56S65o+S5YWl5YWE5byf6IqC54K56L+Y5piv5a2Q6IqC54K5XG5leHBvcnQgY29uc3QgaW5zZXJ0TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGluaGVyaXROb2RlOiBNaW5kRWxlbWVudCwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGxldCBmaWxsLFxuICAgICAgICBzdHJva2VDb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGgsXG4gICAgICAgIHNoYXBlID0gTWluZEVsZW1lbnRTaGFwZS5yb3VuZFJlY3RhbmdsZTtcbiAgICBpZiAoIWluaGVyaXROb2RlLmlzUm9vdCkge1xuICAgICAgICBmaWxsID0gaW5oZXJpdE5vZGUuZmlsbDtcbiAgICAgICAgc3Ryb2tlQ29sb3IgPSBpbmhlcml0Tm9kZS5zdHJva2VDb2xvcjtcbiAgICAgICAgc3Ryb2tlV2lkdGggPSBpbmhlcml0Tm9kZS5zdHJva2VXaWR0aDtcbiAgICB9XG5cbiAgICBzaGFwZSA9IGluaGVyaXROb2RlLnNoYXBlIGFzIE1pbmRFbGVtZW50U2hhcGU7XG5cbiAgICBjb25zdCBuZXdFbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJycsIE5PREVfTUlOX1dJRFRILCBURVhUX0RFRkFVTFRfSEVJR0hULCB7IGZpbGwsIHN0cm9rZUNvbG9yLCBzdHJva2VXaWR0aCwgc2hhcGUgfSk7XG5cbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG5ld0VsZW1lbnQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlbnRlck5vZGVFZGl0aW5nKG5ld0VsZW1lbnQpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRMYXN0Q2hpbGQgPSAoY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IGNoaWxkO1xuICAgIHdoaWxlIChyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jaGlsZHJlbltyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGl2aWRlRWxlbWVudEJ5UGFyZW50ID0gKGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3QgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyA9IFtdO1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50c1tpXSk7XG4gICAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gcGFyZW50RWxlbWVudHMuaW5kZXhPZihwYXJlbnQpO1xuICAgICAgICBpZiAocGFyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBwYXJlbnRFbGVtZW50cy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzLnB1c2goW2VsZW1lbnRzW2ldXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzW3BhcmVudEluZGV4XS5wdXNoKGVsZW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBwYXJlbnRFbGVtZW50cywgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyB9O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PlaitElement } from '@plait/core';
|
|
2
|
+
export function enterNodeEditing(element) {
|
|
3
|
+
const component = PlaitElement.getComponent(element);
|
|
4
|
+
component.startEditText(false, false);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUkzQyxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDakQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQXNCLENBQUM7SUFDMUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS5jb21wb25lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW50ZXJOb2RlRWRpdGluZyhlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgY29tcG9uZW50LnN0YXJ0RWRpdFRleHQoZmFsc2UsIGZhbHNlKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './adjust-node';
|
|
2
|
+
export * from './create-node';
|
|
3
|
+
export * from './common';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hZGp1c3Qtbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1ub2RlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Path, PlaitBoard, PlaitNode } from '@plait/core';
|
|
2
|
+
import { MindElement } from '../../interfaces/element';
|
|
3
|
+
import { getRootLayout } from '../layout';
|
|
4
|
+
import { MindLayoutType } from '@plait/layouts';
|
|
5
|
+
export const isInRightBranchOfStandardLayout = (selectedElement) => {
|
|
6
|
+
const parentElement = MindElement.findParent(selectedElement);
|
|
7
|
+
if (parentElement) {
|
|
8
|
+
const nodeIndex = parentElement.children.findIndex(item => item.id === selectedElement.id);
|
|
9
|
+
if (parentElement.isRoot &&
|
|
10
|
+
getRootLayout(parentElement) === MindLayoutType.standard &&
|
|
11
|
+
parentElement.rightNodeCount &&
|
|
12
|
+
nodeIndex <= parentElement.rightNodeCount - 1) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
};
|
|
18
|
+
export const insertElementHandleRightNodeCount = (board, path, insertCount, effectedRightNodeCount = []) => {
|
|
19
|
+
let index = effectedRightNodeCount.findIndex(ref => Path.equals(ref.path, path));
|
|
20
|
+
const mind = PlaitNode.get(board, path);
|
|
21
|
+
if (index === -1) {
|
|
22
|
+
effectedRightNodeCount.push({ path, rightNodeCount: mind.rightNodeCount + insertCount });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
effectedRightNodeCount[index].rightNodeCount += insertCount;
|
|
26
|
+
}
|
|
27
|
+
return effectedRightNodeCount;
|
|
28
|
+
};
|
|
29
|
+
export const deleteElementsHandleRightNodeCount = (board, deletableElements, effectedRightNodeCount = []) => {
|
|
30
|
+
deletableElements.forEach(element => {
|
|
31
|
+
if (isInRightBranchOfStandardLayout(element)) {
|
|
32
|
+
const mind = MindElement.getParent(element);
|
|
33
|
+
const path = PlaitBoard.findPath(board, mind);
|
|
34
|
+
let index = effectedRightNodeCount.findIndex(ref => Path.equals(ref.path, path));
|
|
35
|
+
if (index === -1) {
|
|
36
|
+
effectedRightNodeCount.push({ path, rightNodeCount: mind.rightNodeCount - 1 });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
effectedRightNodeCount[index].rightNodeCount -= 1;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return effectedRightNodeCount;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaHQtbm9kZS1jb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL25vZGUvcmlnaHQtbm9kZS1jb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsZUFBNEIsRUFBRSxFQUFFO0lBQzVFLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUQsSUFBSSxhQUFhLEVBQUU7UUFDZixNQUFNLFNBQVMsR0FBVyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLElBQ0ksYUFBYSxDQUFDLE1BQU07WUFDcEIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxRQUFRO1lBQ3hELGFBQWEsQ0FBQyxjQUFjO1lBQzVCLFNBQVMsSUFBSSxhQUFhLENBQUMsY0FBYyxHQUFHLENBQUMsRUFDL0M7WUFDRSxPQUFPLElBQUksQ0FBQztTQUNmO0tBQ0o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxDQUM3QyxLQUFpQixFQUNqQixJQUFVLEVBQ1YsV0FBbUIsRUFDbkIseUJBQThDLEVBQUUsRUFDbEQsRUFBRTtJQUNBLElBQUksS0FBSyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBZ0IsQ0FBQztJQUN2RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNkLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWUsR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0tBQzdGO1NBQU07UUFDSCxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDO0tBQy9EO0lBQ0QsT0FBTyxzQkFBc0IsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUM5QyxLQUFpQixFQUNqQixpQkFBZ0MsRUFDaEMseUJBQThDLEVBQUUsRUFDbEQsRUFBRTtJQUNBLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNoQyxJQUFJLCtCQUErQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsSUFBSSxLQUFLLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakYsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2Qsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBZSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbkY7aUJBQU07Z0JBQ0gsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQzthQUNyRDtTQUNKO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLHNCQUFzQixDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0Tm9kZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IGdldFJvb3RMYXlvdXQgfSBmcm9tICcuLi9sYXlvdXQnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5cbmV4cG9ydCBjb25zdCBpc0luUmlnaHRCcmFuY2hPZlN0YW5kYXJkTGF5b3V0ID0gKHNlbGVjdGVkRWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChzZWxlY3RlZEVsZW1lbnQpO1xuICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGVJbmRleDogbnVtYmVyID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBzZWxlY3RlZEVsZW1lbnQuaWQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXJlbnRFbGVtZW50LmlzUm9vdCAmJlxuICAgICAgICAgICAgZ2V0Um9vdExheW91dChwYXJlbnRFbGVtZW50KSA9PT0gTWluZExheW91dFR5cGUuc3RhbmRhcmQgJiZcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQucmlnaHROb2RlQ291bnQgJiZcbiAgICAgICAgICAgIG5vZGVJbmRleCA8PSBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50IC0gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmlnaHROb2RlQ291bnRSZWYge1xuICAgIHBhdGg6IFBhdGg7XG4gICAgcmlnaHROb2RlQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydEVsZW1lbnRIYW5kbGVSaWdodE5vZGVDb3VudCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwYXRoOiBQYXRoLFxuICAgIGluc2VydENvdW50OiBudW1iZXIsXG4gICAgZWZmZWN0ZWRSaWdodE5vZGVDb3VudDogUmlnaHROb2RlQ291bnRSZWZbXSA9IFtdXG4pID0+IHtcbiAgICBsZXQgaW5kZXggPSBlZmZlY3RlZFJpZ2h0Tm9kZUNvdW50LmZpbmRJbmRleChyZWYgPT4gUGF0aC5lcXVhbHMocmVmLnBhdGgsIHBhdGgpKTtcbiAgICBjb25zdCBtaW5kID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCkgYXMgTWluZEVsZW1lbnQ7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICBlZmZlY3RlZFJpZ2h0Tm9kZUNvdW50LnB1c2goeyBwYXRoLCByaWdodE5vZGVDb3VudDogbWluZC5yaWdodE5vZGVDb3VudCEgKyBpbnNlcnRDb3VudCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBlZmZlY3RlZFJpZ2h0Tm9kZUNvdW50W2luZGV4XS5yaWdodE5vZGVDb3VudCArPSBpbnNlcnRDb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIGVmZmVjdGVkUmlnaHROb2RlQ291bnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlRWxlbWVudHNIYW5kbGVSaWdodE5vZGVDb3VudCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkZWxldGFibGVFbGVtZW50czogTWluZEVsZW1lbnRbXSxcbiAgICBlZmZlY3RlZFJpZ2h0Tm9kZUNvdW50OiBSaWdodE5vZGVDb3VudFJlZltdID0gW11cbikgPT4ge1xuICAgIGRlbGV0YWJsZUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChpc0luUmlnaHRCcmFuY2hPZlN0YW5kYXJkTGF5b3V0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBtaW5kID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIG1pbmQpO1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gZWZmZWN0ZWRSaWdodE5vZGVDb3VudC5maW5kSW5kZXgocmVmID0+IFBhdGguZXF1YWxzKHJlZi5wYXRoLCBwYXRoKSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgZWZmZWN0ZWRSaWdodE5vZGVDb3VudC5wdXNoKHsgcGF0aCwgcmlnaHROb2RlQ291bnQ6IG1pbmQucmlnaHROb2RlQ291bnQhIC0gMSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZWZmZWN0ZWRSaWdodE5vZGVDb3VudFtpbmRleF0ucmlnaHROb2RlQ291bnQgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBlZmZlY3RlZFJpZ2h0Tm9kZUNvdW50O1xufTtcbiJdfQ==
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Processing of branch color, width, style, etc. of the mind node
|
|
3
3
|
*/
|
|
4
4
|
import { PlaitBoard, isNullOrUndefined } from '@plait/core';
|
|
5
|
+
import { BranchShape } from '../../interfaces/element';
|
|
5
6
|
import { BRANCH_COLORS } from '../../constants/node-style';
|
|
6
7
|
import { BRANCH_WIDTH } from '../../constants/default';
|
|
7
8
|
import { DefaultAbstractNodeStyle } from '../../constants/node-style';
|
|
@@ -10,6 +11,10 @@ export const getBranchColorByMindElement = (board, element) => {
|
|
|
10
11
|
const branchColor = getAvailableProperty(board, element, 'branchColor');
|
|
11
12
|
return branchColor || getDefaultBranchColor(board, element);
|
|
12
13
|
};
|
|
14
|
+
export const getBranchShapeByMindElement = (board, element) => {
|
|
15
|
+
const branchShape = getAvailableProperty(board, element, 'branchShape');
|
|
16
|
+
return branchShape || BranchShape.bight;
|
|
17
|
+
};
|
|
13
18
|
export const getBranchWidthByMindElement = (board, element) => {
|
|
14
19
|
const branchWidth = getAvailableProperty(board, element, 'branchWidth');
|
|
15
20
|
return branchWidth || BRANCH_WIDTH;
|
|
@@ -39,4 +44,4 @@ export const getDefaultBranchColorByIndex = (index) => {
|
|
|
39
44
|
const remainder = index % length;
|
|
40
45
|
return BRANCH_COLORS[remainder];
|
|
41
46
|
};
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQ25GLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDeEUsT0FBTyxXQUFXLElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDbkYsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RSxPQUFPLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDbkYsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RSxPQUFPLFdBQVcsSUFBSSxZQUFZLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUM5RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUM5QjtJQUNELE9BQU8sd0JBQXdCLENBQUMsV0FBVyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFvQixFQUFFLEVBQUU7SUFDOUUsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1FBQ3JCLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUM5QjtJQUNELE9BQU8sd0JBQXdCLENBQUMsV0FBVyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFO0lBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ25DLE9BQU8sNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUM3RSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxPQUFPLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDMUQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvY2Vzc2luZyBvZiBicmFuY2ggY29sb3IsIHdpZHRoLCBzdHlsZSwgZXRjLiBvZiB0aGUgbWluZCBub2RlXG4gKi9cbmltcG9ydCB7IFBsYWl0Qm9hcmQsIGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQnJhbmNoU2hhcGUsIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IEJSQU5DSF9DT0xPUlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS1zdHlsZSc7XG5pbXBvcnQgeyBCUkFOQ0hfV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZGVmYXVsdCc7XG5pbXBvcnQgeyBEZWZhdWx0QWJzdHJhY3ROb2RlU3R5bGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS1zdHlsZSc7XG5pbXBvcnQgeyBnZXRBdmFpbGFibGVQcm9wZXJ0eSB9IGZyb20gJy4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBicmFuY2hDb2xvciA9IGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnYnJhbmNoQ29sb3InKTtcbiAgICByZXR1cm4gYnJhbmNoQ29sb3IgfHwgZ2V0RGVmYXVsdEJyYW5jaENvbG9yKGJvYXJkLCBlbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYnJhbmNoU2hhcGUgPSBnZXRBdmFpbGFibGVQcm9wZXJ0eShib2FyZCwgZWxlbWVudCwgJ2JyYW5jaFNoYXBlJyk7XG4gICAgcmV0dXJuIGJyYW5jaFNoYXBlIHx8IEJyYW5jaFNoYXBlLmJpZ2h0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBicmFuY2hXaWR0aCA9IGdldEF2YWlsYWJsZVByb3BlcnR5KGJvYXJkLCBlbGVtZW50LCAnYnJhbmNoV2lkdGgnKTtcbiAgICByZXR1cm4gYnJhbmNoV2lkdGggfHwgQlJBTkNIX1dJRFRIO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFic3RyYWN0QnJhbmNoV2lkdGggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChlbGVtZW50LmJyYW5jaFdpZHRoKSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5icmFuY2hXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIERlZmF1bHRBYnN0cmFjdE5vZGVTdHlsZS5icmFuY2hXaWR0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBYnN0cmFjdEJyYW5jaENvbG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50LmJyYW5jaENvbG9yKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmJyYW5jaENvbG9yO1xuICAgIH1cbiAgICByZXR1cm4gRGVmYXVsdEFic3RyYWN0Tm9kZVN0eWxlLmJyYW5jaENvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5leHRCcmFuY2hDb2xvciA9IChyb290OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gcm9vdC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgcmV0dXJuIGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXgoaW5kZXgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRCcmFuY2hDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIGdldERlZmF1bHRCcmFuY2hDb2xvckJ5SW5kZXgocGF0aFsxXSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdEJyYW5jaENvbG9yQnlJbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbGVuZ3RoID0gQlJBTkNIX0NPTE9SUy5sZW5ndGg7XG4gICAgY29uc3QgcmVtYWluZGVyID0gaW5kZXggJSBsZW5ndGg7XG4gICAgcmV0dXJuIEJSQU5DSF9DT0xPUlNbcmVtYWluZGVyXTtcbn07XG4iXX0=
|