@bensitu/image-editor 2.0.0 → 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 (83) hide show
  1. package/README.md +118 -16
  2. package/dist/cjs/index.cjs +1800 -330
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/esm/animation/animation-queue.js +16 -9
  5. package/dist/esm/animation/animation-queue.js.map +1 -1
  6. package/dist/esm/core/default-options.js +216 -9
  7. package/dist/esm/core/default-options.js.map +1 -1
  8. package/dist/esm/core/operation-guard.js +28 -0
  9. package/dist/esm/core/operation-guard.js.map +1 -1
  10. package/dist/esm/core/public-types.js.map +1 -1
  11. package/dist/esm/core/state-serializer.js +5 -4
  12. package/dist/esm/core/state-serializer.js.map +1 -1
  13. package/dist/esm/crop/crop-controller.js +4 -2
  14. package/dist/esm/crop/crop-controller.js.map +1 -1
  15. package/dist/esm/export/export-service.js +21 -10
  16. package/dist/esm/export/export-service.js.map +1 -1
  17. package/dist/esm/fabric/fabric-animation.js +56 -4
  18. package/dist/esm/fabric/fabric-animation.js.map +1 -1
  19. package/dist/esm/image/image-loader.js +9 -16
  20. package/dist/esm/image/image-loader.js.map +1 -1
  21. package/dist/esm/image/image-resampler.js +7 -2
  22. package/dist/esm/image/image-resampler.js.map +1 -1
  23. package/dist/esm/image/layout-manager.js +2 -20
  24. package/dist/esm/image/layout-manager.js.map +1 -1
  25. package/dist/esm/image/transform-controller.js.map +1 -1
  26. package/dist/esm/image-editor.js +383 -47
  27. package/dist/esm/image-editor.js.map +1 -1
  28. package/dist/esm/mask/mask-factory.js +53 -29
  29. package/dist/esm/mask/mask-factory.js.map +1 -1
  30. package/dist/esm/mask/mask-list.js +9 -3
  31. package/dist/esm/mask/mask-list.js.map +1 -1
  32. package/dist/esm/mosaic/mosaic-controller.js +670 -0
  33. package/dist/esm/mosaic/mosaic-controller.js.map +1 -0
  34. package/dist/esm/mosaic/mosaic-geometry.js +81 -0
  35. package/dist/esm/mosaic/mosaic-geometry.js.map +1 -0
  36. package/dist/esm/mosaic/mosaic-pixelate.js +71 -0
  37. package/dist/esm/mosaic/mosaic-pixelate.js.map +1 -0
  38. package/dist/esm/ui/dom-bindings.js +10 -3
  39. package/dist/esm/ui/dom-bindings.js.map +1 -1
  40. package/dist/esm/utils/number.js.map +1 -1
  41. package/dist/types/animation/animation-queue.d.ts.map +1 -1
  42. package/dist/types/core/default-options.d.ts +34 -6
  43. package/dist/types/core/default-options.d.ts.map +1 -1
  44. package/dist/types/core/errors.d.ts +1 -1
  45. package/dist/types/core/operation-guard.d.ts +2 -0
  46. package/dist/types/core/operation-guard.d.ts.map +1 -1
  47. package/dist/types/core/public-types.d.ts +123 -13
  48. package/dist/types/core/public-types.d.ts.map +1 -1
  49. package/dist/types/core/state-serializer.d.ts +3 -1
  50. package/dist/types/core/state-serializer.d.ts.map +1 -1
  51. package/dist/types/crop/crop-controller.d.ts.map +1 -1
  52. package/dist/types/export/export-service.d.ts.map +1 -1
  53. package/dist/types/fabric/fabric-animation.d.ts.map +1 -1
  54. package/dist/types/image/image-loader.d.ts +2 -4
  55. package/dist/types/image/image-loader.d.ts.map +1 -1
  56. package/dist/types/image/image-resampler.d.ts +1 -1
  57. package/dist/types/image/image-resampler.d.ts.map +1 -1
  58. package/dist/types/image/layout-manager.d.ts +5 -49
  59. package/dist/types/image/layout-manager.d.ts.map +1 -1
  60. package/dist/types/image/transform-controller.d.ts +1 -2
  61. package/dist/types/image/transform-controller.d.ts.map +1 -1
  62. package/dist/types/image-editor.d.ts +20 -9
  63. package/dist/types/image-editor.d.ts.map +1 -1
  64. package/dist/types/index.d.cts +1 -1
  65. package/dist/types/index.d.cts.map +1 -1
  66. package/dist/types/index.d.ts +1 -1
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/mask/mask-factory.d.ts +24 -21
  69. package/dist/types/mask/mask-factory.d.ts.map +1 -1
  70. package/dist/types/mask/mask-list.d.ts.map +1 -1
  71. package/dist/types/mosaic/mosaic-controller.d.ts +82 -0
  72. package/dist/types/mosaic/mosaic-controller.d.ts.map +1 -0
  73. package/dist/types/mosaic/mosaic-geometry.d.ts +29 -0
  74. package/dist/types/mosaic/mosaic-geometry.d.ts.map +1 -0
  75. package/dist/types/mosaic/mosaic-pixelate.d.ts +23 -0
  76. package/dist/types/mosaic/mosaic-pixelate.d.ts.map +1 -0
  77. package/dist/types/ui/dom-bindings.d.ts +3 -1
  78. package/dist/types/ui/dom-bindings.d.ts.map +1 -1
  79. package/dist/types/utils/number.d.ts +1 -2
  80. package/dist/types/utils/number.d.ts.map +1 -1
  81. package/dist/umd/image-editor.umd.js +1 -1
  82. package/dist/umd/image-editor.umd.js.map +1 -1
  83. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mosaic-controller.js","sourceRoot":"","sources":["../../../src/mosaic/mosaic-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ const MATRIX_DETERMINANT_EPSILON = 1e-8;
