@bensitu/image-editor 2.1.0 → 2.3.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 (118) hide show
  1. package/README.md +305 -95
  2. package/dist/cjs/index.cjs +3460 -843
  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 +240 -9
  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 +112 -24
  25. package/dist/esm/core/state-serializer.js.map +1 -1
  26. package/dist/esm/crop/crop-controller.js +220 -10
  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 +157 -168
  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 +20 -51
  36. package/dist/esm/image/image-loader.js.map +1 -1
  37. package/dist/esm/image/transform-controller.js +42 -0
  38. package/dist/esm/image/transform-controller.js.map +1 -1
  39. package/dist/esm/image-editor.js +1200 -72
  40. package/dist/esm/image-editor.js.map +1 -1
  41. package/dist/esm/index.js +1 -1
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/mask/mask-factory.js +39 -14
  44. package/dist/esm/mask/mask-factory.js.map +1 -1
  45. package/dist/esm/mask/mask-label-manager.js +2 -0
  46. package/dist/esm/mask/mask-label-manager.js.map +1 -1
  47. package/dist/esm/mask/mask-list.js.map +1 -1
  48. package/dist/esm/mask/mask-style.js.map +1 -1
  49. package/dist/esm/mosaic/mosaic-controller.js +24 -28
  50. package/dist/esm/mosaic/mosaic-controller.js.map +1 -1
  51. package/dist/esm/utils/file.js +10 -0
  52. package/dist/esm/utils/file.js.map +1 -1
  53. package/dist/esm/utils/image-element-loader.js +55 -0
  54. package/dist/esm/utils/image-element-loader.js.map +1 -0
  55. package/dist/esm/utils/pointer.js +28 -0
  56. package/dist/esm/utils/pointer.js.map +1 -0
  57. package/dist/types/annotation/annotation-lock.d.ts +12 -0
  58. package/dist/types/annotation/annotation-lock.d.ts.map +1 -0
  59. package/dist/types/annotation/annotation-manager.d.ts +33 -0
  60. package/dist/types/annotation/annotation-manager.d.ts.map +1 -0
  61. package/dist/types/annotation/annotation-style.d.ts +13 -0
  62. package/dist/types/annotation/annotation-style.d.ts.map +1 -0
  63. package/dist/types/annotation/draw-controller.d.ts +43 -0
  64. package/dist/types/annotation/draw-controller.d.ts.map +1 -0
  65. package/dist/types/annotation/text-controller.d.ts +47 -0
  66. package/dist/types/annotation/text-controller.d.ts.map +1 -0
  67. package/dist/types/core/default-options.d.ts +14 -2
  68. package/dist/types/core/default-options.d.ts.map +1 -1
  69. package/dist/types/core/editor-object-kind.d.ts +29 -0
  70. package/dist/types/core/editor-object-kind.d.ts.map +1 -0
  71. package/dist/types/core/errors.d.ts +11 -1
  72. package/dist/types/core/errors.d.ts.map +1 -1
  73. package/dist/types/core/layer-order.d.ts +21 -0
  74. package/dist/types/core/layer-order.d.ts.map +1 -0
  75. package/dist/types/core/public-types.d.ts +272 -56
  76. package/dist/types/core/public-types.d.ts.map +1 -1
  77. package/dist/types/core/state-serializer.d.ts +34 -5
  78. package/dist/types/core/state-serializer.d.ts.map +1 -1
  79. package/dist/types/crop/crop-controller.d.ts +18 -14
  80. package/dist/types/crop/crop-controller.d.ts.map +1 -1
  81. package/dist/types/export/export-format.d.ts +9 -40
  82. package/dist/types/export/export-format.d.ts.map +1 -1
  83. package/dist/types/export/export-service.d.ts +45 -41
  84. package/dist/types/export/export-service.d.ts.map +1 -1
  85. package/dist/types/export/overlay-merge-service.d.ts +38 -0
  86. package/dist/types/export/overlay-merge-service.d.ts.map +1 -0
  87. package/dist/types/history/history-manager.d.ts +11 -14
  88. package/dist/types/history/history-manager.d.ts.map +1 -1
  89. package/dist/types/image/image-loader.d.ts +27 -22
  90. package/dist/types/image/image-loader.d.ts.map +1 -1
  91. package/dist/types/image/image-resampler.d.ts +1 -1
  92. package/dist/types/image/transform-controller.d.ts +19 -14
  93. package/dist/types/image/transform-controller.d.ts.map +1 -1
  94. package/dist/types/image-editor.d.ts +93 -15
  95. package/dist/types/image-editor.d.ts.map +1 -1
  96. package/dist/types/index.d.cts +3 -3
  97. package/dist/types/index.d.cts.map +1 -1
  98. package/dist/types/index.d.ts +3 -3
  99. package/dist/types/index.d.ts.map +1 -1
  100. package/dist/types/mask/mask-factory.d.ts.map +1 -1
  101. package/dist/types/mask/mask-label-manager.d.ts +10 -9
  102. package/dist/types/mask/mask-label-manager.d.ts.map +1 -1
  103. package/dist/types/mask/mask-list.d.ts +11 -12
  104. package/dist/types/mask/mask-list.d.ts.map +1 -1
  105. package/dist/types/mask/mask-style.d.ts +19 -20
  106. package/dist/types/mask/mask-style.d.ts.map +1 -1
  107. package/dist/types/mosaic/mosaic-controller.d.ts +3 -3
  108. package/dist/types/mosaic/mosaic-controller.d.ts.map +1 -1
  109. package/dist/types/ui/visibility-state.d.ts +2 -2
  110. package/dist/types/utils/file.d.ts +13 -0
  111. package/dist/types/utils/file.d.ts.map +1 -1
  112. package/dist/types/utils/image-element-loader.d.ts +19 -0
  113. package/dist/types/utils/image-element-loader.d.ts.map +1 -0
  114. package/dist/types/utils/pointer.d.ts +16 -0
  115. package/dist/types/utils/pointer.d.ts.map +1 -0
  116. package/dist/umd/image-editor.umd.js +1 -1
  117. package/dist/umd/image-editor.umd.js.map +1 -1
  118. package/package.json +1 -1
