@plait/mind 0.27.0-next.7 → 0.27.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/drawer/{node-active.drawer.d.ts → node-active.generator.d.ts} +2 -2
- package/drawer/node-shape.generator.d.ts +10 -0
- package/esm2022/drawer/node-active.generator.mjs +42 -0
- package/esm2022/drawer/node-shape.generator.mjs +19 -0
- package/esm2022/mind-node.component.mjs +12 -31
- package/esm2022/plugins/with-abstract-resize.mjs +3 -3
- package/esm2022/plugins/with-mind-fragment.mjs +3 -3
- package/esm2022/plugins/with-node-dnd.mjs +2 -2
- package/esm2022/plugins/with-node-image.mjs +3 -3
- package/esm2022/utils/abstract/resize.mjs +3 -3
- package/esm2022/utils/clipboard.mjs +3 -3
- package/esm2022/utils/draw/node-shape.mjs +4 -3
- package/esm2022/utils/space/layout-options.mjs +7 -10
- package/esm2022/utils/space/node-space.mjs +8 -13
- package/fesm2022/plait-mind.mjs +411 -423
- package/fesm2022/plait-mind.mjs.map +1 -1
- package/mind-node.component.d.ts +4 -4
- package/package.json +1 -1
- package/styles/styles.scss +7 -0
- package/utils/space/node-space.d.ts +1 -5
- package/esm2022/drawer/node-active.drawer.mjs +0 -44
package/mind-node.component.d.ts
CHANGED
|
@@ -8,10 +8,11 @@ import { MindNode } from './interfaces/node';
|
|
|
8
8
|
import { NodeEmojisDrawer } from './drawer/node-emojis.drawer';
|
|
9
9
|
import { NodeInsertDrawer } from './drawer/node-insert.drawer';
|
|
10
10
|
import { PlaitMindBoard } from './plugins/with-mind.board';
|
|
11
|
-
import {
|
|
11
|
+
import { NodeActiveGenerator } from './drawer/node-active.generator';
|
|
12
12
|
import { CollapseDrawer } from './drawer/node-collapse.drawer';
|
|
13
13
|
import { NodeImageDrawer } from './drawer/node-image.drawer';
|
|
14
14
|
import { CommonPluginElement } from '@plait/common';
|
|
15
|
+
import { NodeShapeGenerator } from './drawer/node-shape.generator';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
17
|
export declare class MindNodeComponent extends CommonPluginElement<MindElement, PlaitMindBoard> implements OnInit, OnDestroy, OnContextChanged<MindElement, PlaitMindBoard> {
|
|
17
18
|
private viewContainerRef;
|
|
@@ -25,9 +26,10 @@ export declare class MindNodeComponent extends CommonPluginElement<MindElement,
|
|
|
25
26
|
extendG?: SVGGElement;
|
|
26
27
|
destroy$: Subject<void>;
|
|
27
28
|
nodeEmojisDrawer: NodeEmojisDrawer;
|
|
29
|
+
nodeShapeGenerator: NodeShapeGenerator;
|
|
28
30
|
nodeInsertDrawer: NodeInsertDrawer;
|
|
29
31
|
imageDrawer: NodeImageDrawer;
|
|
30
|
-
|
|
32
|
+
activeGenerator: NodeActiveGenerator;
|
|
31
33
|
collapseDrawer: CollapseDrawer;
|
|
32
34
|
get textManage(): TextManage;
|
|
33
35
|
constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef);
|
|
@@ -35,8 +37,6 @@ export declare class MindNodeComponent extends CommonPluginElement<MindElement,
|
|
|
35
37
|
ngOnInit(): void;
|
|
36
38
|
onContextChanged(value: PlaitPluginElementContext<MindElement, PlaitMindBoard>, previous: PlaitPluginElementContext<MindElement, PlaitMindBoard>): void;
|
|
37
39
|
drawEmojis(): void;
|
|
38
|
-
drawShape(): void;
|
|
39
|
-
destroyShape(): void;
|
|
40
40
|
drawLink(): void;
|
|
41
41
|
destroyLine(): void;
|
|
42
42
|
drawExtend(): void;
|
package/package.json
CHANGED
package/styles/styles.scss
CHANGED
|
@@ -7,11 +7,7 @@ export declare const NodeSpace: {
|
|
|
7
7
|
getNodeHeight(board: PlaitMindBoard, element: MindElement): number;
|
|
8
8
|
getNodeDynamicWidth(board: PlaitMindBoard, element: MindElement): number;
|
|
9
9
|
/**
|
|
10
|
-
* use
|
|
11
|
-
* @param board
|
|
12
|
-
* @param element
|
|
13
|
-
* @param imageWidth
|
|
14
|
-
* @returns
|
|
10
|
+
* use it when upload image first or resize image
|
|
15
11
|
*/
|
|
16
12
|
getNodeNewDynamicWidth(board: PlaitMindBoard, element: MindElement, imageWidth: number): number;
|
|
17
13
|
getNodeResizableMinWidth(board: PlaitMindBoard, element: MindElement): number;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, RectangleClient, createG, drawRoundRectangle } from '@plait/core';
|
|
2
|
-
import { MindElement } from '../interfaces';
|
|
3
|
-
import { BaseDrawer } from '../base/base.drawer';
|
|
4
|
-
import { getRectangleByNode } from '../utils/position/node';
|
|
5
|
-
import { PRIMARY_COLOR } from '../constants/default';
|
|
6
|
-
import { AbstractNode } from '@plait/layouts';
|
|
7
|
-
import { drawAbstractIncludedOutline } from '../utils/draw/abstract-outline';
|
|
8
|
-
import { DefaultNodeStyle } from '../constants/node-style';
|
|
9
|
-
import { getStrokeWidthByElement } from '../utils/node-style/shape';
|
|
10
|
-
export class NodeActiveDrawer extends BaseDrawer {
|
|
11
|
-
canDraw(element, data) {
|
|
12
|
-
if (data.selected) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
baseDraw(element, data) {
|
|
20
|
-
const activeG = createG();
|
|
21
|
-
this.g = activeG;
|
|
22
|
-
if (AbstractNode.isAbstract(element)) {
|
|
23
|
-
this.abstractOutlineG = drawAbstractIncludedOutline(this.board, PlaitBoard.getRoughSVG(this.board), element);
|
|
24
|
-
activeG.append(this.abstractOutlineG);
|
|
25
|
-
}
|
|
26
|
-
const node = MindElement.getNode(element);
|
|
27
|
-
const rectangle = getRectangleByNode(node);
|
|
28
|
-
const activeStrokeWidth = 2;
|
|
29
|
-
// add 0.1 to avoid white gap
|
|
30
|
-
const offset = (getStrokeWidthByElement(this.board, element) + activeStrokeWidth) / 2 - 0.1;
|
|
31
|
-
const activeRectangle = RectangleClient.getOutlineRectangle(rectangle, -offset);
|
|
32
|
-
const strokeG = drawRoundRectangle(PlaitBoard.getRoughSVG(this.board), activeRectangle.x, activeRectangle.y, activeRectangle.x + activeRectangle.width, activeRectangle.y + activeRectangle.height, { stroke: PRIMARY_COLOR, strokeWidth: activeStrokeWidth, fill: '' }, true, DefaultNodeStyle.shape.rectangleRadius + offset);
|
|
33
|
-
this.g.appendChild(strokeG);
|
|
34
|
-
return activeG;
|
|
35
|
-
}
|
|
36
|
-
updateAbstractOutline(element, activeHandlePosition, resizingLocation) {
|
|
37
|
-
if (this.abstractOutlineG) {
|
|
38
|
-
this.abstractOutlineG.remove();
|
|
39
|
-
}
|
|
40
|
-
this.abstractOutlineG = drawAbstractIncludedOutline(this.board, PlaitBoard.getRoughSVG(this.board), element, activeHandlePosition, resizingLocation);
|
|
41
|
-
this.g.append(this.abstractOutlineG);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1hY3RpdmUuZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvZHJhd2VyL25vZGUtYWN0aXZlLmRyYXdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU9wRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsVUFBc0I7SUFHeEQsT0FBTyxDQUFDLE9BQThCLEVBQUUsSUFBZ0I7UUFDcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQThCLEVBQUUsSUFBZ0I7UUFDckQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7UUFFakIsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDekM7UUFDRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLDZCQUE2QjtRQUM3QixNQUFNLE1BQU0sR0FBRyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzVGLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FDOUIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQ2xDLGVBQWUsQ0FBQyxDQUFDLEVBQ2pCLGVBQWUsQ0FBQyxDQUFDLEVBQ2pCLGVBQWUsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFDekMsZUFBZSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUMxQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFDbkUsSUFBSSxFQUNKLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQW9CLEVBQUUsb0JBQTZDLEVBQUUsZ0JBQXlCO1FBQ2hILElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRywyQkFBMkIsQ0FDL0MsSUFBSSxDQUFDLEtBQUssRUFDVixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDbEMsT0FBTyxFQUNQLG9CQUFvQixFQUNwQixnQkFBZ0IsQ0FDbkIsQ0FBQztRQUNGLElBQUksQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgY3JlYXRlRywgZHJhd1JvdW5kUmVjdGFuZ2xlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIEJhc2VEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYXNlRHJhd2VyIH0gZnJvbSAnLi4vYmFzZS9iYXNlLmRyYXdlcic7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IFBSSU1BUllfQ09MT1IgfSBmcm9tICcuLi9jb25zdGFudHMvZGVmYXVsdCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUgfSBmcm9tICcuLi91dGlscy9kcmF3L2Fic3RyYWN0LW91dGxpbmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC1yZXNpemUuYm9hcmQnO1xuaW1wb3J0IHsgRGVmYXVsdE5vZGVTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXN0eWxlJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvbm9kZS1zdHlsZS9zaGFwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlRGF0YSB7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgaXNFZGl0aW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTm9kZUFjdGl2ZURyYXdlciBleHRlbmRzIEJhc2VEcmF3ZXI8QWN0aXZlRGF0YT4ge1xuICAgIGFic3RyYWN0T3V0bGluZUc/OiBTVkdHRWxlbWVudDtcblxuICAgIGNhbkRyYXcoZWxlbWVudDogTWluZEVsZW1lbnQ8QmFzZURhdGE+LCBkYXRhOiBBY3RpdmVEYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXRhLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJhc2VEcmF3KGVsZW1lbnQ6IE1pbmRFbGVtZW50PEJhc2VEYXRhPiwgZGF0YTogQWN0aXZlRGF0YSk6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgY29uc3QgYWN0aXZlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5nID0gYWN0aXZlRztcblxuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RPdXRsaW5lRyA9IGRyYXdBYnN0cmFjdEluY2x1ZGVkT3V0bGluZSh0aGlzLmJvYXJkLCBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGFjdGl2ZUcuYXBwZW5kKHRoaXMuYWJzdHJhY3RPdXRsaW5lRyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5Tm9kZShub2RlKTtcbiAgICAgICAgY29uc3QgYWN0aXZlU3Ryb2tlV2lkdGggPSAyO1xuICAgICAgICAvLyBhZGQgMC4xIHRvIGF2b2lkIHdoaXRlIGdhcFxuICAgICAgICBjb25zdCBvZmZzZXQgPSAoZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQodGhpcy5ib2FyZCwgZWxlbWVudCkgKyBhY3RpdmVTdHJva2VXaWR0aCkgLyAyIC0gMC4xO1xuICAgICAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShyZWN0YW5nbGUsIC1vZmZzZXQpO1xuICAgICAgICBjb25zdCBzdHJva2VHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKSxcbiAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZS54LFxuICAgICAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLnksXG4gICAgICAgICAgICBhY3RpdmVSZWN0YW5nbGUueCArIGFjdGl2ZVJlY3RhbmdsZS53aWR0aCxcbiAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZS55ICsgYWN0aXZlUmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBzdHJva2VXaWR0aDogYWN0aXZlU3Ryb2tlV2lkdGgsIGZpbGw6ICcnIH0sXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgRGVmYXVsdE5vZGVTdHlsZS5zaGFwZS5yZWN0YW5nbGVSYWRpdXMgKyBvZmZzZXRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZENoaWxkKHN0cm9rZUcpO1xuICAgICAgICByZXR1cm4gYWN0aXZlRztcbiAgICB9XG5cbiAgICB1cGRhdGVBYnN0cmFjdE91dGxpbmUoZWxlbWVudDogTWluZEVsZW1lbnQsIGFjdGl2ZUhhbmRsZVBvc2l0aW9uPzogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5hYnN0cmFjdE91dGxpbmVHKSB7XG4gICAgICAgICAgICB0aGlzLmFic3RyYWN0T3V0bGluZUcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hYnN0cmFjdE91dGxpbmVHID0gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgICAgICAgICAgdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcodGhpcy5ib2FyZCksXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgYWN0aXZlSGFuZGxlUG9zaXRpb24sXG4gICAgICAgICAgICByZXNpemluZ0xvY2F0aW9uXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZyEuYXBwZW5kKHRoaXMuYWJzdHJhY3RPdXRsaW5lRyk7XG4gICAgfVxufVxuIl19
|