@bensitu/image-editor 2.1.0 → 2.2.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 (113) hide show
  1. package/README.md +235 -81
  2. package/dist/cjs/index.cjs +2969 -747
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/esm/annotation/annotation-lock.js +7 -0
  5. package/dist/esm/annotation/annotation-lock.js.map +1 -0
  6. package/dist/esm/annotation/annotation-manager.js +217 -0
  7. package/dist/esm/annotation/annotation-manager.js.map +1 -0
  8. package/dist/esm/annotation/annotation-style.js +50 -0
  9. package/dist/esm/annotation/annotation-style.js.map +1 -0
  10. package/dist/esm/annotation/draw-controller.js +114 -0
  11. package/dist/esm/annotation/draw-controller.js.map +1 -0
  12. package/dist/esm/annotation/text-controller.js +234 -0
  13. package/dist/esm/annotation/text-controller.js.map +1 -0
  14. package/dist/esm/core/default-options.js +232 -3
  15. package/dist/esm/core/default-options.js.map +1 -1
  16. package/dist/esm/core/editor-object-kind.js +37 -0
  17. package/dist/esm/core/editor-object-kind.js.map +1 -0
  18. package/dist/esm/core/errors.js +19 -0
  19. package/dist/esm/core/errors.js.map +1 -1
  20. package/dist/esm/core/layer-order.js +100 -0
  21. package/dist/esm/core/layer-order.js.map +1 -0
  22. package/dist/esm/core/public-types.js +34 -1
  23. package/dist/esm/core/public-types.js.map +1 -1
  24. package/dist/esm/core/state-serializer.js +104 -24
  25. package/dist/esm/core/state-serializer.js.map +1 -1
  26. package/dist/esm/crop/crop-controller.js +2 -0
  27. package/dist/esm/crop/crop-controller.js.map +1 -1
  28. package/dist/esm/export/export-format.js.map +1 -1
  29. package/dist/esm/export/export-service.js +123 -135
  30. package/dist/esm/export/export-service.js.map +1 -1
  31. package/dist/esm/export/overlay-merge-service.js +75 -0
  32. package/dist/esm/export/overlay-merge-service.js.map +1 -0
  33. package/dist/esm/history/history-manager.js +2 -2
  34. package/dist/esm/history/history-manager.js.map +1 -1
  35. package/dist/esm/image/image-loader.js +18 -49
  36. package/dist/esm/image/image-loader.js.map +1 -1
  37. package/dist/esm/image/transform-controller.js.map +1 -1
  38. package/dist/esm/image-editor.js +1063 -60
  39. package/dist/esm/image-editor.js.map +1 -1
  40. package/dist/esm/index.js +1 -1
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/mask/mask-factory.js +39 -14
  43. package/dist/esm/mask/mask-factory.js.map +1 -1
  44. package/dist/esm/mask/mask-label-manager.js +2 -0
  45. package/dist/esm/mask/mask-label-manager.js.map +1 -1
  46. package/dist/esm/mask/mask-list.js.map +1 -1
  47. package/dist/esm/mask/mask-style.js.map +1 -1
  48. package/dist/esm/mosaic/mosaic-controller.js +24 -28
  49. package/dist/esm/mosaic/mosaic-controller.js.map +1 -1
  50. package/dist/esm/utils/image-element-loader.js +55 -0
  51. package/dist/esm/utils/image-element-loader.js.map +1 -0
  52. package/dist/esm/utils/pointer.js +28 -0
  53. package/dist/esm/utils/pointer.js.map +1 -0
  54. package/dist/types/annotation/annotation-lock.d.ts +12 -0
  55. package/dist/types/annotation/annotation-lock.d.ts.map +1 -0
  56. package/dist/types/annotation/annotation-manager.d.ts +33 -0
  57. package/dist/types/annotation/annotation-manager.d.ts.map +1 -0
  58. package/dist/types/annotation/annotation-style.d.ts +13 -0
  59. package/dist/types/annotation/annotation-style.d.ts.map +1 -0
  60. package/dist/types/annotation/draw-controller.d.ts +43 -0
  61. package/dist/types/annotation/draw-controller.d.ts.map +1 -0
  62. package/dist/types/annotation/text-controller.d.ts +47 -0
  63. package/dist/types/annotation/text-controller.d.ts.map +1 -0
  64. package/dist/types/core/default-options.d.ts +14 -2
  65. package/dist/types/core/default-options.d.ts.map +1 -1
  66. package/dist/types/core/editor-object-kind.d.ts +29 -0
  67. package/dist/types/core/editor-object-kind.d.ts.map +1 -0
  68. package/dist/types/core/errors.d.ts +11 -1
  69. package/dist/types/core/errors.d.ts.map +1 -1
  70. package/dist/types/core/layer-order.d.ts +21 -0
  71. package/dist/types/core/layer-order.d.ts.map +1 -0
  72. package/dist/types/core/public-types.d.ts +222 -24
  73. package/dist/types/core/public-types.d.ts.map +1 -1
  74. package/dist/types/core/state-serializer.d.ts +30 -5
  75. package/dist/types/core/state-serializer.d.ts.map +1 -1
  76. package/dist/types/crop/crop-controller.d.ts +6 -7
  77. package/dist/types/crop/crop-controller.d.ts.map +1 -1
  78. package/dist/types/export/export-format.d.ts +5 -33
  79. package/dist/types/export/export-format.d.ts.map +1 -1
  80. package/dist/types/export/export-service.d.ts +24 -15
  81. package/dist/types/export/export-service.d.ts.map +1 -1
  82. package/dist/types/export/overlay-merge-service.d.ts +38 -0
  83. package/dist/types/export/overlay-merge-service.d.ts.map +1 -0
  84. package/dist/types/history/history-manager.d.ts +11 -14
  85. package/dist/types/history/history-manager.d.ts.map +1 -1
  86. package/dist/types/image/image-loader.d.ts +22 -17
  87. package/dist/types/image/image-loader.d.ts.map +1 -1
  88. package/dist/types/image/image-resampler.d.ts +1 -1
  89. package/dist/types/image/transform-controller.d.ts +5 -7
  90. package/dist/types/image/transform-controller.d.ts.map +1 -1
  91. package/dist/types/image-editor.d.ts +75 -7
  92. package/dist/types/image-editor.d.ts.map +1 -1
  93. package/dist/types/index.d.cts +3 -3
  94. package/dist/types/index.d.cts.map +1 -1
  95. package/dist/types/index.d.ts +3 -3
  96. package/dist/types/index.d.ts.map +1 -1
  97. package/dist/types/mask/mask-factory.d.ts.map +1 -1
  98. package/dist/types/mask/mask-label-manager.d.ts +10 -9
  99. package/dist/types/mask/mask-label-manager.d.ts.map +1 -1
  100. package/dist/types/mask/mask-list.d.ts +11 -12
  101. package/dist/types/mask/mask-list.d.ts.map +1 -1
  102. package/dist/types/mask/mask-style.d.ts +19 -20
  103. package/dist/types/mask/mask-style.d.ts.map +1 -1
  104. package/dist/types/mosaic/mosaic-controller.d.ts +3 -3
  105. package/dist/types/mosaic/mosaic-controller.d.ts.map +1 -1
  106. package/dist/types/ui/visibility-state.d.ts +2 -2
  107. package/dist/types/utils/image-element-loader.d.ts +19 -0
  108. package/dist/types/utils/image-element-loader.d.ts.map +1 -0
  109. package/dist/types/utils/pointer.d.ts +16 -0
  110. package/dist/types/utils/pointer.d.ts.map +1 -0
  111. package/dist/umd/image-editor.umd.js +1 -1
  112. package/dist/umd/image-editor.umd.js.map +1 -1
  113. package/package.json +1 -1