@@ -19,11 +19,11 @@
19
19
  * restored editor state. Callback exceptions are caught and logged so a
20
20
  * faulty integrator callback cannot mask the original error that the
21
21
  * loader re-throws. The success path does NOT invoke `onError`.
22
- * - Strings that do not start with `data:image/`
22
+ * - Strings that are not supported image data URLs
23
23
  * resolve without mutating placeholder visibility, scroll position,
24
24
  * image state, or canvas state. The function returns before
25
25
  * capturing the rollback bundle, so no observable side effect occurs.
26
- * - On a valid `data:image/` URL, the loader captures
26
+ * - On a supported image data URL, the loader captures
27
27
  * the rollback bundle *before* mutating any of the fields it tracks
28
28
  * (placeholder `hidden`, container `scrollTop`/`scrollLeft`, container
29
29
  * `originalImage`, `lastSnapshot`, the canvas JSON
@@ -34,7 +34,7 @@
34
34
  * original error.
35
35
  * - On success, `isImageLoadedToCanvas` is set to
36
36
  * `true`, `lastSnapshot` is replaced with a fresh snapshot derived from
37
- * the new canvas, and `maskCounter` is reset to `0`.
37
+ * the new canvas, and both overlay counters are reset to `0`.
38
38
  * - Either the new image is committed fully, or the
39
39
  * prior committed state is restored fully. No partial state is observable
40
40
  * after the returned promise settles.
@@ -47,7 +47,7 @@
47
47
  * - The 2D-context failure inside
48
48
  * {@link resampleImage} surfaces as {@link DownsampleError}; the loader
49
49
  * catches it and routes through the rollback path.
50
- * - On success, `maskCounter` is reset to `0`.
50
+ * - On success, `maskCounter` and `annotationCounter` are reset to `0`.
51
51
  *
52
52
  * ## Implementation notes
53
53
  *
@@ -56,15 +56,14 @@
56
56
  * facade owns all editor state (the canvas reference, the placeholder
57
57
  * element, the editor scalar fields), so the loader must read and write
58
58
  * that state through a small set of getter/setter callbacks. The class
59
- * shape of legacy was a side effect of the monolith; current keeps the loader
60
- * stateless so the rollback bundle is the single source of truth for what
61
- * the operation has captured.
59
+ * shape stays on the facade; the loader remains stateless so the rollback
60
+ * bundle is the single source of truth for what the operation has captured.
62
61
  *
63
62
  * The rollback bundle is built before the loader hides the placeholder or
64
63
  * touches the canvas. It captures *every* field listed in the documented
65
64
  * RollbackBundle definition plus the editor scalar fields
66
- * (`isImageLoadedToCanvas`, `maskCounter`, `currentScale`,
67
- * `currentRotation`, `baseImageScale`) the success path mutates. Restoring
65
+ * (`isImageLoadedToCanvas`, `maskCounter`, `annotationCounter`,
66
+ * `currentScale`, `currentRotation`, `baseImageScale`) the success path mutates. Restoring
68
67
  * those scalars is required for atomic rollback — without them, a failed
69
68
  * load that ran past the scalar reset would leave the editor with
70
69
  * `currentScale = 1` and `currentRotation = 0` even though
@@ -76,7 +75,7 @@
76
75
  * `loadOptions.preserveScroll === true`; on rollback the bundle is replayed
77
76
  * unconditionally, which the rollback contract already requires for
78
77
  * transactional rewind. When `preserveScroll` is omitted or `false`, the
79
- * success path leaves the container scroll untouched, so legacy's documented
78
+ * success path leaves the container scroll untouched, so the documented
80
79
  * scroll/viewport behavior for the selected layout mode prevails.
81
80
  *
82
81
  * The loader does not invoke public success callbacks. It owns
@@ -93,7 +92,7 @@
93
92
  * @module
94
93
  */
95
94
  import type * as FabricNS from 'fabric';
96
- import type { FabricModule, ImageMimeType, LoadImageOptions, ResolvedOptions } from '../core/public-types.js';
95
+ import type { BaseImageObject, FabricModule, ImageMimeType, LoadImageOptions, ResolvedOptions } from '../core/public-types.js';
97
96
  import { type ViewportCache } from './layout-manager.js';
98
97
  /**
99
98
  * Snapshot of every field the loader is about to mutate, captured before
@@ -102,9 +101,9 @@ import { type ViewportCache } from './layout-manager.js';
102
101
  *
103
102
  * Mirrors the documented `RollbackBundle` definition with the addition of
104
103
  * the editor scalar fields the success path also rewrites
105
- * (`isImageLoadedToCanvas`, `maskCounter`, `currentScale`,
106
- * `currentRotation`, `baseImageScale`). Those scalars must be restored
107
- * together with the canvas JSON for atomic rewind.
104
+ * (`isImageLoadedToCanvas`, `maskCounter`, `annotationCounter`,
105
+ * `currentScale`, `currentRotation`, `baseImageScale`). Those scalars must
106
+ * be restored together with the canvas JSON for atomic rewind.
108
107
  *
109
108
  */
110
109
  export interface RollbackBundle {
@@ -115,7 +114,7 @@ export interface RollbackBundle {
115
114
  /** Container `scrollLeft` immediately before the loader started. */
116
115
  containerScrollLeft: number | null;
117
116
  /** The previously-committed `originalImage` reference, if any. */
118
- originalImage: FabricNS.FabricImage | null;
117
+ originalImage: BaseImageObject | null;
119
118
  /** Whether an image was already committed before this call. */
120
119
  isImageLoadedToCanvas: boolean;
121
120
  /** Snapshot string used as the history baseline before the call. */
@@ -127,6 +126,8 @@ export interface RollbackBundle {
127
126
  canvasJson: string;
128
127
  /** Mask counter value before the loader reset it to 0. */
129
128
  maskCounter: number;
129
+ /** Annotation counter value before the loader reset it to 0. */
130
+ annotationCounter: number;
130
131
  /** Image scale factor before the loader reset it to 1. */
131
132
  currentScale: number;
132
133
  /** Image rotation in degrees before the loader reset it to 0. */
@@ -166,9 +167,9 @@ export interface LoadImageContext {
166
167
  /** Hidden-container viewport cache shared with the layout manager. */
167
168
  viewportCache: ViewportCache;
168
169
  /** Reads the previously-committed `originalImage`. */
169
- getOriginalImage(): FabricNS.FabricImage | null;
170
+ getOriginalImage(): BaseImageObject | null;
170
171
  /** Writes `originalImage` (used both on commit and on rollback). */
171
- setOriginalImage(imageObject: FabricNS.FabricImage | null): void;
172
+ setOriginalImage(imageObject: BaseImageObject | null): void;
172
173
  /** Reads `isImageLoadedToCanvas`. */
173
174
  getIsImageLoadedToCanvas(): boolean;
174
175
  /** Writes `isImageLoadedToCanvas`. */
@@ -181,6 +182,10 @@ export interface LoadImageContext {
181
182
  getMaskCounter(): number;
182
183
  /** Writes `maskCounter`. */
183
184
  setMaskCounter(n: number): void;
185
+ /** Reads `annotationCounter`. */
186
+ getAnnotationCounter(): number;
187
+ /** Writes `annotationCounter`. */
188
+ setAnnotationCounter(n: number): void;
184
189
  /** Reads `currentScale`. */
185
190
  getCurrentScale(): number;
186
191
  /** Writes `currentScale`. */
@@ -226,8 +231,8 @@ export interface LoadImageContext {
226
231
  * 7. **Layout** — pick a strategy via {@link selectLayoutStrategy} and
227
232
  * apply via {@link applyCanvasDimensions}.
228
233
  * 8. **Commit** — set `isImageLoadedToCanvas`,
229
- * reset `maskCounter` to 0, reset transforms, and emit a fresh
230
- * `lastSnapshot` via {@link saveState}.
234
+ * reset both overlay counters to 0, reset transforms, and emit a
235
+ * fresh `lastSnapshot` via {@link saveState}.
231
236
  *
232
237
  * Any rejection between step 3 and step 8 routes through {@link replayRollback}
233
238
  * before re-throwing the original error. On the rollback
@@ -251,12 +256,12 @@ export interface LoadImageContext {
251
256
  * transactional mutation/rollback separate from facade-level event ordering.
252
257
  *
253
258
  * @param context - Editor dependency bundle.
254
- * @param imageBase64 - Base64 data URL to load (`data:image/...;base64...`).
259
+ * @param imageBase64 - Supported image data URL to load.
255
260
  * @param loadOptions - Public {@link LoadImageOptions}. Currently only
256
261
  * `preserveScroll` is consulted; defaults to `false`.
257
262
  * @returns Resolved promise on success, rejected with the original error
258
- * (after rollback) on failure. Non-data:image inputs resolve
259
- * without observable mutation.
263
+ * (after rollback) on failure. Unsupported inputs resolve without
264
+ * observable mutation.
260
265
  *
261
266
  */
262
267
  export declare function loadImage(context: LoadImageContext, imageBase64: string, loadOptions?: LoadImageOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"image-loader.d.ts","sourceRoot":"","sources":["../../../src/image/image-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-loader.d.ts","sourceRoot":"","sources":["../../../src/image/image-loader.ts"],"names":[],"mappings":"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"}
@@ -117,7 +117,7 @@ export declare function detectSourceMimeType(dataUrl: string): string | null;
117
117
  *
118
118
  * Failure mode: when `<canvas>.getContext('2d')` returns
119
119
  * `null`, this function throws {@link DownsampleError} so
120
- * `image/image-loader.ts` can replay its Transactional_Load rollback bundle
120
+ * `image/image-loader.ts` can replay its rollback bundle
121
121
  * before rejecting the public `loadImage` promise.
122
122
  *
123
123
  * @param imageElement - Decoded source image element.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Animated scale, rotate, and reset operations on the
2
+ * Animated scale, rotate, base-image flip, and reset operations on the
3
3
  * `originalImage` with history integration. Owns the current
4
4
  * transform pipeline that the `ImageEditor` facade routes
5
5
  * through the `AnimationQueue`.
@@ -29,7 +29,10 @@
29
29
  * the entire reset is one undoable step. Failures inside the chain
30
30
  * still release the suppression flag in `finally` so subsequent
31
31
  * transforms continue to record history.
32
- * - `scaleImage`, `rotateImage`, and
32
+ * - `flipHorizontal` and `flipVertical` toggle only the base image's
33
+ * Fabric `flipX` / `flipY` flags. Masks and annotations are not
34
+ * mirrored; they remain in their existing canvas positions by design.
35
+ * - `scaleImage`, `rotateImage`, flip operations, and
33
36
  * `resetImageTransform` each call `saveCanvasState` on success so
34
37
  * the new state is undoable. The orchestrator wires
35
38
  * `saveCanvasState` to the full `core/state-serializer.ts → saveState`
@@ -45,7 +48,7 @@
45
48
  * `finally` so the public promise sees `isAnimating === false` before
46
49
  * settling.
47
50
  * 2. The animation queue (owned by the orchestrator) serializes
48
- * `scaleImage`, `rotateImage`, and `resetImageTransform` so concurrent
51
+ * `scaleImage`, `rotateImage`, flip operations, and `resetImageTransform` so concurrent
49
52
  * callers do not interleave mid-animation Fabric mutations. The
50
53
  * transform controller does NOT enqueue on the queue itself; the
51
54
  * orchestrator wraps each call through `animQueue.add(...)` before
@@ -59,14 +62,12 @@
59
62
  *
60
63
  * ## Why a class with a context bundle?
61
64
  *
62
- * The legacy monolithic `ImageEditor` owned all transform state. This module keeps that
63
- * state on the facade so `currentScale`, `currentRotation`,
64
- * `baseImageScale`, and `shouldSuppressSaveState` remain on a single owner
65
- * (these are part of the snapshot wire format). The
66
- * controller therefore reads and writes through the
65
+ * This module keeps transform state on the facade so `currentScale`,
66
+ * `currentRotation`, `baseImageScale`, and `shouldSuppressSaveState`
67
+ * remain on a single owner (these are part of the snapshot wire format).
68
+ * The controller therefore reads and writes through the
67
69
  * {@link TransformContext} accessor pairs rather than duplicating the
68
- * fields. Mirrors the same pattern used by
69
- * `LoadImageContext`.
70
+ * fields. It mirrors the same pattern used by `LoadImageContext`.
70
71
  *
71
72
  * Owner module references (per the documented "Mapping Contracts to
72
73
  * modules" table): this module is imported by `image-editor.ts`. It is
@@ -161,7 +162,7 @@ export interface TransformContext {
161
162
  afterTransformSnap?(): void;
162
163
  }
163
164
  /**
164
- * Owns the animated `scaleImage`, `rotateImage`, and
165
+ * Owns the animated `scaleImage`, `rotateImage`, base-image flip, and
165
166
  * `resetImageTransform` operations. Each method is invoked from a queue
166
167
  * entry on the orchestrator's animation queue and returns a Promise that
167
168
  * resolves once the Fabric animation has settled and `saveCanvasState`
@@ -255,12 +256,16 @@ export declare class TransformController {
255
256
  *
256
257
  */
257
258
  rotateImage(degrees: number): Promise<void>;
259
+ flipHorizontal(): Promise<void>;
260
+ flipVertical(): Promise<void>;
261
+ private flipImage;
258
262
  /**
259
- * Animate the image to `scale = 1` and `rotation = 0` and record
263
+ * Animate the image to `scale = 1` and `rotation = 0`, clear flip
264
+ * state, and record
260
265
  * exactly one history entry covering the whole reset.
261
266
  *
262
- * Implementation strategy: chain `scaleImage(1)` and `rotateImage(0)`
263
- * but suppress their per-operation history entries via
267
+ * Implementation strategy: chain `scaleImage(1)` and `rotateImage(0)`,
268
+ * then clear `flipX` and `flipY`, but suppress their per-operation history entries via
264
269
  * {@link TransformContext.setSuppressSaveState}. After both
265
270
  * sub-animations settle (or one rejects), release the suppression
266
271
  * flag and emit a single `saveCanvasState` so the entire reset is
@@ -1 +1 @@
1
- {"version":3,"file":"transform-controller.d.ts","sourceRoot":"","sources":["../../../src/image/transform-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,gBAAgB;IAC7B,0DAA0D;IAC1D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,mEAAmE;IACnE,OAAO,EAAE,eAAe,CAAC;IACzB;;;;OAIG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB,sDAAsD;IACtD,gBAAgB,IAAI,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAEhD,4BAA4B;IAC5B,eAAe,IAAI,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,0CAA0C;IAC1C,kBAAkB,IAAI,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,kDAAkD;IAClD,iBAAiB,IAAI,MAAM,CAAC;IAE5B;;;;;;;OAOG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;;;;;;OAOG;IACH,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAE9C;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,IAAI,IAAI,CAAC;CAC/B;AAID;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAE3C;;OAEG;gBACS,OAAO,EAAE,gBAAgB;IAIrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0EjD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB7C"}
1
+ {"version":3,"file":"transform-controller.d.ts","sourceRoot":"","sources":["../../../src/image/transform-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AAEH,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,gBAAgB;IAC7B,0DAA0D;IAC1D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,mEAAmE;IACnE,OAAO,EAAE,eAAe,CAAC;IACzB;;;;OAIG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB,sDAAsD;IACtD,gBAAgB,IAAI,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAEhD,4BAA4B;IAC5B,eAAe,IAAI,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,0CAA0C;IAC1C,kBAAkB,IAAI,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,kDAAkD;IAClD,iBAAiB,IAAI,MAAM,CAAC;IAE5B;;;;;;;OAOG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;;;;;;OAOG;IACH,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAE9C;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,IAAI,IAAI,CAAC;CAC/B;AAID;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAE3C;;OAEG;gBACS,OAAO,EAAE,gBAAgB;IAIrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0E3C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAIrB,SAAS;IAgCvB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB7C"}
@@ -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, CropAspectRatio, CropModeOptions, DrawConfig, ElementIdMap, FabricModule, ImageEditorOptions, ImageExportOptions, 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.
@@ -197,12 +213,12 @@ export declare class ImageEditor {
197
213
  * the call as a documented no-op so a queued scale/rotate animation
198
214
  * cannot be torn down by a concurrent reload.
199
215
  *
200
- * @param base64 - Data URL string starting with `data:image/…`.
216
+ * @param base64 - Supported image data URL string.
201
217
  * @param options - Optional {@link LoadImageOptions}; currently only
202
218
  * `preserveScroll` is consulted.
203
219
  * @returns A promise that resolves once the image is on the canvas, or
204
220
  * rejects with the original error after a transactional
205
- * rollback. Non-data:image inputs and Fabric-unavailable /
221
+ * rollback. Unsupported image inputs and Fabric-unavailable /
206
222
  * disposed states resolve without observable mutation.
207
223
  */
208
224
  loadImage(base64: string, options?: LoadImageOptions): Promise<void>;
@@ -213,6 +229,7 @@ export declare class ImageEditor {
213
229
  private withAnimationQueueBypass;
214
230
  private assertIdleForOperation;
215
231
  private canRunIdleOperation;
232
+ private getSelectedCropAspectRatio;
216
233
  private isExpectedIdleGuardError;
217
234
  private assertCanQueueAnimation;
218
235
  /**
@@ -238,10 +255,15 @@ export declare class ImageEditor {
238
255
  private emitOptionCallback;
239
256
  private getImageInfo;
240
257
  private getMasks;
258
+ getAnnotations(): AnnotationObject[];
241
259
  private getMaskCollectionSignature;
260
+ private getAnnotationCollectionSignature;
261
+ private getActiveToolMode;
262
+ private isToolModeActive;
242
263
  private getEditorState;
243
264
  private emitImageChanged;
244
265
  private emitMasksChanged;
266
+ private emitAnnotationsChanged;
245
267
  private emitBusyChangeIfChanged;
246
268
  private buildSelection;
247
269
  private withSelectionChangeContext;
@@ -264,6 +286,7 @@ export declare class ImageEditor {
264
286
  */
265
287
  private alignObjectBoundingBoxToCanvasTopLeft;
266
288
  private measureLayoutViewport;
289
+ private getScrollbarStableViewportCanvasSize;
267
290
  /**
268
291
  * Resize the canvas to fit the transformed image bounds. Used by the
269
292
  * transform pipeline's `afterTransformSnap` hook so a post-rotation/scale
@@ -318,8 +341,10 @@ export declare class ImageEditor {
318
341
  * @returns A promise that resolves when the animation finishes.
319
342
  */
320
343
  rotateImage(degrees: number): Promise<void>;
344
+ flipHorizontal(): Promise<void>;
345
+ flipVertical(): Promise<void>;
321
346
  /**
322
- * Resets the image to scale `1` and rotation `0` (animated) and
347
+ * Resets the image to scale `1`, rotation `0`, and unflipped state and
323
348
  * records exactly one history entry covering the entire reset.
324
349
  *
325
350
  * Routed through the {@link animQueue} so the chained
@@ -356,7 +381,7 @@ export declare class ImageEditor {
356
381
  */
357
382
  saveState(): void;
358
383
  private saveStateInternal;
359
- private restoreActiveMaskAfterSnapshot;
384
+ private restoreActiveObjectAfterSnapshot;
360
385
  /**
361
386
  * Undoes the last recorded action.
362
387
  *
@@ -451,10 +476,52 @@ export declare class ImageEditor {
451
476
  private hideAllMaskLabels;
452
477
  private syncMaskLabel;
453
478
  private showLabelForMask;
479
+ private handleObjectMovingScalingRotating;
480
+ private handleObjectModified;
454
481
  private handleSelectionChanged;
455
482
  private buildMaskListContext;
456
483
  private updateMaskList;
457
484
  private updateMaskListSelection;
485
+ enterTextMode(): void;
486
+ exitTextMode(): void;
487
+ isTextMode(): boolean;
488
+ createTextAnnotation(config?: TextAnnotationConfig): TextAnnotationObject | null;
489
+ enterDrawMode(): void;
490
+ exitDrawMode(): void;
491
+ isDrawMode(): boolean;
492
+ getTextConfig(): Readonly<ResolvedTextAnnotationConfig>;
493
+ setTextConfig(config: TextAnnotationConfig): void;
494
+ resetTextConfig(): void;
495
+ setTextColor(color: string): void;
496
+ setTextFontSize(size: number): void;
497
+ getDrawConfig(): Readonly<ResolvedDrawConfig>;
498
+ setDrawConfig(config: DrawConfig): void;
499
+ resetDrawConfig(): void;
500
+ setDrawColor(color: string): void;
501
+ setDrawBrushSize(size: number): void;
502
+ removeSelectedAnnotation(): void;
503
+ removeAllAnnotations(options?: RemoveAllAnnotationsOptions): void;
504
+ updateAnnotation(annotationId: number, config: AnnotationUpdateConfig): void;
505
+ updateSelectedAnnotation(config: AnnotationUpdateConfig): void;
506
+ deleteSelectedObject(): void;
507
+ bringSelectedObjectForward(): void;
508
+ sendSelectedObjectBackward(): void;
509
+ bringSelectedObjectToFront(): void;
510
+ sendSelectedObjectToBack(): void;
511
+ private buildAnnotationManagerContext;
512
+ private buildAnnotationListContext;
513
+ private updateAnnotationList;
514
+ private updateAnnotationListSelection;
515
+ private buildTextControllerContext;
516
+ private buildDrawControllerContext;
517
+ private applyTextConfigPatch;
518
+ private applyDrawConfigPatch;
519
+ private applyTextColorInput;
520
+ private applyTextFontSizeInput;
521
+ private applyDrawColorInput;
522
+ private applyDrawBrushSizeInput;
523
+ private getSelectedCanvasObjects;
524
+ private moveSelectedEditableObject;
458
525
  /**
459
526
  * Bakes all current masks into the image:
460
527
  * exports the masked image, removes the masks, and re-imports the result
@@ -482,13 +549,12 @@ export declare class ImageEditor {
482
549
  * the call is a no-op (no DOM action, no download triggered).
483
550
  *
484
551
  * Delegates to {@link downloadImage} in `export/export-service.ts`,
485
- * which builds the data URL through the same pipeline used by
486
- * {@link exportImageBase64} and triggers the anchor-driven download.
552
+ * which renders through the shared export core and triggers an
553
+ * object-URL-backed anchor download.
487
554
  *
488
- * @param fileName - Filename for the downloaded file.
489
- * @default `options.defaultDownloadFileName`
555
+ * @param options - Export and download options.
490
556
  */
491
- downloadImage(fileName?: string): void;
557
+ downloadImage(options?: ImageExportOptions): Promise<void>;
492
558
  /**
493
559
  * Exports the canvas as a Base64-encoded data URL.
494
560
  *
@@ -506,7 +572,7 @@ export declare class ImageEditor {
506
572
  * @returns A promise resolving to a data URL on success, or `''` when
507
573
  * no image is loaded.
508
574
  */
509
- exportImageBase64(options?: Base64ExportOptions): Promise<string>;
575
+ exportImageBase64(options?: ImageExportOptions): Promise<string>;
510
576
  /**
511
577
  * Exports the canvas as a browser `File` object.
512
578
  *
@@ -528,12 +594,12 @@ export declare class ImageEditor {
528
594
  *
529
595
  * @example
530
596
  * ```ts
531
- * const file = await editor.exportImageFile({ fileType: 'png', mergeMask: false});
597
+ * const file = await editor.exportImageFile({ fileType: 'png', mergeMasks: false});
532
598
  * const formData = new FormData;
533
599
  * formData.append('image', file);
534
600
  * ```
535
601
  */
536
- exportImageFile(options?: ImageFileExportOptions): Promise<File>;
602
+ exportImageFile(options?: ImageExportOptions): Promise<File>;
537
603
  /**
538
604
  * Build the {@link ExportServiceContext} the export service reads
539
605
  * through. The facade is the single owner of the canvas, options,
@@ -548,6 +614,7 @@ export declare class ImageEditor {
548
614
  * the merge needs.
549
615
  */
550
616
  private buildMergeMasksContext;
617
+ private buildMergeAnnotationsContext;
551
618
  /**
552
619
  * Capture a snapshot string suitable for `loadFromState` without
553
620
  * pushing it onto the history stack. Used by the merge and crop
@@ -560,6 +627,7 @@ export declare class ImageEditor {
560
627
  */
561
628
  private captureSnapshotInternal;
562
629
  private getActiveMaskForSnapshot;
630
+ private getActiveAnnotationForSnapshot;
563
631
  enterMosaicMode(): void;
564
632
  exitMosaicMode(): void;
565
633
  isMosaicMode(): boolean;
@@ -587,7 +655,15 @@ export declare class ImageEditor {
587
655
  * backups when `crop.hideMasksDuringCrop` is `true`, and adds the
588
656
  * interactive crop rectangle.
589
657
  */
590
- enterCropMode(): void;
658
+ enterCropMode(options?: CropModeOptions): void;
659
+ /**
660
+ * Updates the active crop rectangle's aspect ratio.
661
+ *
662
+ * No-ops unless crop mode is active. Pass `'free'` to unlock the
663
+ * crop rectangle, a preset such as `'1:1'` or `'16:9'`, or a custom
664
+ * ratio such as `{ width: 2, height: 1 }`.
665
+ */
666
+ setCropAspectRatio(aspectRatio: CropAspectRatio): void;
591
667
  /**
592
668
  * Cancels crop mode and removes the crop rectangle without applying
593
669
  * it.
@@ -625,7 +701,9 @@ export declare class ImageEditor {
625
701
  * accessors all bind back to `this`.
626
702
  */
627
703
  private buildCropControllerContext;
704
+ private syncInputValue;
628
705
  private updateInputs;
706
+ mergeAnnotations(): Promise<void>;
629
707
  private updateUi;
630
708
  private setControlEnabled;
631
709
  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, CropAspectRatioPreset, CropAspectRatio, CropModeOptions, 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, ImageExportOptions, 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,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,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,kBAAkB,EAElB,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, CropAspectRatioPreset, CropAspectRatio, CropModeOptions, 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, ImageExportOptions, 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,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,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,kBAAkB,EAElB,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"}