@plait/draw 0.35.0 → 0.36.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.
Files changed (47) hide show
  1. package/constants/line.d.ts +4 -0
  2. package/esm2022/constants/line.mjs +5 -1
  3. package/esm2022/generators/line-active.generator.mjs +10 -7
  4. package/esm2022/generators/line-auto-complete.generator.mjs +45 -0
  5. package/esm2022/geometry.component.mjs +20 -10
  6. package/esm2022/interfaces/element.mjs +2 -1
  7. package/esm2022/interfaces/index.mjs +2 -2
  8. package/esm2022/line.component.mjs +10 -15
  9. package/esm2022/plugins/with-draw-hotkey.mjs +5 -4
  10. package/esm2022/plugins/with-draw.mjs +4 -4
  11. package/esm2022/plugins/with-geometry-create.mjs +14 -8
  12. package/esm2022/plugins/with-line-auto-complete-reaction.mjs +35 -0
  13. package/esm2022/plugins/with-line-auto-complete.mjs +60 -0
  14. package/esm2022/plugins/with-line-bound-reaction.mjs +5 -1
  15. package/esm2022/plugins/with-line-create.mjs +2 -2
  16. package/esm2022/plugins/with-line-resize.mjs +2 -2
  17. package/esm2022/plugins/with-line-text.mjs +29 -27
  18. package/esm2022/transforms/index.mjs +2 -2
  19. package/esm2022/transforms/property.mjs +15 -0
  20. package/esm2022/utils/geometry.mjs +6 -3
  21. package/esm2022/utils/index.mjs +2 -1
  22. package/esm2022/utils/line-arrow.mjs +10 -6
  23. package/esm2022/utils/line.mjs +12 -5
  24. package/esm2022/utils/memorize.mjs +75 -0
  25. package/fesm2022/plait-draw.mjs +201 -110
  26. package/fesm2022/plait-draw.mjs.map +1 -1
  27. package/generators/line-active.generator.d.ts +0 -1
  28. package/generators/{auto-complete.generator.d.ts → line-auto-complete.generator.d.ts} +1 -1
  29. package/geometry.component.d.ts +2 -2
  30. package/interfaces/element.d.ts +1 -0
  31. package/interfaces/index.d.ts +1 -1
  32. package/line.component.d.ts +0 -1
  33. package/package.json +1 -1
  34. package/plugins/with-line-auto-complete-reaction.d.ts +2 -0
  35. package/plugins/with-line-auto-complete.d.ts +7 -0
  36. package/styles/styles.scss +1 -2
  37. package/transforms/{common.d.ts → property.d.ts} +1 -2
  38. package/utils/geometry.d.ts +6 -1
  39. package/utils/index.d.ts +1 -0
  40. package/utils/memorize.d.ts +19 -0
  41. package/utils/position/geometry.d.ts +1 -1
  42. package/esm2022/generators/auto-complete.generator.mjs +0 -44
  43. package/esm2022/plugins/with-auto-complete-reaction.mjs +0 -35
  44. package/esm2022/plugins/with-auto-complete.mjs +0 -61
  45. package/esm2022/transforms/common.mjs +0 -33
  46. package/plugins/with-auto-complete-reaction.d.ts +0 -2
  47. package/plugins/with-auto-complete.d.ts +0 -7
@@ -5,7 +5,6 @@ export interface ActiveData {
5
5
  selected: boolean;
6
6
  }
7
7
  export declare class LineActiveGenerator extends Generator<PlaitLine, ActiveData> {
8
- hasResizeHandle: boolean;
9
8
  canDraw(element: PlaitLine, data: ActiveData): boolean;
10
9
  draw(element: PlaitLine, data: ActiveData): SVGGElement;
11
10
  }
@@ -1,7 +1,7 @@
1
1
  import { PlaitBoard } from '@plait/core';
2
2
  import { PlaitGeometry } from '../interfaces';
3
3
  import { ActiveGeneratorExtraData, Generator } from '@plait/common';
