@bensitu/image-editor 1.2.2 → 1.3.1

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;
@@ -141,17 +145,21 @@ declare module '@bensitu/image-editor' {
141
145
  saveHistory?: boolean;
142
146
  }
143
147
 
148
+ export interface LoadImageOptions {
149
+ preserveScroll?: boolean;
150
+ }
151
+
144
152
  export class ImageEditor {
145
153
  readonly options: ImageEditorOptions;
146
154
  readonly canvas: Canvas | null;
147
155
  readonly canvasElement: HTMLCanvasElement | null;
148
156
  readonly containerElement: HTMLElement | null;
149
157
  readonly placeholderElement: HTMLElement | null;
150
- /** @deprecated Use canvasElement instead. */
158
+ /** @deprecated Use canvasElement instead. This alias will be removed in v2.0.0. */
151
159
  readonly canvasEl: HTMLCanvasElement | null;
152
- /** @deprecated Use containerElement instead. */
160
+ /** @deprecated Use containerElement instead. This alias will be removed in v2.0.0. */
153
161
  readonly containerEl: HTMLElement | null;
154
- /** @deprecated Use placeholderElement instead. */
162
+ /** @deprecated Use placeholderElement instead. This alias will be removed in v2.0.0. */
155
163
  readonly placeholderEl: HTMLElement | null;
156
164
  readonly originalImage: FabricImage | null;
157
165
  readonly currentScale: number;
@@ -163,27 +171,29 @@ declare module '@bensitu/image-editor' {
163
171
  constructor(options?: ImageEditorOptions);
164
172
 
165
173
  init(idMap?: ElementIdMap): void;
166
- loadImage(imageBase64: string): Promise<void>;
174
+ loadImage(imageBase64: string, options?: LoadImageOptions): Promise<void>;
167
175
  isImageLoaded(): boolean;
168
176
 
177
+ /** Public callers should pass only `factor`; internal history control options are intentionally not exposed. */
169
178
  scaleImage(factor: number): Promise<void>;
179
+ /** Public callers should pass only `degrees`; internal history control options are intentionally not exposed. */
170
180
  rotateImage(degrees: number): Promise<void>;
171
181
  resetImageTransform(): Promise<void>;
172
- /** @deprecated Use resetImageTransform() instead. */
182
+ /** @deprecated Use resetImageTransform() instead. This alias will be removed in v2.0.0. */
173
183
  reset(): Promise<void>;
174
184
 
175
185
  createMask(config?: MaskConfig): MaskObject | null;
176
- /** @deprecated Use createMask() instead. */
186
+ /** @deprecated Use createMask() instead. This alias will be removed in v2.0.0. */
177
187
  addMask(config?: MaskConfig): MaskObject | null;
178
188
  removeSelectedMask(): void;
179
189
  removeAllMasks(options?: RemoveAllMasksOptions): void;
180
190
 
181
191
  mergeMasks(): Promise<void>;
182
- /** @deprecated Use mergeMasks() instead. */
192
+ /** @deprecated Use mergeMasks() instead. This alias will be removed in v2.0.0. */
183
193
  merge(): Promise<void>;
184
194
  downloadImage(fileName?: string): void;
185
195
  exportImageBase64(options?: Base64ExportOptions): Promise<string>;
186
- /** @deprecated Use exportImageBase64() instead. */
196
+ /** @deprecated Use exportImageBase64() instead. This alias will be removed in v2.0.0. */
187
197
  getImageBase64(options?: Base64ExportOptions): Promise<string>;
188
198
  exportImageFile(options?: ImageFileExportOptions): Promise<File>;
189
199
 
@@ -194,7 +204,7 @@ declare module '@bensitu/image-editor' {
194
204
  undo(): Promise<void>;
195
205
  redo(): Promise<void>;
196
206
  saveState(): void;
197
- loadFromState(jsonString: string | object): Promise<void>;
207
+ loadFromState(serializedState: string | object): Promise<void>;
198
208
 
199
209
  dispose(): void;
200
210
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bensitu/image-editor",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "description": "Lightweight canvas-based image editor",
5
5
  "main": "./dist/image-editor.js",
6
6
  "module": "./dist/image-editor.esm.mjs",
@@ -16,7 +16,7 @@
16
16
  "dev": "node esbuild.config.mjs --watch",
17
17
  "build": "node esbuild.config.mjs",
18
18
  "build:babel": "babel src --out-dir dist --copy-files",
19
- "lint": "eslint src --ext .js",
19
+ "lint": "eslint src",
20
20
  "test": "npm run build && node --test tests/image-editor.test.mjs tests/package.test.mjs"
21
21
  },
22
22
  "repository": {
@@ -33,6 +33,9 @@
33
33
  "peerDependencies": {
34
34
  "fabric": "^5.5.2"
35
35
  },
36
+ "overrides": {
37
+ "canvas": "^3.2.3"
38
+ },
36
39
  "publishConfig": {
37
40
  "access": "public"
38
41
  },
@@ -40,9 +43,11 @@
40
43
  "@babel/cli": "^7.22.9",
41
44
  "@babel/core": "^7.22.9",
42
45
  "@babel/preset-env": "^7.22.9",
43
- "esbuild": "^0.19.12",
46
+ "@eslint/js": "^10.0.1",
47
+ "esbuild": "^0.28.0",
44
48
  "esbuild-plugin-babel": "^0.2.3",
45
- "eslint": "^8.49.0"
49
+ "eslint": "^10.4.0",
50
+ "globals": "^17.6.0"
46
51
  },
47
52
  "browserslist": [
48
53
  "Chrome >= 100",