2
+ const MATRIX_SCALE_EPSILON = 1e-8;
3
+ function toMatrix2D(matrix) {
4
+ if (matrix.length < 6)
5
+ return null;
6
+ const a = matrix[0];
7
+ const b = matrix[1];
8
+ const c = matrix[2];
9
+ const d = matrix[3];
10
+ const e = matrix[4];
11
+ const f = matrix[5];
12
+ if (!Number.isFinite(a) ||
13
+ !Number.isFinite(b) ||
14
+ !Number.isFinite(c) ||
15
+ !Number.isFinite(d) ||
16
+ !Number.isFinite(e) ||
17
+ !Number.isFinite(f)) {
18
+ return null;
19
+ }
20
+ return { a: a, b: b, c: c, d: d, e: e, f: f };
21
+ }
22
+ function invertMatrix(matrix) {
23
+ const determinant = matrix.a * matrix.d - matrix.b * matrix.c;
24
+ if (!Number.isFinite(determinant) || Math.abs(determinant) < MATRIX_DETERMINANT_EPSILON) {
25
+ return null;
26
+ }
27
+ return {
28
+ a: matrix.d / determinant,
29
+ b: -matrix.b / determinant,
30
+ c: -matrix.c / determinant,
31
+ d: matrix.a / determinant,
32
+ e: (matrix.c * matrix.f - matrix.d * matrix.e) / determinant,
33
+ f: (matrix.b * matrix.e - matrix.a * matrix.f) / determinant,
34
+ };
35
+ }
36
+ function transformPoint(point, matrix) {
37
+ return {
38
+ x: matrix.a * point.x + matrix.c * point.y + matrix.e,
39
+ y: matrix.b * point.x + matrix.d * point.y + matrix.f,
40
+ };
41
+ }
42
+ function getSourceRadiusFromMatrix(matrix, canvasRadius) {
43
+ const scaleX = Math.hypot(matrix.a, matrix.b);
44
+ const scaleY = Math.hypot(matrix.c, matrix.d);
45
+ const minScale = Math.min(scaleX > MATRIX_SCALE_EPSILON ? scaleX : Number.POSITIVE_INFINITY, scaleY > MATRIX_SCALE_EPSILON ? scaleY : Number.POSITIVE_INFINITY);
46
+ if (!Number.isFinite(minScale) || minScale <= 0)
47
+ return canvasRadius;
48
+ return canvasRadius / minScale;
49
+ }
50
+ export function getMosaicImagePoint(fabric, image, canvasPoint, brushDiameterCanvasPx) {
51
+ void fabric;
52
+ const width = Number(image.width) || 0;
53
+ const height = Number(image.height) || 0;
54
+ const brushDiameter = Number(brushDiameterCanvasPx);
55
+ if (width <= 0 ||
56
+ height <= 0 ||
57
+ !Number.isFinite(canvasPoint.x) ||
58
+ !Number.isFinite(canvasPoint.y) ||
59
+ !Number.isFinite(brushDiameter) ||
60
+ brushDiameter <= 0) {
61
+ return null;
62
+ }
63
+ const matrix = toMatrix2D(image.calcTransformMatrix());
64
+ if (!matrix)
65
+ return null;
66
+ const inverse = invertMatrix(matrix);
67
+ if (!inverse)
68
+ return null;
69
+ const localPoint = transformPoint(canvasPoint, inverse);
70
+ const sourceX = localPoint.x + width / 2;
71
+ const sourceY = localPoint.y + height / 2;
72
+ if (sourceX < 0 || sourceY < 0 || sourceX > width || sourceY > height) {
73
+ return null;
74
+ }
75
+ return {
76
+ sourceX,
77
+ sourceY,
78
+ sourceRadius: getSourceRadiusFromMatrix(matrix, brushDiameter / 2),
79
+ };
80
+ }
81
+ //# sourceMappingURL=mosaic-geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mosaic-geometry.js","sourceRoot":"","sources":["../../../src/mosaic/mosaic-geometry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ function normalizeBlockSize(value) {
2
+ return Number.isFinite(value) && value > 0 ? Math.max(1, Math.floor(value)) : 1;
3
+ }
4
+ function isInsideCircle(x, y, centerX, centerY, radiusSquared) {
5
+ const dx = x - centerX;
6
+ const dy = y - centerY;
7
+ return dx * dx + dy * dy <= radiusSquared;
8
+ }
9
+ function pixelOffset(width, x, y) {
10
+ return (y * width + x) * 4;
11
+ }
12
+ export function applyCircularMosaicToImageData(options) {
13
+ var _a, _b, _c, _d;
14
+ const { imageData } = options;
15
+ const { width, height, data } = imageData;
16
+ const centerX = Number(options.centerX);
17
+ const centerY = Number(options.centerY);
18
+ const radius = Number(options.radius);
19
+ if (!Number.isFinite(centerX) ||
20
+ !Number.isFinite(centerY) ||
21
+ !Number.isFinite(radius) ||
22
+ radius <= 0 ||
23
+ width <= 0 ||
24
+ height <= 0) {
25
+ return false;
26
+ }
27
+ const blockSize = normalizeBlockSize(options.blockSize);
28
+ const minX = Math.max(0, Math.floor(centerX - radius));
29
+ const maxX = Math.min(width - 1, Math.ceil(centerX + radius));
30
+ const minY = Math.max(0, Math.floor(centerY - radius));
31
+ const maxY = Math.min(height - 1, Math.ceil(centerY + radius));
32
+ if (minX > maxX || minY > maxY)
33
+ return false;
34
+ const radiusSquared = radius * radius;
35
+ let processed = false;
36
+ for (let blockY = minY; blockY <= maxY; blockY += blockSize) {
37
+ for (let blockX = minX; blockX <= maxX; blockX += blockSize) {
38
+ const blockMaxX = Math.min(maxX, blockX + blockSize - 1);
39
+ const blockMaxY = Math.min(maxY, blockY + blockSize - 1);
40
+ let sampleOffset = -1;
41
+ for (let y = blockY; y <= blockMaxY && sampleOffset < 0; y += 1) {
42
+ for (let x = blockX; x <= blockMaxX; x += 1) {
43
+ if (!isInsideCircle(x, y, centerX, centerY, radiusSquared))
44
+ continue;
45
+ sampleOffset = pixelOffset(width, x, y);
46
+ break;
47
+ }
48
+ }
49
+ if (sampleOffset < 0)
50
+ continue;
51
+ const red = (_a = data[sampleOffset]) !== null && _a !== void 0 ? _a : 0;
52
+ const green = (_b = data[sampleOffset + 1]) !== null && _b !== void 0 ? _b : 0;
53
+ const blue = (_c = data[sampleOffset + 2]) !== null && _c !== void 0 ? _c : 0;
54
+ const alpha = (_d = data[sampleOffset + 3]) !== null && _d !== void 0 ? _d : 0;
55
+ for (let y = blockY; y <= blockMaxY; y += 1) {
56
+ for (let x = blockX; x <= blockMaxX; x += 1) {
57
+ if (!isInsideCircle(x, y, centerX, centerY, radiusSquared))
58
+ continue;
59
+ const offset = pixelOffset(width, x, y);
60
+ data[offset] = red;
61
+ data[offset + 1] = green;
62
+ data[offset + 2] = blue;
63
+ data[offset + 3] = alpha;
64
+ processed = true;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ return processed;
70
+ }
71
+ //# sourceMappingURL=mosaic-pixelate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mosaic-pixelate.js","sourceRoot":"","sources":["../../../src/mosaic/mosaic-pixelate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export class DomBindings {
2
- constructor(resolveElementId, isDisposed) {
2
+ constructor(resolveElementId, isDisposed, resolveDocument = () => document) {
3
3
  Object.defineProperty(this, "registry", {
4
4
  enumerable: true,
5
5
  configurable: true,
@@ -18,14 +18,21 @@ export class DomBindings {
18
18
  writable: true,
19
19
  value: void 0
20
20
  });
21
+ Object.defineProperty(this, "resolveDocument", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
21
27
  this.resolveElementId = resolveElementId;
22
28
  this.isDisposed = isDisposed;
29
+ this.resolveDocument = resolveDocument;
23
30
  }
24
31
  bindIfExists(key, eventType, handler) {
25
32
  const id = this.resolveElementId(key);
26
33
  if (!id)
27
34
  return false;
28
- const element = document.getElementById(id);
35
+ const element = this.resolveDocument().getElementById(id);
29
36
  if (!element)
30
37
  return false;
31
38
  const wrapped = (event) => {
@@ -42,7 +49,7 @@ export class DomBindings {
42
49
  const id = this.resolveElementId(entry.elementKey);
43
50
  if (!id)
44
51
  continue;
45
- const element = document.getElementById(id);
52
+ const element = this.resolveDocument().getElementById(id);
46
53
  if (!element)
47
54
  continue;
48
55
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"dom-bindings.js","sourceRoot":"","sources":["../../../src/ui/dom-bindings.ts"],"names":[],"mappings":"AA6EA,MAAM,OAAO,WAAW;IAapB,YACI,gBAAgE,EAChE,UAAyB;QAdrB;;;;mBAA2B,EAAE;WAAC;QACrB;;;;;WAAiE;QACjE;;;;;WAA0B;QAcvC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAcD,YAAY,CAAC,GAAe,EAAE,SAAiB,EAAE,OAAsB;QACnE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAK3B,MAAM,OAAO,GAAkB,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,UAAU,EAAE;gBAAE,OAAO;YAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IASD,SAAS;QACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,CAAC;gBACD,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;YAGT,CAAC;QACL,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvB,CAAC;IAMD,IAAI;QACA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;CACJ"}
1
+ {"version":3,"file":"dom-bindings.js","sourceRoot":"","sources":["../../../src/ui/dom-bindings.ts"],"names":[],"mappings":"AA6EA,MAAM,OAAO,WAAW;IAepB,YACI,gBAAgE,EAChE,UAAyB,EACzB,kBAAkC,GAAG,EAAE,CAAC,QAAQ;QAjB5C;;;;mBAA2B,EAAE;WAAC;QACrB;;;;;WAAiE;QACjE;;;;;WAA0B;QAC1B;;;;;WAAgC;QAgB7C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;IAcD,YAAY,CAAC,GAAe,EAAE,SAAiB,EAAE,OAAsB;QACnE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAK3B,MAAM,OAAO,GAAkB,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,UAAU,EAAE;gBAAE,OAAO;YAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IASD,SAAS;QACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,CAAC;gBACD,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;YAGT,CAAC;QACL,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvB,CAAC;IAMD,IAAI;QACA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/utils/number.ts"],"names":[],"mappings":"AA4GA,MAAM,UAAU,cAAc,CAC1B,GAAgC,EAChC,IAAU,EACV,QAAgB,EAChB,MAAuB,EACvB,OAAwB;IAExB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAuBD,MAAM,UAAU,WAAW,CAAC,EAAgB;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/utils/number.ts"],"names":[],"mappings":"AA2GA,MAAM,UAAU,cAAc,CAC1B,GAAgC,EAChC,IAAU,EACV,QAAgB,EAChB,MAAuB,EACvB,OAAwB;IAExB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAuBD,MAAM,UAAU,WAAW,CAAC,EAAgB;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"animation-queue.d.ts","sourceRoot":"","sources":["../../../src/animation/animation-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACvB,uDAAuD;IACvD,OAAO,CAAC,KAAK,CAAoB;IACjC,sEAAsE;IACtE,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAiB7B;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;;;;;;;;;OAYG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAUd,UAAU;CAkB3B"}
1
+ {"version":3,"file":"animation-queue.d.ts","sourceRoot":"","sources":["../../../src/animation/animation-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACvB,uDAAuD;IACvD,OAAO,CAAC,KAAK,CAAoB;IACjC,sEAAsE;IACtE,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAiB7B;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;;;;;;;;;OAYG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAUd,UAAU;CAoB3B"}
@@ -7,11 +7,12 @@
7
7
  * `crop` values merge with their defaults, callback values normalize to a
8
8
  * function or `null`, unknown top-level keys are ignored, top-level scalar
9
9
  * values remain internally mutable for controlled updates such as
10
- * `setLayoutMode()`, and returned nested config objects are frozen.
10
+ * `setLayoutMode()` stores its runtime mode separately, and returned
11
+ * option objects are frozen.
11
12
  *
12
13
  * @module
13
14
  */
14
- import type { ImageEditorOptions, LabelConfig, ResolvedCropConfig, ResolvedOptions } from './public-types.js';
15
+ import type { ImageEditorOptions, LabelConfig, LayoutMode, MosaicConfig, ResolvedCropConfig, ResolvedMosaicConfig, ResolvedOptions } from './public-types.js';
15
16
  /**
16
17
  * Documented defaults for every top-level option except the nested
17
18
  * {@link LabelConfig} and {@link CropConfig} configs, which are owned by
@@ -21,7 +22,7 @@ import type { ImageEditorOptions, LabelConfig, ResolvedCropConfig, ResolvedOptio
21
22
  * Nested label and crop defaults are carried by {@link DEFAULT_LABEL} and
22
23
  * {@link DEFAULT_CROP}.
23
24
  */
24
- export declare const DEFAULT_OPTIONS: Omit<ResolvedOptions, 'label' | 'crop'>;
25
+ export declare const DEFAULT_OPTIONS: Omit<ResolvedOptions, 'label' | 'crop' | 'defaultMosaicConfig'>;
25
26
  /**
26
27
  * Default {@link LabelConfig}. Consumers can override `getText`, supply a
27
28
  * `create` factory, or provide partial `textOptions` — unspecified keys fall
@@ -32,6 +33,33 @@ export declare const DEFAULT_LABEL: LabelConfig;
32
33
  * Default {@link CropConfig}.
33
34
  */
34
35
  export declare const DEFAULT_CROP: ResolvedCropConfig;
36
+ /**
37
+ * Default Mosaic configuration used to seed each editor's current runtime
38
+ * Mosaic tool config.
39
+ */
40
+ export declare const DEFAULT_MOSAIC_CONFIG: ResolvedMosaicConfig;
41
+ export declare function isLayoutMode(value: unknown): value is LayoutMode;
42
+ /**
43
+ * Return a mutable defensive copy of a resolved Mosaic config.
44
+ */
45
+ export declare function cloneResolvedMosaicConfig(config: ResolvedMosaicConfig): ResolvedMosaicConfig;
46
+ /**
47
+ * Normalize a constructor-level Mosaic config against a resolved fallback.
48
+ */
49
+ export declare function normalizeMosaicConfig(input: unknown, fallback: ResolvedMosaicConfig): ResolvedMosaicConfig;
50
+ /**
51
+ * Merge a runtime Mosaic config patch into the current resolved config.
52
+ * Omitted fields remain unchanged; invalid fields fall back to `current`.
53
+ */
54
+ export declare function mergeMosaicConfigPatch(current: ResolvedMosaicConfig, patch: MosaicConfig, fallback?: ResolvedMosaicConfig): ResolvedMosaicConfig;
55
+ /**
56
+ * Returns invalid Mosaic config field names for warning/reporting paths.
57
+ */
58
+ export declare function getInvalidMosaicConfigFields(input: MosaicConfig): string[];
59
+ /**
60
+ * Strict value equality for resolved Mosaic configs.
61
+ */
62
+ export declare function areResolvedMosaicConfigsEqual(left: ResolvedMosaicConfig, right: ResolvedMosaicConfig): boolean;
35
63
  /**
36
64
  * Resolves a partial {@link ImageEditorOptions} into a fully populated
37
65
  * {@link ResolvedOptions} object.
@@ -46,9 +74,9 @@ export declare const DEFAULT_CROP: ResolvedCropConfig;
46
74
  * - Callback values are normalized: function values are kept, anything
47
75
  * else becomes `null`.
48
76
  * - Unknown top-level keys are silently dropped.
49
- * - The returned `label` and `crop` references are frozen so that mutating
50
- * `input.label`, `input.label.textOptions`, or `input.crop` after the call
51
- * cannot affect the live editor.
77
+ * - The returned options object plus its `label` and `crop` references
78
+ * are frozen so mutating `input` after the call cannot affect the
79
+ * live editor.
52
80
  *
53
81
  * @param input - Optional partial options object. Defaults to `{}`.
54
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"default-options.d.ts","sourceRoot":"","sources":["../../../src/core/default-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAGR,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,eAAe,EAClB,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,MAAM,CAgEnE,CAAC;AAmBF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,WAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,kBAS1B,CAAC;AAwHF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,eAAe,CAqNjF"}
1
+ {"version":3,"file":"default-options.d.ts","sourceRoot":"","sources":["../../../src/core/default-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAIR,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,YAAY,EAEZ,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EAClB,MAAM,mBAAmB,CAAC;AAQ3B;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,MAAM,GAAG,qBAAqB,CAgE3F,CAAC;AAmBF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,WAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,kBAS1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,oBASlC,CAAC;AAkEH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AA4ID;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAO5F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,oBAAoB,GAC/B,oBAAoB,CAGtB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,YAAY,EACnB,QAAQ,GAAE,oBAA8B,GACzC,oBAAoB,CA4CtB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CA0D1E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,oBAAoB,GAC5B,OAAO,CAoBT;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,eAAe,CA0OjF"}
@@ -6,7 +6,7 @@
6
6
  * callers can discriminate via `instanceof` or `error.name` checks. The
7
7
  * hierarchy is intentionally flat — there is no shared `ImageEditorError`
8
8
  * base class — to keep `name`/message contracts independent per pipeline
9
- * and to keep name/message contracts independent per pipeline.
9
+ * and avoid coupling unrelated error contracts.
10
10
  *
11
11
  * These classes are internal to the package and are NOT re-exported from
12
12
  * `src/index.ts`. Consumers see them via promise rejections from public
@@ -66,6 +66,7 @@ export declare class OperationGuard {
66
66
  private isLoadingActive;
67
67
  private currentOperationName;
68
68
  private currentOperationToken;
69
+ private readonly animationAborters;
69
70
  /**
70
71
  * Returns `true` while an animation block is open (between
71
72
  * {@link beginAnimation} and {@link endAnimation}).
@@ -117,6 +118,7 @@ export declare class OperationGuard {
117
118
  * Idempotent: calling twice is a no-op.
118
119
  */
119
120
  markDisposed(): void;
121
+ registerAnimationAborter(abort: () => void): () => void;
120
122
  /**
121
123
  * Mark a transactional image load as active.
122
124
  */
@@ -1 +1 @@
1
- {"version":3,"file":"operation-guard.d.ts","sourceRoot":"","sources":["../../../src/core/operation-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,qBAAqB,CAA+B;IAE5D;;;;;;OAMG;IACH,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,IAAI,OAAO;IAMjB;;;;;;;OAOG;IACH,cAAc,IAAI,IAAI;IAItB;;;;OAIG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;;;;;;OASG;IACH,YAAY,IAAI,IAAI;IAQpB;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc;IAOzD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAOhE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAIjE;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASlE;;;;;;;;;;;;;;;;;;OAkBG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAQhD;;;;OAIG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAuBnF;;;;OAIG;IACH,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;CAiBvF"}
1
+ {"version":3,"file":"operation-guard.d.ts","sourceRoot":"","sources":["../../../src/core/operation-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,qBAAqB,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;IAE3D;;;;;;OAMG;IACH,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,IAAI,OAAO;IAMjB;;;;;;;OAOG;IACH,cAAc,IAAI,IAAI;IAItB;;;;OAIG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;;;;;;OASG;IACH,YAAY,IAAI,IAAI;IAgBpB,wBAAwB,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAgBvD;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc;IAOzD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAOhE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAIjE;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASlE;;;;;;;;;;;;;;;;;;OAkBG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAQhD;;;;OAIG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAuBnF;;;;OAIG;IACH,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;CAiBvF"}
@@ -62,6 +62,14 @@ export type ExportArea = 'image' | 'canvas';
62
62
  * the Fabric canvas when it is known, falling back to PNG otherwise.
63
63
  */
64
64
  export type CropExportFileType = ImageFileType | 'source';
65
+ /**
66
+ * Intermediate raster format used by Mosaic mode when committing edited
67
+ * pixels back into the base image.
68
+ *
69
+ * `'source'` preserves the current image MIME type when known, falling back
70
+ * to PNG otherwise.
71
+ */
72
+ export type MosaicOutputFileType = ImageFileType | 'source';
65
73
  /**
66
74
  * A Fabric.js object augmented with mask-specific runtime properties.
67
75
  * Returned from {@link ImageEditor.createMask} and exposed in mask-related
@@ -103,7 +111,7 @@ export declare function isMaskObject(object: FabricNS.FabricObject): object is M
103
111
  /**
104
112
  * Public operation/reason associated with lifecycle and state callbacks.
105
113
  */
106
- export type ImageEditorOperation = 'init' | 'loadImage' | 'loadFromState' | 'saveState' | 'scaleImage' | 'rotateImage' | 'resetImageTransform' | 'createMask' | 'removeSelectedMask' | 'removeAllMasks' | 'mergeMasks' | 'enterCropMode' | 'applyCrop' | 'cancelCrop' | 'undo' | 'redo' | 'exportImageBase64' | 'exportImageFile' | 'downloadImage' | 'dispose';
114
+ export type ImageEditorOperation = 'init' | 'loadImage' | 'loadFromState' | 'saveState' | 'scaleImage' | 'rotateImage' | 'resetImageTransform' | 'createMask' | 'removeSelectedMask' | 'removeAllMasks' | 'mergeMasks' | 'enterCropMode' | 'applyCrop' | 'cancelCrop' | 'enterMosaicMode' | 'exitMosaicMode' | 'applyMosaic' | 'setMosaicConfig' | 'resetMosaicConfig' | 'setMosaicBrushSize' | 'setMosaicBlockSize' | 'undo' | 'redo' | 'exportImageBase64' | 'exportImageFile' | 'downloadImage' | 'dispose';
107
115
  /**
108
116
  * Context passed to lifecycle and state callbacks.
109
117
  */
@@ -140,6 +148,7 @@ export interface ImageEditorState {
140
148
  currentRotation: number;
141
149
  isBusy: boolean;
142
150
  isCropMode: boolean;
151
+ isMosaicMode: boolean;
143
152
  canUndo: boolean;
144
153
  canRedo: boolean;
145
154
  canvasWidth: number;
@@ -228,6 +237,72 @@ export interface CropConfig {
228
237
  * `downsampleQuality`".
229
238
  */
230
239
  export type ResolvedCropConfig = Required<Omit<CropConfig, 'exportQuality'>> & Pick<CropConfig, 'exportQuality'>;
240
+ /**
241
+ * Mosaic-mode configuration. Constructor-level `defaultMosaicConfig` uses
242
+ * this shape to initialize the editor's current Mosaic tool config; runtime
243
+ * setters update only the current config.
244
+ */
245
+ export interface MosaicConfig {
246
+ /**
247
+ * Brush diameter in canvas pixels.
248
+ * The preview circle uses this diameter.
249
+ * @default 48
250
+ */
251
+ brushSize?: number;
252
+ /**
253
+ * Pixel block size in source-image pixels.
254
+ * Larger values produce chunkier mosaic.
255
+ * @default 8
256
+ */
257
+ blockSize?: number;
258
+ /**
259
+ * Stroke color for the brush preview circle.
260
+ * @default '#333'
261
+ */
262
+ previewStroke?: string;
263
+ /**
264
+ * Stroke width for the brush preview circle.
265
+ * @default 1
266
+ */
267
+ previewStrokeWidth?: number;
268
+ /**
269
+ * Optional dash pattern for the brush preview circle.
270
+ * @default [4, 4]
271
+ */
272
+ previewStrokeDashArray?: number[] | null;
273
+ /**
274
+ * Fill for the brush preview circle.
275
+ * @default 'rgba(0,0,0,0)'
276
+ */
277
+ previewFill?: string;
278
+ /**
279
+ * Output format used when committing the mosaiced base image.
280
+ *
281
+ * - 'source' preserves the current image MIME type when known.
282
+ * - image format values follow the same normalization rules as export.
283
+ *
284
+ * @default 'source'
285
+ */
286
+ outputFileType?: MosaicOutputFileType;
287
+ /**
288
+ * Lossy quality used when outputFileType resolves to jpeg/webp.
289
+ * Ignored for PNG. Defaults to options.downsampleQuality.
290
+ */
291
+ outputQuality?: number;
292
+ }
293
+ /**
294
+ * Mosaic config after defaults and normalization are applied.
295
+ */
296
+ export interface ResolvedMosaicConfig {
297
+ brushSize: number;
298
+ blockSize: number;
299
+ previewStroke: string;
300
+ previewStrokeWidth: number;
301
+ previewStrokeDashArray: number[] | null;
302
+ previewFill: string;
303
+ outputFileType: MosaicOutputFileType;
304
+ outputQuality?: number;
305
+ }
231
306
  /**
232
307
  * A numeric property that may be provided as:
233
308
  * - a plain `number` in canvas pixels,
@@ -323,6 +398,13 @@ export interface MaskConfig {
323
398
  */
324
399
  fabricGenerator?: (config: ResolvedMaskConfig, canvas: FabricNS.Canvas, options: ResolvedOptions) => FabricNS.FabricObject;
325
400
  }
401
+ /**
402
+ * Constructor-level defaults applied to newly created masks.
403
+ *
404
+ * Uses the same shape as {@link MaskConfig}, except lifecycle hooks and custom
405
+ * Fabric object factories remain per-call only.
406
+ */
407
+ export type DefaultMaskConfig = Omit<Partial<MaskConfig>, 'onCreate' | 'fabricGenerator'>;
326
408
  /**
327
409
  * Fully resolved mask config produced after defaults and percentage resolution
328
410
  * have been applied. Exposed because consumers may receive it via
@@ -417,6 +499,20 @@ export interface ElementIdMap {
417
499
  applyCropButton?: string | null;
418
500
  /** Cancel crop button. @default 'cancelCropButton' */
419
501
  cancelCropButton?: string | null;
502
+ /** Enter Mosaic mode button. @default 'enterMosaicModeButton' */
503
+ enterMosaicModeButton?: string | null;
504
+ /** Exit Mosaic mode button. @default 'exitMosaicModeButton' */
505
+ exitMosaicModeButton?: string | null;
506
+ /**
507
+ * Optional input/range control for Mosaic brush diameter.
508
+ * @default 'mosaicBrushSizeInput'
509
+ */
510
+ mosaicBrushSizeInput?: string | null;
511
+ /**
512
+ * Optional input/range control for Mosaic block size.
513
+ * @default 'mosaicBlockSizeInput'
514
+ */
515
+ mosaicBlockSizeInput?: string | null;
420
516
  /** Clickable upload area (delegates to imageInput). @default 'uploadArea' */
421
517
  uploadArea?: string | null;
422
518
  }
@@ -500,18 +596,16 @@ export interface ImageEditorOptions {
500
596
  /** Rotation step in degrees. Non-finite values fall back to the default. @default 90 */
501
597
  rotationStep?: number;
502
598
  /**
503
- * Expand the canvas to fit the loaded image (no scroll required for
504
- * images smaller than their natural size). @default true
505
- */
506
- expandCanvasToImage?: boolean;
507
- /** Scale the image down to fit inside the visible workspace. @default false */
508
- fitImageToCanvas?: boolean;
509
- /**
510
- * Scale large images down to cover the visible workspace, cap at native
511
- * size, and expand overflowing canvas axes so the container can scroll.
512
- * @default false
599
+ * Initial layout mode used for image loads until changed by
600
+ * {@link ImageEditor.setLayoutMode}.
601
+ *
602
+ * Invalid JavaScript runtime values fall back to `'expand'` during
603
+ * construction. Use `setLayoutMode()` to change the mode for future
604
+ * image loads.
605
+ *
606
+ * @default 'expand'
513
607
  */
514
- coverImageToCanvas?: boolean;
608
+ defaultLayoutMode?: LayoutMode;
515
609
  /** Downsample very large images on load. @default true */
516
610
  downsampleOnLoad?: boolean;
517
611
  /** Max pixel width before downsampling kicks in. @default 4000 */
@@ -570,6 +664,12 @@ export interface ImageEditorOptions {
570
664
  defaultMaskWidth?: number;
571
665
  /** Default height for new rect/ellipse masks. @default 80 */
572
666
  defaultMaskHeight?: number;
667
+ /**
668
+ * Global defaults used by {@link ImageEditor.createMask}.
669
+ *
670
+ * Per-call `createMask(config)` values override these defaults.
671
+ */
672
+ defaultMaskConfig?: DefaultMaskConfig;
573
673
  /** Allow masks to be rotated by the user. @default false */
574
674
  maskRotatable?: boolean;
575
675
  /** Show a name label above a selected mask. @default true */
@@ -623,17 +723,27 @@ export interface ImageEditorOptions {
623
723
  label?: LabelConfig;
624
724
  /** Crop-mode configuration. */
625
725
  crop?: CropConfig;
726
+ /**
727
+ * Default Mosaic configuration used to initialize the current Mosaic tool config.
728
+ *
729
+ * Runtime calls such as setMosaicConfig(), setMosaicBrushSize(), and
730
+ * setMosaicBlockSize() update the current tool config only.
731
+ */
732
+ defaultMosaicConfig?: MosaicConfig;
626
733
  }
627
734
  /**
628
735
  * Fully resolved options with every required field guaranteed present.
629
736
  * Produced by `core/default-options.ts` after merging defaults with the
630
737
  * user-supplied partial options.
631
738
  */
632
- export interface ResolvedOptions extends Required<Omit<ImageEditorOptions, 'label' | 'crop' | 'onImageLoadStart' | 'onImageLoaded' | 'onImageCleared' | 'onImageChanged' | 'onBusyChange' | 'onEditorDisposed' | 'onMasksChanged' | 'onSelectionChange' | 'onError' | 'onWarning' | 'downsampleQuality' | 'maxExportPixels'>> {
739
+ export interface ResolvedOptions extends Required<Omit<ImageEditorOptions, 'label' | 'crop' | 'defaultMosaicConfig' | 'onImageLoadStart' | 'onImageLoaded' | 'onImageCleared' | 'onImageChanged' | 'onBusyChange' | 'onEditorDisposed' | 'onMasksChanged' | 'onSelectionChange' | 'onError' | 'onWarning' | 'downsampleQuality' | 'maxExportPixels'>> {
633
740
  downsampleQuality: number;
634
741
  maxExportPixels: number;
742
+ /** Current layout mode used by future image loads. */
743
+ layoutMode: LayoutMode;
635
744
  label: LabelConfig;
636
745
  crop: ResolvedCropConfig;
746
+ defaultMosaicConfig: ResolvedMosaicConfig;
637
747
  onImageLoadStart: ((context: ImageEditorCallbackContext) => void) | null;
638
748
  onImageLoaded: ((imageInfo: ImageInfo, context: ImageEditorCallbackContext) => void) | null;
639
749
  onImageCleared: ((previousImage: FabricNS.FabricImage | null, context: ImageEditorCallbackContext) => void) | null;