@@ -2,12 +2,13 @@
2
2
  * @author Ben Situ
3
3
  * @license MIT
4
4
  * Lightweight canvas-based image editor built on Fabric.js v7.
5
- * Provides masking, animated scale/rotate, crop, mosaic, undo/redo, and export.
5
+ * Provides masks, annotations, animated transforms, crop, mosaic, undo/redo,
6
+ * serialization, and export.
6
7
  *
7
8
  * @module
8
9
  */
9
10
  import { type CanvasJson } from './core/state-serializer.js';
10
- import type { Base64ExportOptions, ElementIdMap, FabricModule, ImageEditorOptions, ImageFileExportOptions, LayoutMode, LoadImageOptions, MaskConfig, MaskObject, MosaicConfig, RemoveAllMasksOptions, ResolvedMosaicConfig } from './core/public-types.js';
11
+ import type { AnnotationObject, AnnotationUpdateConfig, Base64ExportOptions, DownloadImageOptions, DrawConfig, ElementIdMap, FabricModule, ImageEditorOptions, ImageFileExportOptions, LayoutMode, LoadImageOptions, MaskConfig, MaskObject, MosaicConfig, RemoveAllAnnotationsOptions, RemoveAllMasksOptions, ResolvedDrawConfig, ResolvedMosaicConfig, ResolvedTextAnnotationConfig, TextAnnotationConfig, TextAnnotationObject } from './core/public-types.js';
11
12
  /**
12
13
  * Lightweight Fabric.js v7 image editor with masking, animated transforms,
13
14
  * crop, undo/redo, and multi-format export.
@@ -35,6 +36,10 @@ export declare class ImageEditor {
35
36
  private currentLayoutMode;
36
37
  private readonly defaultMosaicConfig;
37
38
  private currentMosaicConfig;
39
+ private readonly defaultTextConfig;
40
+ private currentTextConfig;
41
+ private readonly defaultDrawConfig;
42
+ private currentDrawConfig;
38
43
  private canvas;
39
44
  private canvasElement;
40
45
  private containerElement;
@@ -51,6 +56,7 @@ export declare class ImageEditor {
51
56
  private currentImageMimeType;
52
57
  private maskCounter;
53
58
  private lastMask;
59
+ private annotationCounter;
54
60
  private lastSnapshot;
55
61
  private readonly historyManager;
56
62
  /**
@@ -91,6 +97,8 @@ export declare class ImageEditor {
91
97
  */
92
98
  private cropSession;
93
99
  private mosaicSession;
100
+ private textSession;
101
+ private drawSession;
94
102
  /**
95
103
  * Managed registry of DOM event listeners owned by this editor.
96
104
  *
@@ -101,6 +109,8 @@ export declare class ImageEditor {
101
109
  * `isDisposed === true`.
102
110
  */
103
111
  private domBindings;
112
+ private keyboardDocument;
113
+ private keyboardHandler;
104
114
  private isDisposed;
105
115
  /**
106
116
  * When `true`, {@link saveState} is a no-op. Used by
@@ -160,8 +170,14 @@ export declare class ImageEditor {
160
170
  */
161
171
  init(idMap?: ElementIdMap): void;
162
172
  private initCanvas;
173
+ private getLiveCanvasOrThrow;
163
174
  private bindDomEvents;