4
- export declare class AutoCompleteGenerator extends Generator<PlaitGeometry, ActiveGeneratorExtraData> {
4
+ export declare class LineAutoCompleteGenerator extends Generator<PlaitGeometry, ActiveGeneratorExtraData> {
5
5
  board: PlaitBoard;
6
6
  autoCompleteG: SVGGElement;
7
7
  hoverElement: SVGGElement | null;
@@ -5,14 +5,14 @@ import { PlaitGeometry } from './interfaces/geometry';
5
5
  import { GeometryShapeGenerator } from './generators/geometry-shape.generator';
6
6
  import { TextManage } from '@plait/text';
7
7
  import { ActiveGenerator, CommonPluginElement } from '@plait/common';
8
- import { AutoCompleteGenerator } from './generators/auto-complete.generator';
8
+ import { LineAutoCompleteGenerator } from './generators/line-auto-complete.generator';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class GeometryComponent extends CommonPluginElement<PlaitGeometry, PlaitBoard> implements OnInit, OnDestroy, OnContextChanged<PlaitGeometry, PlaitBoard> {
11
11
  private viewContainerRef;
12
12
  protected cdr: ChangeDetectorRef;
13
13
  destroy$: Subject<void>;
14
14
  activeGenerator: ActiveGenerator<PlaitGeometry>;
15
- autoCompleteGenerator: AutoCompleteGenerator;
15
+ lineAutoCompleteGenerator: LineAutoCompleteGenerator;
16
16
  shapeGenerator: GeometryShapeGenerator;
17
17
  get textManage(): TextManage;
18
18
  constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef);
@@ -5,5 +5,6 @@ export declare enum StrokeStyle {
5
5
  export declare enum MemorizeKey {
6
6
  basicShape = "basicShape",
7
7
  flowchart = "flowchart",
8
+ text = "text",
8
9
  line = "line"
9
10
  }
@@ -15,6 +15,6 @@ export declare const PlaitDrawElement: {
15
15
  isImage: (value: any) => value is PlaitImage;
16
16
  isDrawElement: (value: any) => value is PlaitDrawElement;
17
17
  isShape: (value: any) => boolean;
18
- isBaseShape: (value: any) => boolean;
18
+ isBasicShape: (value: any) => boolean;
19
19
  isFlowchart: (value: any) => boolean;
20
20
  };
@@ -23,7 +23,6 @@ export declare class LineComponent extends PlaitPluginElementComponent<PlaitLine
23
23
  ngOnInit(): void;
24
24
  getBoundedElements(): BoundedElements;
25
25
  onContextChanged(value: PlaitPluginElementContext<PlaitLine, PlaitBoard>, previous: PlaitPluginElementContext<PlaitLine, PlaitBoard>): void;
26
- hasResizeHandle(): boolean;
27
26
  initializeTextManages(): void;
28
27
  destroyTextManages(): void;
29
28
  drawText(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plait/draw",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.0.0",
6
6
  "@angular/core": "^16.0.0",
@@ -0,0 +1,2 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ export declare const withLineAutoCompleteReaction: (board: PlaitBoard) => PlaitBoard;
@@ -0,0 +1,7 @@
1
+ import { PlaitBoard } from '@plait/core';
2
+ import { PlaitLine } from '../interfaces';
3
+ export interface LineAutoCompleteOptions {
4
+ afterComplete: (element: PlaitLine) => {};
5
+ }
6
+ export declare const withLineAutoCompletePluginKey = "plait-line-auto-complete-plugin-key";
7
+ export declare const withLineAutoComplete: (board: PlaitBoard) => PlaitBoard;
@@ -4,8 +4,7 @@
4
4
  cursor: default;
5
5
  }
6
6
  }
7
- &:not(.pointer-text):not(.pointer-selection):not(.pointer-hand)
8
- {
7
+ &:not(.pointer-text):not(.pointer-selection):not(.pointer-hand) {
9
8
  .board-host-svg {
10
9
  cursor: crosshair;
11
10
  }
@@ -1,6 +1,5 @@
1
- import { PlaitBoard, PlaitElement } from '@plait/core';
1
+ import { PlaitBoard } from '@plait/core';
2
2
  export declare const setStrokeColor: (board: PlaitBoard, strokeColor: string) => void;
3
3
  export declare const setStrokeWidth: (board: PlaitBoard, strokeWidth: number) => void;
4
4
  export declare const setFillColor: (board: PlaitBoard, fill: string) => void;
5
5
  export declare const setStrokeStyle: (board: PlaitBoard, strokeStyle: string) => void;
6
- export declare const getMemorizeKey: (element: PlaitElement) => string;
@@ -1,8 +1,13 @@
1
1
  import { PlaitBoard, Point, RectangleClient, ThemeColorMode } from '@plait/core';
2
2
  import { GeometryShapes, PlaitGeometry, FlowchartSymbols } from '../interfaces/geometry';
3
+ import { Alignment, CustomText } from '@plait/text';
3
4
  import { Element } from 'slate';
4
5
  import { Options } from 'roughjs/bin/core';
5
- export declare const createGeometryElement: (shape: GeometryShapes, points: [Point, Point], text: string | Element, options?: Pick<PlaitGeometry, 'fill' | 'strokeColor' | 'strokeWidth'>) => PlaitGeometry;
6
+ export type GeometryStyleOptions = Pick<PlaitGeometry, 'fill' | 'strokeColor' | 'strokeWidth'>;
7
+ export type TextProperties = Partial<CustomText> & {
8
+ align?: Alignment;
9
+ };
10
+ export declare const createGeometryElement: (shape: GeometryShapes, points: [Point, Point], text: string | Element, options?: GeometryStyleOptions, textProperties?: TextProperties) => PlaitGeometry;
6
11
  export declare const getPointsByCenterPoint: (point: Point, width: number, height: number) => [Point, Point];
7
12
  export declare const getTextRectangle: (element: PlaitGeometry) => {
8
13
  height: number;
package/utils/index.d.ts CHANGED
@@ -3,3 +3,4 @@ export * from './geometry';
3
3
  export * from './selected';
4
4
  export * from './style';
5
5
  export * from './hit';
6
+ export * from './memorize';
@@ -0,0 +1,19 @@
1
+ import { PlaitBoard, PlaitElement } from '@plait/core';
2
+ import { GeometryShapes, PlaitDrawElement } from '../interfaces';
3
+ import { DrawPointerType } from '../constants';
4
+ import { BaseOperation } from 'slate';
5
+ export declare const getMemorizeKey: (element: PlaitElement) => string;
6
+ export declare const getLineMemorizedLatest: () => PlaitElement;
7
+ export declare const getMemorizedLatestByPointer: (pointer: DrawPointerType) => {
8
+ textProperties: any;
9
+ geometryProperties: {
10
+ [x: string]: any;
11
+ id: string;
12
+ children?: PlaitElement[] | undefined;
13
+ points?: import("@plait/core").Point[] | undefined;
14
+ type?: string | undefined;
15
+ };
16
+ };
17
+ export declare const memorizeLatestText: (element: PlaitDrawElement, operations: BaseOperation[]) => void;
18
+ export declare const memorizeLatestShape: (board: PlaitBoard, shape: GeometryShapes) => void;
19
+ export declare const getMemorizedLatestShape: (board: PlaitBoard) => GeometryShapes[] | undefined;
@@ -10,6 +10,6 @@ export declare const getHitGeometryResizeHandleRef: (board: PlaitBoard, element:
10
10
  height: number;
11
11
  };
12
12
  handle: ResizeHandle;
13
- cursorClass: import("@plait/common").ResizeCursorClass;
13
+ cursorClass: import("@plait/core").ResizeCursorClass;
14
14
  } | undefined;
15
15
  export declare const getHitOutlineGeometry: (board: PlaitBoard, point: Point, offset?: number) => PlaitGeometry | null;
@@ -1,44 +0,0 @@
1
- import { PlaitBoard, createG, drawCircle, getSelectedElements, isSelectionMoving } from '@plait/core';
2
- import { Generator, RESIZE_HANDLE_DIAMETER } from '@plait/common';
3
- import { getAutoCompletePoints } from '../utils';
4
- export class AutoCompleteGenerator extends Generator {
5
- constructor(board) {
6
- super(board);
7
- this.board = board;
8
- this.hoverElement = null;
9
- }
10
- canDraw(element, data) {
11
- const selectedElements = getSelectedElements(this.board);
12
- if (data.selected && selectedElements.length === 1 && !isSelectionMoving(this.board)) {
13
- return true;
14
- }
15
- else {
16
- return false;
17
- }
18
- }
19
- draw(element, data) {
20
- this.autoCompleteG = createG();
21
- const middlePoints = getAutoCompletePoints(element);
22
- middlePoints.forEach((point, index) => {
23
- const circle = drawCircle(PlaitBoard.getRoughSVG(this.board), point, RESIZE_HANDLE_DIAMETER, {
24
- stroke: 'none',
25
- fill: '#6698FF4d',
26
- fillStyle: 'solid'
27
- });
28
- circle.classList.add(`geometry-auto-complete-${index}`);
29
- this.autoCompleteG.appendChild(circle);
30
- });
31
- return this.autoCompleteG;
32
- }
33
- removeAutoCompleteG(index) {
34
- this.hoverElement = this.autoCompleteG.querySelector(`.geometry-auto-complete-${index}`);
35
- this.hoverElement.style.visibility = 'hidden';
36
- }
37
- recoverAutoCompleteG() {
38
- if (this.hoverElement) {
39
- this.hoverElement.style.visibility = 'visible';
40
- this.hoverElement = null;
41
- }
42
- }
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9nZW5lcmF0b3JzL2F1dG8tY29tcGxldGUuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUgsT0FBTyxFQUE0QixTQUFTLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVqRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsU0FBa0Q7SUFJekYsWUFBbUIsS0FBaUI7UUFDaEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBREUsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUZwQyxpQkFBWSxHQUF1QixJQUFJLENBQUM7SUFJeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFzQixFQUFFLElBQThCO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xGLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFzQixFQUFFLElBQThCO1FBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDL0IsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFO2dCQUN6RixNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLE9BQU87YUFDckIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsWUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBjcmVhdGVHLCBkcmF3Q2lyY2xlLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBpc1NlbGVjdGlvbk1vdmluZyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvckV4dHJhRGF0YSwgR2VuZXJhdG9yLCBSRVNJWkVfSEFORExFX0RJQU1FVEVSLCBnZXRSZWN0YW5nbGVCeVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0QXV0b0NvbXBsZXRlUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlR2VuZXJhdG9yIGV4dGVuZHMgR2VuZXJhdG9yPFBsYWl0R2VvbWV0cnksIEFjdGl2ZUdlbmVyYXRvckV4dHJhRGF0YT4ge1xuICAgIGF1dG9Db21wbGV0ZUchOiBTVkdHRWxlbWVudDtcbiAgICBob3ZlckVsZW1lbnQ6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgc3VwZXIoYm9hcmQpO1xuICAgIH1cblxuICAgIGNhbkRyYXcoZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgZGF0YTogQWN0aXZlR2VuZXJhdG9yRXh0cmFEYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuXG4gICAgICAgIGlmIChkYXRhLnNlbGVjdGVkICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3KGVsZW1lbnQ6IFBsYWl0R2VvbWV0cnksIGRhdGE6IEFjdGl2ZUdlbmVyYXRvckV4dHJhRGF0YSk6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVHID0gY3JlYXRlRygpO1xuICAgICAgICBjb25zdCBtaWRkbGVQb2ludHMgPSBnZXRBdXRvQ29tcGxldGVQb2ludHMoZWxlbWVudCk7XG4gICAgICAgIG1pZGRsZVBvaW50cy5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNpcmNsZSA9IGRyYXdDaXJjbGUoUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKSwgcG9pbnQsIFJFU0laRV9IQU5ETEVfRElBTUVURVIsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6ICdub25lJyxcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzY2OThGRjRkJyxcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2lyY2xlLmNsYXNzTGlzdC5hZGQoYGdlb21ldHJ5LWF1dG8tY29tcGxldGUtJHtpbmRleH1gKTtcbiAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRy5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlRztcbiAgICB9XG5cbiAgICByZW1vdmVBdXRvQ29tcGxldGVHKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5ob3ZlckVsZW1lbnQgPSB0aGlzLmF1dG9Db21wbGV0ZUcucXVlcnlTZWxlY3RvcihgLmdlb21ldHJ5LWF1dG8tY29tcGxldGUtJHtpbmRleH1gKTtcbiAgICAgICAgdGhpcy5ob3ZlckVsZW1lbnQhLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICB9XG5cbiAgICByZWNvdmVyQXV0b0NvbXBsZXRlRygpIHtcbiAgICAgICAgaWYgKHRoaXMuaG92ZXJFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmhvdmVyRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgdGhpcy5ob3ZlckVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,35 +0,0 @@
1
- import { PlaitBoard, PlaitElement, drawCircle, isSelectionMoving, toPoint, transformPoint } from '@plait/core';
2
- import { PlaitDrawElement } from '../interfaces';
3
- import { getAutoCompletePoints, getHitIndexOfAutoCompletePoint, getSelectedDrawElements } from '../utils';
4
- export const withAutoCompleteReaction = (board) => {
5
- const { pointerMove } = board;
6
- let reactionG = null;
7
- board.pointerMove = (event) => {
8
- reactionG?.remove();
9
- if (isSelectionMoving(board)) {
10
- pointerMove(event);
11
- return;
12
- }
13
- const selectedElements = getSelectedDrawElements(board);
14
- const movingPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
15
- if (selectedElements.length === 1 && PlaitDrawElement.isGeometry(selectedElements[0])) {
16
- const points = getAutoCompletePoints(selectedElements[0]);
17
- const hitIndex = getHitIndexOfAutoCompletePoint(movingPoint, points);
18
- const hitPoint = points[hitIndex];
19
- const component = PlaitElement.getComponent(selectedElements[0]);
20
- component.autoCompleteGenerator.recoverAutoCompleteG();
21
- if (hitPoint) {
22
- component.autoCompleteGenerator.removeAutoCompleteG(hitIndex);
23
- reactionG = drawCircle(PlaitBoard.getRoughSVG(board), hitPoint, 10, {
24
- stroke: 'none',
25
- fill: '#6698FF80',
26
- fillStyle: 'solid'
27
- });
28
- PlaitBoard.getElementActiveHost(board).append(reactionG);
29
- }
30
- }
31
- pointerMove(event);
32
- };
33
- return board;
34
- };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hdXRvLWNvbXBsZXRlLXJlYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWF1dG8tY29tcGxldGUtcmVhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcxRyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUMxRCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTlCLElBQUksU0FBUyxHQUF1QixJQUFJLENBQUM7SUFFekMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN4QyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDcEIsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsT0FBTztTQUNWO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25GLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsTUFBTSxRQUFRLEdBQUcsOEJBQThCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFzQixDQUFDO1lBQ3RGLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3ZELElBQUksUUFBUSxFQUFFO2dCQUNWLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUQsU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7b0JBQ2hFLE1BQU0sRUFBRSxNQUFNO29CQUNkLElBQUksRUFBRSxXQUFXO29CQUNqQixTQUFTLEVBQUUsT0FBTztpQkFDckIsQ0FBQyxDQUFDO2dCQUNILFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUQ7U0FDSjtRQUVELFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIGRyYXdDaXJjbGUsIGlzU2VsZWN0aW9uTW92aW5nLCB0b1BvaW50LCB0cmFuc2Zvcm1Qb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldEF1dG9Db21wbGV0ZVBvaW50cywgZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50LCBnZXRTZWxlY3RlZERyYXdFbGVtZW50cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvbWV0cnkuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IHdpdGhBdXRvQ29tcGxldGVSZWFjdGlvbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlck1vdmUgfSA9IGJvYXJkO1xuXG4gICAgbGV0IHJlYWN0aW9uRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgcmVhY3Rpb25HPy5yZW1vdmUoKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkoc2VsZWN0ZWRFbGVtZW50c1swXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldEF1dG9Db21wbGV0ZVBvaW50cyhzZWxlY3RlZEVsZW1lbnRzWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEluZGV4ID0gZ2V0SGl0SW5kZXhPZkF1dG9Db21wbGV0ZVBvaW50KG1vdmluZ1BvaW50LCBwb2ludHMpO1xuICAgICAgICAgICAgY29uc3QgaGl0UG9pbnQgPSBwb2ludHNbaGl0SW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChzZWxlY3RlZEVsZW1lbnRzWzBdKSBhcyBHZW9tZXRyeUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbXBvbmVudC5hdXRvQ29tcGxldGVHZW5lcmF0b3IucmVjb3ZlckF1dG9Db21wbGV0ZUcoKTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hdXRvQ29tcGxldGVHZW5lcmF0b3IucmVtb3ZlQXV0b0NvbXBsZXRlRyhoaXRJbmRleCk7XG4gICAgICAgICAgICAgICAgcmVhY3Rpb25HID0gZHJhd0NpcmNsZShQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSwgaGl0UG9pbnQsIDEwLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiAnIzY2OThGRjgwJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHJlYWN0aW9uRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
@@ -1,61 +0,0 @@
1
- import { BoardTransforms, PlaitBoard, PlaitPointerType, Transforms, addSelectedElement, clearSelectedElement, createG, distanceBetweenPointAndPoint, temporaryDisableSelection, toPoint, transformPoint } from '@plait/core';
2
- import { LineShape, PlaitDrawElement } from '../interfaces';
3
- import { handleLineCreating, getAutoCompletePoints, getHitIndexOfAutoCompletePoint, getSelectedDrawElements } from '../utils';
4
- export const withAutoCompletePluginKey = 'plait-auto-complete-plugin-key';
5
- export const withAutoComplete = (board) => {
6
- const { pointerDown, pointerMove, pointerUp } = board;
7
- const tolerance = 3;
8
- let startPoint = null;
9
- let lineShapeG = null;
10
- let sourceElement;
11
- let temporaryElement;
12
- board.pointerDown = (event) => {
13
- const selectedElements = getSelectedDrawElements(board);
14
- const clickPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
15
- if (selectedElements.length === 1 && PlaitDrawElement.isGeometry(selectedElements[0])) {
16
- const points = getAutoCompletePoints(selectedElements[0]);
17
- const index = getHitIndexOfAutoCompletePoint(clickPoint, points);
18
- const hitPoint = points[index];
19
- if (hitPoint) {
20
- temporaryDisableSelection(board);
21
- startPoint = clickPoint;
22
- sourceElement = selectedElements[0];
23
- BoardTransforms.updatePointerType(board, LineShape.elbow);
24
- }
25
- }
26
- pointerDown(event);
27
- };
28
- board.pointerMove = (event) => {
29
- lineShapeG?.remove();
30
- lineShapeG = createG();
31
- let movingPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
32
- if (startPoint && sourceElement) {
33
- const distance = distanceBetweenPointAndPoint(...movingPoint, ...startPoint);
34
- if (distance > tolerance) {
35
- temporaryElement = handleLineCreating(board, LineShape.elbow, startPoint, movingPoint, sourceElement, lineShapeG);
36
- }
37
- }
38
- pointerMove(event);
39
- };
40
- board.pointerUp = event => {
41
- if (temporaryElement) {
42
- Transforms.insertNode(board, temporaryElement, [board.children.length]);
43
- clearSelectedElement(board);
44
- addSelectedElement(board, temporaryElement);
45
- const afterComplete = board.getPluginOptions(withAutoCompletePluginKey)
46
- ?.afterComplete;
47
- afterComplete && afterComplete(temporaryElement);
48
- }
49
- if (startPoint) {
50
- BoardTransforms.updatePointerType(board, PlaitPointerType.selection);
51
- startPoint = null;
52
- }
53
- lineShapeG?.remove();
54
- lineShapeG = null;
55
- sourceElement = null;
56
- temporaryElement = null;
57
- pointerUp(event);
58
- };
59
- return board;
60
- };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hdXRvLWNvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvcGx1Z2lucy93aXRoLWF1dG8tY29tcGxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZixVQUFVLEVBRVYsZ0JBQWdCLEVBRWhCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLE9BQU8sRUFDUCxjQUFjLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU05SCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNsRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFdEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksVUFBVSxHQUFpQixJQUFJLENBQUM7SUFDcEMsSUFBSSxVQUFVLEdBQXVCLElBQUksQ0FBQztJQUMxQyxJQUFJLGFBQW1DLENBQUM7SUFDeEMsSUFBSSxnQkFBa0MsQ0FBQztJQUV2QyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxD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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJvYXJkVHJhbnNmb3JtcyxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24sXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaGFuZGxlTGluZUNyZWF0aW5nLCBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCwgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0NvbXBsZXRlT3B0aW9ucyB7XG4gICAgYWZ0ZXJDb21wbGV0ZTogKGVsZW1lbnQ6IFBsYWl0TGluZSkgPT4ge307XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoQXV0b0NvbXBsZXRlUGx1Z2luS2V5ID0gJ3BsYWl0LWF1dG8tY29tcGxldGUtcGx1Z2luLWtleSc7XG5cbmV4cG9ydCBjb25zdCB3aXRoQXV0b0NvbXBsZXRlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIHBvaW50ZXJVcCB9ID0gYm9hcmQ7XG5cbiAgICBjb25zdCB0b2xlcmFuY2UgPSAzO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzb3VyY2VFbGVtZW50OiBQbGFpdEdlb21ldHJ5IHwgbnVsbDtcbiAgICBsZXQgdGVtcG9yYXJ5RWxlbWVudDogUGxhaXRMaW5lIHwgbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgY2xpY2tQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNHZW9tZXRyeShzZWxlY3RlZEVsZW1lbnRzWzBdKSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXV0b0NvbXBsZXRlUG9pbnRzKHNlbGVjdGVkRWxlbWVudHNbMF0pO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQoY2xpY2tQb2ludCwgcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFBvaW50ID0gcG9pbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24oYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBjbGlja1BvaW50O1xuICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBzZWxlY3RlZEVsZW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgTGluZVNoYXBlLmVsYm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQgJiYgc291cmNlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLm1vdmluZ1BvaW50LCAuLi5zdGFydFBvaW50KTtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IHRvbGVyYW5jZSkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBoYW5kbGVMaW5lQ3JlYXRpbmcoYm9hcmQsIExpbmVTaGFwZS5lbGJvdywgc3RhcnRQb2ludCwgbW92aW5nUG9pbnQsIHNvdXJjZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbXBsZXRlID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPEF1dG9Db21wbGV0ZU9wdGlvbnM+KHdpdGhBdXRvQ29tcGxldGVQbHVnaW5LZXkpXG4gICAgICAgICAgICAgICAgPy5hZnRlckNvbXBsZXRlO1xuICAgICAgICAgICAgYWZ0ZXJDb21wbGV0ZSAmJiBhZnRlckNvbXBsZXRlKHRlbXBvcmFyeUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBsaW5lU2hhcGVHID0gbnVsbDtcbiAgICAgICAgc291cmNlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
@@ -1,33 +0,0 @@
1
- import { PropertyTransforms } from '@plait/common';
2
- import { MemorizeKey, PlaitDrawElement } from '../interfaces';
3
- export const setStrokeColor = (board, strokeColor) => {
4
- PropertyTransforms.setProperty(board, { strokeColor }, { getMemorizeKey });
5
- };
6
- export const setStrokeWidth = (board, strokeWidth) => {
7
- PropertyTransforms.setProperty(board, { strokeWidth }, { getMemorizeKey });
8
- };
9
- export const setFillColor = (board, fill) => {
10
- PropertyTransforms.setProperty(board, { fill }, { getMemorizeKey });
11
- };
12
- export const setStrokeStyle = (board, strokeStyle) => {
13
- PropertyTransforms.setProperty(board, { strokeStyle }, { getMemorizeKey });
14
- };
15
- export const getMemorizeKey = (element) => {
16
- let key = '';
17
- switch (true) {
18
- case PlaitDrawElement.isBaseShape(element): {
19
- key = MemorizeKey.basicShape;
20
- break;
21
- }
22
- case PlaitDrawElement.isFlowchart(element): {
23
- key = MemorizeKey.flowchart;
24
- break;
25
- }
26
- case PlaitDrawElement.isLine(element): {
27
- key = MemorizeKey.line;
28
- break;
29
- }
30
- }
31
- return key;
32
- };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdHJhbnNmb3Jtcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxXQUFtQixFQUFFLEVBQUU7SUFDckUsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUNyRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDNUQsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUNyRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtJQUNwRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDYixRQUFRLElBQUksRUFBRTtRQUNWLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDeEMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDN0IsTUFBTTtTQUNUO1FBQ0QsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNO1NBQ1Q7UUFDRCxLQUFLLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLE1BQU07U0FDVDtLQUNKO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eVRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1lbW9yaXplS2V5LCBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBzZXRTdHJva2VDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgc3Ryb2tlQ29sb3I6IHN0cmluZykgPT4ge1xuICAgIFByb3BlcnR5VHJhbnNmb3Jtcy5zZXRQcm9wZXJ0eShib2FyZCwgeyBzdHJva2VDb2xvciB9LCB7IGdldE1lbW9yaXplS2V5IH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFN0cm9rZVdpZHRoID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdHJva2VXaWR0aDogbnVtYmVyKSA9PiB7XG4gICAgUHJvcGVydHlUcmFuc2Zvcm1zLnNldFByb3BlcnR5KGJvYXJkLCB7IHN0cm9rZVdpZHRoIH0sIHsgZ2V0TWVtb3JpemVLZXkgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0RmlsbENvbG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBmaWxsOiBzdHJpbmcpID0+IHtcbiAgICBQcm9wZXJ0eVRyYW5zZm9ybXMuc2V0UHJvcGVydHkoYm9hcmQsIHsgZmlsbCB9LCB7IGdldE1lbW9yaXplS2V5IH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFN0cm9rZVN0eWxlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdHJva2VTdHlsZTogc3RyaW5nKSA9PiB7XG4gICAgUHJvcGVydHlUcmFuc2Zvcm1zLnNldFByb3BlcnR5KGJvYXJkLCB7IHN0cm9rZVN0eWxlIH0sIHsgZ2V0TWVtb3JpemVLZXkgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVtb3JpemVLZXkgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgbGV0IGtleSA9ICcnO1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICBjYXNlIFBsYWl0RHJhd0VsZW1lbnQuaXNCYXNlU2hhcGUoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmJhc2ljU2hhcGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBsYWl0RHJhd0VsZW1lbnQuaXNGbG93Y2hhcnQoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmZsb3djaGFydDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGxhaXREcmF3RWxlbWVudC5pc0xpbmUoZWxlbWVudCk6IHtcbiAgICAgICAgICAgIGtleSA9IE1lbW9yaXplS2V5LmxpbmU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5O1xufTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- import { PlaitBoard } from '@plait/core';
2
- export declare const withAutoCompleteReaction: (board: PlaitBoard) => PlaitBoard;
@@ -1,7 +0,0 @@
1
- import { PlaitBoard } from '@plait/core';
2
- import { PlaitLine } from '../interfaces';
3
- export interface AutoCompleteOptions {
4
- afterComplete: (element: PlaitLine) => {};
5
- }
6
- export declare const withAutoCompletePluginKey = "plait-auto-complete-plugin-key";
7
- export declare const withAutoComplete: (board: PlaitBoard) => PlaitBoard;