@plait/common 0.60.0 → 0.62.0-next.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 (50) hide show
  1. package/constants/default.d.ts +1 -0
  2. package/core/element-flavour.d.ts +1 -1
  3. package/core/index.d.ts +4 -0
  4. package/core/render-component.d.ts +4 -0
  5. package/esm2022/constants/default.mjs +2 -1
  6. package/esm2022/core/element-flavour.mjs +1 -1
  7. package/esm2022/core/group.component.mjs +3 -3
  8. package/esm2022/core/index.mjs +5 -0
  9. package/esm2022/core/render-component.mjs +2 -0
  10. package/esm2022/generators/generator.mjs +1 -1
  11. package/esm2022/generators/index.mjs +2 -2
  12. package/esm2022/image/image-base.component.mjs +26 -0
  13. package/esm2022/image/image.generator.mjs +96 -0
  14. package/esm2022/image/index.mjs +4 -0
  15. package/esm2022/image/with-image.mjs +8 -0
  16. package/esm2022/plugins/index.mjs +1 -2
  17. package/esm2022/public-api.mjs +5 -4
  18. package/esm2022/text/index.mjs +5 -0
  19. package/esm2022/text/text-manage.mjs +138 -0
  20. package/esm2022/text/text-measure.mjs +61 -0
  21. package/esm2022/text/types.mjs +7 -0
  22. package/esm2022/text/with-text.mjs +8 -0
  23. package/esm2022/transforms/index.mjs +1 -2
  24. package/esm2022/utils/image.mjs +3 -3
  25. package/esm2022/utils/text.mjs +22 -20
  26. package/fesm2022/plait-common.mjs +337 -214
  27. package/fesm2022/plait-common.mjs.map +1 -1
  28. package/generators/index.d.ts +1 -1
  29. package/image/image-base.component.d.ts +17 -0
  30. package/{generators → image}/image.generator.d.ts +11 -10
  31. package/image/index.d.ts +3 -0
  32. package/image/with-image.d.ts +15 -0
  33. package/package.json +1 -3
  34. package/plugins/index.d.ts +0 -1
  35. package/public-api.d.ts +4 -3
  36. package/text/index.d.ts +4 -0
  37. package/text/text-manage.d.ts +41 -0
  38. package/text/text-measure.d.ts +8 -0
  39. package/text/types.d.ts +24 -0
  40. package/text/with-text.d.ts +25 -0
  41. package/transforms/index.d.ts +0 -1
  42. package/utils/image.d.ts +1 -5
  43. package/utils/text.d.ts +9 -6
  44. package/core/image-base.component.d.ts +0 -29
  45. package/esm2022/core/image-base.component.mjs +0 -95
  46. package/esm2022/generators/image.generator.mjs +0 -59
  47. package/esm2022/plugins/text-options.mjs +0 -2
  48. package/esm2022/transforms/text.mjs +0 -71
  49. package/plugins/text-options.d.ts +0 -5
  50. package/transforms/text.d.ts +0 -9
@@ -1,3 +1,3 @@
1
1
  export * from './generator';
2
2
  export * from './active.generator';
3
- export * from './image.generator';
3
+ export * from '../image/image.generator';
@@ -0,0 +1,17 @@
1
+ import { PlaitBoard, PlaitElement } from '@plait/core';
2
+ import { CommonImageItem } from '../utils';
3
+ export declare abstract class ImageBaseComponent {
4
+ _imageItem: CommonImageItem;
5
+ _isFocus: boolean;
6
+ initialized: boolean;
7
+ element: PlaitElement;
8
+ set imageItem(value: CommonImageItem);
9
+ get imageItem(): CommonImageItem;
10
+ board: PlaitBoard;
11
+ set isFocus(value: boolean);
12
+ get isFocus(): boolean;
13
+ abstract afterImageItemChange(previous: CommonImageItem, current: CommonImageItem): void;
14
+ abstract nativeElement(): HTMLElement;
15
+ initialize(): void;
16
+ destroy(): void;
17
+ }
@@ -1,24 +1,25 @@
1
1
  import { PlaitBoard, PlaitElement, RectangleClient } from '@plait/core';
2
- import { Generator, GeneratorOptions } from './generator';
3
- import { ComponentRef, ViewContainerRef } from '@angular/core';
4
- import { ImageBaseComponent } from '../core/image-base.component';
2
+ import { Generator, GeneratorExtraData, GeneratorOptions } from '../generators/generator';
5
3
  import { CommonImageItem } from '../utils';
6
- export interface ShapeData {
7
- viewContainerRef: ViewContainerRef;
8
- }
4
+ import { ActiveGenerator } from '../generators/active.generator';
5
+ import { ImageComponentRef } from './with-image';
9
6
  export interface ImageGeneratorOptions<T> {
10
7
  getRectangle: (element: T) => RectangleClient;
11
8
  getImageItem: (element: T) => CommonImageItem;
12
9
  }