164
175
  private bindElementIfExists;
176
+ private bindKeyboardEvents;
177
+ private isNativeTextInputActive;
178
+ private isFabricTextEditingActive;
179
+ private handleKeyboardEvent;
180
+ private finalizeActiveTextEditingIfNeeded;
165
181
  /**
166
182
  * Read a `File` selected via the upload control as a base64 data URL
167
183
  * and route it through the transactional `loadImage` pipeline.
@@ -238,10 +254,15 @@ export declare class ImageEditor {
238
254
  private emitOptionCallback;
239
255
  private getImageInfo;
240
256
  private getMasks;
257
+ getAnnotations(): AnnotationObject[];
241
258
  private getMaskCollectionSignature;
259
+ private getAnnotationCollectionSignature;
260
+ private getActiveToolMode;
261
+ private isToolModeActive;
242
262
  private getEditorState;
243
263
  private emitImageChanged;
244
264
  private emitMasksChanged;
265
+ private emitAnnotationsChanged;
245
266
  private emitBusyChangeIfChanged;
246
267
  private buildSelection;
247
268
  private withSelectionChangeContext;
@@ -264,6 +285,7 @@ export declare class ImageEditor {
264
285
  */
265
286
  private alignObjectBoundingBoxToCanvasTopLeft;
266
287
  private measureLayoutViewport;
288
+ private getScrollbarStableViewportCanvasSize;
267
289
  /**
268
290
  * Resize the canvas to fit the transformed image bounds. Used by the
269
291
  * transform pipeline's `afterTransformSnap` hook so a post-rotation/scale
@@ -356,7 +378,7 @@ export declare class ImageEditor {
356
378
  */
357
379
  saveState(): void;
358
380
  private saveStateInternal;
359
- private restoreActiveMaskAfterSnapshot;
381
+ private restoreActiveObjectAfterSnapshot;
360
382
  /**
361
383
  * Undoes the last recorded action.
362
384
  *
@@ -451,10 +473,52 @@ export declare class ImageEditor {
451
473
  private hideAllMaskLabels;
452
474
  private syncMaskLabel;
453
475
  private showLabelForMask;
476
+ private handleObjectMovingScalingRotating;
477
+ private handleObjectModified;
454
478
  private handleSelectionChanged;
455
479
  private buildMaskListContext;
456
480
  private updateMaskList;
457
481
  private updateMaskListSelection;
482
+ enterTextMode(): void;
483
+ exitTextMode(): void;
484
+ isTextMode(): boolean;
485
+ createTextAnnotation(config?: TextAnnotationConfig): TextAnnotationObject | null;
486
+ enterDrawMode(): void;
487
+ exitDrawMode(): void;
488
+ isDrawMode(): boolean;
489
+ getTextConfig(): Readonly<ResolvedTextAnnotationConfig>;
490
+ setTextConfig(config: TextAnnotationConfig): void;
491
+ resetTextConfig(): void;
492
+ setTextColor(color: string): void;
493
+ setTextFontSize(size: number): void;
494
+ getDrawConfig(): Readonly<ResolvedDrawConfig>;
495
+ setDrawConfig(config: DrawConfig): void;
496
+ resetDrawConfig(): void;
497
+ setDrawColor(color: string): void;
498
+ setDrawBrushSize(size: number): void;
499
+ removeSelectedAnnotation(): void;
500
+ removeAllAnnotations(options?: RemoveAllAnnotationsOptions): void;
501
+ updateAnnotation(annotationId: number, config: AnnotationUpdateConfig): void;
502
+ updateSelectedAnnotation(config: AnnotationUpdateConfig): void;
503
+ deleteSelectedObject(): void;
504
+ bringSelectedObjectForward(): void;
505
+ sendSelectedObjectBackward(): void;
506
+ bringSelectedObjectToFront(): void;
507
+ sendSelectedObjectToBack(): void;
508
+ private buildAnnotationManagerContext;
509
+ private buildAnnotationListContext;
510
+ private updateAnnotationList;
511
+ private updateAnnotationListSelection;
512
+ private buildTextControllerContext;
513
+ private buildDrawControllerContext;
514
+ private applyTextConfigPatch;
515
+ private applyDrawConfigPatch;
516
+ private applyTextColorInput;
517
+ private applyTextFontSizeInput;
518
+ private applyDrawColorInput;
519
+ private applyDrawBrushSizeInput;
520
+ private getSelectedCanvasObjects;
521
+ private moveSelectedEditableObject;
458
522
  /**
459
523
  * Bakes all current masks into the image:
460
524
  * exports the masked image, removes the masks, and re-imports the result
@@ -485,10 +549,10 @@ export declare class ImageEditor {
485
549
  * which builds the data URL through the same pipeline used by
486
550
  * {@link exportImageBase64} and triggers the anchor-driven download.
487
551
  *
488
- * @param fileName - Filename for the downloaded file.
489
- * @default `options.defaultDownloadFileName`
552
+ * @param options - Filename string or download options. String input is
553
+ * treated as a filename for backwards compatibility.
490
554
  */
491
- downloadImage(fileName?: string): void;
555
+ downloadImage(options?: DownloadImageOptions | string): void;
492
556
  /**
493
557
  * Exports the canvas as a Base64-encoded data URL.
494
558
  *
@@ -528,7 +592,7 @@ export declare class ImageEditor {
528
592
  *
529
593
  * @example
530
594
  * ```ts
531
- * const file = await editor.exportImageFile({ fileType: 'png', mergeMask: false});
595
+ * const file = await editor.exportImageFile({ fileType: 'png', mergeMasks: false});
532
596
  * const formData = new FormData;
533
597
  * formData.append('image', file);
534
598
  * ```
@@ -548,6 +612,7 @@ export declare class ImageEditor {
548
612
  * the merge needs.
549
613
  */
