@bensitu/image-editor 1.2.1 → 1.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.
package/image-editor.d.ts CHANGED
@@ -4,13 +4,16 @@ declare module '@bensitu/image-editor' {
4
4
  import { Canvas, Image as FabricImage, Object as FabricObject } from 'fabric';
5
5
 
6
6
  export interface LabelOptions {
7
- getText?: (mask: MaskObject, maskIndex: number) => string;
7
+ /** Receives the mask and its stable zero-based creation index (`mask.maskId - 1`). */
8
+ getText?: (mask: MaskObject, creationIndex: number) => string;
8
9
  create?: (mask: MaskObject, fabric: any) => FabricObject;
9
10
  textOptions?: Record<string, any>;
10
11
  }
11
12
 
12
13
  export interface CropOptions {
14
+ /** Minimum crop rectangle width, clamped to the current image bounds. */
13
15
  minWidth?: number;
16
+ /** Minimum crop rectangle height, clamped to the current image bounds. */
14
17
  minHeight?: number;
15
18
  padding?: number;
16
19
  hideMasksDuringCrop?: boolean;
@@ -36,6 +39,7 @@ declare module '@bensitu/image-editor' {
36
39
  downsampleMaxWidth?: number;
37
40
  downsampleMaxHeight?: number;
38
41
  downsampleQuality?: number;
42
+ imageLoadTimeoutMs?: number;
39
43
 
40
44
  exportMultiplier?: number;
41
45
  exportImageAreaByDefault?: boolean;
@@ -95,7 +99,7 @@ declare module '@bensitu/image-editor' {
95
99
  radius?: number | string | ((canvas: Canvas, options: ImageEditorOptions) => number);
96
100
  rx?: number | string | ((canvas: Canvas, options: ImageEditorOptions) => number);
97
101
  ry?: number | string | ((canvas: Canvas, options: ImageEditorOptions) => number);
98
- points?: Array<{ x: number; y: number }>;
102
+ points?: Array<{ x: number; y: number }> | Array<[number, number]>;
99
103
  color?: string;
100
104
  alpha?: number;
101
105
  gap?: number;
@@ -124,6 +128,9 @@ declare module '@bensitu/image-editor' {
124
128
  export interface Base64ExportOptions {
125
129
  exportImageArea?: boolean;
126
130
  multiplier?: number;
131
+ quality?: number;
132
+ fileType?: 'jpeg' | 'jpg' | 'png' | 'webp' | 'image/jpeg' | 'image/png' | 'image/webp';
133
+ format?: 'jpeg' | 'jpg' | 'png' | 'webp' | 'image/jpeg' | 'image/png' | 'image/webp';
127
134
  }
128
135
 
129
136
  export interface ImageFileExportOptions {
@@ -134,11 +141,26 @@ declare module '@bensitu/image-editor' {
134
141
  fileName?: string;
135
142
  }
136
143
 
144
+ export interface RemoveAllMasksOptions {
145
+ saveHistory?: boolean;
146
+ }
147
+
148
+ export interface LoadImageOptions {
149
+ preserveScroll?: boolean;
150
+ }
151
+
137
152
  export class ImageEditor {
138
153
  readonly options: ImageEditorOptions;
139
154
  readonly canvas: Canvas | null;
155
+ readonly canvasElement: HTMLCanvasElement | null;
156
+ readonly containerElement: HTMLElement | null;
157
+ readonly placeholderElement: HTMLElement | null;
158
+ /** @deprecated Use canvasElement instead. This alias will be removed in v2.0.0. */
140
159
  readonly canvasEl: HTMLCanvasElement | null;
160
+ /** @deprecated Use containerElement instead. This alias will be removed in v2.0.0. */
141
161
  readonly containerEl: HTMLElement | null;
162
+ /** @deprecated Use placeholderElement instead. This alias will be removed in v2.0.0. */
163
+ readonly placeholderEl: HTMLElement | null;
142
164
  readonly originalImage: FabricImage | null;
143
165
  readonly currentScale: number;
144
166
  readonly currentRotation: number;
@@ -149,30 +171,40 @@ declare module '@bensitu/image-editor' {
149
171
  constructor(options?: ImageEditorOptions);
150
172
 
151
173
  init(idMap?: ElementIdMap): void;
152
- loadImage(base64: string): Promise<void>;
174
+ loadImage(imageBase64: string, options?: LoadImageOptions): Promise<void>;
153
175
  isImageLoaded(): boolean;
154
176
 
177
+ /** Public callers should pass only `factor`; internal history control options are intentionally not exposed. */
155
178
  scaleImage(factor: number): Promise<void>;
179
+ /** Public callers should pass only `degrees`; internal history control options are intentionally not exposed. */
156
180
  rotateImage(degrees: number): Promise<void>;
181
+ resetImageTransform(): Promise<void>;
182
+ /** @deprecated Use resetImageTransform() instead. This alias will be removed in v2.0.0. */
157
183
  reset(): Promise<void>;
158
184
 
185
+ createMask(config?: MaskConfig): MaskObject | null;
186
+ /** @deprecated Use createMask() instead. This alias will be removed in v2.0.0. */
159
187
  addMask(config?: MaskConfig): MaskObject | null;
160
188
  removeSelectedMask(): void;
161
- removeAllMasks(): void;
189
+ removeAllMasks(options?: RemoveAllMasksOptions): void;
162
190
 
191
+ mergeMasks(): Promise<void>;
192
+ /** @deprecated Use mergeMasks() instead. This alias will be removed in v2.0.0. */
163
193
  merge(): Promise<void>;
164
194
  downloadImage(fileName?: string): void;
165
- getImageBase64(opts?: Base64ExportOptions): Promise<string>;
166
- exportImageFile(opts?: ImageFileExportOptions): Promise<File>;
195
+ exportImageBase64(options?: Base64ExportOptions): Promise<string>;
196
+ /** @deprecated Use exportImageBase64() instead. This alias will be removed in v2.0.0. */
197
+ getImageBase64(options?: Base64ExportOptions): Promise<string>;
198
+ exportImageFile(options?: ImageFileExportOptions): Promise<File>;
167
199
 
168
200
  enterCropMode(): void;
169
201
  cancelCrop(): void;
170
202
  applyCrop(): Promise<void>;
171
203
 
172
- undo(): void;
173
- redo(): void;
204
+ undo(): Promise<void>;
205
+ redo(): Promise<void>;
174
206
  saveState(): void;
175
- loadFromState(jsonString: string | object): void;
207
+ loadFromState(serializedState: string | object): Promise<void>;
176
208
 
177
209
  dispose(): void;
178
210
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bensitu/image-editor",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "Lightweight canvas-based image editor",
5
5
  "main": "./dist/image-editor.js",
6
6
  "module": "./dist/image-editor.esm.mjs",