@leapfrog/interactive-canvas 1.0.2 → 1.0.4

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 (58) hide show
  1. package/dist/abstract-interactive-canvas.d.ts +340 -0
  2. package/dist/dimensions/pixel-canvas-dimensions.d.ts +13 -0
  3. package/dist/dimensions/print-6-col-canvas-dimensions.d.ts +18 -0
  4. package/dist/dimensions/print-8-col-canvas-dimensions.d.ts +18 -0
  5. package/dist/font/font-library.d.ts +27 -0
  6. package/dist/font/font-library.interface.d.ts +24 -0
  7. package/dist/font/font.interface.d.ts +20 -0
  8. package/dist/font/unknown-font.d.ts +6 -0
  9. package/dist/headless-interactive-canvas.d.ts +9 -0
  10. package/dist/index.d.ts +49 -0
  11. package/dist/interactive-canvas.d.ts +8 -0
  12. package/dist/interactive-canvas.es.js +3225 -0
  13. package/dist/interactive-canvas.interface.d.ts +267 -0
  14. package/dist/interactive-canvas.js +3254 -0
  15. package/dist/layout/abstract-layout-manager.d.ts +17 -0
  16. package/dist/layout/advanced-layout-manager.d.ts +15 -0
  17. package/dist/layout/function/pin-to-bottom.layout-function.d.ts +4 -0
  18. package/dist/layout/function/redraw-all.layout-function.d.ts +4 -0
  19. package/dist/layout/function/reposition-borders.layout-function.d.ts +4 -0
  20. package/dist/layout/function/reposition-cutoffs.layout-function.d.ts +4 -0
  21. package/dist/layout/function/resize-canvas.layout-function.d.ts +4 -0
  22. package/dist/layout/function/stack-objects.layout-function.d.ts +11 -0
  23. package/dist/layout/function/update-object-dimensions.layout-function.d.ts +4 -0
  24. package/dist/layout/layout-manager.enum.d.ts +5 -0
  25. package/dist/layout/layout-manager.interface.d.ts +13 -0
  26. package/dist/layout/standard-layout-manager.d.ts +35 -0
  27. package/dist/mutator/mutable-background-color.interface.d.ts +15 -0
  28. package/dist/mutator/mutable-color.interface.d.ts +6 -0
  29. package/dist/mutator/mutable-image.interface.d.ts +28 -0
  30. package/dist/mutator/mutable-position.interface.d.ts +33 -0
  31. package/dist/mutator/mutable-text-style.interface.d.ts +163 -0
  32. package/dist/mutator/mutable-text.interface.d.ts +40 -0
  33. package/dist/object/abstract-canvas-object.d.ts +155 -0
  34. package/dist/object/canvas-object-data.d.ts +24 -0
  35. package/dist/object/canvas-object.interface.d.ts +96 -0
  36. package/dist/object/impl/border.d.ts +70 -0
  37. package/dist/object/impl/cutoff.d.ts +59 -0
  38. package/dist/object/impl/horizontal-rule.d.ts +88 -0
  39. package/dist/object/impl/image.d.ts +81 -0
  40. package/dist/object/impl/rectangle.d.ts +58 -0
  41. package/dist/object/impl/text.d.ts +264 -0
  42. package/dist/object/impl/vertical-rule.d.ts +88 -0
  43. package/dist/profile/canvas-profile.interface.d.ts +22 -0
  44. package/dist/profile/default-canvas-profile.d.ts +23 -0
  45. package/dist/types/canvas-dimension-restrictions.interface.d.ts +14 -0
  46. package/dist/types/canvas-dimensions.interface.d.ts +21 -0
  47. package/dist/types/canvas-state.interface.d.ts +11 -0
  48. package/dist/types/dimension-restrictions.interface.d.ts +6 -0
  49. package/dist/types/image-type.enum.d.ts +6 -0
  50. package/dist/types/margin.interface.d.ts +6 -0
  51. package/dist/types/object-dimensions.interface.d.ts +23 -0
  52. package/dist/types/object-type.enum.d.ts +10 -0
  53. package/dist/types/overflow.interface.d.ts +4 -0
  54. package/dist/types/position.interface.d.ts +6 -0
  55. package/dist/types/rect.interface.d.ts +6 -0
  56. package/dist/types/selection-data.interface.d.ts +19 -0
  57. package/dist/types/text-alignment.interface.d.ts +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,340 @@