550
614
  private buildMergeMasksContext;
615
+ private buildMergeAnnotationsContext;
551
616
  /**
552
617
  * Capture a snapshot string suitable for `loadFromState` without
553
618
  * pushing it onto the history stack. Used by the merge and crop
@@ -560,6 +625,7 @@ export declare class ImageEditor {
560
625
  */
561
626
  private captureSnapshotInternal;
562
627
  private getActiveMaskForSnapshot;
628
+ private getActiveAnnotationForSnapshot;
563
629
  enterMosaicMode(): void;
564
630
  exitMosaicMode(): void;
565
631
  isMosaicMode(): boolean;
@@ -625,7 +691,9 @@ export declare class ImageEditor {
625
691
  * accessors all bind back to `this`.
626
692
  */
627
693
  private buildCropControllerContext;
694
+ private syncInputValue;
628
695
  private updateInputs;
696
+ mergeAnnotations(): Promise<void>;
629
697
  private updateUi;
630
698
  private setControlEnabled;
631
699
  private recordElementOriginalState;
@@ -1 +1 @@
1
- {"version":3,"file":"image-editor.d.ts","sourceRoot":"","sources":["../../src/image-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-editor.d.ts","sourceRoot":"","sources":["../../src/image-editor.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The package surface consists of:
5
5
  * - `ImageEditor` (default and named export) — the only public class.
6
- * - `isMaskObject` runtime type guard for mask objects.
6
+ * - Editor object runtime type guards.
7
7
  * - The documented public types listed below.
8
8
  *
9
9
  * Internal helpers (animation queue, command, history manager, controllers,
@@ -26,6 +26,6 @@
26
26
  import { ImageEditor } from './image-editor.js';
27
27
  export { ImageEditor };
28
28
  export default ImageEditor;
29
- export { isMaskObject } from './core/public-types.js';
30
- export type { ImageEditorOptions, ResolvedOptions, LayoutMode, LabelConfig, CropConfig, CropExportFileType, MosaicConfig, ResolvedMosaicConfig, MosaicOutputFileType, LoadImageOptions, RemoveAllMasksOptions, DefaultMaskConfig, MaskConfig, MaskObject, MaskNumericProp, ResolvedMaskConfig, ImageMimeType, ImageFileType, NormalizedImageFormat, ExportArea, Base64ExportOptions, ImageFileExportOptions, ImageInfo, ImageEditorState, ImageEditorSelection, ImageEditorCallbackContext, ImageEditorOperation, ElementIdMap, FabricModule, } from './core/public-types.js';
29
+ export { isAnnotationObject, isBaseImageObject, isDrawAnnotationObject, isEditableOverlayObject, isMaskObject, isSessionObject, isTextAnnotationObject, } from './core/public-types.js';
30
+ export type { ImageEditorOptions, ResolvedOptions, LayoutMode, EditorObjectKind, EditorToolMode, AnnotationType, SessionObjectType, EditorObjectMeta, LabelConfig, CropConfig, CropExportFileType, MosaicConfig, ResolvedMosaicConfig, MosaicOutputFileType, TextAnnotationConfig, ResolvedTextAnnotationConfig, DrawConfig, ResolvedDrawConfig, LoadImageOptions, RemoveAllMasksOptions, RemoveAllAnnotationsOptions, DefaultMaskConfig, MaskConfig, MaskObject, MaskNumericProp, ResolvedMaskConfig, BaseImageObject, SessionObject, AnnotationObject, TextAnnotationObject, DrawAnnotationObject, AnnotationUpdateConfig, ImageMimeType, ImageFileType, NormalizedImageFormat, ExportArea, Base64ExportOptions, ImageFileExportOptions, DownloadImageOptions, ImageInfo, ImageEditorState, ImageEditorSelection, ImageEditorCallbackContext, ImageEditorOperation, ElementIdMap, FabricModule, } from './core/public-types.js';
31
31
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAe,WAAW,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,YAAY,EAER,kBAAkB,EAClB,eAAe,EACf,UAAU,EAEV,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EAEpB,gBAAgB,EAChB,qBAAqB,EAErB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,eAAe,EACf,kBAAkB,EAElB,aAAa,EACb,aAAa,EACb,qBAAqB,EAErB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EAEtB,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EAEpB,YAAY,EAEZ,YAAY,GACf,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAe,WAAW,CAAC;AAE3B,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,GACzB,MAAM,wBAAwB,CAAC;AAIhC,YAAY,EAER,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAEhB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,UAAU,EACV,kBAAkB,EAElB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAE3B,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,eAAe,EACf,kBAAkB,EAElB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EAEtB,aAAa,EACb,aAAa,EACb,qBAAqB,EAErB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EAEpB,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EAEpB,YAAY,EAEZ,YAAY,GACf,MAAM,wBAAwB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The package surface consists of:
5
5
  * - `ImageEditor` (default and named export) — the only public class.
6
- * - `isMaskObject` runtime type guard for mask objects.
6
+ * - Editor object runtime type guards.
7
7
  * - The documented public types listed below.
8
8
  *
9
9
  * Internal helpers (animation queue, command, history manager, controllers,
@@ -26,6 +26,6 @@
26
26
  import { ImageEditor } from './image-editor.js';
27
27
  export { ImageEditor };
28
28
  export default ImageEditor;
29
- export { isMaskObject } from './core/public-types.js';
30
- export type { ImageEditorOptions, ResolvedOptions, LayoutMode, LabelConfig, CropConfig, CropExportFileType, MosaicConfig, ResolvedMosaicConfig, MosaicOutputFileType, LoadImageOptions, RemoveAllMasksOptions, DefaultMaskConfig, MaskConfig, MaskObject, MaskNumericProp, ResolvedMaskConfig, ImageMimeType, ImageFileType, NormalizedImageFormat, ExportArea, Base64ExportOptions, ImageFileExportOptions, ImageInfo, ImageEditorState, ImageEditorSelection, ImageEditorCallbackContext, ImageEditorOperation, ElementIdMap, FabricModule, } from './core/public-types.js';
29
+ export { isAnnotationObject, isBaseImageObject, isDrawAnnotationObject, isEditableOverlayObject, isMaskObject, isSessionObject, isTextAnnotationObject, } from './core/public-types.js';
30
+ export type { ImageEditorOptions, ResolvedOptions, LayoutMode, EditorObjectKind, EditorToolMode, AnnotationType, SessionObjectType, EditorObjectMeta, LabelConfig, CropConfig, CropExportFileType, MosaicConfig, ResolvedMosaicConfig, MosaicOutputFileType, TextAnnotationConfig, ResolvedTextAnnotationConfig, DrawConfig, ResolvedDrawConfig, LoadImageOptions, RemoveAllMasksOptions, RemoveAllAnnotationsOptions, DefaultMaskConfig, MaskConfig, MaskObject, MaskNumericProp, ResolvedMaskConfig, BaseImageObject, SessionObject, AnnotationObject, TextAnnotationObject, DrawAnnotationObject, AnnotationUpdateConfig, ImageMimeType, ImageFileType, NormalizedImageFormat, ExportArea, Base64ExportOptions, ImageFileExportOptions, DownloadImageOptions, ImageInfo, ImageEditorState, ImageEditorSelection, ImageEditorCallbackContext, ImageEditorOperation, ElementIdMap, FabricModule, } from './core/public-types.js';
31
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAe,WAAW,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,YAAY,EAER,kBAAkB,EAClB,eAAe,EACf,UAAU,EAEV,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EAEpB,gBAAgB,EAChB,qBAAqB,EAErB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,eAAe,EACf,kBAAkB,EAElB,aAAa,EACb,aAAa,EACb,qBAAqB,EAErB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EAEtB,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EAEpB,YAAY,EAEZ,YAAY,GACf,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAe,WAAW,CAAC;AAE3B,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,GACzB,MAAM,wBAAwB,CAAC;AAIhC,YAAY,EAER,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAEhB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,UAAU,EACV,kBAAkB,EAElB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAE3B,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,eAAe,EACf,kBAAkB,EAElB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EAEtB,aAAa,EACb,aAAa,EACb,qBAAqB,EAErB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EAEpB,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EAEpB,YAAY,EAEZ,YAAY,GACf,MAAM,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mask-factory.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAER,YAAY,EACZ,UAAU,EACV,UAAU,EACV,qBAAqB,EAErB,eAAe,EAClB,MAAM,yBAAyB,CAAC;AAYjC;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAC9B,gEAAgE;IAChE,MAAM,EAAE,YAAY,CAAC;IACrB,mDAAmD;IACnD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,eAAe,CAAC;IACzB,sEAAsE;IACtE,WAAW,IAAI,UAAU,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,gDAAgD;IAChD,cAAc,IAAI,MAAM,CAAC;IACzB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,+EAA+E;IAC/E,cAAc,IAAI,IAAI,CAAC;IACvB,oCAAoC;IACpC,eAAe,IAAI,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAsID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAE,UAAe,GAAG,UAAU,GAAG,IAAI,CAwSjG;AA6BD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC9B,2DAA2D;IAC3D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3C,yEAAyE;IACzE,cAAc,IAAI,IAAI,CAAC;IACvB,yDAAyD;IACzD,eAAe,IAAI,IAAI,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAYnE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,qBAA0B,GACpC,IAAI,CAqBN"}
1
+ {"version":3,"file":"mask-factory.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAER,YAAY,EACZ,UAAU,EACV,UAAU,EACV,qBAAqB,EAErB,eAAe,EAClB,MAAM,yBAAyB,CAAC;AAcjC;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAC9B,gEAAgE;IAChE,MAAM,EAAE,YAAY,CAAC;IACrB,mDAAmD;IACnD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,eAAe,CAAC;IACzB,sEAAsE;IACtE,WAAW,IAAI,UAAU,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,gDAAgD;IAChD,cAAc,IAAI,MAAM,CAAC;IACzB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,+EAA+E;IAC/E,cAAc,IAAI,IAAI,CAAC;IACvB,oCAAoC;IACpC,eAAe,IAAI,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAsID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAE,UAAe,GAAG,UAAU,GAAG,IAAI,CAwSjG;AA6BD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC9B,2DAA2D;IAC3D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3C,yEAAyE;IACzE,cAAc,IAAI,IAAI,CAAC;IACvB,yDAAyD;IACzD,eAAe,IAAI,IAAI,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;CAC9C;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAcnE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,qBAA0B,GACpC,IAAI,CAqBN"}
@@ -1,18 +1,19 @@
1
1
  /**
2
2
  * Per-mask label overlay creation, positioning, show/hide, and
3
- * removal. Owns the legacy `createLabelForMask`, `syncMaskLabel`,
4
- * `showLabelForMask`, `hideAllMaskLabels`, and
5
- * `removeLabelForMask` logic that was inlined on the editor
6
- * in legacy and is now extracted into pure(ish) helpers that take a
7
- * {@link MaskLabelManagerContext}.
3
+ * removal.
4
+ *
5
+ * The ImageEditor facade owns the canvas and resolved options; this module
6
+ * receives those dependencies through {@link MaskLabelManagerContext} so
7
+ * label behavior can be tested without the full facade.
8
8
  *
9
9
  * ## Owned contracts
10
10
  *
11
11
  * - Label text is computed via
12
12
  * `options.label.getText(mask, mask.maskId - 1)`. The index argument is
13
13
  * the stable creation index (`maskId - 1`), NOT the live canvas list
14
- * position. legacy passed `this.maskCounter` here, which drifted whenever
15
- * masks were added or removed; the current contract pins the index to the
14
+ * position. Earlier implementations passed `this.maskCounter` here,
15
+ * which drifted whenever masks were added or removed; the current
16
+ * contract pins the index to the
16
17
  * mask's own identity so labels stay consistent across
17
18
  * `createMask` / `removeSelectedMask` / `removeAllMasks` / `undo`/`redo`.
18
19
  *
@@ -23,7 +24,7 @@
23
24
  * re-asserts them on every sync so an externally-mutated label still
24
25
  * honors the contract.
25
26
  *
26
- * - **Pretty_Printer filter** — Every label object is
27
+ * - **State serializer filter** — Every label object is
27
28
  * tagged with `maskLabel = true` so `core/state-serializer.ts` can
28
29
  * exclude it from history snapshots. Labels are session-only and never
29
30
  * persisted.
@@ -60,7 +61,7 @@ import type { FabricModule, MaskObject, ResolvedOptions } from '../core/public-t
60
61
  *
61
62
  * The module does NOT own any of these slots — it only reads them so
62
63
  * ownership of the canvas, Fabric module, and resolved options stays on the
63
- * orchestrator (where legacy left them).
64
+ * orchestrator.
64
65
  */
65
66
  export interface MaskLabelManagerContext {
66
67
  /** Injected Fabric.js v7 module used to construct the label text. */
@@ -1 +1 @@
1
- {"version":3,"file":"mask-label-manager.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-label-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAIzF;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACpC,qEAAqE;IACrE,MAAM,EAAE,YAAY,CAAC;IACrB,4DAA4D;IAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,eAAe,CAAC;CAC5B;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAc3F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAgE3F;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA2BtF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CASzF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAuBxE"}
1
+ {"version":3,"file":"mask-label-manager.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-label-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAKzF;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACpC,qEAAqE;IACrE,MAAM,EAAE,YAAY,CAAC;IACrB,4DAA4D;IAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,eAAe,CAAC;CAC5B;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAc3F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAiE3F;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA2BtF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CASzF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAuBxE"}
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Mask list DOM rendering owns the legacy `updateMaskList` and
3
- * `_handleMaskListClick` logic that was inlined on the editor in
4
- * legacy and is now extracted into pure(ish) helpers that take a
2
+ * Mask list DOM rendering and click-to-select behavior.
3
+ *
4
+ * The ImageEditor facade owns canvas selection state; this module rebuilds
5
+ * the list from the current canvas objects and reports user selection through
5
6
  * {@link MaskListContext}.
6
7
  *
7
8
  * ## Owned contracts
@@ -15,7 +16,7 @@
15
16
  * - Every `<li>` carries a `data-mask-id` attribute
16
17
  * (via `dataset.maskId`) equal to the mask's `maskId`. Clients keying off
17
18
  * the list (the click handler below, the test suite under
18
- * `tests/properties/mask-list-dom.test.mjs`) MUST use this attribute and
19
+ * `tests/mask-list-dom.property.test.mjs`) MUST use this attribute and
19
20
  * never the visible label text — the label may be rewritten by the
20
21
  * integrator via `options.label.getText`, so it is NOT a stable key.
21
22
  *
@@ -44,8 +45,8 @@
44
45
  * tested in isolation against a stub Fabric environment plus a JSDOM
45
46
  * container.
46
47
  * - The DOM contract — `<li class="list-group-item mask-item">` with a
47
- * `dataset.maskId` — matches legacy verbatim so existing CSS, theme overrides,
48
- * and integrator selectors continue to work unchanged.
48
+ * `dataset.maskId` — is stable so existing CSS, theme overrides, and
49
+ * integrator selectors continue to work unchanged.
49
50
  * - Each render replaces the container's `innerHTML`. That is intentional:
50
51
  * it guarantees the DOM mirrors `canvas.getObjects` exactly, and the
51
52
  * Fabric event handlers (`object:added`, `object:removed`, `selection:*`)
@@ -62,8 +63,7 @@ import type { MaskObject } from '../core/public-types.js';
62
63
  *
63
64
  * The module does NOT own any of these slots — it only reads them so
64
65
  * ownership of the canvas, the resolved DOM element ID map, and the
65
- * selection-changed pipeline stays on the orchestrator (where legacy left
66
- * them).
66
+ * selection-changed pipeline stays on the orchestrator.
67
67
  */
68
68
  export interface MaskListContext {
69
69
  /**
@@ -82,8 +82,7 @@ export interface MaskListContext {
82
82
  * Invoked by the click handler after `setActiveObject(mask)` has run,
83
83
  * so the orchestrator can drive its selection-changed pipeline (label
84
84
  * overlay, hover/selection styling, list highlight) the same way it
85
- * does for canvas-originated selections. Mirrors legacy's
86
- * `_handleSelectionChanged([mask])` call from `_handleMaskListClick`.
85
+ * does for canvas-originated selections.
87
86
  */
88
87
  onMaskSelected(mask: MaskObject): void;
89
88
  }
@@ -105,8 +104,8 @@ export interface MaskListContext {
105
104
  * listener bookkeeping to track separately.
106
105
  * 3. For each {@link MaskObject} returned by `canvas.getObjects` (in
107
106
  * canvas object order), build a fresh `<li>`:
108
- * - class `list-group-item mask-item` (matches legacy verbatim so
109
- * existing CSS keeps working);
107
+ * - class `list-group-item mask-item` (part of the stable DOM
108
+ * contract so existing CSS keeps working);
110
109
  * - `textContent` set to `mask.maskName` (the label-text contract
111
110
  * owned by `mask/mask-label-manager.ts`; this list shows the same
112
111
  * identifier);
@@ -1 +1 @@
1
- {"version":3,"file":"mask-list.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C;;;;;;OAMG;IACH,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1C;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA2C7D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,UAAU,GAAG,IAAI,GAChC,IAAI,CAWN"}
1
+ {"version":3,"file":"mask-list.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1C;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA2C7D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,UAAU,GAAG,IAAI,GAChC,IAAI,CAWN"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Hover, selection, and "original style restore" helpers for
3
- * mask visual state. Owns the legacy `_getMaskNormalStyle`,
4
- * `_withNormalizedMaskStyles`, `_rebindMaskEvents`, and the
5
- * selected/unselected stroke logic from `_handleSelectionChanged`
6
- * that were inlined on the editor in legacy and are now extracted
7
- * into pure(ish) helpers that take a {@link MaskStyleContext}.
3
+ * mask visual state.
4
+ *
5
+ * The ImageEditor facade owns canvas state; this module receives the live
6
+ * canvas and resolved options through {@link MaskStyleContext} so mask
7
+ * visual behavior stays centralized.
8
8
  *
9
9
  * Two callers consume the same backup shape:
10
10
  *
@@ -21,8 +21,8 @@
21
21
  * Centralizing the backup shape, the hover style literals (`#ff5500`,
22
22
  * `strokeWidth: 2`, `opacity = originalAlpha + 0.2`), and the
23
23
  * selected/unselected stroke literals (`#ff0000`, `mask.originalStroke ||
24
- * '#ccc'`) here means the legacy visuals stay pixel-identical and any future
25
- * tweak happens in one place.
24
+ * '#ccc'`) here keeps mask visuals consistent and any future tweak in one
25
+ * place.
26
26
  *
27
27
  * ## Owned contracts
28
28
  *
@@ -51,18 +51,17 @@
51
51
  * and `lockRotation` from the captured {@link MaskBackup}, matching the current
52
52
  * documented `MaskBackup` interface.
53
53
  *
54
- * - **Mirrors legacy hover behavior** — {@link attachMaskHoverHandlers} and
55
- * {@link reattachMaskHoverHandlers} bind the same `mouseover`/`mouseout`
56
- * handlers legacy's `_rebindMaskEvents` used. The handlers read
54
+ * - **Hover behavior** — {@link attachMaskHoverHandlers} and
55
+ * {@link reattachMaskHoverHandlers} bind `mouseover`/`mouseout`
56
+ * handlers that read
57
57
  * `mask.originalAlpha` / `mask.originalStroke` / `mask.originalStrokeWidth`
58
58
  * on each invocation so they always reflect the current "live" state
59
59
  * (e.g. after a stroke change from a selection event).
60
60
  *
61
- * - **Mirrors legacy selection styling** — {@link applyMaskSelectedStyle} sets
61
+ * - **Selection styling** — {@link applyMaskSelectedStyle} sets
62
62
  * the selection-highlight stroke (`#ff0000`, `strokeWidth: 1`) and
63
63
  * {@link applyMaskUnselectedStyle} restores the normal stroke from the
64
- * per-mask `originalStroke` / `originalStrokeWidth`. Both literals match
65
- * legacy's `_handleSelectionChanged`.
64
+ * per-mask `originalStroke` / `originalStrokeWidth`.
66
65
  *
67
66
  * ## Out of scope (handled by sibling modules)
68
67
  *
@@ -81,10 +80,11 @@
81
80
  * - Hover handlers do NOT cache the normal/hover style at attach time. They
82
81
  * read `mask.originalAlpha` / `mask.originalStroke` / `mask.originalStrokeWidth`
83
82
  * on every event so the visual matches the live "original" values even
84
- * after a stroke or opacity change (matching legacy).
83
+ * after a stroke or opacity change.
85
84
  * - The handlers are tagged on `mask.imageEditorMaskHandlers` exactly as
86
- * legacy did so {@link reattachMaskHoverHandlers} can drop the old pair before
87
- * binding fresh ones, avoiding duplicate listeners after `loadFromJSON`.
85
+ * {@link reattachMaskHoverHandlers} expects so it can drop the old pair
86
+ * before binding fresh ones, avoiding duplicate listeners after
87
+ * `loadFromJSON`.
88
88
  *
89
89
  * @module
90
90
  */
@@ -94,8 +94,7 @@ import type { MaskBackup, MaskObject, ResolvedOptions } from '../core/public-typ
94
94
  * State the mask-style helpers read from the `ImageEditor` orchestrator.
95
95
  *
96
96
  * The module does NOT own any of these slots — it only reads them so
97
- * ownership of the canvas and resolved options stays on the orchestrator
98
- * (where legacy left them).
97
+ * ownership of the canvas and resolved options stays on the orchestrator.
99
98
  */
100
99
  export interface MaskStyleContext {
101
100
  /**
@@ -202,8 +201,8 @@ export declare function attachMaskHoverHandlers(mask: MaskObject): void;
202
201
  * Also re-asserts the persisted `original*` metadata when missing — legacy's
203
202
  * `_rebindMaskEvents` did the same so a snapshot from an older format that
204
203
  * happens to lack `originalStroke`/`originalStrokeWidth` still hovers
205
- * correctly. The current Pretty_Printer always serializes
206
- * `originalAlpha`, but we defend against partial payloads here too.
204
+ * correctly. Current snapshots always serialize `originalAlpha`, but we
205
+ * defend against partial payloads here too.
207
206
  *
208
207
  * @param mask - The mask to refresh handlers on.
209
208
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mask-style.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAwBvF;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,QAAQ,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAQpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAQnE;AAID;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAM/D;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAe9D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAwChE;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAU9D;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAWnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAiB/D;AAeD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAiC3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACvC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EAClD,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAM7D"}
1
+ {"version":3,"file":"mask-style.d.ts","sourceRoot":"","sources":["../../../src/mask/mask-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAwBvF;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,QAAQ,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAQpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAQnE;AAID;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAM/D;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAe9D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAwChE;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAU9D;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAWnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAiB/D;AAeD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAiC3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACvC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EAClD,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAM7D"}
@@ -8,7 +8,7 @@
8
8
  * @module
9
9
  */
10
10
  import type * as FabricNS from 'fabric';
11
- import type { FabricModule, ImageEditorCallbackContext, ImageEditorOperation, ImageMimeType, ResolvedMosaicConfig, ResolvedOptions } from '../core/public-types.js';
11
+ import type { BaseImageObject, FabricModule, ImageEditorCallbackContext, ImageEditorOperation, ImageMimeType, ResolvedMosaicConfig, ResolvedOptions } from '../core/public-types.js';
12
12
  import { type HistoryManager } from '../history/history-manager.js';
13
13
  import { type MosaicImagePoint } from './mosaic-geometry.js';
14
14
  interface MosaicPreviewCircle extends FabricNS.Circle {
@@ -49,8 +49,8 @@ export interface MosaicControllerContext {
49
49
  readonly historyManager: HistoryManager;
50
50
  getMosaicConfig(): ResolvedMosaicConfig;
51
51
  isImageLoaded(): boolean;
52
- getOriginalImage(): FabricNS.FabricImage | null;
53
- setOriginalImage(image: FabricNS.FabricImage | null): void;
52
+ getOriginalImage(): BaseImageObject | null;
53
+ setOriginalImage(image: BaseImageObject | null): void;
54
54
  getCurrentImageMimeType(): ImageMimeType | null;
55
55
  setCurrentImageMimeType(mimeType: ImageMimeType | null): void;
56
56
  getLastSnapshot(): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"mosaic-controller.d.ts","sourceRoot":"","sources":["../../../src/mosaic/mosaic-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mosaic-controller.d.ts","sourceRoot":"","sources":["../../../src/mosaic/mosaic-controller.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Placeholder/canvas-container visibility helper. Owns the
3
- * standard-DOM-state transition that the orchestrator's
4
- * private `_setPlaceholderVisible` method delegates to.
3
+ * standard-DOM-state transition used by the ImageEditor facade and image
4
+ * loading pipeline.
5
5
  *
6
6
  * ## Owned contracts
7
7
  *
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared browser image element loading primitive.
3
+ *
4
+ * Callers provide their own error factory and validation so image loading and
5
+ * export pipelines can share listener cleanup without sharing domain errors.
6
+ *
7
+ * @module
8
+ */
9
+ export interface ImageElementLoadHandle {
10
+ promise: Promise<HTMLImageElement>;
11
+ cleanup(clearSource?: boolean): void;
12
+ }
13
+ export interface ImageElementLoadOptions {
14
+ crossOrigin?: string;
15
+ validate?: (imageElement: HTMLImageElement) => Error | null;
16
+ createError: (event: Event | string) => Error;
17
+ }
18
+ export declare function startImageElementLoad(dataUrl: string, options: ImageElementLoadOptions): ImageElementLoadHandle;
19
+ //# sourceMappingURL=image-element-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-element-loader.d.ts","sourceRoot":"","sources":["../../../src/utils/image-element-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,KAAK,GAAG,IAAI,CAAC;IAC5D,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;CACjD;AAED,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,uBAAuB,GACjC,sBAAsB,CAsDxB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Fabric event pointer extraction helpers.
3
+ *
4
+ * Supports Fabric v7 `scenePoint`, older pointer fields, and the
5
+ * `canvas.getPointer(event.e)` fallback used by controller event handlers.
6
+ *
7
+ * @module
8
+ */
9
+ import type * as FabricNS from 'fabric';
10
+ export interface CanvasPoint {
11
+ x: number;
12
+ y: number;
13
+ }
14
+ export declare function isFinitePoint(value: unknown): value is CanvasPoint;
15
+ export declare function getPointerFromFabricEvent(canvas: FabricNS.Canvas, event: unknown): CanvasPoint | null;
16
+ //# sourceMappingURL=pointer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../src/utils/pointer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AAExC,MAAM,WAAW,WAAW;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CASlE;AAED,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,KAAK,EAAE,OAAO,GACf,WAAW,GAAG,IAAI,CAwBpB"}