@plait/mind 0.2.2 → 0.3.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/base/base.d.ts → base/base.drawer.d.ts} +1 -1
- package/{plugins/emoji → base}/emoji-base.component.d.ts +2 -2
- package/{plugins/emoji → base}/index.d.ts +1 -1
- package/draw/abstract.d.ts +2 -1
- package/draw/indented-link.d.ts +1 -1
- package/draw/link/logic-link.d.ts +1 -1
- package/draw/node.d.ts +5 -0
- package/draw/topic.d.ts +16 -0
- package/{plugins/emoji → drawer}/emoji.drawer.d.ts +3 -3
- package/drawer/quick-insert.drawer.d.ts +1 -1
- package/esm2020/base/base.drawer.mjs +17 -0
- package/esm2020/base/emoji-base.component.mjs +33 -0
- package/esm2020/base/index.mjs +3 -0
- package/esm2020/draw/abstract.mjs +8 -7
- package/esm2020/draw/indented-link.mjs +3 -3
- package/esm2020/draw/link/abstract-link.mjs +9 -15
- package/esm2020/draw/link/logic-link.mjs +9 -9
- package/esm2020/draw/node.mjs +21 -0
- package/esm2020/draw/topic.mjs +32 -0
- package/esm2020/drawer/emoji.drawer.mjs +73 -0
- package/esm2020/drawer/quick-insert.drawer.mjs +3 -3
- package/esm2020/interfaces/index.mjs +2 -2
- package/esm2020/interfaces/pointer.mjs +5 -0
- package/esm2020/mind.component.mjs +5 -5
- package/esm2020/mind.module.mjs +7 -7
- package/esm2020/node.component.mjs +14 -13
- package/esm2020/plugins/with-abstract-resize.board.mjs +12 -0
- package/esm2020/plugins/with-abstract-resize.mjs +107 -0
- package/esm2020/plugins/with-mind-create.mjs +85 -0
- package/esm2020/plugins/with-mind-extend.mjs +11 -0
- package/esm2020/plugins/with-mind.board.mjs +2 -0
- package/esm2020/plugins/with-mind.mjs +29 -15
- package/esm2020/plugins/with-node-dnd.mjs +162 -0
- package/esm2020/public-api.mjs +5 -3
- package/esm2020/transforms/abstract-node.mjs +3 -2
- package/esm2020/transforms/emoji.mjs +37 -0
- package/esm2020/transforms/index.mjs +7 -3
- package/esm2020/transforms/node.mjs +40 -33
- package/esm2020/utils/abstract/common.mjs +64 -31
- package/esm2020/utils/abstract/resize.mjs +3 -2
- package/esm2020/utils/clipboard.mjs +16 -18
- package/esm2020/utils/dnd/common.mjs +35 -0
- package/esm2020/utils/dnd/detector.mjs +268 -0
- package/esm2020/utils/dnd/draw.mjs +161 -0
- package/esm2020/utils/index.mjs +5 -6
- package/esm2020/utils/mind.mjs +5 -128
- package/esm2020/utils/node/adjust-node.mjs +49 -0
- package/esm2020/utils/node/create-node.mjs +61 -0
- package/esm2020/utils/point-placement.mjs +22 -2
- package/esm2020/utils/position/emoji.mjs +31 -0
- package/esm2020/utils/position/index.mjs +4 -0
- package/esm2020/utils/position/node.mjs +34 -0
- package/esm2020/utils/position/topic.mjs +14 -0
- package/esm2020/utils/space/emoji.mjs +19 -0
- package/esm2020/utils/space/layout-options.mjs +72 -0
- package/esm2020/utils/space/node-space.mjs +77 -0
- package/fesm2015/plait-mind.mjs +1475 -1642
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +1496 -1652
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/interfaces/index.d.ts +1 -1
- package/interfaces/pointer.d.ts +3 -0
- package/mind.module.d.ts +2 -2
- package/node.component.d.ts +3 -3
- package/package.json +3 -3
- package/{interfaces/abstract.d.ts → plugins/with-abstract-resize.board.d.ts} +2 -2
- package/plugins/with-mind-create.d.ts +11 -0
- package/plugins/with-mind-extend.d.ts +3 -0
- package/plugins/{with-extend-mind.d.ts → with-mind.board.d.ts} +4 -4
- package/plugins/with-mind.d.ts +1 -1
- package/public-api.d.ts +4 -2
- package/styles/styles.scss +5 -2
- package/transforms/abstract-node.d.ts +1 -1
- package/transforms/emoji.d.ts +6 -0
- package/transforms/index.d.ts +3 -0
- package/transforms/node.d.ts +5 -5
- package/utils/abstract/common.d.ts +19 -4
- package/utils/abstract/resize.d.ts +2 -1
- package/utils/dnd/common.d.ts +7 -0
- package/utils/dnd/detector.d.ts +31 -0
- package/utils/dnd/draw.d.ts +9 -0
- package/utils/index.d.ts +4 -5
- package/utils/mind.d.ts +3 -22
- package/utils/node/adjust-node.d.ts +5 -0
- package/utils/node/create-node.d.ts +14 -0
- package/utils/point-placement.d.ts +8 -1
- package/utils/position/emoji.d.ts +7 -0
- package/utils/position/index.d.ts +3 -0
- package/utils/position/node.d.ts +12 -0
- package/utils/position/topic.d.ts +16 -0
- package/utils/space/emoji.d.ts +7 -0
- package/{layout-option.d.ts → utils/space/layout-options.d.ts} +1 -1
- package/utils/{node-space.d.ts → space/node-space.d.ts} +4 -4
- package/draw/link.d.ts +0 -3
- package/draw/richtext.d.ts +0 -15
- package/draw/shape.d.ts +0 -3
- package/esm2020/draw/link.mjs +0 -160
- package/esm2020/draw/richtext.mjs +0 -39
- package/esm2020/draw/shape.mjs +0 -18
- package/esm2020/drawer/base/base.mjs +0 -17
- package/esm2020/interfaces/abstract.mjs +0 -12
- package/esm2020/layout-option.mjs +0 -72
- package/esm2020/plugins/emoji/emoji-base.component.mjs +0 -33
- package/esm2020/plugins/emoji/emoji.drawer.mjs +0 -72
- package/esm2020/plugins/emoji/emoji.mjs +0 -47
- package/esm2020/plugins/emoji/index.mjs +0 -3
- package/esm2020/plugins/with-abstract.mjs +0 -106
- package/esm2020/plugins/with-dnd.mjs +0 -179
- package/esm2020/plugins/with-extend-mind.mjs +0 -11
- package/esm2020/utils/direction-corrector.mjs +0 -54
- package/esm2020/utils/direction-detector.mjs +0 -56
- package/esm2020/utils/dnd.mjs +0 -122
- package/esm2020/utils/draw-placeholder.mjs +0 -313
- package/esm2020/utils/drop-target-corrector.mjs +0 -87
- package/esm2020/utils/graph.mjs +0 -24
- package/esm2020/utils/node-space.mjs +0 -77
- package/plugins/emoji/emoji.d.ts +0 -11
- package/utils/direction-corrector.d.ts +0 -4
- package/utils/direction-detector.d.ts +0 -9
- package/utils/dnd.d.ts +0 -16
- package/utils/draw-placeholder.d.ts +0 -42
- package/utils/drop-target-corrector.d.ts +0 -9
- package/utils/graph.d.ts +0 -5
- /package/plugins/{with-abstract.d.ts → with-abstract-resize.d.ts} +0 -0
- /package/plugins/{with-dnd.d.ts → with-node-dnd.d.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ElementRef, OnInit } from '@angular/core';
|
|
2
|
-
import { EmojiData, EmojiItem } from '
|
|
2
|
+
import { EmojiData, EmojiItem } from '../interfaces/element-data';
|
|
3
3
|
import { PlaitBoard } from '@plait/core';
|
|
4
|
-
import { MindElement } from '
|
|
4
|
+
import { MindElement } from '../interfaces';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class MindEmojiBaseComponent implements OnInit {
|
|
7
7
|
protected elementRef: ElementRef<HTMLElement>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './base.drawer';
|
|
2
2
|
export * from './emoji-base.component';
|
package/draw/abstract.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PlaitBoard } from '@plait/core';
|
|
2
2
|
import { RoughSVG } from 'roughjs/bin/svg';
|
|
3
|
-
import {
|
|
3
|
+
import { MindElement } from '../interfaces';
|
|
4
|
+
import { AbstractHandlePosition } from '../plugins/with-abstract-resize.board';
|
|
4
5
|
export declare function drawAbstractIncludedOutline(board: PlaitBoard, roughSVG: RoughSVG, element: MindElement, activeHandlePosition?: AbstractHandlePosition, resizingLocation?: number): SVGGElement;
|
|
5
6
|
export declare function getHandleOption(isHover: boolean): {
|
|
6
7
|
stroke: string;
|
package/draw/indented-link.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { MindNode } from '../interfaces/node';
|
|
2
2
|
import { PlaitBoard } from '@plait/core';
|
|
3
|
-
export declare function drawIndentedLink(board: PlaitBoard, node: MindNode, child: MindNode, defaultStroke?: string | null, needDrawUnderline?: boolean): SVGGElement;
|
|
3
|
+
export declare function drawIndentedLink(board: PlaitBoard, node: MindNode, child: MindNode, defaultStroke?: string | null, needDrawUnderline?: boolean, defaultStrokeWidth?: number): SVGGElement;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { MindNode } from '../../interfaces/node';
|
|
2
2
|
import { PlaitBoard } from '@plait/core';
|
|
3
|
-
export declare function drawLogicLink(board: PlaitBoard, node: MindNode, parent: MindNode, isHorizontal: boolean): SVGGElement;
|
|
3
|
+
export declare function drawLogicLink(board: PlaitBoard, node: MindNode, parent: MindNode, isHorizontal: boolean, defaultStroke?: string | null, defaultStrokeWidth?: number): SVGGElement;
|
package/draw/node.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { MindNode } from '../interfaces/node';
|
|
2
|
+
import { PlaitBoard, RectangleClient } from '@plait/core';
|
|
3
|
+
import { MindElement } from '../interfaces';
|
|
4
|
+
export declare function drawRoundRectangleByNode(board: PlaitBoard, node: MindNode): SVGGElement;
|
|
5
|
+
export declare function drawRoundRectangleByElement(board: PlaitBoard, nodeRectangle: RectangleClient, element: MindElement): SVGGElement;
|
package/draw/topic.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { MindNode } from '../interfaces/node';
|
|
3
|
+
import { PlaitMindBoard } from '../plugins/with-mind.board';
|
|
4
|
+
import { RectangleClient } from '@plait/core';
|
|
5
|
+
import { MindElement } from '../interfaces';
|
|
6
|
+
export declare function drawTopicByNode(board: PlaitMindBoard, node: MindNode, viewContainerRef?: ViewContainerRef): {
|
|
7
|
+
richtextComponentRef: import("@angular/core").ComponentRef<import("@plait/richtext").PlaitRichtextComponent>;
|
|
8
|
+
richtextG: SVGGElement;
|
|
9
|
+
foreignObject: SVGForeignObjectElement;
|
|
10
|
+
};
|
|
11
|
+
export declare function drawTopicByElement(board: PlaitMindBoard, rectangle: RectangleClient, element: MindElement, viewContainerRef?: ViewContainerRef): {
|
|
12
|
+
richtextComponentRef: import("@angular/core").ComponentRef<import("@plait/richtext").PlaitRichtextComponent>;
|
|
13
|
+
richtextG: SVGGElement;
|
|
14
|
+
foreignObject: SVGForeignObjectElement;
|
|
15
|
+
};
|
|
16
|
+
export declare function updateMindNodeTopicSize(board: PlaitMindBoard, node: MindNode, g: SVGGElement, isEditable: boolean): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentRef, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { EmojiData, EmojiItem, MindElement } from '
|
|
3
|
-
import { MindEmojiBaseComponent } from '
|
|
4
|
-
import { PlaitMindBoard } from '../with-
|
|
2
|
+
import { EmojiData, EmojiItem, MindElement } from '../interfaces';
|
|
3
|
+
import { MindEmojiBaseComponent } from '../base/emoji-base.component';
|
|
4
|
+
import { PlaitMindBoard } from '../plugins/with-mind.board';
|
|
5
5
|
export declare class EmojiDrawer {
|
|
6
6
|
private board;
|
|
7
7
|
private viewContainerRef;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MindElement, BaseData } from '../interfaces';
|
|
2
|
-
import { AfterDraw, BaseDrawer } from '
|
|
2
|
+
import { AfterDraw, BaseDrawer } from '../base/base.drawer';
|
|
3
3
|
export declare class QuickInsertDrawer extends BaseDrawer implements AfterDraw {
|
|
4
4
|
canDraw(element: MindElement<BaseData>): boolean;
|
|
5
5
|
draw(element: MindElement<BaseData>): SVGGElement;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class BaseDrawer {
|
|
2
|
+
constructor(board) {
|
|
3
|
+
this.board = board;
|
|
4
|
+
}
|
|
5
|
+
destroy() {
|
|
6
|
+
if (this.g) {
|
|
7
|
+
this.g.remove();
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function hasAfterDraw(value) {
|
|
12
|
+
if (value.afterDraw) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5kcmF3ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9iYXNlL2Jhc2UuZHJhd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBZ0IsVUFBVTtJQUc1QixZQUFzQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO0lBQUcsQ0FBQztJQU0zQyxPQUFPO1FBQ0gsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNuQjtJQUNMLENBQUM7Q0FDSjtBQU1ELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBVTtJQUNuQyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7UUFDakIsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEcmF3ZXIge1xuICAgIGc/OiBTVkdHRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBib2FyZDogUGxhaXRCb2FyZCkge31cblxuICAgIGFic3RyYWN0IGNhbkRyYXcoZWxlbWVudDogTWluZEVsZW1lbnQpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgZHJhdyhlbGVtZW50OiBNaW5kRWxlbWVudCk6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZykge1xuICAgICAgICAgICAgdGhpcy5nLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFmdGVyRHJhdyB7XG4gICAgYWZ0ZXJEcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50KTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FmdGVyRHJhdyh2YWx1ZTogYW55KTogdmFsdWUgaXMgQWZ0ZXJEcmF3IHtcbiAgICBpZiAodmFsdWUuYWZ0ZXJEcmF3KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class MindEmojiBaseComponent {
|
|
4
|
+
get nativeElement() {
|
|
5
|
+
return this.elementRef.nativeElement;
|
|
6
|
+
}
|
|
7
|
+
constructor(elementRef) {
|
|
8
|
+
this.elementRef = elementRef;
|
|
9
|
+
this.fontSize = 14;
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.elementRef.nativeElement.style.fontSize = `${this.fontSize}px`;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
MindEmojiBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: MindEmojiBaseComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
+
MindEmojiBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: MindEmojiBaseComponent, inputs: { fontSize: "fontSize", emojiItem: "emojiItem", board: "board", element: "element" }, host: { classAttribute: "mind-node-emoji" }, ngImport: i0 });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: MindEmojiBaseComponent, decorators: [{
|
|
18
|
+
type: Directive,
|
|
19
|
+
args: [{
|
|
20
|
+
host: {
|
|
21
|
+
class: 'mind-node-emoji'
|
|
22
|
+
}
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fontSize: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], emojiItem: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], board: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], element: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}] } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9iYXNlL2Vtb2ppLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQVVyRSxNQUFNLE9BQU8sc0JBQXNCO0lBYS9CLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQXNCLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBZnpELGFBQVEsR0FBVyxFQUFFLENBQUM7SUFlc0MsQ0FBQztJQUU3RCxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQztJQUN4RSxDQUFDOzttSEFyQlEsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLGlCQUFpQjtxQkFDM0I7aUJBQ0o7aUdBR0csUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWluZC1ub2RlLWVtb2ppJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWluZEVtb2ppQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBmb250U2l6ZTogbnVtYmVyID0gMTQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGVtb2ppSXRlbSE6IEVtb2ppSXRlbTtcblxuICAgIEBJbnB1dCgpXG4gICAgYm9hcmQhOiBQbGFpdEJvYXJkO1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50ITogTWluZEVsZW1lbnQ8RW1vamlEYXRhPjtcblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmZvbnRTaXplID0gYCR7dGhpcy5mb250U2l6ZX1weGA7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './base.drawer';
|
|
2
|
+
export * from './emoji-base.component';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9iYXNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2UuZHJhd2VyJztcbmV4cG9ydCAqIGZyb20gJy4vZW1vamktYmFzZS5jb21wb25lbnQnOyJdfQ==
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { drawAbstractRoundRectangle, createG, getRectangleByElements, PlaitBoard, RectangleClient } from '@plait/core';
|
|
2
2
|
import { PRIMARY_COLOR } from '../constants';
|
|
3
3
|
import { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET } from '../constants/abstract-node';
|
|
4
|
-
import {
|
|
4
|
+
import { MindElement } from '../interfaces';
|
|
5
5
|
import { isHorizontalLayout } from '@plait/layouts';
|
|
6
6
|
import { MindQueries } from '../queries';
|
|
7
|
-
import { getLayoutDirection, getPointByPlacement,
|
|
7
|
+
import { getLayoutDirection, getPointByPlacement, moveXOfPoint, transformPlacement } from '../utils/point-placement';
|
|
8
8
|
import { HorizontalPlacement, VerticalPlacement } from '../interfaces/types';
|
|
9
9
|
import { getRectangleByResizingLocation } from '../utils/abstract/resize';
|
|
10
|
+
import { AbstractHandlePosition } from '../plugins/with-abstract-resize.board';
|
|
10
11
|
export function drawAbstractIncludedOutline(board, roughSVG, element, activeHandlePosition, resizingLocation) {
|
|
11
12
|
const abstractIncludedG = createG();
|
|
12
13
|
const parentElement = MindElement.getParent(element);
|
|
@@ -30,10 +31,10 @@ export function drawAbstractIncludedOutline(board, roughSVG, element, activeHand
|
|
|
30
31
|
transformPlacement(endPlacement, linkDirection);
|
|
31
32
|
let startCenterPoint = getPointByPlacement(abstractRectangle, startPlacement);
|
|
32
33
|
let endCenterPoint = getPointByPlacement(abstractRectangle, endPlacement);
|
|
33
|
-
const startPoint1 =
|
|
34
|
-
const startPoint2 =
|
|
35
|
-
const endPoint1 =
|
|
36
|
-
const endPoint2 =
|
|
34
|
+
const startPoint1 = moveXOfPoint(startCenterPoint, -ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
35
|
+
const startPoint2 = moveXOfPoint(startCenterPoint, ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
36
|
+
const endPoint1 = moveXOfPoint(endCenterPoint, -ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
37
|
+
const endPoint2 = moveXOfPoint(endCenterPoint, ABSTRACT_HANDLE_LENGTH / 2, linkDirection);
|
|
37
38
|
const startHandle = roughSVG.line(startPoint1[0], startPoint1[1], startPoint2[0], startPoint2[1], getHandleOption(activeHandlePosition === AbstractHandlePosition.start));
|
|
38
39
|
const endHandle = roughSVG.line(endPoint1[0], endPoint1[1], endPoint2[0], endPoint2[1], getHandleOption(activeHandlePosition === AbstractHandlePosition.end));
|
|
39
40
|
changeBoardClass(board, activeHandlePosition, isHorizontal);
|
|
@@ -71,4 +72,4 @@ export function changeBoardClass(board, activeHandlePosition, isHorizontal) {
|
|
|
71
72
|
PlaitBoard.getBoardNativeElement(board).classList.remove('abstract-resizing-vertical');
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9kcmF3L2Fic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFrQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRSxNQUFNLFVBQVUsMkJBQTJCLENBQ3ZDLEtBQWlCLEVBQ2pCLFFBQWtCLEVBQ2xCLE9BQW9CLEVBQ3BCLG9CQUE2QyxFQUM3QyxnQkFBeUI7SUFFekIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUVwQyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFtQixDQUFDO0lB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S0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3pGLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDMUY7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZHJhd0Fic3RyYWN0Um91bmRSZWN0YW5nbGUsIGNyZWF0ZUcsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsIFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBSSU1BUllfQ09MT1IgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUJTVFJBQ1RfSEFORExFX0NPTE9SLCBBQlNUUkFDVF9IQU5ETEVfTEVOR1RILCBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCB9IGZyb20gJy4uL2NvbnN0YW50cy9hYnN0cmFjdC1ub2RlJztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSwgaXNIb3Jpem9udGFsTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgbW92ZVBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi91dGlscy9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24gfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9yZXNpemUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHJvdWdoU1ZHOiBSb3VnaFNWRyxcbiAgICBlbGVtZW50OiBNaW5kRWxlbWVudCxcbiAgICBhY3RpdmVIYW5kbGVQb3NpdGlvbj86IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sXG4gICAgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlclxuKSB7XG4gICAgY29uc3QgYWJzdHJhY3RJbmNsdWRlZEcgPSBjcmVhdGVHKCk7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCk7XG5cbiAgICBjb25zdCBpbmNsdWRlZEVsZW1lbnRzID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5zbGljZShlbGVtZW50LnN0YXJ0ISwgZWxlbWVudC5lbmQhICsgMSk7XG4gICAgbGV0IGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgaW5jbHVkZWRFbGVtZW50cywgdHJ1ZSk7XG4gICAgYWJzdHJhY3RSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShhYnN0cmFjdFJlY3RhbmdsZSwgLUFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUKTtcblxuICAgIGlmIChyZXNpemluZ0xvY2F0aW9uKSB7XG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKGFic3RyYWN0UmVjdGFuZ2xlLCByZXNpemluZ0xvY2F0aW9uLCBhY3RpdmVIYW5kbGVQb3NpdGlvbiEsIGlzSG9yaXpvbnRhbCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZHJhd0Fic3RyYWN0Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIHJvdWdoU1ZHLFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS55LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54ICsgYWJzdHJhY3RSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlLnkgKyBhYnN0cmFjdFJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgIGlzSG9yaXpvbnRhbCxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlciwgVmVydGljYWxQbGFjZW1lbnQudG9wXSBhcyBQb2ludFBsYWNlbWVudDtcbiAgICBjb25zdCBlbmRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV0gYXMgUG9pbnRQbGFjZW1lbnQ7XG5cbiAgICBjb25zdCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCksIGlzSG9yaXpvbnRhbCk7XG5cbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoc3RhcnRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIHRyYW5zZm9ybVBsYWNlbWVudChlbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgbGV0IHN0YXJ0Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGFic3RyYWN0UmVjdGFuZ2xlLCBzdGFydFBsYWNlbWVudCk7XG4gICAgbGV0IGVuZENlbnRlclBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChhYnN0cmFjdFJlY3RhbmdsZSwgZW5kUGxhY2VtZW50KTtcblxuICAgIGNvbnN0IHN0YXJ0UG9pbnQxID0gbW92ZVBvaW50KHN0YXJ0Q2VudGVyUG9pbnQsIC1BQlNUUkFDVF9IQU5ETEVfTEVOR1RIIC8gMiwgbGlua0RpcmVjdGlvbik7XG4gICAgY29uc3Qgc3RhcnRQb2ludDIgPSBtb3ZlUG9pbnQoc3RhcnRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgZW5kUG9pbnQxID0gbW92ZVBvaW50KGVuZENlbnRlclBvaW50LCAtQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuICAgIGNvbnN0IGVuZFBvaW50MiA9IG1vdmVQb2ludChlbmRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3Qgc3RhcnRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBzdGFydFBvaW50MVswXSxcbiAgICAgICAgc3RhcnRQb2ludDFbMV0sXG4gICAgICAgIHN0YXJ0UG9pbnQyWzBdLFxuICAgICAgICBzdGFydFBvaW50MlsxXSxcbiAgICAgICAgZ2V0SGFuZGxlT3B0aW9uKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KVxuICAgICk7XG5cbiAgICBjb25zdCBlbmRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBlbmRQb2ludDFbMF0sXG4gICAgICAgIGVuZFBvaW50MVsxXSxcbiAgICAgICAgZW5kUG9pbnQyWzBdLFxuICAgICAgICBlbmRQb2ludDJbMV0sXG4gICAgICAgIGdldEhhbmRsZU9wdGlvbihhY3RpdmVIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQpXG4gICAgKTtcblxuICAgIGNoYW5nZUJvYXJkQ2xhc3MoYm9hcmQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uLCBpc0hvcml6b250YWwpO1xuXG4gICAgc3RhcnRIYW5kbGUuc2V0QXR0cmlidXRlKCdzdHJva2UtbGluZWNhcCcsICdyb3VuZCcpO1xuICAgIGVuZEhhbmRsZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1saW5lY2FwJywgJ3JvdW5kJyk7XG5cbiAgICBhYnN0cmFjdEluY2x1ZGVkRy5hcHBlbmQoc3RhcnRIYW5kbGUpO1xuICAgIGFic3RyYWN0SW5jbHVkZWRHLmFwcGVuZChlbmRIYW5kbGUpO1xuICAgIGFic3RyYWN0SW5jbHVkZWRHLmFwcGVuZChyZWN0YW5nbGUpO1xuXG4gICAgcmV0dXJuIGFic3RyYWN0SW5jbHVkZWRHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGFuZGxlT3B0aW9uKGlzSG92ZXI6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gaXNIb3ZlclxuICAgICAgICA/IHtcbiAgICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICBzdHJva2VXaWR0aDogNCxcbiAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBQlNUUkFDVF9IQU5ETEVfQ09MT1IsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAzLFxuICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlQm9hcmRDbGFzcyhib2FyZDogUGxhaXRCb2FyZCwgYWN0aXZlSGFuZGxlUG9zaXRpb246IEFic3RyYWN0SGFuZGxlUG9zaXRpb24gfCB1bmRlZmluZWQsIGlzSG9yaXpvbnRhbDogYm9vbGVhbikge1xuICAgIGlmIChhY3RpdmVIYW5kbGVQb3NpdGlvbikge1xuICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctaG9yaXpvbnRhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ2Fic3RyYWN0LXJlc2l6aW5nLXZlcnRpY2FsJyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnYWJzdHJhY3QtcmVzaXppbmctaG9yaXpvbnRhbCcpO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICB9XG59XG4iXX0=
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9kcmF3L2Fic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFrQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvRSxNQUFNLFVBQVUsMkJBQTJCLENBQ3ZDLEtBQWlCLEVBQ2pCLFFBQWtCLEVBQ2xCLE9BQW9CLEVBQ3BCLG9CQUE2QyxFQUM3QyxnQkFBeUI7SUFFekIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUVwQyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyx5QkFBeUIs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O1NBQU07UUFDSCxVQUFVLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3pGLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDMUY7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZHJhd0Fic3RyYWN0Um91bmRSZWN0YW5nbGUsIGNyZWF0ZUcsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsIFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBSSU1BUllfQ09MT1IgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUJTVFJBQ1RfSEFORExFX0NPTE9SLCBBQlNUUkFDVF9IQU5ETEVfTEVOR1RILCBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCB9IGZyb20gJy4uL2NvbnN0YW50cy9hYnN0cmFjdC1ub2RlJztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSwgaXNIb3Jpem9udGFsTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgbW92ZVhPZlBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi91dGlscy9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24gfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9yZXNpemUnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC1yZXNpemUuYm9hcmQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHJvdWdoU1ZHOiBSb3VnaFNWRyxcbiAgICBlbGVtZW50OiBNaW5kRWxlbWVudCxcbiAgICBhY3RpdmVIYW5kbGVQb3NpdGlvbj86IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sXG4gICAgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlclxuKSB7XG4gICAgY29uc3QgYWJzdHJhY3RJbmNsdWRlZEcgPSBjcmVhdGVHKCk7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCk7XG5cbiAgICBjb25zdCBpbmNsdWRlZEVsZW1lbnRzID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5zbGljZShlbGVtZW50LnN0YXJ0ISwgZWxlbWVudC5lbmQhICsgMSk7XG4gICAgbGV0IGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgaW5jbHVkZWRFbGVtZW50cywgdHJ1ZSk7XG4gICAgYWJzdHJhY3RSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShhYnN0cmFjdFJlY3RhbmdsZSwgLUFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUKTtcblxuICAgIGlmIChyZXNpemluZ0xvY2F0aW9uKSB7XG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKGFic3RyYWN0UmVjdGFuZ2xlLCByZXNpemluZ0xvY2F0aW9uLCBhY3RpdmVIYW5kbGVQb3NpdGlvbiEsIGlzSG9yaXpvbnRhbCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZHJhd0Fic3RyYWN0Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIHJvdWdoU1ZHLFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS55LFxuICAgICAgICBhYnN0cmFjdFJlY3RhbmdsZS54ICsgYWJzdHJhY3RSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgIGFic3RyYWN0UmVjdGFuZ2xlLnkgKyBhYnN0cmFjdFJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgIGlzSG9yaXpvbnRhbCxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzdGFydFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlciwgVmVydGljYWxQbGFjZW1lbnQudG9wXSBhcyBQb2ludFBsYWNlbWVudDtcbiAgICBjb25zdCBlbmRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5jZW50ZXIsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV0gYXMgUG9pbnRQbGFjZW1lbnQ7XG5cbiAgICBjb25zdCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCksIGlzSG9yaXpvbnRhbCk7XG5cbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoc3RhcnRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIHRyYW5zZm9ybVBsYWNlbWVudChlbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgbGV0IHN0YXJ0Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGFic3RyYWN0UmVjdGFuZ2xlLCBzdGFydFBsYWNlbWVudCk7XG4gICAgbGV0IGVuZENlbnRlclBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChhYnN0cmFjdFJlY3RhbmdsZSwgZW5kUGxhY2VtZW50KTtcblxuICAgIGNvbnN0IHN0YXJ0UG9pbnQxID0gbW92ZVhPZlBvaW50KHN0YXJ0Q2VudGVyUG9pbnQsIC1BQlNUUkFDVF9IQU5ETEVfTEVOR1RIIC8gMiwgbGlua0RpcmVjdGlvbik7XG4gICAgY29uc3Qgc3RhcnRQb2ludDIgPSBtb3ZlWE9mUG9pbnQoc3RhcnRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgZW5kUG9pbnQxID0gbW92ZVhPZlBvaW50KGVuZENlbnRlclBvaW50LCAtQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuICAgIGNvbnN0IGVuZFBvaW50MiA9IG1vdmVYT2ZQb2ludChlbmRDZW50ZXJQb2ludCwgQUJTVFJBQ1RfSEFORExFX0xFTkdUSCAvIDIsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3Qgc3RhcnRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBzdGFydFBvaW50MVswXSxcbiAgICAgICAgc3RhcnRQb2ludDFbMV0sXG4gICAgICAgIHN0YXJ0UG9pbnQyWzBdLFxuICAgICAgICBzdGFydFBvaW50MlsxXSxcbiAgICAgICAgZ2V0SGFuZGxlT3B0aW9uKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KVxuICAgICk7XG5cbiAgICBjb25zdCBlbmRIYW5kbGUgPSByb3VnaFNWRy5saW5lKFxuICAgICAgICBlbmRQb2ludDFbMF0sXG4gICAgICAgIGVuZFBvaW50MVsxXSxcbiAgICAgICAgZW5kUG9pbnQyWzBdLFxuICAgICAgICBlbmRQb2ludDJbMV0sXG4gICAgICAgIGdldEhhbmRsZU9wdGlvbihhY3RpdmVIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQpXG4gICAgKTtcblxuICAgIGNoYW5nZUJvYXJkQ2xhc3MoYm9hcmQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uLCBpc0hvcml6b250YWwpO1xuXG4gICAgc3RhcnRIYW5kbGUuc2V0QXR0cmlidXRlKCdzdHJva2UtbGluZWNhcCcsICdyb3VuZCcpO1xuICAgIGVuZEhhbmRsZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1saW5lY2FwJywgJ3JvdW5kJyk7XG5cbiAgICBhYnN0cmFjdEluY2x1ZGVkRy5hcHBlbmQoc3RhcnRIYW5kbGUpO1xuICAgIGFic3RyYWN0SW5jbHVkZWRHLmFwcGVuZChlbmRIYW5kbGUpO1xuICAgIGFic3RyYWN0SW5jbHVkZWRHLmFwcGVuZChyZWN0YW5nbGUpO1xuXG4gICAgcmV0dXJuIGFic3RyYWN0SW5jbHVkZWRHO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGFuZGxlT3B0aW9uKGlzSG92ZXI6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gaXNIb3ZlclxuICAgICAgICA/IHtcbiAgICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICBzdHJva2VXaWR0aDogNCxcbiAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgICAgc3Ryb2tlOiBBQlNUUkFDVF9IQU5ETEVfQ09MT1IsXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAzLFxuICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlQm9hcmRDbGFzcyhib2FyZDogUGxhaXRCb2FyZCwgYWN0aXZlSGFuZGxlUG9zaXRpb246IEFic3RyYWN0SGFuZGxlUG9zaXRpb24gfCB1bmRlZmluZWQsIGlzSG9yaXpvbnRhbDogYm9vbGVhbikge1xuICAgIGlmIChhY3RpdmVIYW5kbGVQb3NpdGlvbikge1xuICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuY2xhc3NMaXN0LmFkZCgnYWJzdHJhY3QtcmVzaXppbmctaG9yaXpvbnRhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZE5hdGl2ZUVsZW1lbnQoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ2Fic3RyYWN0LXJlc2l6aW5nLXZlcnRpY2FsJyk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnYWJzdHJhY3QtcmVzaXppbmctaG9yaXpvbnRhbCcpO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkTmF0aXZlRWxlbWVudChib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnYWJzdHJhY3QtcmVzaXppbmctdmVydGljYWwnKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -5,8 +5,8 @@ import { MindLayoutType } from '@plait/layouts';
|
|
|
5
5
|
import { MindQueries } from '../queries';
|
|
6
6
|
import { getBranchColorByMindElement, getBranchWidthByMindElement } from '../utils/node-style/branch';
|
|
7
7
|
import { MindElementShape } from '../interfaces/element';
|
|
8
|
-
export function drawIndentedLink(board, node, child, defaultStroke = null, needDrawUnderline = true) {
|
|
9
|
-
const branchWidth = getBranchWidthByMindElement(board, child.origin);
|
|
8
|
+
export function drawIndentedLink(board, node, child, defaultStroke = null, needDrawUnderline = true, defaultStrokeWidth) {
|
|
9
|
+
const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, child.origin);
|
|
10
10
|
const branchColor = defaultStroke || getBranchColorByMindElement(board, child.origin);
|
|
11
11
|
const isUnderlineShape = getShapeByElement(board, child.origin) === MindElementShape.underline;
|
|
12
12
|
let beginX, beginY, endX, endY, beginNode = node, endNode = child;
|
|
@@ -42,4 +42,4 @@ export function drawIndentedLink(board, node, child, defaultStroke = null, needD
|
|
|
42
42
|
const points = pointsOnBezierCurves(curve);
|
|
43
43
|
return PlaitBoard.getRoughSVG(board).curve(points, { stroke: branchColor, strokeWidth: branchWidth });
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZW50ZWQtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2RyYXcvaW5kZW50ZWQtbGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixLQUFpQixFQUNqQixJQUFjLEVBQ2QsS0FBZSxFQUNmLGdCQUErQixJQUFJLEVBQ25DLGlCQUFpQixHQUFHLElBQUksRUFDeEIsa0JBQTJCO0lBRTNCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixJQUFJLDJCQUEyQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0YsTUFBTSxXQUFXLEdBQUcsYUFBYSxJQUFJLDJCQUEyQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEYsTUFBTSxnQkFBZ0IsR0FBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBc0IsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7SUFDckgsSUFBSSxNQUFNLEVBQ04sTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osU0FBUyxHQUFH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SSxDQUFDO1FBQ3RELGdCQUFnQixJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztRQUN2SCxnQkFBZ0IsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7UUFDdkgsZ0JBQWdCLElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0tBQzFILENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDakgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50c09uQmV6aWVyQ3VydmVzIH0gZnJvbSAncG9pbnRzLW9uLWN1cnZlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0U2hhcGVCeUVsZW1lbnQsIGdldFJlY3RhbmdsZUJ5Tm9kZSwgaXNDaGlsZFVwIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50LCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9ub2RlLXN0eWxlL2JyYW5jaCc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudFNoYXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbmRlbnRlZExpbmsoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgbm9kZTogTWluZE5vZGUsXG4gICAgY2hpbGQ6IE1pbmROb2RlLFxuICAgIGRlZmF1bHRTdHJva2U6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIG5lZWREcmF3VW5kZXJsaW5lID0gdHJ1ZSxcbiAgICBkZWZhdWx0U3Ryb2tlV2lkdGg/OiBudW1iZXJcbikge1xuICAgIGNvbnN0IGJyYW5jaFdpZHRoID0gZGVmYXVsdFN0cm9rZVdpZHRoIHx8IGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudChib2FyZCwgY2hpbGQub3JpZ2luKTtcbiAgICBjb25zdCBicmFuY2hDb2xvciA9IGRlZmF1bHRTdHJva2UgfHwgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50KGJvYXJkLCBjaGlsZC5vcmlnaW4pO1xuXG4gICAgY29uc3QgaXNVbmRlcmxpbmVTaGFwZSA9IChnZXRTaGFwZUJ5RWxlbWVudChib2FyZCwgY2hpbGQub3JpZ2luKSBhcyBNaW5kRWxlbWVudFNoYXBlKSA9PT0gTWluZEVsZW1lbnRTaGFwZS51bmRlcmxpbmU7XG4gICAgbGV0IGJlZ2luWCxcbiAgICAgICAgYmVnaW5ZLFxuICAgICAgICBlbmRYLFxuICAgICAgICBlbmRZLFxuICAgICAgICBiZWdpbk5vZGUgPSBub2RlLFxuICAgICAgICBlbmROb2RlID0gY2hpbGQ7XG4gICAgY29uc3QgYmVnaW5SZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUoYmVnaW5Ob2RlKTtcbiAgICBjb25zdCBlbmRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUoZW5kTm9kZSk7XG5cbiAgICBiZWdpblggPSBiZWdpbk5vZGUueCArIGJlZ2luTm9kZS53aWR0aCAvIDI7XG4gICAgYmVnaW5ZID0gaXNDaGlsZFVwKG5vZGUsIGNoaWxkKSA/IGJlZ2luUmVjdGFuZ2xlLnkgOiBiZWdpblJlY3RhbmdsZS55ICsgYmVnaW5SZWN0YW5nbGUuaGVpZ2h0O1xuICAgIGVuZFggPSBub2RlLmxlZnQgPyBlbmROb2RlLnggKyBlbmROb2RlLmhHYXAgKyBlbmRSZWN0YW5nbGUud2lkdGggOiBlbmROb2RlLnggKyBlbmROb2RlLmhHYXA7XG4gICAgZW5kWSA9IGlzVW5kZXJsaW5lU2hhcGUgPyBlbmROb2RlLnkgKyBlbmROb2RlLmhlaWdodCAtIGVuZE5vZGUudkdhcCA6IGVuZE5vZGUueSArIGVuZE5vZGUuaGVpZ2h0IC8gMjtcbiAgICAvL+agueaNruS9jee9ru+8jOiuvue9ruato+i0n+WPguaVsFxuICAgIGxldCBwbHVzTWludXMgPSBpc0NoaWxkVXAobm9kZSwgY2hpbGQpID8gKG5vZGUubGVmdCA/IFstMSwgLTFdIDogWzEsIC0xXSkgOiBub2RlLmxlZnQgPyBbLTEsIDFdIDogWzEsIDFdO1xuICAgIGNvbnN0IGxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBpZiAoYmVnaW5Ob2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgaWYgKGxheW91dCA9PT0gTWluZExheW91dFR5cGUubGVmdEJvdHRvbUluZGVudGVkIHx8IGxheW91dCA9PT0gTWluZExheW91dFR5cGUucmlnaHRCb3R0b21JbmRlbnRlZCkge1xuICAgICAgICAgICAgYmVnaW5ZICs9IGJyYW5jaFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLmxlZnRUb3BJbmRlbnRlZCB8fCBsYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnJpZ2h0VG9wSW5kZW50ZWQpIHtcbiAgICAgICAgICAgIGJlZ2luWSAtPSBicmFuY2hXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgY3VydmU6IFBvaW50W10gPSBbXG4gICAgICAgIFtiZWdpblgsIGJlZ2luWV0sXG4gICAgICAgIFtiZWdpblgsIGJlZ2luWV0sXG4gICAgICAgIFtiZWdpblgsIGJlZ2luWV0sXG4gICAgICAgIFtiZWdpblgsIGVuZFkgLSAoZW5kTm9kZS5oR2FwICogMyAqIHBsdXNNaW51c1sxXSkgLyA1XSxcbiAgICAgICAgW2JlZ2luWCwgZW5kWSAtIChlbmROb2RlLmhHYXAgKiBwbHVzTWludXNbMV0pIC8gNV0sXG4gICAgICAgIFtiZWdpblggKyAoZW5kTm9kZS5oR2FwICogcGx1c01pbnVzWzBdKSAvIDQsIGVuZFldLFxuICAgICAgICBbYmVnaW5YICsgKGVuZE5vZGUuaEdhcCAqIHBsdXNNaW51c1swXSAqIDMpIC8gNSwgZW5kWV0sXG4gICAgICAgIGlzVW5kZXJsaW5lU2hhcGUgJiYgbmVlZERyYXdVbmRlcmxpbmUgPyBbZW5kWCArIChlbmROb2RlLndpZHRoIC0gZW5kTm9kZS5oR2FwICogMikgKiBwbHVzTWludXNbMF0sIGVuZFldIDogW2VuZFgsIGVuZFldLFxuICAgICAgICBpc1VuZGVybGluZVNoYXBlICYmIG5lZWREcmF3VW5kZXJsaW5lID8gW2VuZFggKyAoZW5kTm9kZS53aWR0aCAtIGVuZE5vZGUuaEdhcCAqIDIpICogcGx1c01pbnVzWzBdLCBlbmRZXSA6IFtlbmRYLCBlbmRZXSxcbiAgICAgICAgaXNVbmRlcmxpbmVTaGFwZSAmJiBuZWVkRHJhd1VuZGVybGluZSA/IFtlbmRYICsgKGVuZE5vZGUud2lkdGggLSBlbmROb2RlLmhHYXAgKiAyKSAqIHBsdXNNaW51c1swXSwgZW5kWV0gOiBbZW5kWCwgZW5kWV1cbiAgICBdO1xuXG4gICAgY29uc3QgcG9pbnRzID0gcG9pbnRzT25CZXppZXJDdXJ2ZXMoY3VydmUpO1xuICAgIHJldHVybiBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5jdXJ2ZShwb2ludHMgYXMgYW55LCB7IHN0cm9rZTogYnJhbmNoQ29sb3IsIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aCB9KTtcbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlaitBoard, getRectangleByElements } from '@plait/core';
|
|
2
|
-
import { getRectangleByNode } from '../../utils/
|
|
2
|
+
import { getRectangleByNode } from '../../utils/position/node';
|
|
3
3
|
import { HorizontalPlacement, VerticalPlacement } from '../../interfaces/types';
|
|
4
|
-
import { getLayoutDirection, getPointByPlacement,
|
|
4
|
+
import { getLayoutDirection, getPointByPlacement, getXDistanceBetweenPoint, moveXOfPoint, transformPlacement } from '../../utils/point-placement';
|
|
5
5
|
import { getAbstractBranchColor, getAbstractBranchWidth } from '../../utils/node-style/branch';
|
|
6
6
|
export function drawAbstractLink(board, node, isHorizontal) {
|
|
7
7
|
const linkPadding = 15;
|
|
@@ -23,22 +23,16 @@ export function drawAbstractLink(board, node, isHorizontal) {
|
|
|
23
23
|
let bezierBeginPoint = getPointByPlacement(includedElementsRectangle, bezierBeginPlacement);
|
|
24
24
|
let bezierEndPoint = getPointByPlacement(includedElementsRectangle, bezierEndPlacement);
|
|
25
25
|
let abstractConnectorPoint = getPointByPlacement(abstractRectangle, abstractConnectorPlacement);
|
|
26
|
-
let curveDistance =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
bezierBeginPoint = movePoint(bezierBeginPoint, linkPadding, linkDirection);
|
|
34
|
-
let c1 = movePoint(bezierBeginPoint, curveDistance, linkDirection);
|
|
35
|
-
bezierEndPoint = movePoint(bezierEndPoint, linkPadding, linkDirection);
|
|
36
|
-
let c2 = movePoint(bezierEndPoint, curveDistance, linkDirection);
|
|
37
|
-
let bezierConnectorPoint = movePoint(abstractConnectorPoint, -linkPadding, linkDirection);
|
|
26
|
+
let curveDistance = getXDistanceBetweenPoint(abstractConnectorPoint, bezierBeginPoint, isHorizontal) - linkPadding * 2;
|
|
27
|
+
bezierBeginPoint = moveXOfPoint(bezierBeginPoint, linkPadding, linkDirection);
|
|
28
|
+
let c1 = moveXOfPoint(bezierBeginPoint, curveDistance, linkDirection);
|
|
29
|
+
bezierEndPoint = moveXOfPoint(bezierEndPoint, linkPadding, linkDirection);
|
|
30
|
+
let c2 = moveXOfPoint(bezierEndPoint, curveDistance, linkDirection);
|
|
31
|
+
let bezierConnectorPoint = moveXOfPoint(abstractConnectorPoint, -linkPadding, linkDirection);
|
|
38
32
|
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]}`, {
|
|
39
33
|
stroke: branchColor,
|
|
40
34
|
strokeWidth: branchWidth
|
|
41
35
|
});
|
|
42
36
|
return link;
|
|
43
37
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2RyYXcvbGluay9hYnN0cmFjdC1saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFrQixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hHLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osa0JBQWtCLEVBQ3JCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0YsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsSUFBYyxFQUFFLFlBQXFCO0lBQ3JGLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzQixNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELElBQUksZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzdGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0seUJBQXlCLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXhGLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM3RCxNQUFNLG9CQUFvQixHQUFHLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBbUIsQ0FBQztJQUNsRyxNQUFNLGtCQUFrQixHQUFHLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBbUIsQ0FBQztJQUNuRyxNQUFNLDBCQUEwQixHQUFHLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBbUIsQ0FBQztJQUUxRyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RCxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN0RCxrQkFBa0IsQ0FBQywwQkFBMEIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUU5RCxJQUFJLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDNUYsSUFBSSxjQUFjLEdBQUcsbUJBQW1CLENBQUMseUJBQXlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN4RixJQUFJLHNCQUFzQixHQUFHLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDaEcsSUFBSSxhQUFhLEdBQUcsd0JBQXdCLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN2SCxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlFLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdEUsY0FBYyxHQUFHLFlBQVksQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzFFLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLElBQUksb0JBQW9CLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixFQUFFLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTdGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMzQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxLQUFLLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3hTO1FBQ0ksTUFBTSxFQUFFLFdBQVc7UUFDbkIsV0FBVyxFQUFFLFdBQVc7S0FDM0IsQ0FDSixDQUFDO0lBQ0YsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi8uLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBnZXRMYXlvdXREaXJlY3Rpb24sXG4gICAgZ2V0UG9pbnRCeVBsYWNlbWVudCxcbiAgICBnZXRYRGlzdGFuY2VCZXR3ZWVuUG9pbnQsXG4gICAgbW92ZVhPZlBvaW50LFxuICAgIHRyYW5zZm9ybVBsYWNlbWVudFxufSBmcm9tICcuLi8uLi91dGlscy9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgZ2V0QWJzdHJhY3RCcmFuY2hDb2xvciwgZ2V0QWJzdHJhY3RCcmFuY2hXaWR0aCB9IGZyb20gJy4uLy4uL3V0aWxzL25vZGUtc3R5bGUvYnJhbmNoJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdBYnN0cmFjdExpbmsoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmROb2RlLCBpc0hvcml6b250YWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBsaW5rUGFkZGluZyA9IDE1O1xuICAgIGNvbnN0IGJyYW5jaFdpZHRoID0gZ2V0QWJzdHJhY3RCcmFuY2hXaWR0aChib2FyZCwgbm9kZS5vcmlnaW4pO1xuICAgIGNvbnN0IGJyYW5jaENvbG9yID0gZ2V0QWJzdHJhY3RCcmFuY2hDb2xvcihib2FyZCwgbm9kZS5vcmlnaW4pO1xuICAgIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIGNvbnN0IGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpO1xuICAgIGxldCBpbmNsdWRlZEVsZW1lbnRzID0gcGFyZW50LmNoaWxkcmVuLnNsaWNlKG5vZGUub3JpZ2luLnN0YXJ0LCBub2RlLm9yaWdpbi5lbmQhICsgMSkubWFwKG5vZGUgPT4ge1xuICAgICAgICByZXR1cm4gbm9kZS5vcmlnaW47XG4gICAgfSk7XG4gICAgY29uc3QgaW5jbHVkZWRFbGVtZW50c1JlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGluY2x1ZGVkRWxlbWVudHMsIHRydWUpO1xuXG4gICAgY29uc3QgbGlua0RpcmVjdGlvbiA9IGdldExheW91dERpcmVjdGlvbihub2RlLCBpc0hvcml6b250YWwpO1xuICAgIGNvbnN0IGJlemllckJlZ2luUGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQucmlnaHQsIFZlcnRpY2FsUGxhY2VtZW50LnRvcF0gYXMgUG9pbnRQbGFjZW1lbnQ7XG4gICAgY29uc3QgYmV6aWVyRW5kUGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQucmlnaHQsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV0gYXMgUG9pbnRQbGFjZW1lbnQ7XG4gICAgY29uc3QgYWJzdHJhY3RDb25uZWN0b3JQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0LCBWZXJ0aWNhbFBsYWNlbWVudC5taWRkbGVdIGFzIFBvaW50UGxhY2VtZW50O1xuXG4gICAgdHJhbnNmb3JtUGxhY2VtZW50KGJlemllckJlZ2luUGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoYmV6aWVyRW5kUGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoYWJzdHJhY3RDb25uZWN0b3JQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgbGV0IGJlemllckJlZ2luUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGluY2x1ZGVkRWxlbWVudHNSZWN0YW5nbGUsIGJlemllckJlZ2luUGxhY2VtZW50KTtcbiAgICBsZXQgYmV6aWVyRW5kUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGluY2x1ZGVkRWxlbWVudHNSZWN0YW5nbGUsIGJlemllckVuZFBsYWNlbWVudCk7XG4gICAgbGV0IGFic3RyYWN0Q29ubmVjdG9yUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KGFic3RyYWN0UmVjdGFuZ2xlLCBhYnN0cmFjdENvbm5lY3RvclBsYWNlbWVudCk7XG4gICAgbGV0IGN1cnZlRGlzdGFuY2UgPSBnZXRYRGlzdGFuY2VCZXR3ZWVuUG9pbnQoYWJzdHJhY3RDb25uZWN0b3JQb2ludCwgYmV6aWVyQmVnaW5Qb2ludCwgaXNIb3Jpem9udGFsKSAtIGxpbmtQYWRkaW5nICogMjtcbiAgICBiZXppZXJCZWdpblBvaW50ID0gbW92ZVhPZlBvaW50KGJlemllckJlZ2luUG9pbnQsIGxpbmtQYWRkaW5nLCBsaW5rRGlyZWN0aW9uKTtcbiAgICBsZXQgYzEgPSBtb3ZlWE9mUG9pbnQoYmV6aWVyQmVnaW5Qb2ludCwgY3VydmVEaXN0YW5jZSwgbGlua0RpcmVjdGlvbik7XG4gICAgYmV6aWVyRW5kUG9pbnQgPSBtb3ZlWE9mUG9pbnQoYmV6aWVyRW5kUG9pbnQsIGxpbmtQYWRkaW5nLCBsaW5rRGlyZWN0aW9uKTtcbiAgICBsZXQgYzIgPSBtb3ZlWE9mUG9pbnQoYmV6aWVyRW5kUG9pbnQsIGN1cnZlRGlzdGFuY2UsIGxpbmtEaXJlY3Rpb24pO1xuICAgIGxldCBiZXppZXJDb25uZWN0b3JQb2ludCA9IG1vdmVYT2ZQb2ludChhYnN0cmFjdENvbm5lY3RvclBvaW50LCAtbGlua1BhZGRpbmcsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgY29uc3QgbGluayA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLnBhdGgoXG4gICAgICAgIGBNJHtiZXppZXJCZWdpblBvaW50WzBdfSwke2JlemllckJlZ2luUG9pbnRbMV19IFEke2MxWzBdfSwke2MxWzFdfSAke2JlemllckNvbm5lY3RvclBvaW50WzBdfSwke2JlemllckNvbm5lY3RvclBvaW50WzFdfSBRJHtjMlswXX0sJHtjMlsxXX0gJHtiZXppZXJFbmRQb2ludFswXX0sJHtiZXppZXJFbmRQb2ludFsxXX0gTSR7YWJzdHJhY3RDb25uZWN0b3JQb2ludFswXX0sJHthYnN0cmFjdENvbm5lY3RvclBvaW50WzFdfSBMJHtiZXppZXJDb25uZWN0b3JQb2ludFswXX0sJHtiZXppZXJDb25uZWN0b3JQb2ludFsxXX1gLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IGJyYW5jaENvbG9yLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IGJyYW5jaFdpZHRoXG4gICAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBsaW5rO1xufVxuIl19
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
2
2
|
import { PlaitBoard } from '@plait/core';
|
|
3
3
|
import { getRectangleByNode, getShapeByElement } from '../../utils';
|
|
4
|
-
import { getLayoutDirection, getPointByPlacement,
|
|
4
|
+
import { getLayoutDirection, getPointByPlacement, moveXOfPoint, transformPlacement } from '../../utils/point-placement';
|
|
5
5
|
import { HorizontalPlacement, VerticalPlacement } from '../../interfaces/types';
|
|
6
6
|
import { getBranchColorByMindElement, getBranchWidthByMindElement } from '../../utils/node-style/branch';
|
|
7
7
|
import { MindElementShape } from '../../interfaces/element';
|
|
8
|
-
export function drawLogicLink(board, node, parent, isHorizontal) {
|
|
9
|
-
const branchColor = getBranchColorByMindElement(board, node.origin);
|
|
10
|
-
const branchWidth = getBranchWidthByMindElement(board, node.origin);
|
|
8
|
+
export function drawLogicLink(board, node, parent, isHorizontal, defaultStroke = null, defaultStrokeWidth) {
|
|
9
|
+
const branchColor = defaultStroke || getBranchColorByMindElement(board, node.origin);
|
|
10
|
+
const branchWidth = defaultStrokeWidth || getBranchWidthByMindElement(board, node.origin);
|
|
11
11
|
const hasStraightLine = !parent.origin.isRoot;
|
|
12
12
|
const parentShape = getShapeByElement(board, parent.origin);
|
|
13
13
|
const shape = node.origin.shape ? node.origin.shape : parentShape;
|
|
@@ -34,21 +34,21 @@ export function drawLogicLink(board, node, parent, isHorizontal) {
|
|
|
34
34
|
// ② 确定凸出直线,从起始点开始画一条直线,从直线的结束位置绘制曲线,保证收起图标可以完美覆盖起始连线,根节点不需要这条直线
|
|
35
35
|
// 绘制贝塞尔曲线要求,需要增加三个点,正常两个点就可以确定这条直线
|
|
36
36
|
const straightLineDistance = 8;
|
|
37
|
-
const beginPoint2 = hasStraightLine ?
|
|
37
|
+
const beginPoint2 = hasStraightLine ? moveXOfPoint(beginPoint, straightLineDistance, linkDirection) : beginPoint;
|
|
38
38
|
let straightLine = hasStraightLine ? [beginPoint, beginPoint2, beginPoint2] : [];
|
|
39
39
|
// ③ 确定曲线
|
|
40
40
|
const beginBufferDistance = (parent.hGap + node.hGap) / 3;
|
|
41
41
|
const endBufferDistance = -(parent.hGap + node.hGap) / 2.4;
|
|
42
42
|
let curve = [
|
|
43
43
|
beginPoint2,
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
moveXOfPoint(beginPoint2, beginBufferDistance, linkDirection),
|
|
45
|
+
moveXOfPoint(endPoint, endBufferDistance, linkDirection),
|
|
46
46
|
endPoint
|
|
47
47
|
];
|
|
48
48
|
// ④ 下划线绘制,underline shape and horizontal
|
|
49
|
-
const underlineEnd =
|
|
49
|
+
const underlineEnd = moveXOfPoint(endPoint, nodeClient.width, linkDirection);
|
|
50
50
|
const underline = hasUnderlineShape && isHorizontal ? [underlineEnd, underlineEnd, underlineEnd] : [];
|
|
51
51
|
const points = pointsOnBezierCurves([...straightLine, ...curve, ...underline]);
|
|
52
52
|
return PlaitBoard.getRoughSVG(board).curve(points, { stroke: branchColor, strokeWidth: branchWidth });
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWMtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2RyYXcvbGluay9sb2dpYy1saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsTUFBTSxVQUFVLGFBQWEsQ0FDekIsS0FBaUIsRUFDakIsSUFBYyxFQUNkLE1BQWdCLEVBQ2hCLFlBQXFCLEVBQ3JCLGdCQUErQixJQUFJLEVBQ25DLGtCQUEyQjtJQUUzQixNQUFNLFdBQVcsR0FBRyxhQUFhLElBQUksMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsSUFBSSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFGLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUMsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMs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QUFNLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ2pILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2ludHNPbkJlemllckN1cnZlcyB9IGZyb20gJ3BvaW50cy1vbi1jdXJ2ZSc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSwgZ2V0U2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBnZXRMYXlvdXREaXJlY3Rpb24sIGdldFBvaW50QnlQbGFjZW1lbnQsIG1vdmVYT2ZQb2ludCwgdHJhbnNmb3JtUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9pbnQtcGxhY2VtZW50JztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50LCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi91dGlscy9ub2RlLXN0eWxlL2JyYW5jaCc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudFNoYXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMb2dpY0xpbmsoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgbm9kZTogTWluZE5vZGUsXG4gICAgcGFyZW50OiBNaW5kTm9kZSxcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW4sXG4gICAgZGVmYXVsdFN0cm9rZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZGVmYXVsdFN0cm9rZVdpZHRoPzogbnVtYmVyXG4pIHtcbiAgICBjb25zdCBicmFuY2hDb2xvciA9IGRlZmF1bHRTdHJva2UgfHwgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50KGJvYXJkLCBub2RlLm9yaWdpbik7XG4gICAgY29uc3QgYnJhbmNoV2lkdGggPSBkZWZhdWx0U3Ryb2tlV2lkdGggfHwgZ2V0QnJhbmNoV2lkdGhCeU1pbmRFbGVtZW50KGJvYXJkLCBub2RlLm9yaWdpbik7XG4gICAgY29uc3QgaGFzU3RyYWlnaHRMaW5lID0gIXBhcmVudC5vcmlnaW4uaXNSb290O1xuICAgIGNvbnN0IHBhcmVudFNoYXBlID0gZ2V0U2hhcGVCeUVsZW1lbnQoYm9hcmQsIHBhcmVudC5vcmlnaW4pO1xuICAgIGNvbnN0IHNoYXBlID0gbm9kZS5vcmlnaW4uc2hhcGUgPyBub2RlLm9yaWdpbi5zaGFwZSA6IHBhcmVudFNoYXBlO1xuICAgIGNvbnN0IGhhc1VuZGVybGluZVNoYXBlID0gc2hhcGUgPT09IE1pbmRFbGVtZW50U2hhcGUudW5kZXJsaW5lO1xuICAgIGNvbnN0IGhhc1VuZGVybGluZVNoYXBlT2ZQYXJlbnQgPSBwYXJlbnRTaGFwZSA9PT0gTWluZEVsZW1lbnRTaGFwZS51bmRlcmxpbmU7XG4gICAgY29uc3Qgbm9kZUNsaWVudCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShub2RlKTtcbiAgICBjb25zdCBwYXJlbnRDbGllbnQgPSBnZXRSZWN0YW5nbGVCeU5vZGUocGFyZW50KTtcbiAgICBjb25zdCBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKG5vZGUsIGlzSG9yaXpvbnRhbCk7XG5cbiAgICAvLyDikaAgZW5zdXJlIGJlZ2luIHBsYWNlbWVudCBhbmQgZW5kIHBsYWNlbWVudFxuICAgIC8vIGJlZ2luIHBsYWNlbWVudCByZXByZXNlbnQgcGFyZW50IGNvbm5lY3RvciBwb3NpdGlvbiBhbmQgZW5kIHBsYWNlbWVudCByZXByZXNlbnQgY2hpbGQgY29ubmVjdG9yXG4gICAgY29uc3QgYmVnaW5QbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQucmlnaHQsIFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZV07XG4gICAgY29uc3QgZW5kUGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQsIFZlcnRpY2FsUGxhY2VtZW50Lm1pZGRsZV07XG5cbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoYmVnaW5QbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIHRyYW5zZm9ybVBsYWNlbWVudChlbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgLy8gdW5kZXJsaW5lIHNoYXBlIGFuZCBob3Jpem9udGFsXG4gICAgaWYgKGlzSG9yaXpvbnRhbCAmJiBoYXNVbmRlcmxpbmVTaGFwZU9mUGFyZW50ICYmICFwYXJlbnQub3JpZ2luLmlzUm9vdCkge1xuICAgICAgICBiZWdpblBsYWNlbWVudFsxXSA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICB9XG4gICAgaWYgKGlzSG9yaXpvbnRhbCAmJiBoYXNVbmRlcmxpbmVTaGFwZSkge1xuICAgICAgICBlbmRQbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC5ib3R0b207XG4gICAgfVxuXG4gICAgbGV0IGJlZ2luUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHBhcmVudENsaWVudCwgYmVnaW5QbGFjZW1lbnQpO1xuICAgIGxldCBlbmRQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQobm9kZUNsaWVudCwgZW5kUGxhY2VtZW50KTtcblxuICAgIC8vIOKRoSDnoa7lrprlh7jlh7rnm7Tnur/vvIzku47otbflp4vngrnlvIDlp4vnlLvkuIDmnaHnm7Tnur/vvIzku47nm7Tnur/nmoTnu5PmnZ/kvY3nva7nu5jliLbmm7Lnur/vvIzkv53or4HmlLbotbflm77moIflj6/ku6Xlroznvo7opobnm5botbflp4vov57nur/vvIzmoLnoioLngrnkuI3pnIDopoHov5nmnaHnm7Tnur9cbiAgICAvLyDnu5jliLbotJ3loZ7lsJTmm7Lnur/opoHmsYLvvIzpnIDopoHlop7liqDkuInkuKrngrnvvIzmraPluLjkuKTkuKrngrnlsLHlj6/ku6Xnoa7lrprov5nmnaHnm7Tnur9cbiAgICBjb25zdCBzdHJhaWdodExpbmVEaXN0YW5jZSA9IDg7XG4gICAgY29uc3QgYmVnaW5Qb2ludDIgPSBoYXNTdHJhaWdodExpbmUgPyBtb3ZlWE9mUG9pbnQoYmVnaW5Qb2ludCwgc3RyYWlnaHRMaW5lRGlzdGFuY2UsIGxpbmtEaXJlY3Rpb24pIDogYmVnaW5Qb2ludDtcbiAgICBsZXQgc3RyYWlnaHRMaW5lOiBQb2ludFtdID0gaGFzU3RyYWlnaHRMaW5lID8gW2JlZ2luUG9pbnQsIGJlZ2luUG9pbnQyLCBiZWdpblBvaW50Ml0gOiBbXTtcblxuICAgIC8vIOKRoiDnoa7lrprmm7Lnur9cbiAgICBjb25zdCBiZWdpbkJ1ZmZlckRpc3RhbmNlID0gKHBhcmVudC5oR2FwICsgbm9kZS5oR2FwKSAvIDM7XG4gICAgY29uc3QgZW5kQnVmZmVyRGlzdGFuY2UgPSAtKHBhcmVudC5oR2FwICsgbm9kZS5oR2FwKSAvIDIuNDtcbiAgICBsZXQgY3VydmU6IFBvaW50W10gPSBbXG4gICAgICAgIGJlZ2luUG9pbnQyLFxuICAgICAgICBtb3ZlWE9mUG9pbnQoYmVnaW5Qb2ludDIsIGJlZ2luQnVmZmVyRGlzdGFuY2UsIGxpbmtEaXJlY3Rpb24pLFxuICAgICAgICBtb3ZlWE9mUG9pbnQoZW5kUG9pbnQsIGVuZEJ1ZmZlckRpc3RhbmNlLCBsaW5rRGlyZWN0aW9uKSxcbiAgICAgICAgZW5kUG9pbnRcbiAgICBdO1xuXG4gICAgLy8g4pGjIOS4i+WIkue6v+e7mOWItu+8jHVuZGVybGluZSBzaGFwZSBhbmQgaG9yaXpvbnRhbFxuICAgIGNvbnN0IHVuZGVybGluZUVuZCA9IG1vdmVYT2ZQb2ludChlbmRQb2ludCwgbm9kZUNsaWVudC53aWR0aCwgbGlua0RpcmVjdGlvbik7XG4gICAgY29uc3QgdW5kZXJsaW5lOiBQb2ludFtdID0gaGFzVW5kZXJsaW5lU2hhcGUgJiYgaXNIb3Jpem9udGFsID8gW3VuZGVybGluZUVuZCwgdW5kZXJsaW5lRW5kLCB1bmRlcmxpbmVFbmRdIDogW107XG5cbiAgICBjb25zdCBwb2ludHMgPSBwb2ludHNPbkJlemllckN1cnZlcyhbLi4uc3RyYWlnaHRMaW5lLCAuLi5jdXJ2ZSwgLi4udW5kZXJsaW5lXSk7XG4gICAgcmV0dXJuIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmN1cnZlKHBvaW50cyBhcyBhbnksIHsgc3Ryb2tlOiBicmFuY2hDb2xvciwgc3Ryb2tlV2lkdGg6IGJyYW5jaFdpZHRoIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getRectangleByNode } from '../utils/position/node';
|
|
2
|
+
import { PlaitBoard, drawRoundRectangle } from '@plait/core';
|
|
3
|
+
import { getStrokeByMindElement } from '../utils/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2RyYXcvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBaUIsRUFBRSxJQUFjO0lBQ3RFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sMkJBQTJCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxLQUFpQixFQUFFLGFBQThCLEVBQUUsT0FBb0I7SUFDL0csTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDMUcsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztJQUU3RixNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FDNUIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDN0IsYUFBYSxDQUFDLENBQUMsRUFDZixhQUFhLENBQUMsQ0FBQyxFQUNmLGFBQWEsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFDckMsYUFBYSxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUN0QztRQUNJLE1BQU07UUFDTixXQUFXO1FBQ1gsSUFBSTtRQUNKLFNBQVMsRUFBRSxPQUFPO0tBQ3JCLENBQ0osQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgZHJhd1JvdW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlQnlNaW5kRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL25vZGUtc3R5bGUvc2hhcGUnO1xuaW1wb3J0IHsgRGVmYXVsdE5vZGVTdHlsZSwgRGVmYXVsdFJvb3RTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3Um91bmRSZWN0YW5nbGVCeU5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmROb2RlKSB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpO1xuICAgIHJldHVybiBkcmF3Um91bmRSZWN0YW5nbGVCeUVsZW1lbnQoYm9hcmQsIHJlY3RhbmdsZSwgbm9kZS5vcmlnaW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJhd1JvdW5kUmVjdGFuZ2xlQnlFbGVtZW50KGJvYXJkOiBQbGFpdEJvYXJkLCBub2RlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3QgZmlsbCA9IGVsZW1lbnQuZmlsbCA/IGVsZW1lbnQuZmlsbCA6IGVsZW1lbnQuaXNSb290ID8gRGVmYXVsdFJvb3RTdHlsZS5maWxsIDogRGVmYXVsdE5vZGVTdHlsZS5maWxsO1xuICAgIGNvbnN0IHN0cm9rZSA9IGdldFN0cm9rZUJ5TWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZWxlbWVudC5zdHJva2VXaWR0aCA/IGVsZW1lbnQuc3Ryb2tlV2lkdGggOiBEZWZhdWx0Tm9kZVN0eWxlLnN0cm9rZVdpZHRoO1xuXG4gICAgY29uc3Qgbm9kZUcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLFxuICAgICAgICBub2RlUmVjdGFuZ2xlLngsXG4gICAgICAgIG5vZGVSZWN0YW5nbGUueSxcbiAgICAgICAgbm9kZVJlY3RhbmdsZS54ICsgbm9kZVJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgbm9kZVJlY3RhbmdsZS55ICsgbm9kZVJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgZmlsbCxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBub2RlRztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { drawRichtext, updateForeignObject } from '@plait/richtext';
|
|
2
|
+
import { getTopicRectangleByNode } from '../utils/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9kcmF3L3RvcGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLGFBQWEsQ0FBQztBQUcxRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQXFCLEVBQUUsSUFBYyxFQUFFLGdCQUFtQztJQUN0RyxNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUM5QixLQUFxQixFQUNyQixTQUEwQixFQUMxQixPQUFvQixFQUNwQixnQkFBbUM7SUFFbkMsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6RixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUIsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNsQztTQUFNO1FBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNoQztJQUNELHdEQUF3RDtJQUN4RCxPQUFPLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNsSSxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQXFCLEVBQUUsSUFBYyxFQUFFLENBQWMsRUFBRSxVQUFtQjtJQUM5RyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JFLElBQUksVUFBVSxFQUFFO1FBQ1oscURBQXFEO1FBQ3JELG1CQUFtQixDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzNEO1NBQU07UUFDSCx3REFBd0Q7UUFDeEQsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQy9DO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRyYXdSaWNodGV4dCwgdXBkYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9yaWNodGV4dCc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBnZXRUb3BpY1JlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL3RvcGljJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdUb3BpY0J5Tm9kZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIG5vZGU6IE1pbmROb2RlLCB2aWV3Q29udGFpbmVyUmVmPzogVmlld0NvbnRhaW5lclJlZikge1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlKGJvYXJkLCBub2RlKTtcbiAgICByZXR1cm4gZHJhd1RvcGljQnlFbGVtZW50KGJvYXJkLCByZWN0YW5nbGUsIG5vZGUub3JpZ2luLCB2aWV3Q29udGFpbmVyUmVmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdUb3BpY0J5RWxlbWVudChcbiAgICBib2FyZDogUGxhaXRNaW5kQm9hcmQsXG4gICAgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgZWxlbWVudDogTWluZEVsZW1lbnQsXG4gICAgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWZcbikge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHZpZXdDb250YWluZXJSZWYgfHwgUGxhaXRCb2FyZC5nZXRDb21wb25lbnQoYm9hcmQpLnZpZXdDb250YWluZXJSZWY7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gW107XG4gICAgaWYgKGVsZW1lbnQuaXNSb290KSB7XG4gICAgICAgIGNsYXNzTGlzdC5wdXNoKCdyb290LW5vZGUnKTtcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2ZvbnQtc2l6ZS0xOCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNsYXNzTGlzdC5wdXNoKCdjaGlsZC1ub2RlJyk7XG4gICAgfVxuICAgIC8vIENPTVBBVDogbGFzdCBjaGFyYWN0ZXIgY2FuIG5vdCBzaG93IGluIHNhZmFyaSBicm93c2VyXG4gICAgcmV0dXJuIGRyYXdSaWNodGV4dChyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnksIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLmhlaWdodCwgZWxlbWVudC5kYXRhLnRvcGljLCBjb250YWluZXJSZWYsIGNsYXNzTGlzdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVNaW5kTm9kZVRvcGljU2l6ZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIG5vZGU6IE1pbmROb2RlLCBnOiBTVkdHRWxlbWVudCwgaXNFZGl0YWJsZTogYm9vbGVhbikge1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gZ2V0VG9waWNSZWN0YW5nbGVCeU5vZGUoYm9hcmQsIG5vZGUpO1xuICAgIGlmIChpc0VkaXRhYmxlKSB7XG4gICAgICAgIC8vIGFkZCA5OTnvvIwgYXZvaWQgY2hhbmdpbmcgbGluZXMgd2hlbiBwYXN0ZSBtb3JlIHRleHRcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChnLCB3aWR0aCArIDk5OSwgaGVpZ2h0ICsgOTk5LCB4LCB5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDT01QQVQ6IGxhc3QgY2hhcmFjdGVyIGNhbiBub3Qgc2hvdyBpbiBzYWZhcmkgYnJvd3NlclxuICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KGcsIHdpZHRoLCBoZWlnaHQsIHgsIHkpO1xuICAgIH1cbn1cbiJdfQ==
|