1
+ import { BehaviorSubject, Observable, Subject } from "rxjs";
2
+ import { ICutoff } from "./object/impl/cutoff";
3
+ import { IRectangle } from "./object/impl/rectangle";
4
+ import { IBorder } from "./object/impl/border";
5
+ import { IImage } from "./object/impl/image";
6
+ import { IText } from "./object/impl/text";
7
+ import { ILayoutManager } from "./layout/layout-manager.interface";
8
+ import { LayoutManager } from "./layout/layout-manager.enum";
9
+ import { IVerticalRule } from "./object/impl/vertical-rule";
10
+ import { IHorizontalRule } from "./object/impl/horizontal-rule";
11
+ import { IInteractiveCanvas } from "./interactive-canvas.interface";
12
+ import { ICanvasProfile } from "./profile/canvas-profile.interface";
13
+ import { IFontLibrary } from "./font/font-library.interface";
14
+ import { ICanvasDimensions } from "./types/canvas-dimensions.interface";
15
+ import { ICanvasDimensionRestrictions } from "./types/canvas-dimension-restrictions.interface";
16
+ import { AbstractCanvasObject } from "./object/abstract-canvas-object";
17
+ import { IRect } from "./types/rect.interface";
18
+ import { ObjectType } from "./types/object-type.enum";
19
+ import { ICanvasObject } from "./object/canvas-object.interface";
20
+ import { ISelectionData } from "./types/selection-data.interface";
21
+ import { ICanvasState } from "./types/canvas-state.interface";
22
+ import { ITextSelection } from "./mutator/mutable-text-style.interface";
23
+ import { fabric } from "fabric";
24
+ export declare abstract class AbstractInteractiveCanvas implements IInteractiveCanvas {
25
+ fabric: any;
26
+ protected readonly fabricCanvas: fabric.Canvas;
27
+ protected devicePixelRatio: number;
28
+ protected readonly IMAGE_CAPTURE_COEFFICIENT: number;
29
+ protected readonly fontLibrary: IFontLibrary;
30
+ protected readonly profile$: BehaviorSubject<ICanvasProfile>;
31
+ protected readonly layoutManager$: BehaviorSubject<ILayoutManager>;
32
+ protected readonly backgroundColor$: BehaviorSubject<string>;
33
+ protected readonly dimensions$: BehaviorSubject<ICanvasDimensions>;
34
+ protected readonly dimensionRestrictions$: BehaviorSubject<ICanvasDimensionRestrictions>;
35
+ protected readonly dimensionChangeRejections$: Subject<ICanvasDimensions>;
36
+ protected readonly zoom$: BehaviorSubject<number>;
37
+ protected readonly objects$: BehaviorSubject<Array<AbstractCanvasObject<any>>>;
38
+ protected readonly selection$: BehaviorSubject<SelectionData>;
39
+ protected baseDimensions: ICanvasDimensions;
40
+ protected constructor(fabric: any, fabricCanvas: fabric.Canvas, devicePixelRatio: number);
41
+ /**
42
+ * @override
43
+ * @inheritDoc
44
+ */
45
+ getFontLibrary(): IFontLibrary;
46
+ /**
47
+ * @override
48
+ * @inheritDoc
49
+ */
50
+ getProfile(): ICanvasProfile;
51
+ /**
52
+ * @override
53
+ * @inheritDoc
54
+ */
55
+ getProfile$(): Observable<ICanvasProfile>;
56
+ /**
57
+ * @override
58
+ * @inheritDoc
59
+ */
60
+ setProfile(profile: ICanvasProfile): void;
61
+ /**
62
+ * @override
63
+ * @inheritDoc
64
+ */
65
+ getLayoutManager(): ILayoutManager;
66
+ /**
67
+ * @override
68
+ * @inheritDoc
69
+ */
70
+ getLayoutManager$(): Observable<ILayoutManager>;
71
+ /**
72
+ * @override
73
+ * @inheritDoc
74
+ */
75
+ setLayoutManager(layoutManager: LayoutManager): void;
76
+ /**
77
+ * @override
78
+ * @inheritDoc
79
+ */
80
+ getBackgroundColor(): string;
81
+ /**
82
+ * @override
83
+ * @inheritDoc
84
+ */
85
+ getBackgroundColor$(): Observable<string>;
86
+ /**
87
+ * @override
88
+ * @inheritDoc
89
+ */
90
+ setBackgroundColor(color?: string): void;
91
+ /**
92
+ * @override
93
+ * @inheritDoc
94
+ */
95
+ getDimensions(): ICanvasDimensions;
96
+ /**
97
+ * @override
98
+ * @inheritDoc
99
+ */
100
+ getBaseDimensions(): ICanvasDimensions;
101
+ /**
102
+ * @override
103
+ * @inheritDoc
104
+ */
105
+ getDimensions$(): Observable<ICanvasDimensions>;
106
+ /**
107
+ * @override
108
+ * @inheritDoc
109
+ */
110
+ setDimensions(dimensions: ICanvasDimensions): void;
111
+ /**
112
+ * @override
113
+ * @inheritDoc
114
+ */
115
+ setBaseDimensions(dimensions: ICanvasDimensions): void;
116
+ /**
117
+ * @override
118
+ * @inheritDoc
119
+ */
120
+ getDimensionChangeRejections$(): Observable<ICanvasDimensions>;
121
+ /**
122
+ * @override
123
+ * @inheritDoc
124
+ */
125
+ getDimensionsRestrictions(): ICanvasDimensionRestrictions;
126
+ /**
127
+ * @override
128
+ * @inheritDoc
129
+ */
130
+ getDimensionsRestrictions$(): Observable<ICanvasDimensionRestrictions>;
131
+ /**
132
+ * @override
133
+ * @inheritDoc
134
+ */
135
+ setDimensionRestrictions(restrictions: ICanvasDimensionRestrictions): void;
136
+ getMargin(): IRect;
137
+ /**
138
+ * @override
139
+ * @inheritDoc
140
+ */
141
+ getZoom(): number;
142
+ /**
143
+ * @override
144
+ * @inheritDoc
145
+ */
146
+ getZoom$(): Observable<number>;
147
+ /**
148
+ * @override
149
+ * @inheritDoc
150
+ */
151
+ setZoom(zoom: number): void;
152
+ /**
153
+ * @override
154
+ * @inheritDoc
155
+ */
156
+ getObjects(): ICanvasObject[];
157
+ /**
158
+ * Get the list of objects directly.
159
+ */
160
+ getObjectsInternal(): Array<AbstractCanvasObject<any>>;
161
+ /**
162
+ * @override
163
+ * @inheritDoc
164
+ */
165
+ getObjectsByTypeInternal<T extends AbstractCanvasObject<any>>(type: ObjectType): T[];
166
+ /**
167
+ * @override
168
+ * @inheritDoc
169
+ */
170
+ getObjectsByTypesInternal(...types: ObjectType[]): Array<AbstractCanvasObject<any>>;
171
+ /**
172
+ * @override
173
+ * @inheritDoc
174
+ */
175
+ getObjects$(): Observable<ICanvasObject[]>;
176
+ /**
177
+ * @override
178
+ * @inheritDoc
179
+ */
180
+ removeObject(target: ICanvasObject): void;
181
+ /**
182
+ * @override
183
+ * @inheritDoc
184
+ */
185
+ addImageObject(imageUrl: string): Promise<IImage>;
186
+ /**
187
+ * @override
188
+ * @inheritDoc
189
+ */
190
+ addTextObject(): Promise<IText>;
191
+ /**
192
+ * @override
193
+ * @inheritDoc
194
+ */
195
+ addRectangleObject(): Promise<IRectangle>;
196
+ /**
197
+ * @override
198
+ * @inheritDoc
199
+ */
200
+ addCutoffObject(): Promise<ICutoff>;
201
+ /**
202
+ * @override
203
+ * @inheritDoc
204
+ */
205
+ addBorderObject(): Promise<IBorder>;
206
+ /**
207
+ * @override
208
+ * @inheritDoc
209
+ */
210
+ addVerticalRuleObject(): Promise<IVerticalRule>;
211
+ /**
212
+ * @override
213
+ * @inheritDoc
214
+ */
215
+ addHorizontalRuleObject(): Promise<IHorizontalRule>;
216
+ /**
217
+ * @override
218
+ * @inheritDoc
219
+ */
220
+ setPrefillData(data: {
221
+ [id: string]: string;
222
+ }): void;
223
+ /**
224
+ * @override
225
+ * @inheritDoc
226
+ */
227
+ distributeObjectsVertically(): void;
228
+ /**
229
+ * @override
230
+ * @inheritDoc
231
+ */
232
+ getSelection(): ISelectionData;
233
+ /**
234
+ * @override
235
+ * @inheritDoc
236
+ */
237
+ getSelection$(): Observable<ISelectionData>;
238
+ /**
239
+ * @override
240
+ * @inheritDoc
241
+ */
242
+ select(object: ICanvasObject): void;
243
+ /**
244
+ * @override
245
+ * @inheritDoc
246
+ */
247
+ clearSelection(): void;
248
+ setMultiSelect(value: boolean): void;
249
+ /**
250
+ * @override
251
+ * @inheritDoc
252
+ */
253
+ clear(): void;
254
+ /**
255
+ * @override
256
+ * @inheritDoc
257
+ */
258
+ save(): ICanvasState;
259
+ /**
260
+ * @override
261
+ * @inheritDoc
262
+ */
263
+ load(canvasState: ICanvasState): Promise<void>;
264
+ /**
265
+ * Another hack for bullet points... because they use canvas objects to render the bullets, they get saved when the canvas is persisted... and then loaded into a new canvas, but there's
266
+ * nothing linking them to the field that needs bullets, so they end up duplicating every time the canvas is saved/loaded. Since we don't use circles for anything else, this just
267
+ * deletes all circles on canvas load.
268
+ */
269
+ private removePersistedBullets;
270
+ /**
271
+ * @override
272
+ * @inheritDoc
273
+ */
274
+ toSvg(): string;
275
+ /**
276
+ * @override
277
+ * @inheritDoc
278
+ */
279
+ toImage(): string;
280
+ /**
281
+ * @override
282
+ * @inheritDoc
283
+ */
284
+ createPNGStream(): any;
285
+ /**
286
+ * Redraw the canvas.
287
+ */
288
+ redraw(): void;
289
+ syncObjectList(): void;
290
+ /**
291
+ * @override
292
+ * @inheritDoc
293
+ */
294
+ notifyObjectListChanged(): void;
295
+ /**
296
+ * @override
297
+ * @inheritDoc
298
+ */
299
+ notifyTextChanged(): void;
300
+ /**
301
+ * @override
302
+ * @inheritDoc
303
+ */
304
+ notifyMarginChanged(): void;
305
+ removeFabricObject(obj: any): void;
306
+ protected selectFabricObject(object: fabric.Object): void;
307
+ protected onTextChange(): void;
308
+ protected onObjectListChange(): void;
309
+ protected onDimensionsChange(): void;
310
+ protected onMarginChange(): void;
311
+ private bindFields;
312
+ private bindField;
313
+ private findFabricObject;
314
+ private findObject;
315
+ /**
316
+ * Reset zoom and canvas dimensions to 1:1 scale, execute a function, then return the canvas to
317
+ * the previous values.
318
+ * @param func Function to execute.
319
+ */
320
+ private executeWithNormalizedCanvas;
321
+ /**
322
+ * Update the actual dimensions of the canvas by multiplying the requested dimensions by the current zoom factor.
323
+ */
324
+ private updateCanvasDimensions;
325
+ protected onProfileChanged(profile: ICanvasProfile): void;
326
+ protected getFieldByCanvasObject?(object: any): AbstractCanvasObject<any> | null;
327
+ protected getFieldsByCanvasObject(objects: any[]): Array<AbstractCanvasObject<any>>;
328
+ private calculateImageCaptureCoefficient;
329
+ private randomId;
330
+ private getLowestTextPoint;
331
+ private trackNewObject;
332
+ private dimensionsExceedRestrictions;
333
+ }
334
+ export declare class SelectionData implements ISelectionData {
335
+ readonly empty: boolean;
336
+ readonly objects: Array<AbstractCanvasObject<any>>;
337
+ readonly isText: boolean;
338
+ readonly textSelection: ITextSelection | null;
339
+ constructor(objects: Array<AbstractCanvasObject<any>>);
340
+ }
@@ -0,0 +1,13 @@
1
+ import { ICanvasDimensions } from "..";
2
+ export declare class PixelCanvasDimensions implements ICanvasDimensions {
3
+ readonly width: number;
4
+ readonly widthPx: number;
5
+ readonly widthUnit: string;
6
+ readonly height: number;
7
+ readonly heightPx: number;
8
+ readonly heightUnit: string;
9
+ constructor(width: number, height: number);
10
+ withSize(width: number, height: number): ICanvasDimensions;
11
+ widthPxToMm(px: number): number | undefined;
12
+ heightPxToMm(px: number): number | undefined;
13
+ }
@@ -0,0 +1,18 @@
1
+ import { ICanvasDimensions } from "..";
2
+ export declare class Print6ColCanvasDimensions implements ICanvasDimensions {
3
+ readonly width: number;
4
+ readonly widthPx: number;
5
+ readonly widthMm: number;
6
+ readonly widthUnit: string;
7
+ readonly gutterCount: number;
8
+ readonly gutterTotalMm: number;
9
+ readonly columnsTotalMm: number;
10
+ readonly height: number;
11
+ readonly heightPx: number;
12
+ readonly heightMm: number;
13
+ readonly heightUnit: string;
14
+ constructor(width: number, height: number);
15
+ withSize(width: number, height: number): ICanvasDimensions;
16
+ widthPxToMm(px: number): number | undefined;
17
+ heightPxToMm(px: number): number | undefined;
18
+ }
@@ -0,0 +1,18 @@
1
+ import { ICanvasDimensions } from "..";
2
+ export declare class Print8ColCanvasDimensions implements ICanvasDimensions {
3
+ readonly width: number;
4
+ readonly widthPx: number;
5
+ readonly widthMm: number;
6
+ readonly widthUnit: string;
7
+ readonly gutterCount: number;
8
+ readonly gutterTotalMm: number;
9
+ readonly columnsTotalMm: number;
10
+ readonly height: number;
11
+ readonly heightPx: number;
12
+ readonly heightMm: number;
13
+ readonly heightUnit: string;
14
+ constructor(width: number, height: number);
15
+ withSize(width: number, height: number): ICanvasDimensions;
16
+ widthPxToMm(px: number): number | undefined;
17
+ heightPxToMm(px: number): number | undefined;
18
+ }
@@ -0,0 +1,27 @@
1
+ import { IFont } from "./font.interface";
2
+ import { IFontLibrary } from "./font-library.interface";
3
+ import { UnknownFont } from "./unknown-font";
4
+ export declare const UNKNOWN_FONT: UnknownFont;
5
+ export declare class FontLibrary implements IFontLibrary {
6
+ private readonly _fonts;
7
+ /**
8
+ * @override
9
+ * @inheritDoc
10
+ */
11
+ registerFont(font: IFont): void;
12
+ /**
13
+ * @override
14
+ * @inheritDoc
15
+ */
16
+ registerFonts(fonts: IFont[]): void;
17
+ /**
18
+ * @override
19
+ * @inheritDoc
20
+ */
21
+ getFonts(): IFont[];
22
+ /**
23
+ * @override
24
+ * @inheritDoc
25
+ */
26
+ getFont(family: string): IFont;
27
+ }
@@ -0,0 +1,24 @@
1
+ import { IFont } from "./font.interface";
2
+ /**
3
+ * The font library manages a list of Fonts registered with the canvas.
4
+ */
5
+ export interface IFontLibrary {
6
+ /**
7
+ * Register a font
8
+ */
9
+ registerFont(font: IFont): void;
10
+ /**
11
+ * Register fonts
12
+ */
13
+ registerFonts(fonts: IFont[]): void;
14
+ /**
15
+ * Get all fonts registered in the library.
16
+ */
17
+ getFonts(): IFont[];
18
+ /**
19
+ * Get a font by family.
20
+ * If font is not recognized, the {@link UNKNOWN_FONT} will be returned.
21
+ * @param name Font family.
22
+ */
23
+ getFont(name: string): IFont;
24
+ }
@@ -0,0 +1,20 @@
1
+ export interface IFont {
2
+ readonly family: string;
3
+ readonly normalWeight: number;
4
+ readonly boldWeight: number;
5
+ /**
6
+ * Returns true if the given font weight is considered bold for this font.
7
+ * @param fontWeight Font weight.
8
+ */
9
+ isBold(fontWeight: number): boolean;
10
+ }
11
+ export declare abstract class Font implements IFont {
12
+ abstract readonly family: string;
13
+ abstract readonly normalWeight: number;
14
+ abstract readonly boldWeight: number;
15
+ /**
16
+ * @override
17
+ * @inheritDoc
18
+ */
19
+ isBold(fontWeight: number): boolean;
20
+ }
@@ -0,0 +1,6 @@
1
+ import { Font } from "./font.interface";
2
+ export declare class UnknownFont extends Font {
3
+ readonly family = "_Unknown_";
4
+ readonly normalWeight = 400;
5
+ readonly boldWeight = 700;
6
+ }
@@ -0,0 +1,9 @@
1
+ import { fabric } from "fabric";
2
+ import { AbstractInteractiveCanvas } from "./abstract-interactive-canvas";
3
+ export declare class HeadlessInteractiveCanvas extends AbstractInteractiveCanvas {
4
+ constructor();
5
+ /**
6
+ * @override
7
+ */
8
+ protected selectFabricObject(object: fabric.Object): void;
9
+ }
@@ -0,0 +1,49 @@
1
+ export * from "./dimensions/pixel-canvas-dimensions";
2
+ export * from "./dimensions/print-6-col-canvas-dimensions";
3
+ export * from "./dimensions/print-8-col-canvas-dimensions";
4
+ export * from "./font/font-library";
5
+ export * from "./font/font-library.interface";
6
+ export * from "./font/font.interface";
7
+ export * from "./font/unknown-font";
8
+ export * from "./layout/abstract-layout-manager";
9
+ export * from "./layout/advanced-layout-manager";
10
+ export * from "./layout/layout-manager.enum";
11
+ export * from "./layout/layout-manager.interface";
12
+ export * from "./layout/standard-layout-manager";
13
+ export * from "./mutator/mutable-background-color.interface";
14
+ export * from "./mutator/mutable-color.interface";
15
+ export * from "./mutator/mutable-image.interface";
16
+ export * from "./mutator/mutable-position.interface";
17
+ export * from "./mutator/mutable-text.interface";
18
+ export * from "./mutator/mutable-text-style.interface";
19
+ export * from "./object/abstract-canvas-object";
20
+ export * from "./object/canvas-object.interface";
21
+ export * from "./object/canvas-object-data";
22
+ export * from "./object/impl/border";
23
+ export * from "./object/impl/cutoff";
24
+ export * from "./object/impl/horizontal-rule";
25
+ export * from "./object/impl/image";
26
+ export * from "./object/impl/rectangle";
27
+ export * from "./object/impl/text";
28
+ export * from "./object/impl/vertical-rule";
29
+ export * from "./profile/canvas-profile.interface";
30
+ export * from "./profile/default-canvas-profile";
31
+ export * from "./types/canvas-dimension-restrictions.interface";
32
+ export * from "./types/canvas-dimensions.interface";
33
+ export * from "./types/canvas-dimension-restrictions.interface";
34
+ export * from "./types/canvas-dimensions.interface";
35
+ export * from "./types/canvas-state.interface";
36
+ export * from "./types/dimension-restrictions.interface";
37
+ export * from "./types/image-type.enum";
38
+ export * from "./types/margin.interface";
39
+ export * from "./types/object-dimensions.interface";
40
+ export * from "./types/object-type.enum";
41
+ export * from "./types/overflow.interface";
42
+ export * from "./types/position.interface";
43
+ export * from "./types/rect.interface";
44
+ export * from "./types/selection-data.interface";
45
+ export * from "./types/text-alignment.interface";
46
+ export * from "./abstract-interactive-canvas";
47
+ export * from "./headless-interactive-canvas";
48
+ export * from "./interactive-canvas";
49
+ export * from "./interactive-canvas.interface";
@@ -0,0 +1,8 @@
1
+ import { AbstractInteractiveCanvas } from "./abstract-interactive-canvas";
2
+ export declare class InteractiveCanvas extends AbstractInteractiveCanvas {
3
+ protected devicePixelRatio: number;
4
+ constructor(elementId: string, devicePixelRatio: number);
5
+ private onFabricSelectionChanged;
6
+ private enterTextSelectionModeIfRequired;
7
+ private onTextEditing;
8
+ }