@plait/common 0.61.2 → 0.62.0-next.1
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/constants/default.d.ts +1 -0
- package/core/element-flavour.d.ts +1 -1
- package/core/index.d.ts +4 -0
- package/core/render-component.d.ts +4 -0
- package/esm2022/constants/default.mjs +2 -1
- package/esm2022/core/element-flavour.mjs +1 -1
- package/esm2022/core/group.component.mjs +3 -3
- package/esm2022/core/index.mjs +5 -0
- package/esm2022/core/render-component.mjs +2 -0
- package/esm2022/generators/generator.mjs +1 -1
- package/esm2022/generators/index.mjs +2 -2
- package/esm2022/image/image-base.component.mjs +28 -0
- package/esm2022/image/image.generator.mjs +99 -0
- package/esm2022/image/index.mjs +4 -0
- package/esm2022/image/with-image.mjs +8 -0
- package/esm2022/plugins/index.mjs +1 -2
- package/esm2022/public-api.mjs +5 -4
- package/esm2022/text/index.mjs +5 -0
- package/esm2022/text/text-manage.mjs +138 -0
- package/esm2022/text/text-measure.mjs +61 -0
- package/esm2022/text/types.mjs +7 -0
- package/esm2022/text/with-text.mjs +8 -0
- package/esm2022/transforms/index.mjs +1 -2
- package/esm2022/utils/image.mjs +3 -3
- package/esm2022/utils/text.mjs +22 -20
- package/fesm2022/plait-common.mjs +341 -214
- package/fesm2022/plait-common.mjs.map +1 -1
- package/generators/index.d.ts +1 -1
- package/image/image-base.component.d.ts +17 -0
- package/image/image.generator.d.ts +27 -0
- package/image/index.d.ts +3 -0
- package/image/with-image.d.ts +15 -0
- package/package.json +1 -3
- package/plugins/index.d.ts +0 -1
- package/public-api.d.ts +4 -3
- package/text/index.d.ts +4 -0
- package/text/text-manage.d.ts +41 -0
- package/text/text-measure.d.ts +8 -0
- package/text/types.d.ts +24 -0
- package/text/with-text.d.ts +25 -0
- package/transforms/index.d.ts +0 -1
- package/utils/image.d.ts +1 -5
- package/utils/text.d.ts +9 -6
- package/core/image-base.component.d.ts +0 -29
- package/esm2022/core/image-base.component.mjs +0 -95
- package/esm2022/generators/image.generator.mjs +0 -59
- package/esm2022/plugins/text-options.mjs +0 -2
- package/esm2022/transforms/text.mjs +0 -71
- package/generators/image.generator.d.ts +0 -24
- package/plugins/text-options.d.ts +0 -5
- package/transforms/text.d.ts +0 -9
package/generators/index.d.ts
CHANGED
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PlaitBoard, PlaitElement, RectangleClient } from '@plait/core';
|
|
2
|
+
import { Generator, GeneratorExtraData, GeneratorOptions } from '../generators/generator';
|
|
3
|
+
import { CommonImageItem } from '../utils';
|
|
4
|
+
import { ActiveGenerator } from '../generators/active.generator';
|
|
5
|
+
import { ImageComponentRef } from './with-image';
|
|
6
|
+
export declare const FOREIGN_OBJECT_IMAGE_CLASS_NAME = "foreign-object-image";
|
|
7
|
+
export declare const IMAGE_CONTAINER_CLASS_NAME = "plait-image-container";
|
|
8
|
+
export interface ImageGeneratorOptions<T> {
|
|
9
|
+
getRectangle: (element: T) => RectangleClient;
|
|
10
|
+
getImageItem: (element: T) => CommonImageItem;
|
|
11
|
+
}
|
|
12
|
+
export declare class ImageGenerator<T extends PlaitElement = PlaitElement> extends Generator<T, GeneratorExtraData, ImageGeneratorOptions<T> & GeneratorOptions> {
|
|
13
|
+
board: PlaitBoard;
|
|
14
|
+
options: ImageGeneratorOptions<T>;
|
|
15
|
+
static key: string;
|
|
16
|
+
foreignObject: SVGForeignObjectElement;
|
|
17
|
+
imageComponentRef: ImageComponentRef;
|
|
18
|
+
activeGenerator: ActiveGenerator;
|
|
19
|
+
isFocus: boolean;
|
|
20
|
+
element: T;
|
|
21
|
+
constructor(board: PlaitBoard, options: ImageGeneratorOptions<T>);
|
|
22
|
+
canDraw(element: T): boolean;
|
|
23
|
+
draw(element: T): SVGGElement;
|
|
24
|
+
updateImage(nodeG: SVGGElement, previous: T, current: T): void;
|
|
25
|
+
setFocus(element: PlaitElement, isFocus: boolean): void;
|
|
26
|
+
destroy(): void;
|
|
27
|
+
}
|
package/image/index.d.ts
ADDED
|
@@ -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
package/plugins/index.d.ts
CHANGED
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 './
|
|
8
|
-
export * from './core
|
|
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';
|
package/text/index.d.ts
ADDED
|
@@ -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;
|
package/text/types.d.ts
ADDED
|
@@ -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;
|
package/transforms/index.d.ts
CHANGED
package/utils/image.d.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
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) =>
|
|
6
|
-
export declare const getFirstTextEditor: (element: PlaitElement) => import("slate").BaseEditor
|
|
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[]) =>
|
|
11
|
-
export declare const getEditingTextEditor: (board: PlaitBoard, elements?: PlaitElement[]) =>
|
|
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,24 +0,0 @@
|
|
|
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';
|
|
5
|
-
import { CommonImageItem } from '../utils';
|
|
6
|
-
export interface ShapeData {
|
|
7
|
-
viewContainerRef: ViewContainerRef;
|
|
8
|
-
}
|
|
9
|
-
export interface ImageGeneratorOptions<T> {
|
|
10
|
-
getRectangle: (element: T) => RectangleClient;
|
|
11
|
-
getImageItem: (element: T) => CommonImageItem;
|
|
12
|
-
}
|
|
13
|
-
export declare class ImageGenerator<T extends PlaitElement = PlaitElement> extends Generator<T, ViewContainerRef, ImageGeneratorOptions<T> & GeneratorOptions> {
|
|
14
|
-
board: PlaitBoard;
|
|
15
|
-
options: ImageGeneratorOptions<T>;
|
|
16
|
-
static key: string;
|
|
17
|
-
foreignObject: SVGForeignObjectElement;
|
|
18
|
-
componentRef: ComponentRef<ImageBaseComponent>;
|
|
19
|
-
constructor(board: PlaitBoard, options: ImageGeneratorOptions<T>);
|
|
20
|
-
canDraw(element: T, data: ViewContainerRef): boolean;
|
|
21
|
-
draw(element: T, viewContainerRef: ViewContainerRef): SVGGElement;
|
|
22
|
-
updateImage(nodeG: SVGGElement, previous: T, current: T): void;
|
|
23
|
-
destroy(): void;
|
|
24
|
-
}
|
package/transforms/text.d.ts
DELETED
|
@@ -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
|
-
};
|