@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.
- package/README.md +460 -509
- package/dist/cjs/index.cjs +6892 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/esm/animation/animation-queue.js +74 -0
- package/dist/esm/animation/animation-queue.js.map +1 -0
- package/dist/esm/core/callback-reporter.js +23 -0
- package/dist/esm/core/callback-reporter.js.map +1 -0
- package/dist/esm/core/default-options.js +529 -0
- package/dist/esm/core/default-options.js.map +1 -0
- package/dist/esm/core/errors.js +156 -0
- package/dist/esm/core/errors.js.map +1 -0
- package/dist/esm/core/operation-guard.js +157 -0
- package/dist/esm/core/operation-guard.js.map +1 -0
- package/dist/esm/core/public-types.js +4 -0
- package/dist/esm/core/public-types.js.map +1 -0
- package/dist/esm/core/state-serializer.js +252 -0
- package/dist/esm/core/state-serializer.js.map +1 -0
- package/dist/esm/crop/crop-controller.js +405 -0
- package/dist/esm/crop/crop-controller.js.map +1 -0
- package/dist/esm/export/export-format.js +53 -0
- package/dist/esm/export/export-format.js.map +1 -0
- package/dist/esm/export/export-service.js +607 -0
- package/dist/esm/export/export-service.js.map +1 -0
- package/dist/esm/fabric/fabric-adapter.js +37 -0
- package/dist/esm/fabric/fabric-adapter.js.map +1 -0
- package/dist/esm/fabric/fabric-animation.js +89 -0
- package/dist/esm/fabric/fabric-animation.js.map +1 -0
- package/dist/esm/history/command.js +2 -0
- package/dist/esm/history/command.js.map +1 -0
- package/dist/esm/history/history-manager.js +103 -0
- package/dist/esm/history/history-manager.js.map +1 -0
- package/dist/esm/image/image-loader.js +238 -0
- package/dist/esm/image/image-loader.js.map +1 -0
- package/dist/esm/image/image-resampler.js +60 -0
- package/dist/esm/image/image-resampler.js.map +1 -0
- package/dist/esm/image/layout-manager.js +206 -0
- package/dist/esm/image/layout-manager.js.map +1 -0
- package/dist/esm/image/transform-controller.js +132 -0
- package/dist/esm/image/transform-controller.js.map +1 -0
- package/dist/esm/image-editor.js +2076 -0
- package/dist/esm/image-editor.js.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mask/mask-factory.js +356 -0
- package/dist/esm/mask/mask-factory.js.map +1 -0
- package/dist/esm/mask/mask-label-manager.js +120 -0
- package/dist/esm/mask/mask-label-manager.js.map +1 -0
- package/dist/esm/mask/mask-list.js +53 -0
- package/dist/esm/mask/mask-list.js.map +1 -0
- package/dist/esm/mask/mask-style.js +182 -0
- package/dist/esm/mask/mask-style.js.map +1 -0
- package/dist/esm/mosaic/mosaic-controller.js +670 -0
- package/dist/esm/mosaic/mosaic-controller.js.map +1 -0
- package/dist/esm/mosaic/mosaic-geometry.js +81 -0
- package/dist/esm/mosaic/mosaic-geometry.js.map +1 -0
- package/dist/esm/mosaic/mosaic-pixelate.js +71 -0
- package/dist/esm/mosaic/mosaic-pixelate.js.map +1 -0
- package/dist/esm/ui/dom-bindings.js +67 -0
- package/dist/esm/ui/dom-bindings.js.map +1 -0
- package/dist/esm/ui/ui-state.js +25 -0
- package/dist/esm/ui/ui-state.js.map +1 -0
- package/dist/esm/ui/visibility-state.js +11 -0
- package/dist/esm/ui/visibility-state.js.map +1 -0
- package/dist/esm/utils/canvas-region.js +100 -0
- package/dist/esm/utils/canvas-region.js.map +1 -0
- package/dist/esm/utils/dom.js +6 -0
- package/dist/esm/utils/dom.js.map +1 -0
- package/dist/esm/utils/file.js +53 -0
- package/dist/esm/utils/file.js.map +1 -0
- package/dist/esm/utils/number.js +24 -0
- package/dist/esm/utils/number.js.map +1 -0
- package/dist/esm/utils/timeout.js +17 -0
- package/dist/esm/utils/timeout.js.map +1 -0
- package/dist/types/animation/animation-queue.d.ts +111 -0
- package/dist/types/animation/animation-queue.d.ts.map +1 -0
- package/dist/types/core/callback-reporter.d.ts +125 -0
- package/dist/types/core/callback-reporter.d.ts.map +1 -0
- package/dist/types/core/default-options.d.ts +84 -0
- package/dist/types/core/default-options.d.ts.map +1 -0
- package/dist/types/core/errors.d.ts +142 -0
- package/dist/types/core/errors.d.ts.map +1 -0
- package/dist/types/core/operation-guard.d.ts +194 -0
- package/dist/types/core/operation-guard.d.ts.map +1 -0
- package/dist/types/core/public-types.d.ts +788 -0
- package/dist/types/core/public-types.d.ts.map +1 -0
- package/dist/types/core/state-serializer.d.ts +303 -0
- package/dist/types/core/state-serializer.d.ts.map +1 -0
- package/dist/types/crop/crop-controller.d.ts +407 -0
- package/dist/types/crop/crop-controller.d.ts.map +1 -0
- package/dist/types/export/export-format.d.ts +136 -0
- package/dist/types/export/export-format.d.ts.map +1 -0
- package/dist/types/export/export-service.d.ts +333 -0
- package/dist/types/export/export-service.d.ts.map +1 -0
- package/dist/types/fabric/fabric-adapter.d.ts +74 -0
- package/dist/types/fabric/fabric-adapter.d.ts.map +1 -0
- package/dist/types/fabric/fabric-animation.d.ts +141 -0
- package/dist/types/fabric/fabric-animation.d.ts.map +1 -0
- package/dist/types/history/command.d.ts +16 -0
- package/dist/types/history/command.d.ts.map +1 -0
- package/dist/types/history/history-manager.d.ts +129 -0
- package/dist/types/history/history-manager.d.ts.map +1 -0
- package/dist/types/image/image-loader.d.ts +263 -0
- package/dist/types/image/image-loader.d.ts.map +1 -0
- package/dist/types/image/image-resampler.d.ts +139 -0
- package/dist/types/image/image-resampler.d.ts.map +1 -0
- package/dist/types/image/layout-manager.d.ts +211 -0
- package/dist/types/image/layout-manager.d.ts.map +1 -0
- package/dist/types/image/transform-controller.d.ts +286 -0
- package/dist/types/image/transform-controller.d.ts.map +1 -0
- package/dist/types/image-editor.d.ts +661 -0
- package/dist/types/image-editor.d.ts.map +1 -0
- package/dist/types/index.d.cts +31 -0
- package/dist/types/index.d.cts.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/mask/mask-factory.d.ts +212 -0
- package/dist/types/mask/mask-factory.d.ts.map +1 -0
- package/dist/types/mask/mask-label-manager.d.ts +171 -0
- package/dist/types/mask/mask-label-manager.d.ts.map +1 -0
- package/dist/types/mask/mask-list.d.ts +144 -0
- package/dist/types/mask/mask-list.d.ts.map +1 -0
- package/dist/types/mask/mask-style.d.ts +338 -0
- package/dist/types/mask/mask-style.d.ts.map +1 -0
- package/dist/types/mosaic/mosaic-controller.d.ts +82 -0
- package/dist/types/mosaic/mosaic-controller.d.ts.map +1 -0
- package/dist/types/mosaic/mosaic-geometry.d.ts +29 -0
- package/dist/types/mosaic/mosaic-geometry.d.ts.map +1 -0
- package/dist/types/mosaic/mosaic-pixelate.d.ts +23 -0
- package/dist/types/mosaic/mosaic-pixelate.d.ts.map +1 -0
- package/dist/types/ui/dom-bindings.d.ts +105 -0
- package/dist/types/ui/dom-bindings.d.ts.map +1 -0
- package/dist/types/ui/ui-state.d.ts +112 -0
- package/dist/types/ui/ui-state.d.ts.map +1 -0
- package/dist/types/ui/visibility-state.d.ts +77 -0
- package/dist/types/ui/visibility-state.d.ts.map +1 -0
- package/dist/types/utils/canvas-region.d.ts +177 -0
- package/dist/types/utils/canvas-region.d.ts.map +1 -0
- package/dist/types/utils/dom.d.ts +26 -0
- package/dist/types/utils/dom.d.ts.map +1 -0
- package/dist/types/utils/file.d.ts +80 -0
- package/dist/types/utils/file.d.ts.map +1 -0
- package/dist/types/utils/number.d.ts +131 -0
- package/dist/types/utils/number.d.ts.map +1 -0
- package/dist/types/utils/timeout.d.ts +84 -0
- package/dist/types/utils/timeout.d.ts.map +1 -0
- package/dist/umd/image-editor.umd.js +2 -0
- package/dist/umd/image-editor.umd.js.map +1 -0
- package/package.json +72 -66
- package/dist/image-editor.cjs +0 -4407
- package/dist/image-editor.cjs.map +0 -7
- package/dist/image-editor.esm.js +0 -4376
- package/dist/image-editor.esm.js.map +0 -7
- package/dist/image-editor.esm.min.js +0 -9
- package/dist/image-editor.esm.min.js.map +0 -7
- package/dist/image-editor.esm.min.mjs +0 -9
- package/dist/image-editor.esm.min.mjs.map +0 -7
- package/dist/image-editor.esm.mjs +0 -4376
- package/dist/image-editor.esm.mjs.map +0 -7
- package/dist/image-editor.js +0 -4373
- package/dist/image-editor.js.map +0 -7
- package/dist/image-editor.min.js +0 -9
- package/dist/image-editor.min.js.map +0 -7
- package/image-editor.d.ts +0 -271
- package/src/browser.js +0 -11
- package/src/esm.js +0 -9
- 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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"}
|