@bensitu/image-editor 1.5.2 → 2.1.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 (166) hide show
  1. package/README.md +460 -509
  2. package/dist/cjs/index.cjs +6892 -0
  3. package/dist/cjs/index.cjs.map +1 -0
  4. package/dist/esm/animation/animation-queue.js +74 -0
  5. package/dist/esm/animation/animation-queue.js.map +1 -0
  6. package/dist/esm/core/callback-reporter.js +23 -0
  7. package/dist/esm/core/callback-reporter.js.map +1 -0
  8. package/dist/esm/core/default-options.js +529 -0
  9. package/dist/esm/core/default-options.js.map +1 -0
  10. package/dist/esm/core/errors.js +156 -0
  11. package/dist/esm/core/errors.js.map +1 -0
  12. package/dist/esm/core/operation-guard.js +157 -0
  13. package/dist/esm/core/operation-guard.js.map +1 -0
  14. package/dist/esm/core/public-types.js +4 -0
  15. package/dist/esm/core/public-types.js.map +1 -0
  16. package/dist/esm/core/state-serializer.js +252 -0
  17. package/dist/esm/core/state-serializer.js.map +1 -0
  18. package/dist/esm/crop/crop-controller.js +405 -0
  19. package/dist/esm/crop/crop-controller.js.map +1 -0
  20. package/dist/esm/export/export-format.js +53 -0
  21. package/dist/esm/export/export-format.js.map +1 -0
  22. package/dist/esm/export/export-service.js +607 -0
  23. package/dist/esm/export/export-service.js.map +1 -0
  24. package/dist/esm/fabric/fabric-adapter.js +37 -0
  25. package/dist/esm/fabric/fabric-adapter.js.map +1 -0
  26. package/dist/esm/fabric/fabric-animation.js +89 -0
  27. package/dist/esm/fabric/fabric-animation.js.map +1 -0
  28. package/dist/esm/history/command.js +2 -0
  29. package/dist/esm/history/command.js.map +1 -0
  30. package/dist/esm/history/history-manager.js +103 -0
  31. package/dist/esm/history/history-manager.js.map +1 -0
  32. package/dist/esm/image/image-loader.js +238 -0
  33. package/dist/esm/image/image-loader.js.map +1 -0
  34. package/dist/esm/image/image-resampler.js +60 -0
  35. package/dist/esm/image/image-resampler.js.map +1 -0
  36. package/dist/esm/image/layout-manager.js +206 -0
  37. package/dist/esm/image/layout-manager.js.map +1 -0
  38. package/dist/esm/image/transform-controller.js +132 -0
  39. package/dist/esm/image/transform-controller.js.map +1 -0
  40. package/dist/esm/image-editor.js +2076 -0
  41. package/dist/esm/image-editor.js.map +1 -0
  42. package/dist/esm/index.js +5 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/mask/mask-factory.js +356 -0
  45. package/dist/esm/mask/mask-factory.js.map +1 -0
  46. package/dist/esm/mask/mask-label-manager.js +120 -0
  47. package/dist/esm/mask/mask-label-manager.js.map +1 -0
  48. package/dist/esm/mask/mask-list.js +53 -0
  49. package/dist/esm/mask/mask-list.js.map +1 -0
  50. package/dist/esm/mask/mask-style.js +182 -0
  51. package/dist/esm/mask/mask-style.js.map +1 -0
  52. package/dist/esm/mosaic/mosaic-controller.js +670 -0
  53. package/dist/esm/mosaic/mosaic-controller.js.map +1 -0
  54. package/dist/esm/mosaic/mosaic-geometry.js +81 -0
  55. package/dist/esm/mosaic/mosaic-geometry.js.map +1 -0
  56. package/dist/esm/mosaic/mosaic-pixelate.js +71 -0
  57. package/dist/esm/mosaic/mosaic-pixelate.js.map +1 -0
  58. package/dist/esm/ui/dom-bindings.js +67 -0
  59. package/dist/esm/ui/dom-bindings.js.map +1 -0
  60. package/dist/esm/ui/ui-state.js +25 -0
  61. package/dist/esm/ui/ui-state.js.map +1 -0
  62. package/dist/esm/ui/visibility-state.js +11 -0
  63. package/dist/esm/ui/visibility-state.js.map +1 -0
  64. package/dist/esm/utils/canvas-region.js +100 -0
  65. package/dist/esm/utils/canvas-region.js.map +1 -0
  66. package/dist/esm/utils/dom.js +6 -0
  67. package/dist/esm/utils/dom.js.map +1 -0
  68. package/dist/esm/utils/file.js +53 -0
  69. package/dist/esm/utils/file.js.map +1 -0
  70. package/dist/esm/utils/number.js +24 -0
  71. package/dist/esm/utils/number.js.map +1 -0
  72. package/dist/esm/utils/timeout.js +17 -0
  73. package/dist/esm/utils/timeout.js.map +1 -0
  74. package/dist/types/animation/animation-queue.d.ts +111 -0
  75. package/dist/types/animation/animation-queue.d.ts.map +1 -0
  76. package/dist/types/core/callback-reporter.d.ts +125 -0
  77. package/dist/types/core/callback-reporter.d.ts.map +1 -0
  78. package/dist/types/core/default-options.d.ts +84 -0
  79. package/dist/types/core/default-options.d.ts.map +1 -0
  80. package/dist/types/core/errors.d.ts +142 -0
  81. package/dist/types/core/errors.d.ts.map +1 -0
  82. package/dist/types/core/operation-guard.d.ts +194 -0
  83. package/dist/types/core/operation-guard.d.ts.map +1 -0
  84. package/dist/types/core/public-types.d.ts +788 -0
  85. package/dist/types/core/public-types.d.ts.map +1 -0
  86. package/dist/types/core/state-serializer.d.ts +303 -0
  87. package/dist/types/core/state-serializer.d.ts.map +1 -0
  88. package/dist/types/crop/crop-controller.d.ts +407 -0
  89. package/dist/types/crop/crop-controller.d.ts.map +1 -0
  90. package/dist/types/export/export-format.d.ts +136 -0
  91. package/dist/types/export/export-format.d.ts.map +1 -0
  92. package/dist/types/export/export-service.d.ts +333 -0
  93. package/dist/types/export/export-service.d.ts.map +1 -0
  94. package/dist/types/fabric/fabric-adapter.d.ts +74 -0
  95. package/dist/types/fabric/fabric-adapter.d.ts.map +1 -0
  96. package/dist/types/fabric/fabric-animation.d.ts +141 -0
  97. package/dist/types/fabric/fabric-animation.d.ts.map +1 -0
  98. package/dist/types/history/command.d.ts +16 -0
  99. package/dist/types/history/command.d.ts.map +1 -0
  100. package/dist/types/history/history-manager.d.ts +129 -0
  101. package/dist/types/history/history-manager.d.ts.map +1 -0
  102. package/dist/types/image/image-loader.d.ts +263 -0
  103. package/dist/types/image/image-loader.d.ts.map +1 -0
  104. package/dist/types/image/image-resampler.d.ts +139 -0
  105. package/dist/types/image/image-resampler.d.ts.map +1 -0
  106. package/dist/types/image/layout-manager.d.ts +211 -0
  107. package/dist/types/image/layout-manager.d.ts.map +1 -0
  108. package/dist/types/image/transform-controller.d.ts +286 -0
  109. package/dist/types/image/transform-controller.d.ts.map +1 -0
  110. package/dist/types/image-editor.d.ts +661 -0
  111. package/dist/types/image-editor.d.ts.map +1 -0
  112. package/dist/types/index.d.cts +31 -0
  113. package/dist/types/index.d.cts.map +1 -0
  114. package/dist/types/index.d.ts +31 -0
  115. package/dist/types/index.d.ts.map +1 -0
  116. package/dist/types/mask/mask-factory.d.ts +212 -0
  117. package/dist/types/mask/mask-factory.d.ts.map +1 -0
  118. package/dist/types/mask/mask-label-manager.d.ts +171 -0
  119. package/dist/types/mask/mask-label-manager.d.ts.map +1 -0
  120. package/dist/types/mask/mask-list.d.ts +144 -0
  121. package/dist/types/mask/mask-list.d.ts.map +1 -0
  122. package/dist/types/mask/mask-style.d.ts +338 -0
  123. package/dist/types/mask/mask-style.d.ts.map +1 -0
  124. package/dist/types/mosaic/mosaic-controller.d.ts +82 -0
  125. package/dist/types/mosaic/mosaic-controller.d.ts.map +1 -0
  126. package/dist/types/mosaic/mosaic-geometry.d.ts +29 -0
  127. package/dist/types/mosaic/mosaic-geometry.d.ts.map +1 -0
  128. package/dist/types/mosaic/mosaic-pixelate.d.ts +23 -0
  129. package/dist/types/mosaic/mosaic-pixelate.d.ts.map +1 -0
  130. package/dist/types/ui/dom-bindings.d.ts +105 -0
  131. package/dist/types/ui/dom-bindings.d.ts.map +1 -0
  132. package/dist/types/ui/ui-state.d.ts +112 -0
  133. package/dist/types/ui/ui-state.d.ts.map +1 -0
  134. package/dist/types/ui/visibility-state.d.ts +77 -0
  135. package/dist/types/ui/visibility-state.d.ts.map +1 -0
  136. package/dist/types/utils/canvas-region.d.ts +177 -0
  137. package/dist/types/utils/canvas-region.d.ts.map +1 -0
  138. package/dist/types/utils/dom.d.ts +26 -0
  139. package/dist/types/utils/dom.d.ts.map +1 -0
  140. package/dist/types/utils/file.d.ts +80 -0
  141. package/dist/types/utils/file.d.ts.map +1 -0
  142. package/dist/types/utils/number.d.ts +131 -0
  143. package/dist/types/utils/number.d.ts.map +1 -0
  144. package/dist/types/utils/timeout.d.ts +84 -0
  145. package/dist/types/utils/timeout.d.ts.map +1 -0
  146. package/dist/umd/image-editor.umd.js +2 -0
  147. package/dist/umd/image-editor.umd.js.map +1 -0
  148. package/package.json +72 -66
  149. package/dist/image-editor.cjs +0 -4407
  150. package/dist/image-editor.cjs.map +0 -7
  151. package/dist/image-editor.esm.js +0 -4376
  152. package/dist/image-editor.esm.js.map +0 -7
  153. package/dist/image-editor.esm.min.js +0 -9
  154. package/dist/image-editor.esm.min.js.map +0 -7
  155. package/dist/image-editor.esm.min.mjs +0 -9
  156. package/dist/image-editor.esm.min.mjs.map +0 -7
  157. package/dist/image-editor.esm.mjs +0 -4376
  158. package/dist/image-editor.esm.mjs.map +0 -7
  159. package/dist/image-editor.js +0 -4373
  160. package/dist/image-editor.js.map +0 -7
  161. package/dist/image-editor.min.js +0 -9
  162. package/dist/image-editor.min.js.map +0 -7
  163. package/image-editor.d.ts +0 -271
  164. package/src/browser.js +0 -11
  165. package/src/esm.js +0 -9
  166. package/src/image-editor.js +0 -5013
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-types.d.ts","sourceRoot":"","sources":["../../../src/core/public-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * Serializer for the editor's history-and-restore snapshot
3
+ * wire format. Owns `saveState` and `loadFromState` so the
4
+ * serialization format and the position-based metadata restorer
5
+ * live in a single module.
6
+ *
7
+ * ## Owned contracts
8
+ *
9
+ * - `saveState` SHALL serialize the canvas via
10
+ * `canvas.toJSON([...customKeys])` including the custom keys
11
+ * `maskId`, `maskUid`, `maskName`, `isCropRect`, `maskLabel`, and `originalAlpha`.
12
+ * Crop rectangles (`isCropRect === true`) and mask labels
13
+ * (`maskLabel === true`) are filtered out before the snapshot is
14
+ * pushed to history — they are session-only objects.
15
+ * - Every snapshot SHALL embed an `_editorState`
16
+ * object containing `currentScale`, `currentRotation`, and
17
+ * `baseImageScale` so undo/redo can fully restore editor metadata.
18
+ * When a single mask is active, `_editorState.activeMaskId` records
19
+ * that mask so the facade can rebuild the transient label/list
20
+ * selection after `loadFromState`.
21
+ * - Falsy style values such as `strokeWidth: 0`
22
+ * or `hasControls: false` reach the snapshot unchanged because Fabric's
23
+ * `toJSON` preserves them and this module performs no defaulting on
24
+ * the per-object payload.
25
+ * - Any active Fabric `ActiveSelection` is
26
+ * discarded before serialization so the multi-object selection wrapper
27
+ * never leaks into history.
28
+ * - The serialized form is the JSON snapshot
29
+ * string consumed by `loadFromState`, providing the round-trip
30
+ * property `loadFromState(saveState(S)) ≈ S`.
31
+ *
32
+ * The pre-snapshot label-hide step and the post-snapshot label-restore
33
+ * step live in `mask/mask-label-manager.ts`; the `ImageEditor` facade
34
+ * brackets the call to {@link saveState} with those helpers so labels
35
+ * (which are session-only `maskLabel === true` objects) never appear in
36
+ * the serialized payload even if they happen to be on the canvas.
37
+ *
38
+ * Owner module references (per the documented "Mapping Contracts to
39
+ * modules" table): this module is imported by `image-editor.ts`,
40
+ * `crop/crop-controller.ts`, and `export/export-service.ts`. It is
41
+ * intentionally NOT re-exported from `src/index.ts`.
42
+ *
43
+ * @module
44
+ */
45
+ import type * as FabricNS from 'fabric';
46
+ import type { ImageMimeType } from './public-types.js';
47
+ /**
48
+ * Per-object payload inside a {@link CanvasJson} snapshot. Mirrors the
49
+ * Pretty_Printer wire format used by the canvas serializer.
50
+ *
51
+ * The `isCropRect` and `maskLabel` markers are filtered out by
52
+ * {@link saveState}, so a snapshot pushed to history will never contain
53
+ * them — they are listed here purely for the live-canvas pre-filter
54
+ * type. Custom mask metadata (`maskId`, `maskName`, `originalAlpha`) is
55
+ * carried through verbatim.
56
+ */
57
+ export interface CanvasJsonObject {
58
+ /** Fabric shape type discriminator (`'rect'`, `'circle'`, `'image'`, etc.). */
59
+ type?: string;
60
+ /** Left-edge pixel coordinate (Fabric serializes `originX: 'left'` masks here). */
61
+ left?: number;
62
+ /** Top-edge pixel coordinate. */
63
+ top?: number;
64
+ /** Stable mask identifier. */
65
+ maskId?: number;
66
+ /** Stable internal mask identifier used for deterministic restore. */
67
+ maskUid?: string;
68
+ /** Mask family name passed through `MaskConfig.name`. */
69
+ maskName?: string;
70
+ /** Pre-crop alpha cached so `cancelCrop` can restore it. */
71
+ originalAlpha?: number;
72
+ /** Stroke captured before transient hover or selection styling. */
73
+ originalStroke?: unknown;
74
+ /** Stroke width captured before transient hover or selection styling. */
75
+ originalStrokeWidth?: number;
76
+ /** Fabric control visibility flag. */
77
+ hasControls?: boolean;
78
+ /** Fabric selection flag. */
79
+ selectable?: boolean;
80
+ /** Fabric uniform stroke scaling flag. */
81
+ strokeUniform?: boolean;
82
+ /** Fabric rotation lock flag. */
83
+ lockRotation?: boolean;
84
+ /** Fabric transparent corner control flag. */
85
+ transparentCorners?: boolean;
86
+ /** Fabric selection border color. */
87
+ borderColor?: string;
88
+ /** Fabric corner control color. */
89
+ cornerColor?: string;
90
+ /** Fabric corner control size. */
91
+ cornerSize?: number;
92
+ /** Marks the transient crop rectangle; filtered before history push. */
93
+ isCropRect?: boolean;
94
+ /** Marks a mask label text object; filtered before history push. */
95
+ maskLabel?: boolean;
96
+ /** Marks Mosaic preview objects; filtered before history push. */
97
+ isMosaicPreview?: boolean;
98
+ /** Pass-through for every other Fabric-serialized shape property. */
99
+ [key: string]: unknown;
100
+ }
101
+ /**
102
+ * Editor-level metadata embedded into every snapshot so undo/redo can
103
+ * restore not just the canvas objects but also the transform state that
104
+ * the toolbar UI mirrors.
105
+ */
106
+ export interface EditorStateMeta {
107
+ /** Current zoom factor on the active image. */
108
+ currentScale: number;
109
+ /** Current rotation in degrees on the active image. */
110
+ currentRotation: number;
111
+ /** Base scale chosen by the layout manager when the image was loaded. */
112
+ baseImageScale: number;
113
+ /** MIME type of the currently committed image, when known. */
114
+ currentImageMimeType?: ImageMimeType | null;
115
+ /** Mask selected when the snapshot was captured, if any. */
116
+ activeMaskId?: number;
117
+ }
118
+ /**
119
+ * Full snapshot envelope. Standard Fabric `toJSON` keys plus the editor
120
+ * extension fields owned by this module.
121
+ */
122
+ export interface CanvasJson {
123
+ /** Fabric format version stamped by `canvas.toJSON`. */
124
+ version?: string;
125
+ /** Canvas pixel width — included by Fabric's `toJSON`. */
126
+ width?: number;
127
+ /** Canvas pixel height — included by Fabric's `toJSON`. */
128
+ height?: number;
129
+ /** Canvas CSS background — included by Fabric's `toJSON`. */
130
+ background?: string;
131
+ /** Per-object Fabric payloads, post-filter. */
132
+ objects?: CanvasJsonObject[];
133
+ /** Editor transform metadata. */
134
+ _editorState?: EditorStateMeta;
135
+ /** Pass-through for any other Fabric-emitted top-level keys. */
136
+ [key: string]: unknown;
137
+ }
138
+ /**
139
+ * The exact set of custom property names passed to `canvas.toJSON` so
140
+ * Fabric serializes them onto each object. Frozen as a tuple so callers
141
+ * cannot mutate the shared array.
142
+ *
143
+ */
144
+ export declare const SNAPSHOT_CUSTOM_KEYS: readonly ["maskId", "maskUid", "maskName", "isCropRect", "maskLabel", "originalAlpha", "originalStroke", "originalStrokeWidth", "hasControls", "selectable", "strokeUniform", "lockRotation", "transparentCorners", "borderColor", "cornerColor", "cornerSize", "isMosaicPreview"];
145
+ /**
146
+ * Inputs to {@link saveState}. The editor facade passes the live canvas
147
+ * plus the three transform fields that make up `_editorState`.
148
+ */
149
+ export interface SaveStateInput {
150
+ /** Fabric canvas to serialize. */
151
+ canvas: FabricNS.Canvas;
152
+ /** Active mask id supplied by the facade when Fabric active state is unavailable. */
153
+ activeMaskId?: number | null;
154
+ /** Current image zoom factor (mirrored into `_editorState.currentScale`). */
155
+ currentScale: number;
156
+ /** Current image rotation in degrees (mirrored into `_editorState.currentRotation`). */
157
+ currentRotation: number;
158
+ /** Base scale chosen at load time (mirrored into `_editorState.baseImageScale`). */
159
+ baseImageScale: number;
160
+ /** MIME type of the current image, persisted for source-preserving crop. */
161
+ currentImageMimeType?: ImageMimeType | null;
162
+ }
163
+ /**
164
+ * Serialize the current canvas into the snapshot string consumed by
165
+ * `loadFromState` and stored in the undo/redo history.
166
+ *
167
+ * Steps, in order:
168
+ *
169
+ * 1. Discard any active Fabric `ActiveSelection` so multi-object
170
+ * selection wrappers never appear in the snapshot.
171
+ * 2. Call `canvas.toJSON([...SNAPSHOT_CUSTOM_KEYS])` so the custom mask
172
+ * metadata keys (`maskId`, `maskName`, `isCropRect`, `maskLabel`,
173
+ * `originalAlpha`) are serialized onto each object.
174
+ * 3. Filter out objects whose `isCropRect === true` (transient crop
175
+ * rectangle) or `maskLabel === true` (transient label text) — those
176
+ * are session-only and must never enter history.
177
+ * 4. Embed an `_editorState` object with `currentScale`,
178
+ * `currentRotation`, and `baseImageScale` so undo/redo restores the
179
+ * full transform state.
180
+ * 5. Return `JSON.stringify(snapshot)`.
181
+ *
182
+ * Falsy style values (`strokeWidth: 0`, `hasControls: false`, etc.) are
183
+ * preserved verbatim because no defaulting happens on the serialized
184
+ * payload.
185
+ *
186
+ * The function is pure with respect to the canvas object set — it does
187
+ * not add or remove canvas objects. It only discards Fabric's multi-object
188
+ * `ActiveSelection` wrapper and preserves ordinary single-object selection
189
+ * state.
190
+ *
191
+ * @param input - The canvas plus the three transform fields to embed.
192
+ * @returns The JSON snapshot string ready for the history stack.
193
+ *
194
+ */
195
+ export declare function saveState(input: SaveStateInput): string;
196
+ /**
197
+ * Inputs to {@link loadFromState}. The editor facade passes the live canvas,
198
+ * the snapshot to restore, and a callback that atomically sets the canvas
199
+ * pixel dimensions (delegating to `image/layout-manager.ts`).
200
+ */
201
+ export interface LoadFromStateInput {
202
+ /** Fabric canvas to deserialize into. */
203
+ canvas: FabricNS.Canvas;
204
+ /**
205
+ * The snapshot to restore. May be the JSON string emitted by
206
+ * {@link saveState} or the already-parsed {@link CanvasJson} object — both
207
+ * are accepted because callers occasionally hand in a pre-parsed object
208
+ * (for example, when chaining through the crop session). The value is
209
+ * always normalized to a string via `JSON.stringify` if necessary so the
210
+ * returned `jsonString` is canonical.
211
+ */
212
+ jsonString: string | CanvasJson;
213
+ /**
214
+ * Sets canvas pixel dimensions atomically. The pixel size is restored
215
+ * before `loadFromJSON`.
216
+ */
217
+ setCanvasSize: (width: number, height: number) => void;
218
+ }
219
+ /**
220
+ * Output of {@link loadFromState}. The state serializer performs the
221
+ * snapshot-format-aware steps and returns the restored metadata so the
222
+ * editor facade can finish wiring transient state (mask label hiding,
223
+ * `originalImage` selectability, hover-handler re-attach, `lastSnapshot`
224
+ * baseline, UI refresh) — those concerns belong to the facade, not to the
225
+ * serializer.
226
+ *
227
+ */
228
+ export interface LoadFromStateResult {
229
+ /**
230
+ * Restored editor transform metadata from `_editorState`, or `null` when
231
+ * the snapshot did not carry one (older snapshots, hand-built JSON, or
232
+ * any payload that omitted the optional field). The facade decides
233
+ * whether to apply the values, so this is forwarded verbatim.
234
+ */
235
+ editorState: EditorStateMeta | null;
236
+ /**
237
+ * Highest `maskId` observed on restored mask objects, or `0` if none
238
+ * exist. The facade assigns this to `maskCounter` so subsequent
239
+ * `createMask` calls do not collide with restored IDs.
240
+ */
241
+ maxMaskId: number;
242
+ /**
243
+ * The first `'image'` object that is NOT a mask, or `null`. Used by the
244
+ * facade to set `selectable: false`, `evented: false`, and to send the
245
+ * image to the back of the stacking order. The serializer does not
246
+ * mutate the object itself.
247
+ */
248
+ originalImage: FabricNS.FabricImage | null;
249
+ /**
250
+ * All canvas objects after restore, in `getObjects` order. The facade
251
+ * uses this list to re-attach mask hover handlers and to drive the
252
+ * `isImageLoadedToCanvas` flag.
253
+ */
254
+ objects: FabricNS.FabricObject[];
255
+ /**
256
+ * The canonical JSON string for the snapshot — equal to the input string
257
+ * if a string was passed, or `JSON.stringify(input)` if a `CanvasJson`
258
+ * object was passed. The facade uses this as the `lastSnapshot` baseline
259
+ * so the next `saveState` produces a correct `before` pointer.
260
+ */
261
+ jsonString: string;
262
+ }
263
+ /**
264
+ * Restore a snapshot produced by {@link saveState} into the live canvas.
265
+ *
266
+ * Steps, in order:
267
+ *
268
+ * 1. Normalize the input to a JSON string and parse it. Both string and
269
+ * pre-parsed forms are accepted to support callers that already hold a
270
+ * `CanvasJson` (for example, a crop-session snapshot).
271
+ * 2. Restore canvas pixel dimensions via `setCanvasSize` BEFORE calling
272
+ * `loadFromJSON`. Fabric's `loadFromJSON` may also touch width/height,
273
+ * but the explicit pre-call ensures the canvas matches the snapshot
274
+ * even if the fabric build skips that step.
275
+ * 3. Await `canvas.loadFromJSON(json)` (Fabric v7 returns a Promise here,
276
+ * 4. Run {@link restoreMaskPropsFromJson} to position-match each JSON
277
+ * mask object against the freshly-loaded canvas objects by `maskUid`
278
+ * first, then by legacy `(type, left, top)`, and unconditionally re-apply the mask metadata
279
+ * (`maskId`, `maskName`, `originalAlpha`). Label-text objects are
280
+ * re-flagged via a parallel index-based pass. This is required because
281
+ * Fabric v7's `_setOptions` is inconsistent across point releases for
282
+ * unknown shape properties, and `getObjects` order may not match
283
+ * `json.objects` order.
284
+ * 5. Compute and return `editorState`, `maxMaskId`, `originalImage`,
285
+ * `objects`, and the canonical `jsonString` so the facade can finish
286
+ * the restore.
287
+ *
288
+ * The function does NOT call `renderAll`, does NOT mutate `originalImage`
289
+ * properties, and does NOT touch the editor's `lastSnapshot` field —
290
+ * those are facade concerns. This keeps the serializer free of
291
+ * editor-instance state and makes the round-trip property of
292
+ * round-trip property testable in isolation.
293
+ *
294
+ * Errors are propagated to the caller. The facade wraps the call in a
295
+ * `try/catch` and routes the error through the callback reporter so the
296
+ * editor's `onError` handler still fires.
297
+ *
298
+ * @param input - The canvas, the snapshot, and the size-restore callback.
299
+ * @returns Resolves with the restored metadata bundle.
300
+ *
301
+ */
302
+ export declare function loadFromState(input: LoadFromStateInput): Promise<LoadFromStateResult>;
303
+ //# sourceMappingURL=state-serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-serializer.d.ts","sourceRoot":"","sources":["../../../src/core/state-serializer.ts"],"names":[],"mappings":"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"}