@plait/draw 0.1.0-next.6 → 0.1.0-next.7
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/esm2022/generators/geometry-shape.generator.mjs +22 -0
- package/esm2022/generators/line-active.generator.mjs +36 -0
- package/esm2022/generators/line.generator.mjs +45 -0
- package/esm2022/geometry.component.mjs +6 -4
- package/esm2022/line.component.mjs +3 -3
- package/esm2022/plugins/with-draw-fragment.mjs +5 -10
- package/esm2022/plugins/with-draw-hotkey.mjs +7 -3
- package/esm2022/plugins/with-draw.mjs +3 -3
- package/esm2022/plugins/with-geometry-create.mjs +2 -2
- package/esm2022/plugins/with-line-create.mjs +2 -2
- package/esm2022/plugins/with-line-text.mjs +3 -3
- package/esm2022/utils/line.mjs +17 -12
- package/fesm2022/plait-draw.mjs +34 -25
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/geometry.component.d.ts +1 -1
- package/line.component.d.ts +2 -2
- package/package.json +1 -1
- package/utils/line.d.ts +3 -1
- package/esm2022/generator/geometry-shape.generator.mjs +0 -22
- package/esm2022/generator/line-active.generator.mjs +0 -36
- package/esm2022/generator/line.generator.mjs +0 -43
- /package/{generator → generators}/geometry-shape.generator.d.ts +0 -0
- /package/{generator → generators}/line-active.generator.d.ts +0 -0
- /package/{generator → generators}/line.generator.d.ts +0 -0
package/geometry.component.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { ChangeDetectorRef, OnDestroy, OnInit, ViewContainerRef } from '@angular
|
|
|
2
2
|
import { PlaitBoard, PlaitPluginElementComponent, PlaitPluginElementContext, OnContextChanged } from '@plait/core';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { PlaitGeometry } from './interfaces/geometry';
|
|
5
|
-
import { GeometryShapeGenerator } from './
|
|
5
|
+
import { GeometryShapeGenerator } from './generators/geometry-shape.generator';
|
|
6
6
|
import { TextManage } from '@plait/text';
|
|
7
7
|
import { ActiveGenerator } from '@plait/common';
|
|
8
8
|
import * as i0 from "@angular/core";
|
package/line.component.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { PlaitBoard, PlaitPluginElementComponent, PlaitPluginElementContext, OnC
|
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { LineText, PlaitGeometry, PlaitLine } from './interfaces';
|
|
5
5
|
import { TextManage } from '@plait/text';
|
|
6
|
-
import { LineShapeGenerator } from './
|
|
7
|
-
import { LineActiveGenerator } from './
|
|
6
|
+
import { LineShapeGenerator } from './generators/line.generator';
|
|
7
|
+
import { LineActiveGenerator } from './generators/line-active.generator';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
interface BoundedElements {
|
|
10
10
|
source?: PlaitGeometry;
|
package/package.json
CHANGED
package/utils/line.d.ts
CHANGED
|
@@ -2,11 +2,13 @@ import { Point, PlaitBoard, RectangleClient } from '@plait/core';
|
|
|
2
2
|
import { LineHandle, LineShape, PlaitGeometry, PlaitLine } from '../interfaces';
|
|
3
3
|
import { Options } from 'roughjs/bin/core';
|
|
4
4
|
export declare const createLineElement: (shape: LineShape, points: [Point, Point], source: LineHandle, target: LineHandle, options?: Pick<PlaitLine, 'strokeColor' | 'strokeWidth'>) => PlaitLine;
|
|
5
|
+
export declare const getLinePoints: (board: PlaitBoard, element: PlaitLine) => Point[];
|
|
6
|
+
export declare const getStraightPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
|
|
5
7
|
export declare const getElbowPoints: (board: PlaitBoard, element: PlaitLine) => Point[];
|
|
6
8
|
export declare const isHitPolyLine: (pathPoints: Point[], point: Point, strokeWidth: number, expand?: number) => boolean;
|
|
7
9
|
export declare const getHitLineTextIndex: (board: PlaitBoard, element: PlaitLine, point: Point) => number;
|
|
8
10
|
export declare const isHitLineText: (board: PlaitBoard, element: PlaitLine, point: Point) => boolean;
|
|
9
|
-
export declare const
|
|
11
|
+
export declare const drawLine: (board: PlaitBoard, element: PlaitLine) => SVGGElement;
|
|
10
12
|
export declare const drawLineArrow: (element: PlaitLine, points: Point[], options: Options) => SVGGElement | null;
|
|
11
13
|
export declare const getSourcePoint: (board: PlaitBoard, element: PlaitLine) => Point;
|
|
12
14
|
export declare const getTargetPoint: (board: PlaitBoard, element: PlaitLine) => Point;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { GeometryShape } from '../interfaces';
|
|
2
|
-
import { getRectangleByPoints, Generator } from '@plait/common';
|
|
3
|
-
import { getFillByElement, getLineDashByElement, getStrokeColorByElement, getStrokeWidthByElement } from '../utils/style/stroke';
|
|
4
|
-
import { drawGeometry } from '../utils';
|
|
5
|
-
export class GeometryShapeGenerator extends Generator {
|
|
6
|
-
canDraw(element, data) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
baseDraw(element, data) {
|
|
10
|
-
const outerRectangle = getRectangleByPoints(element.points);
|
|
11
|
-
const shape = element.shape;
|
|
12
|
-
if (shape === GeometryShape.text) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
16
|
-
const strokeColor = getStrokeColorByElement(element);
|
|
17
|
-
const fill = getFillByElement(element);
|
|
18
|
-
const strokeLineDash = getLineDashByElement(element);
|
|
19
|
-
return drawGeometry(this.board, outerRectangle, shape, { stroke: strokeColor, strokeWidth, fill, strokeLineDash });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnktc2hhcGUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9yL2dlb21ldHJ5LXNoYXBlLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJeEMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFNBQW1DO0lBQzNFLE9BQU8sQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFzQixFQUFFLElBQWU7UUFDNUMsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxLQUFLLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRTtZQUM5QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN2SCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeVNoYXBlLCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeVBvaW50cywgR2VuZXJhdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRGaWxsQnlFbGVtZW50LCBnZXRMaW5lRGFzaEJ5RWxlbWVudCwgZ2V0U3Ryb2tlQ29sb3JCeUVsZW1lbnQsIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IGRyYXdHZW9tZXRyeSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge31cblxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5U2hhcGVHZW5lcmF0b3IgZXh0ZW5kcyBHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeSwgU2hhcGVEYXRhPiB7XG4gICAgY2FuRHJhdyhlbGVtZW50OiBQbGFpdEdlb21ldHJ5LCBkYXRhOiBTaGFwZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmFzZURyYXcoZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgZGF0YTogU2hhcGVEYXRhKSB7XG4gICAgICAgIGNvbnN0IG91dGVyUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGVsZW1lbnQuc2hhcGU7XG4gICAgICAgIGlmIChzaGFwZSA9PT0gR2VvbWV0cnlTaGFwZS50ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBnZXRTdHJva2VDb2xvckJ5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHN0cm9rZUxpbmVEYXNoID0gZ2V0TGluZURhc2hCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBkcmF3R2VvbWV0cnkodGhpcy5ib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIHNoYXBlLCB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBmaWxsLCBzdHJva2VMaW5lRGFzaCB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, createG, drawCircle } from '@plait/core';
|
|
2
|
-
import { Generator, RESIZE_HANDLE_DIAMETER } from '@plait/common';
|
|
3
|
-
import { getSourcePoint, getTargetPoint } from '../utils';
|
|
4
|
-
export class LineActiveGenerator extends Generator {
|
|
5
|
-
canDraw(element, data) {
|
|
6
|
-
if (data.selected) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
baseDraw(element, data) {
|
|
14
|
-
const activeG = createG();
|
|
15
|
-
activeG.classList.add('active');
|
|
16
|
-
activeG.classList.add('line-handle');
|
|
17
|
-
const sourcePoint = getSourcePoint(this.board, element);
|
|
18
|
-
const targetPoint = getTargetPoint(this.board, element);
|
|
19
|
-
const sourceCircle = drawCircle(PlaitBoard.getRoughSVG(this.board), sourcePoint, RESIZE_HANDLE_DIAMETER, {
|
|
20
|
-
stroke: '#999999',
|
|
21
|
-
strokeWidth: 1,
|
|
22
|
-
fill: '#FFF',
|
|
23
|
-
fillStyle: 'solid'
|
|
24
|
-
});
|
|
25
|
-
const targetCircle = drawCircle(PlaitBoard.getRoughSVG(this.board), targetPoint, RESIZE_HANDLE_DIAMETER, {
|
|
26
|
-
stroke: '#999999',
|
|
27
|
-
strokeWidth: 1,
|
|
28
|
-
fill: '#FFF',
|
|
29
|
-
fillStyle: 'solid'
|
|
30
|
-
});
|
|
31
|
-
activeG.appendChild(targetCircle);
|
|
32
|
-
activeG.appendChild(sourceCircle);
|
|
33
|
-
return activeG;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1hY3RpdmUuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VuZXJhdG9yL2xpbmUtYWN0aXZlLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU0xRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsU0FBZ0M7SUFDckUsT0FBTyxDQUFDLE9BQWtCLEVBQUUsSUFBZ0I7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWtCLEVBQUUsSUFBZ0I7UUFDekMsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNyRyxNQUFNLEVBQUUsU0FBUztZQUNqQixXQUFXLEVBQUUsQ0FBQztZQUNkLElBQUksRUFBRSxNQUFNO1lBQ1osU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNyRyxNQUFNLEVBQUUsU0FBUztZQUNqQixXQUFXLEVBQUUsQ0FBQztZQUNkLElBQUksRUFBRSxNQUFNO1lBQ1osU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIGNyZWF0ZUcsIGRyYXdDaXJjbGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlbmVyYXRvciwgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0U291cmNlUG9pbnQsIGdldFRhcmdldFBvaW50IH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZURhdGEge1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTGluZUFjdGl2ZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIEFjdGl2ZURhdGE+IHtcbiAgICBjYW5EcmF3KGVsZW1lbnQ6IFBsYWl0TGluZSwgZGF0YTogQWN0aXZlRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZGF0YS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiYXNlRHJhdyhlbGVtZW50OiBQbGFpdExpbmUsIGRhdGE6IEFjdGl2ZURhdGEpOiBTVkdHRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGFjdGl2ZUcuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgICAgIGFjdGl2ZUcuY2xhc3NMaXN0LmFkZCgnbGluZS1oYW5kbGUnKTtcbiAgICAgICAgY29uc3Qgc291cmNlUG9pbnQgPSBnZXRTb3VyY2VQb2ludCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSBnZXRUYXJnZXRQb2ludCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc291cmNlQ2lyY2xlID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLCBzb3VyY2VQb2ludCwgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiwge1xuICAgICAgICAgICAgc3Ryb2tlOiAnIzk5OTk5OScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q2lyY2xlID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpLCB0YXJnZXRQb2ludCwgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiwge1xuICAgICAgICAgICAgc3Ryb2tlOiAnIzk5OTk5OScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgYWN0aXZlRy5hcHBlbmRDaGlsZCh0YXJnZXRDaXJjbGUpO1xuICAgICAgICBhY3RpdmVHLmFwcGVuZENoaWxkKHNvdXJjZUNpcmNsZSk7XG4gICAgICAgIHJldHVybiBhY3RpdmVHO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { LineShape } from '../interfaces';
|
|
2
|
-
import { Generator, getRectangleByPoints } from '@plait/common';
|
|
3
|
-
import { drawElbowLine, getElbowPoints, getLineTextRectangle } from '../utils';
|
|
4
|
-
import { RectangleClient, createMask, createRect } from '@plait/core';
|
|
5
|
-
export class LineShapeGenerator extends Generator {
|
|
6
|
-
canDraw(element, data) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
baseDraw(element, data) {
|
|
10
|
-
const shape = element.shape;
|
|
11
|
-
let lineG;
|
|
12
|
-
switch (shape) {
|
|
13
|
-
case LineShape.elbow:
|
|
14
|
-
lineG = drawElbowLine(this.board, element);
|
|
15
|
-
drawMask(this.board, lineG, element);
|
|
16
|
-
break;
|
|
17
|
-
default:
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
return lineG;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function drawMask(board, g, element) {
|
|
24
|
-
const mask = createMask();
|
|
25
|
-
mask.setAttribute('id', element.id);
|
|
26
|
-
const points = getElbowPoints(board, element);
|
|
27
|
-
let rectangle = getRectangleByPoints(points);
|
|
28
|
-
rectangle = RectangleClient.getOutlineRectangle(rectangle, -3);
|
|
29
|
-
const maskRect = createRect(rectangle, {
|
|
30
|
-
fill: 'white'
|
|
31
|
-
});
|
|
32
|
-
mask.appendChild(maskRect);
|
|
33
|
-
const texts = element.texts;
|
|
34
|
-
texts.forEach((text, index) => {
|
|
35
|
-
const textRectangle = getLineTextRectangle(board, element, index);
|
|
36
|
-
const rect = createRect(textRectangle, {
|
|
37
|
-
fill: 'black'
|
|
38
|
-
});
|
|
39
|
-
mask.appendChild(rect);
|
|
40
|
-
});
|
|
41
|
-
g.appendChild(mask);
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3IvbGluZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9FLE9BQU8sRUFBYyxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlsRixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBK0I7SUFDbkUsT0FBTyxDQUFDLE9BQWtCLEVBQUUsSUFBZTtRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWtCLEVBQUUsSUFBZTtRQUN4QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksS0FBOEIsQ0FBQztRQUNuQyxRQUFRLEtBQUssRUFBRTtZQUNYLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ2hCLEtBQUssR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0MsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTTtTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBaUIsRUFBRSxDQUFhLEVBQUUsT0FBa0I7SUFDbEUsTUFBTSxJQUFJLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsSUFBSSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsU0FBUyxHQUFHLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFO1FBQ25DLElBQUksRUFBRSxPQUFPO0tBQ2hCLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFCLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEUsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxJQUFJLEVBQUUsT0FBTztTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdExpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlbmVyYXRvciwgZ2V0UmVjdGFuZ2xlQnlQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGRyYXdFbGJvd0xpbmUsIGdldEVsYm93UG9pbnRzLCBnZXRMaW5lVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFJlY3RhbmdsZUNsaWVudCwgY3JlYXRlTWFzaywgY3JlYXRlUmVjdCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGFwZURhdGEge31cblxuZXhwb3J0IGNsYXNzIExpbmVTaGFwZUdlbmVyYXRvciBleHRlbmRzIEdlbmVyYXRvcjxQbGFpdExpbmUsIFNoYXBlRGF0YT4ge1xuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBTaGFwZURhdGEpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmFzZURyYXcoZWxlbWVudDogUGxhaXRMaW5lLCBkYXRhOiBTaGFwZURhdGEpIHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBlbGVtZW50LnNoYXBlO1xuICAgICAgICBsZXQgbGluZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgICAgICAgICBjYXNlIExpbmVTaGFwZS5lbGJvdzpcbiAgICAgICAgICAgICAgICBsaW5lRyA9IGRyYXdFbGJvd0xpbmUodGhpcy5ib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZHJhd01hc2sodGhpcy5ib2FyZCwgbGluZUcsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGluZUc7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmF3TWFzayhib2FyZDogUGxhaXRCb2FyZCwgZzogU1ZHRWxlbWVudCwgZWxlbWVudDogUGxhaXRMaW5lKSB7XG4gICAgY29uc3QgbWFzayA9IGNyZWF0ZU1hc2soKTtcbiAgICBtYXNrLnNldEF0dHJpYnV0ZSgnaWQnLCBlbGVtZW50LmlkKTtcbiAgICBjb25zdCBwb2ludHMgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG4gICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldE91dGxpbmVSZWN0YW5nbGUocmVjdGFuZ2xlLCAtMyk7XG4gICAgY29uc3QgbWFza1JlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSwge1xuICAgICAgICBmaWxsOiAnd2hpdGUnXG4gICAgfSk7XG4gICAgbWFzay5hcHBlbmRDaGlsZChtYXNrUmVjdCk7XG5cbiAgICBjb25zdCB0ZXh0cyA9IGVsZW1lbnQudGV4dHM7XG4gICAgdGV4dHMuZm9yRWFjaCgodGV4dCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dFJlY3RhbmdsZSA9IGdldExpbmVUZXh0UmVjdGFuZ2xlKGJvYXJkLCBlbGVtZW50LCBpbmRleCk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBjcmVhdGVSZWN0KHRleHRSZWN0YW5nbGUsIHtcbiAgICAgICAgICAgIGZpbGw6ICdibGFjaydcbiAgICAgICAgfSk7XG4gICAgICAgIG1hc2suYXBwZW5kQ2hpbGQocmVjdCk7XG4gICAgfSk7XG4gICAgZy5hcHBlbmRDaGlsZChtYXNrKTtcbn1cbiJdfQ==
|
|
File without changes
|
|
File without changes
|
|
File without changes
|