13
- export declare class ImageGenerator<T extends PlaitElement = PlaitElement> extends Generator<T, ViewContainerRef, ImageGeneratorOptions<T> & GeneratorOptions> {
10
+ export declare class ImageGenerator<T extends PlaitElement = PlaitElement> extends Generator<T, GeneratorExtraData, ImageGeneratorOptions<T> & GeneratorOptions> {
14
11
  board: PlaitBoard;
15
12
  options: ImageGeneratorOptions<T>;
16
13
  static key: string;
17
14
  foreignObject: SVGForeignObjectElement;
18
- componentRef: ComponentRef<ImageBaseComponent>;
15
+ imageComponentRef: ImageComponentRef;
16
+ activeGenerator: ActiveGenerator;
17
+ isFocus: boolean;
18
+ element: T;
19
19
  constructor(board: PlaitBoard, options: ImageGeneratorOptions<T>);
20
- canDraw(element: T, data: ViewContainerRef): boolean;
21
- draw(element: T, viewContainerRef: ViewContainerRef): SVGGElement;
20
+ canDraw(element: T): boolean;
21
+ draw(element: T): SVGGElement;
22
22
  updateImage(nodeG: SVGGElement, previous: T, current: T): void;
23
+ setFocus(element: PlaitElement, isFocus: boolean): void;
23
24
  destroy(): void;
24
25
  }
@@ -0,0 +1,3 @@
1
+ export * from './image-base.component';
2
+ export * from './image.generator';
3
+ export * from './with-image';
@@ -0,0 +1,15 @@
1
+ import { PlaitBoard, PlaitElement, RectangleClient } from '@plait/core';
2
+ import { RenderComponentRef } from '../core/render-component';
3
+ import { CommonImageItem } from '../utils/image';
4
+ export interface PlaitImageBoard {
5
+ renderImage: (container: Element | DocumentFragment, props: ImageProps) => ImageComponentRef;
6
+ }
7
+ export declare const withImage: <T extends PlaitBoard = PlaitBoard>(board: T) => T & PlaitImageBoard;
8
+ export type ImageComponentRef = RenderComponentRef<ImageProps>;
9
+ export interface ImageProps {
10
+ board: PlaitBoard;
11
+ imageItem: CommonImageItem;
12
+ element: PlaitElement;
13
+ isFocus?: boolean;
14
+ getRectangle: () => RectangleClient;
15
+ }
package/package.json CHANGED
@@ -1,9 +1,7 @@
1
1
  {
2
2
  "name": "@plait/common",
3
- "version": "0.60.0",
3
+ "version": "0.62.0-next.0",
4
4
  "peerDependencies": {
5
- "@angular/common": "^17.2.4",
6
- "@angular/core": "^17.2.4",
7
5
  "is-hotkey": "^0.2.0"
8
6
  },
9
7
  "dependencies": {
@@ -1,3 +1,2 @@
1
1
  export * from './with-resize';
2
- export * from './text-options';
3
2
  export * from './with-group';
package/public-api.d.ts CHANGED
@@ -4,8 +4,9 @@ export * from './transforms';
4
4
  export * from './shapes';
5
5
  export * from './plugins';
6
6
  export * from './utils';
7
- export * from './core/element-flavour';
8
- export * from './core/image-base.component';
9
- export * from './core/element-ref';
7
+ export * from './image/image-base.component';
8
+ export * from './core';
10
9
  export * from './algorithms';
10
+ export * from './text';
11
+ export * from './image';
11
12
  export * from './types';
@@ -0,0 +1,4 @@
1
+ export * from './text-manage';
2
+ export * from './with-text';
3
+ export * from './text-measure';
4
+ export * from './types';
@@ -0,0 +1,41 @@
1
+ import { PlaitBoard, Point, RectangleClient } from '@plait/core';
2
+ import { Editor, Element, Operation } from 'slate';
3
+ import { TextPlugin } from './with-text';
4
+ import { TextComponentRef } from './with-text';
5
+ export interface TextManageChangeData {
6
+ newText?: Element;
7
+ operations?: Operation[];
8
+ width: number;
9
+ height: number;
10
+ }
11
+ export declare class TextManage {
12
+ private board;
13
+ private options;
14
+ isEditing: boolean;
15
+ editor: Editor;
16
+ g: SVGGElement;
17
+ foreignObject: SVGForeignObjectElement;
18
+ textComponentRef: TextComponentRef;
19
+ constructor(board: PlaitBoard, options: {
20
+ getRectangle: () => RectangleClient;
21
+ onChange?: (data: TextManageChangeData) => void;
22
+ getRenderRectangle?: () => RectangleClient;
23
+ getMaxWidth?: () => number;
24
+ textPlugins?: TextPlugin[];
25
+ });
26
+ draw(text: Element): void;
27
+ updateRectangleWidth(width: number): void;
28
+ updateAngle(centerPoint: Point, angle?: number): void;
29
+ updateRectangle(rectangle?: RectangleClient): void;
30
+ updateText(newText: Element): void;
31
+ edit(callback?: () => void): () => void;
32
+ getSize: (element?: Element) => {
33
+ width: number;
34
+ height: number;
35
+ };
36
+ getText: () => import("slate").Descendant;
37
+ destroy(): void;
38
+ }
39
+ export declare const buildCompositionData: (editor: Editor, data: string) => {
40
+ children: any[];
41
+ } | null;
@@ -0,0 +1,8 @@
1
+ import { ParagraphElement } from './types';
2
+ export declare function measureElement(element: ParagraphElement, options: {
3
+ fontSize: number;
4
+ fontFamily: string;
5
+ }, containerMaxWidth?: number): {
6
+ width: number;
7
+ height: number;
8
+ };
@@ -0,0 +1,24 @@
1
+ import { BaseElement } from 'slate';
2
+ export declare enum Alignment {
3
+ left = "left",
4
+ center = "center",
5
+ right = "right"
6
+ }
7
+ export type CustomText = {
8
+ bold?: boolean;
9
+ italic?: boolean;
10
+ strike?: boolean;
11
+ code?: boolean;
12
+ text: string;
13
+ underlined?: boolean;
14
+ color?: string;
15
+ [`font-size`]?: string;
16
+ };
17
+ export interface LinkElement extends BaseElement {
18
+ type: 'link';
19
+ url: string;
20
+ }
21
+ export interface ParagraphElement extends BaseElement {
22
+ align?: Alignment;
23
+ }
24
+ export type CustomElement = ParagraphElement | LinkElement;
@@ -0,0 +1,25 @@
1
+ import { PlaitBoard, WithPluginOptions } from '@plait/core';
2
+ import { Editor, Operation, Element as SlateElement } from 'slate';
3
+ import { RenderComponentRef } from '../core/render-component';
4
+ export interface PlaitTextBoard {
5
+ renderText: (container: Element | DocumentFragment, props: TextProps) => TextComponentRef;
6
+ }
7
+ export declare const withText: <T extends PlaitBoard = PlaitBoard>(board: T) => T & PlaitTextBoard;
8
+ export type TextComponentRef = RenderComponentRef<TextProps>;
9
+ export interface TextProps {
10
+ board: PlaitBoard;
11
+ text: SlateElement;
12
+ textPlugins?: TextPlugin[];
13
+ readonly?: boolean;
14
+ onChange?: (data: TextChangeData) => void;
15
+ afterInit?: (data: Editor) => void;
16
+ onComposition?: (data: CompositionEvent) => void;
17
+ }
18
+ export type TextChangeData = {
19
+ newText: SlateElement;
20
+ operations: Operation[];
21
+ };
22
+ export interface WithTextPluginOptions extends WithPluginOptions {
23
+ textPlugins?: TextPlugin[];
24
+ }
25
+ export type TextPlugin = (editor: Editor) => Editor;
@@ -1,3 +1,2 @@
1
1
  export * from './property';
2
2
  export * from './align';
3
- export * from './text';
package/utils/image.d.ts CHANGED
@@ -1,13 +1,9 @@
1
- import { ComponentType, PlaitBoard, PlaitElement } from '@plait/core';
2
- import { ImageBaseComponent } from '../core/image-base.component';
1
+ import { PlaitBoard, PlaitElement } from '@plait/core';
3
2
  export interface CommonImageItem {
4
3
  url: string;
5
4
  width: number;
6
5
  height: number;
7
6
  }
8
- export interface WithCommonPluginOptions {
9
- imageComponentType?: ComponentType<ImageBaseComponent>;
10
- }
11
7
  export declare const selectImage: (board: PlaitBoard, defaultImageWidth: number, handle: (commonImage: CommonImageItem) => void, acceptImageTypes?: string[]) => void;
12
8
  export declare const buildImage: (board: PlaitBoard, imageFile: File, defaultImageWidth: number, handle: (commonImage: CommonImageItem) => void) => Promise<void>;
13
9
  export declare const getElementOfFocusedImage: (board: PlaitBoard) => PlaitElement | undefined;
package/utils/text.d.ts CHANGED
@@ -1,12 +1,15 @@
1
1
  import { PlaitBoard, PlaitElement } from '@plait/core';
2
- import { CustomText, TextManage } from '@plait/text';
2
+ import { Element } from 'slate';
3
+ import { TextManage } from '../text/text-manage';
4
+ import { Alignment, CustomText } from '../text/types';
3
5
  export declare const getTextManages: (element: PlaitElement) => TextManage[];
4
6
  export declare const getFirstTextManage: (element: PlaitElement) => TextManage;
5
- export declare const getTextEditorsByElement: (element: PlaitElement) => (import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor)[];
6
- export declare const getFirstTextEditor: (element: PlaitElement) => import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor;
7
+ export declare const getTextEditorsByElement: (element: PlaitElement) => import("slate").BaseEditor[];
8
+ export declare const getFirstTextEditor: (element: PlaitElement) => import("slate").BaseEditor;
7
9
  export declare const findFirstTextEditor: (board: PlaitBoard) => null;
8
- export declare const getTextMarksByElement: (element: PlaitElement) => Omit<CustomText, "text">;
9
10
  export declare const getElementsText: (elements: PlaitElement[]) => string;
10
- export declare const getTextEditors: (board: PlaitBoard, elements?: PlaitElement[]) => (import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor)[] | undefined;
11
- export declare const getEditingTextEditor: (board: PlaitBoard, elements?: PlaitElement[]) => (import("slate").BaseEditor & import("slate-angular").AngularEditor & import("slate-history").HistoryEditor) | undefined;
11
+ export declare const getTextEditors: (board: PlaitBoard, elements?: PlaitElement[]) => import("slate").BaseEditor[] | undefined;
12
+ export declare const getEditingTextEditor: (board: PlaitBoard, elements?: PlaitElement[]) => import("slate").BaseEditor | undefined;
13
+ export declare const buildText: (text: string | Element, align?: Alignment, properties?: Partial<CustomText>) => import("slate").BaseElement;
14
+ export declare const getLineHeightByFontSize: (fontSize: number) => number;
12
15
  export declare const ELEMENT_TO_TEXT_MANAGES: WeakMap<PlaitElement, TextManage[]>;
@@ -1,29 +0,0 @@
1
- import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
2
- import { PlaitBoard, PlaitElement, RectangleClient } from '@plait/core';
3
- import { ActiveGenerator } from '../generators';
4
- import { CommonImageItem } from '../utils';
5
- import * as i0 from "@angular/core";
6
- export declare abstract class ImageBaseComponent implements OnInit, OnDestroy {
7
- protected elementRef: ElementRef<HTMLElement>;
8
- cdr: ChangeDetectorRef;
9
- _imageItem: CommonImageItem;
10
- _isFocus: boolean;
11
- initialized: boolean;
12
- activeGenerator: ActiveGenerator;
13
- element: PlaitElement;
14
- set imageItem(value: CommonImageItem);
15
- get imageItem(): CommonImageItem;
16
- board: PlaitBoard;
17
- set isFocus(value: boolean);
18
- get isFocus(): boolean;
19
- get nativeElement(): HTMLElement;
20
- abstract afterImageItemChange(previous: CommonImageItem, current: CommonImageItem): void;
21
- getRectangle: () => RectangleClient;
22
- hasResizeHandle: () => boolean;
23
- constructor(elementRef: ElementRef<HTMLElement>, cdr: ChangeDetectorRef);
24
- ngOnInit(): void;
25
- drawFocus(): void;
26
- ngOnDestroy(): void;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<ImageBaseComponent, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<ImageBaseComponent, never, never, { "element": { "alias": "element"; "required": false; }; "imageItem": { "alias": "imageItem"; "required": false; }; "board": { "alias": "board"; "required": false; }; "isFocus": { "alias": "isFocus"; "required": false; }; "getRectangle": { "alias": "getRectangle"; "required": false; }; "hasResizeHandle": { "alias": "hasResizeHandle"; "required": false; }; }, {}, never, never, false, never>;
29
- }
@@ -1,95 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { ACTIVE_STROKE_WIDTH, PlaitBoard, getSelectedElements, isSelectionMoving } from '@plait/core';
3
- import { ActiveGenerator } from '../generators';
4
- import { canResize, getElementOfFocusedImage } from '../utils';
5
- import * as i0 from "@angular/core";
6
- export class ImageBaseComponent {
7
- set imageItem(value) {
8
- this.afterImageItemChange(this._imageItem, value);
9
- this._imageItem = value;
10
- this.drawFocus();
11
- }
12
- get imageItem() {
13
- return this._imageItem;
14
- }
15
- set isFocus(value) {
16
- this._isFocus = value;
17
- this.drawFocus();
18
- }
19
- get isFocus() {
20
- return this._isFocus;
21
- }
22
- get nativeElement() {
23
- return this.elementRef.nativeElement;
24
- }
25
- constructor(elementRef, cdr) {
26
- this.elementRef = elementRef;
27
- this.cdr = cdr;
28
- this.initialized = false;
29
- }
30
- ngOnInit() {
31
- this.activeGenerator = new ActiveGenerator(this.board, {
32
- getStrokeWidth: () => {
33
- const selectedElements = getSelectedElements(this.board);
34
- if (!(selectedElements.length === 1 && !isSelectionMoving(this.board))) {
35
- return ACTIVE_STROKE_WIDTH;
36
- }
37
- else {
38
- return ACTIVE_STROKE_WIDTH;
39
- }
40
- },
41
- getStrokeOpacity: () => {
42
- const selectedElements = getSelectedElements(this.board);
43
- if ((selectedElements.length === 1 && !isSelectionMoving(this.board)) || !selectedElements.length) {
44
- return 1;
45
- }
46
- else {
47
- return 0.5;
48
- }
49
- },
50
- getRectangle: () => {
51
- return this.getRectangle();
52
- },
53
- hasResizeHandle: () => {
54
- const isSelectedImageElement = canResize(this.board, this.element);
55
- const isSelectedImage = !!getElementOfFocusedImage(this.board);
56
- return isSelectedImage || isSelectedImageElement;
57
- }
58
- });
59
- this.initialized = true;
60
- }
61
- drawFocus() {
62
- if (this.initialized) {
63
- const activeG = PlaitBoard.getElementActiveHost(this.board);
64
- this.activeGenerator.processDrawing(this.element, activeG, { selected: this._isFocus });
65
- }
66
- }
67
- ngOnDestroy() {
68
- if (this.activeGenerator) {
69
- this.activeGenerator.destroy();
70
- }
71
- }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ImageBaseComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: ImageBaseComponent, inputs: { element: "element", imageItem: "imageItem", board: "board", isFocus: "isFocus", getRectangle: "getRectangle", hasResizeHandle: "hasResizeHandle" }, host: { classAttribute: "plait-image-container" }, ngImport: i0 }); }
74
- }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ImageBaseComponent, decorators: [{
76
- type: Directive,
77
- args: [{
78
- host: {
79
- class: 'plait-image-container'
80
- }
81
- }]
82
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { element: [{
83
- type: Input
84
- }], imageItem: [{
85
- type: Input
86
- }], board: [{
87
- type: Input
88
- }], isFocus: [{
89
- type: Input
90
- }], getRectangle: [{
91
- type: Input
92
- }], hasResizeHandle: [{
93
- type: Input
94
- }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvcmUvaW1hZ2UtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQWMsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFpQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNySSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBbUIsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQU9oRixNQUFNLE9BQWdCLGtCQUFrQjtJQVlwQyxJQUNJLFNBQVMsQ0FBQyxLQUFzQjtRQUNoQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBS0QsSUFDSSxPQUFPLENBQUMsS0FBYztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBUUQsWUFBc0IsVUFBbUMsRUFBUyxHQUFzQjtRQUFsRSxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekN4RixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQXlDdUUsQ0FBQztJQUU1RixRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25ELGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckUsT0FBTyxtQkFBbUIsQ0FBQztnQkFDL0IsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sbUJBQW1CLENBQUM7Z0JBQy9CLENBQUM7WUFDTCxDQUFDO1lBQ0QsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO2dCQUNuQixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoRyxPQUFPLENBQUMsQ0FBQztnQkFDYixDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxHQUFHLENBQUM7Z0JBQ2YsQ0FBQztZQUNMLENBQUM7WUFDRCxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQy9CLENBQUM7WUFDRCxlQUFlLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0QsT0FBTyxlQUFlLElBQUksc0JBQXNCLENBQUM7WUFDckQsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBdUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUcsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQzs4R0F6RmlCLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNQLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsdUJBQXVCO3FCQUNqQztpQkFDSjsrR0FXRyxPQUFPO3NCQUROLEtBQUs7Z0JBSUYsU0FBUztzQkFEWixLQUFLO2dCQVlOLEtBQUs7c0JBREosS0FBSztnQkFJRixPQUFPO3NCQURWLEtBQUs7Z0JBZ0JHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQUNUSVZFX1NUUk9LRV9XSURUSCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBSZWN0YW5nbGVDbGllbnQsIGdldFNlbGVjdGVkRWxlbWVudHMsIGlzU2VsZWN0aW9uTW92aW5nIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi4vZ2VuZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tb25JbWFnZUl0ZW0sIGNhblJlc2l6ZSwgZ2V0RWxlbWVudE9mRm9jdXNlZEltYWdlIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncGxhaXQtaW1hZ2UtY29udGFpbmVyJ1xuICAgIH1cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW1hZ2VCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIF9pbWFnZUl0ZW0hOiBDb21tb25JbWFnZUl0ZW07XG5cbiAgICBfaXNGb2N1cyE6IGJvb2xlYW47XG5cbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgYWN0aXZlR2VuZXJhdG9yITogQWN0aXZlR2VuZXJhdG9yO1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50ITogUGxhaXRFbGVtZW50O1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgaW1hZ2VJdGVtKHZhbHVlOiBDb21tb25JbWFnZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5hZnRlckltYWdlSXRlbUNoYW5nZSh0aGlzLl9pbWFnZUl0ZW0sIHZhbHVlKTtcbiAgICAgICAgdGhpcy5faW1hZ2VJdGVtID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZHJhd0ZvY3VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlSXRlbTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faXNGb2N1cyA9IHZhbHVlO1xuICAgICAgICB0aGlzLmRyYXdGb2N1cygpO1xuICAgIH1cblxuICAgIGdldCBpc0ZvY3VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGb2N1cztcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGFic3RyYWN0IGFmdGVySW1hZ2VJdGVtQ2hhbmdlKHByZXZpb3VzOiBDb21tb25JbWFnZUl0ZW0sIGN1cnJlbnQ6IENvbW1vbkltYWdlSXRlbSk6IHZvaWQ7XG5cbiAgICBASW5wdXQoKSBnZXRSZWN0YW5nbGUhOiAoKSA9PiBSZWN0YW5nbGVDbGllbnQ7XG5cbiAgICBASW5wdXQoKSBoYXNSZXNpemVIYW5kbGUhOiAoKSA9PiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvciA9IG5ldyBBY3RpdmVHZW5lcmF0b3IodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIShzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdHJva2VPcGFjaXR5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCkpIHx8ICFzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNSZXNpemVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkSW1hZ2VFbGVtZW50ID0gY2FuUmVzaXplKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZEltYWdlID0gISFnZXRFbGVtZW50T2ZGb2N1c2VkSW1hZ2UodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzU2VsZWN0ZWRJbWFnZSB8fCBpc1NlbGVjdGVkSW1hZ2VFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgZHJhd0ZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlRyA9IFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQgYXMgUGxhaXRFbGVtZW50LCBhY3RpdmVHLCB7IHNlbGVjdGVkOiB0aGlzLl9pc0ZvY3VzIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUdlbmVyYXRvcikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,59 +0,0 @@
1
- import { RectangleClient, createForeignObject, createG, setAngleForG, updateForeignObject } from '@plait/core';
2
- import { Generator } from './generator';
3
- import { WithCommonPluginKey } from '../constants';
4
- export class ImageGenerator extends Generator {
5
- static { this.key = 'image-generator'; }
6
- constructor(board, options) {
7
- super(board, options);
8
- this.board = board;
9
- this.options = options;
10
- }
11
- canDraw(element, data) {
12
- return !!this.options.getImageItem(element);
13
- }
14
- draw(element, viewContainerRef) {
15
- const g = createG();
16
- const foreignRectangle = this.options.getRectangle(element);
17
- this.foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
18
- g.append(this.foreignObject);
19
- const componentType = this.board.getPluginOptions(WithCommonPluginKey)
20
- .imageComponentType;
21
- if (!componentType) {
22
- throw new Error('Not implement ImageBaseComponent error.');
23
- }
24
- this.componentRef = viewContainerRef.createComponent(componentType);
25
- this.componentRef.instance.board = this.board;
26
- this.componentRef.instance.imageItem = this.options.getImageItem(element);
27
- this.componentRef.instance.element = element;
28
- this.componentRef.instance.getRectangle = () => {
29
- return this.options.getRectangle(element);
30
- };
31
- this.componentRef.instance.cdr.markForCheck();
32
- this.foreignObject.append(this.componentRef.instance.nativeElement);
33
- return g;
34
- }
35
- updateImage(nodeG, previous, current) {
36
- if (previous !== current && this.componentRef) {
37
- this.componentRef.instance.imageItem = this.options.getImageItem(current);
38
- this.componentRef.instance.element = current;
39
- this.componentRef.instance.getRectangle = () => {
40
- return this.options.getRectangle(current);
41
- };
42
- }
43
- const currentForeignObject = this.options.getRectangle(current);
44
- updateForeignObject(this.g, currentForeignObject.width, currentForeignObject.height, currentForeignObject.x, currentForeignObject.y);
45
- if (currentForeignObject && current.angle) {
46
- setAngleForG(this.g, RectangleClient.getCenterPoint(currentForeignObject), current.angle);
47
- }
48
- // solve image lose on move node
49
- if (this.foreignObject.children.length === 0) {
50
- this.foreignObject.append(this.componentRef.instance.nativeElement);
51
- }
52
- this.componentRef?.instance.cdr.markForCheck();
53
- }
54
- destroy() {
55
- super.destroy();
56
- this.componentRef?.destroy();
57
- }
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9nZW5lcmF0b3JzL2ltYWdlLmdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsWUFBWSxFQUNaLG1CQUFtQixFQUN0QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLGFBQWEsQ0FBQztBQUkxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFVbkQsTUFBTSxPQUFPLGNBQXNELFNBQVEsU0FJMUU7YUFDVSxRQUFHLEdBQUcsaUJBQWlCLENBQUM7SUFNL0IsWUFBbUIsS0FBaUIsRUFBUyxPQUFpQztRQUMxRSxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRFAsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQTBCO0lBRTlFLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBVSxFQUFFLElBQXNCO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLENBQUMsT0FBVSxFQUFFLGdCQUFrQztRQUMvQyxNQUFNLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEks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TyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQbGFpdE9wdGlvbnNCb2FyZCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgY3JlYXRlRm9yZWlnbk9iamVjdCxcbiAgICBjcmVhdGVHLFxuICAgIHNldEFuZ2xlRm9yRyxcbiAgICB1cGRhdGVGb3JlaWduT2JqZWN0XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEdlbmVyYXRvciwgR2VuZXJhdG9yT3B0aW9ucyB9IGZyb20gJy4vZ2VuZXJhdG9yJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS9pbWFnZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25JbWFnZUl0ZW0sIFdpdGhDb21tb25QbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgV2l0aENvbW1vblBsdWdpbktleSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5leHBvcnQgaW50ZXJmYWNlIFNoYXBlRGF0YSB7XG4gICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUdlbmVyYXRvck9wdGlvbnM8VD4ge1xuICAgIGdldFJlY3RhbmdsZTogKGVsZW1lbnQ6IFQpID0+IFJlY3RhbmdsZUNsaWVudDtcbiAgICBnZXRJbWFnZUl0ZW06IChlbGVtZW50OiBUKSA9PiBDb21tb25JbWFnZUl0ZW07XG59XG5cbmV4cG9ydCBjbGFzcyBJbWFnZUdlbmVyYXRvcjxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRFbGVtZW50PiBleHRlbmRzIEdlbmVyYXRvcjxcbiAgICBULFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgSW1hZ2VHZW5lcmF0b3JPcHRpb25zPFQ+ICYgR2VuZXJhdG9yT3B0aW9uc1xuPiB7XG4gICAgc3RhdGljIGtleSA9ICdpbWFnZS1nZW5lcmF0b3InO1xuXG4gICAgZm9yZWlnbk9iamVjdCE6IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50O1xuXG4gICAgY29tcG9uZW50UmVmITogQ29tcG9uZW50UmVmPEltYWdlQmFzZUNvbXBvbmVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYm9hcmQ6IFBsYWl0Qm9hcmQsIHB1YmxpYyBvcHRpb25zOiBJbWFnZUdlbmVyYXRvck9wdGlvbnM8VD4pIHtcbiAgICAgICAgc3VwZXIoYm9hcmQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGNhbkRyYXcoZWxlbWVudDogVCwgZGF0YTogVmlld0NvbnRhaW5lclJlZik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMuZ2V0SW1hZ2VJdGVtKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGRyYXcoZWxlbWVudDogVCwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZik6IFNWR0dFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgY29uc3QgZm9yZWlnblJlY3RhbmdsZSA9IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMuZm9yZWlnbk9iamVjdCA9IGNyZWF0ZUZvcmVpZ25PYmplY3QoZm9yZWlnblJlY3RhbmdsZS54LCBmb3JlaWduUmVjdGFuZ2xlLnksIGZvcmVpZ25SZWN0YW5nbGUud2lkdGgsIGZvcmVpZ25SZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICAgICAgZy5hcHBlbmQodGhpcy5mb3JlaWduT2JqZWN0KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9ICh0aGlzLmJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhDb21tb25QbHVnaW5PcHRpb25zPihXaXRoQ29tbW9uUGx1Z2luS2V5KVxuICAgICAgICAgICAgLmltYWdlQ29tcG9uZW50VHlwZTtcbiAgICAgICAgaWYgKCFjb21wb25lbnRUeXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnQgSW1hZ2VCYXNlQ29tcG9uZW50IGVycm9yLicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50VHlwZSk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmJvYXJkID0gdGhpcy5ib2FyZDtcblxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbWFnZUl0ZW0gPSB0aGlzLm9wdGlvbnMuZ2V0SW1hZ2VJdGVtKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZ2V0UmVjdGFuZ2xlID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0LmFwcGVuZCh0aGlzLmNvbXBvbmVudFJlZiEuaW5zdGFuY2UubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHJldHVybiBnO1xuICAgIH1cblxuICAgIHVwZGF0ZUltYWdlKG5vZGVHOiBTVkdHRWxlbWVudCwgcHJldmlvdXM6IFQsIGN1cnJlbnQ6IFQpIHtcbiAgICAgICAgaWYgKHByZXZpb3VzICE9PSBjdXJyZW50ICYmIHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbWFnZUl0ZW0gPSB0aGlzLm9wdGlvbnMuZ2V0SW1hZ2VJdGVtKGN1cnJlbnQpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWxlbWVudCA9IGN1cnJlbnQ7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiEuaW5zdGFuY2UuZ2V0UmVjdGFuZ2xlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0UmVjdGFuZ2xlKGN1cnJlbnQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50Rm9yZWlnbk9iamVjdCA9IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoY3VycmVudCk7XG4gICAgICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QoXG4gICAgICAgICAgICB0aGlzLmchLFxuICAgICAgICAgICAgY3VycmVudEZvcmVpZ25PYmplY3Qud2lkdGgsXG4gICAgICAgICAgICBjdXJyZW50Rm9yZWlnbk9iamVjdC5oZWlnaHQsXG4gICAgICAgICAgICBjdXJyZW50Rm9yZWlnbk9iamVjdC54LFxuICAgICAgICAgICAgY3VycmVudEZvcmVpZ25PYmplY3QueVxuICAgICAgICApO1xuICAgICAgICBpZiAoY3VycmVudEZvcmVpZ25PYmplY3QgJiYgY3VycmVudC5hbmdsZSkge1xuICAgICAgICAgICAgc2V0QW5nbGVGb3JHKHRoaXMuZyEsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChjdXJyZW50Rm9yZWlnbk9iamVjdCksIGN1cnJlbnQuYW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNvbHZlIGltYWdlIGxvc2Ugb24gbW92ZSBub2RlXG4gICAgICAgIGlmICh0aGlzLmZvcmVpZ25PYmplY3QuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmZvcmVpZ25PYmplY3QuYXBwZW5kKHRoaXMuY29tcG9uZW50UmVmIS5pbnN0YW5jZS5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9wbHVnaW5zL3RleHQtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2l0aFBsdWdpbk9wdGlvbnMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBUZXh0UGx1Z2luIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhUZXh0T3B0aW9ucyBleHRlbmRzIFdpdGhQbHVnaW5PcHRpb25zIHtcbiAgICB0ZXh0UGx1Z2lucz86IFRleHRQbHVnaW5bXTtcbn1cbiJdfQ==
@@ -1,71 +0,0 @@
1
- import { getSelectedElements } from '@plait/core';
2
- import { AlignEditor, MarkTypes, PlaitMarkEditor } from '@plait/text';
3
- import { Editor, Transforms as SlateTransforms } from 'slate';
4
- import { findFirstTextEditor, getTextEditors, getTextEditorsByElement } from '../utils/text';
5
- const setTextMarks = (board, mark) => {
6
- const selectedElements = getSelectedElements(board);
7
- if (selectedElements.length) {
8
- const firstEditor = findFirstTextEditor(board);
9
- if (!firstEditor) {
10
- return;
11
- }
12
- const activeMarks = PlaitMarkEditor.getMarks(firstEditor);
13
- const elements = selectedElements.filter(element => {
14
- const editors = getTextEditorsByElement(element);
15
- return editors.some(editor => {
16
- const elementMarks = PlaitMarkEditor.getMarks(editor);
17
- return elementMarks[mark] === activeMarks[mark];
18
- });
19
- });
20
- const editors = getTextEditors(board, elements);
21
- if (editors && editors.length) {
22
- editors.forEach(editor => {
23
- PlaitMarkEditor.toggleMark(editor, mark);
24
- });
25
- }
26
- }
27
- };
28
- const setFontSize = (board, size, defaultFontSize) => {
29
- const editors = getTextEditors(board);
30
- if (editors && editors.length) {
31
- const selectedElements = getSelectedElements(board);
32
- editors.forEach(editor => {
33
- let finalDefaultFontSize;
34
- if (typeof defaultFontSize === 'function') {
35
- const element = selectedElements.find(element => {
36
- const textEditors = getTextEditorsByElement(element);
37
- return textEditors.includes(editor);
38
- });
39
- finalDefaultFontSize = defaultFontSize(element);
40
- }
41
- else {
42
- finalDefaultFontSize = defaultFontSize;
43
- }
44
- PlaitMarkEditor.setFontSizeMark(editor, size, finalDefaultFontSize);
45
- });
46
- }
47
- };
48
- const setTextColor = (board, color, textSelection) => {
49
- const editors = getTextEditors(board);
50
- if (editors && editors.length) {
51
- editors.forEach(editor => {
52
- if (textSelection) {
53
- SlateTransforms.select(editor, textSelection);
54
- }
55
- if (color === 'transparent') {
56
- Editor.removeMark(editor, MarkTypes.color);
57
- }
58
- else {
59
- PlaitMarkEditor.setColorMark(editor, color);
60
- }
61
- });
62
- }
63
- };
64
- const setTextAlign = (board, align) => {
65
- const editors = getTextEditors(board);
66
- if (editors && editors.length) {
67
- editors.forEach(editor => AlignEditor.setAlign(editor, align));
68
- }
69
- };
70
- export const TextTransforms = { setTextAlign, setTextColor, setFontSize, setTextMarks };
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdHJhbnNmb3Jtcy90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEIsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBd0IsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQWEsTUFBTSxFQUFFLFVBQVUsSUFBSSxlQUFlLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBZSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDL0MsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN6QixNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMs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TUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBbGlnbkVkaXRvciwgQWxpZ25tZW50LCBGb250U2l6ZXMsIE1hcmtUeXBlcywgUGxhaXRNYXJrRWRpdG9yIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgQmFzZVJhbmdlLCBFZGl0b3IsIFRyYW5zZm9ybXMgYXMgU2xhdGVUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgZmluZEZpcnN0VGV4dEVkaXRvciwgZ2V0VGV4dEVkaXRvcnMsIGdldFRleHRFZGl0b3JzQnlFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvdGV4dCc7XG5cbmNvbnN0IHNldFRleHRNYXJrcyA9IChib2FyZDogUGxhaXRCb2FyZCwgbWFyazogTWFya1R5cGVzKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdEVkaXRvciA9IGZpbmRGaXJzdFRleHRFZGl0b3IoYm9hcmQpO1xuICAgICAgICBpZiAoIWZpcnN0RWRpdG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0aXZlTWFya3MgPSBQbGFpdE1hcmtFZGl0b3IuZ2V0TWFya3MoZmlyc3RFZGl0b3IpO1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVkaXRvcnMuc29tZShlZGl0b3IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRNYXJrcyA9IFBsYWl0TWFya0VkaXRvci5nZXRNYXJrcyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50TWFya3NbbWFya10gPT09IGFjdGl2ZU1hcmtzW21hcmtdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlZGl0b3JzID0gZ2V0VGV4dEVkaXRvcnMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICAgICAgaWYgKGVkaXRvcnMgJiYgZWRpdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGVkaXRvcnMuZm9yRWFjaChlZGl0b3IgPT4ge1xuICAgICAgICAgICAgICAgIFBsYWl0TWFya0VkaXRvci50b2dnbGVNYXJrKGVkaXRvciwgbWFyayk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNvbnN0IHNldEZvbnRTaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzaXplOiBGb250U2l6ZXMsIGRlZmF1bHRGb250U2l6ZTogbnVtYmVyIHwgKChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IG51bWJlciB8IHVuZGVmaW5lZCkpID0+IHtcbiAgICBjb25zdCBlZGl0b3JzID0gZ2V0VGV4dEVkaXRvcnMoYm9hcmQpO1xuICAgIGlmIChlZGl0b3JzICYmIGVkaXRvcnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgZWRpdG9ycy5mb3JFYWNoKGVkaXRvciA9PiB7XG4gICAgICAgICAgICBsZXQgZmluYWxEZWZhdWx0Rm9udFNpemU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRlZmF1bHRGb250U2l6ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBzZWxlY3RlZEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRFZGl0b3JzID0gZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0RWRpdG9ycy5pbmNsdWRlcyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGZpbmFsRGVmYXVsdEZvbnRTaXplID0gZGVmYXVsdEZvbnRTaXplKGVsZW1lbnQhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmluYWxEZWZhdWx0Rm9udFNpemUgPSBkZWZhdWx0Rm9udFNpemU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFBsYWl0TWFya0VkaXRvci5zZXRGb250U2l6ZU1hcmsoZWRpdG9yLCBzaXplLCBmaW5hbERlZmF1bHRGb250U2l6ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbmNvbnN0IHNldFRleHRDb2xvciA9IChib2FyZDogUGxhaXRCb2FyZCwgY29sb3I6IHN0cmluZywgdGV4dFNlbGVjdGlvbj86IEJhc2VSYW5nZSkgPT4ge1xuICAgIGNvbnN0IGVkaXRvcnMgPSBnZXRUZXh0RWRpdG9ycyhib2FyZCk7XG4gICAgaWYgKGVkaXRvcnMgJiYgZWRpdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgZWRpdG9ycy5mb3JFYWNoKGVkaXRvciA9PiB7XG4gICAgICAgICAgICBpZiAodGV4dFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIFNsYXRlVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCB0ZXh0U2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvciA9PT0gJ3RyYW5zcGFyZW50Jykge1xuICAgICAgICAgICAgICAgIEVkaXRvci5yZW1vdmVNYXJrKGVkaXRvciwgTWFya1R5cGVzLmNvbG9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUGxhaXRNYXJrRWRpdG9yLnNldENvbG9yTWFyayhlZGl0b3IsIGNvbG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuY29uc3Qgc2V0VGV4dEFsaWduID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBhbGlnbjogQWxpZ25tZW50KSA9PiB7XG4gICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzKGJvYXJkKTtcbiAgICBpZiAoZWRpdG9ycyAmJiBlZGl0b3JzLmxlbmd0aCkge1xuICAgICAgICBlZGl0b3JzLmZvckVhY2goZWRpdG9yID0+IEFsaWduRWRpdG9yLnNldEFsaWduKGVkaXRvciwgYWxpZ24pKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVGV4dFRyYW5zZm9ybXMgPSB7IHNldFRleHRBbGlnbiwgc2V0VGV4dENvbG9yLCBzZXRGb250U2l6ZSwgc2V0VGV4dE1hcmtzIH07XG4iXX0=
@@ -1,5 +0,0 @@
1
- import { WithPluginOptions } from '@plait/core';
2
- import { TextPlugin } from '@plait/text';
3
- export interface WithTextOptions extends WithPluginOptions {
4
- textPlugins?: TextPlugin[];
5
- }
@@ -1,9 +0,0 @@
1
- import { PlaitBoard, PlaitElement } from '@plait/core';
2
- import { Alignment, FontSizes, MarkTypes } from '@plait/text';
3
- import { BaseRange } from 'slate';
4
- export declare const TextTransforms: {
5
- setTextAlign: (board: PlaitBoard, align: Alignment) => void;
6
- setTextColor: (board: PlaitBoard, color: string, textSelection?: BaseRange) => void;
7
- setFontSize: (board: PlaitBoard, size: FontSizes, defaultFontSize: number | ((element: PlaitElement) => number | undefined)) => void;
8
- setTextMarks: (board: PlaitBoard, mark: MarkTypes) => void;
9
- };