@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../esm/animation/animation-queue.js","../esm/core/callback-reporter.js","../esm/core/default-options.js","../esm/core/operation-guard.js","../esm/core/public-types.js","../esm/core/state-serializer.js","../esm/history/history-manager.js","../esm/fabric/fabric-adapter.js","../esm/core/errors.js","../esm/mask/mask-style.js","../esm/utils/canvas-region.js","../esm/export/export-format.js","../esm/crop/crop-controller.js","../esm/export/export-service.js","../esm/utils/timeout.js","../esm/utils/dom.js","../esm/image/layout-manager.js","../esm/image/image-resampler.js","../esm/image/image-loader.js","../esm/fabric/fabric-animation.js","../esm/image/transform-controller.js","../esm/utils/number.js","../esm/mask/mask-factory.js","../esm/mask/mask-label-manager.js","../esm/mask/mask-list.js","../esm/ui/dom-bindings.js","../esm/ui/visibility-state.js","../esm/utils/file.js","../esm/image-editor.js"],"sourcesContent":["export class AnimationQueue {\n constructor() {\n Object.defineProperty(this, \"queue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"running\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n add(animationFn) {\n return new Promise((resolve, reject) => {\n this.queue.push({ run: animationFn, resolve, reject });\n if (!this.running) {\n void this.drainQueue();\n }\n });\n }\n clear(reason) {\n const pending = this.queue;\n this.queue = [];\n if (reason !== undefined) {\n for (const entry of pending) {\n entry.reject(reason);\n }\n }\n else {\n for (const entry of pending) {\n entry.resolve();\n }\n }\n }\n isRunning() {\n return this.running;\n }\n isBusy() {\n return this.running || this.queue.length > 0;\n }\n waitForIdle() {\n if (!this.running && this.queue.length === 0) {\n return Promise.resolve();\n }\n return this.add(() => Promise.resolve()).then(() => undefined, () => undefined);\n }\n async drainQueue() {\n if (this.queue.length === 0) {\n this.running = false;\n return;\n }\n this.running = true;\n const entry = this.queue.shift();\n try {\n await entry.run();\n entry.resolve();\n }\n catch (error) {\n entry.reject(error);\n }\n void this.drainQueue();\n }\n}\n//# sourceMappingURL=animation-queue.js.map","export function reportWarning(options, error, message) {\n const warningCallback = options.onWarning;\n if (typeof warningCallback !== 'function')\n return;\n try {\n warningCallback(error, message);\n }\n catch (callbackError) {\n console.warn('[ImageEditor] onWarning callback threw', callbackError);\n }\n}\nexport function reportError(options, error, message) {\n const errorCallback = options.onError;\n if (typeof errorCallback !== 'function')\n return;\n try {\n errorCallback(error, message);\n }\n catch (callbackError) {\n console.error('[ImageEditor] onError callback threw', callbackError);\n }\n}\n//# sourceMappingURL=callback-reporter.js.map","export const DEFAULT_OPTIONS = {\n canvasWidth: 800,\n canvasHeight: 600,\n backgroundColor: 'transparent',\n animationDuration: 300,\n minScale: 0.1,\n maxScale: 5.0,\n scaleStep: 0.05,\n rotationStep: 90,\n expandCanvasToImage: true,\n fitImageToCanvas: false,\n coverImageToCanvas: false,\n downsampleOnLoad: true,\n downsampleMaxWidth: 4000,\n downsampleMaxHeight: 3000,\n downsampleQuality: 0.92,\n preserveSourceFormat: true,\n downsampleMimeType: null,\n imageLoadTimeoutMs: 30000,\n maxHistorySize: 50,\n exportMultiplier: 1,\n maxExportPixels: 50000000,\n exportAreaByDefault: 'image',\n mergeMaskByDefault: true,\n defaultMaskWidth: 50,\n defaultMaskHeight: 80,\n maskRotatable: false,\n maskLabelOnSelect: true,\n maskLabelOffset: 3,\n maskName: 'mask',\n groupSelection: false,\n showPlaceholder: true,\n initialImageBase64: null,\n defaultDownloadFileName: 'edited_image.jpg',\n onImageLoadStart: null,\n onImageLoaded: null,\n onImageCleared: null,\n onImageChanged: null,\n onBusyChange: null,\n onEditorDisposed: null,\n onMasksChanged: null,\n onSelectionChange: null,\n onError: null,\n onWarning: null,\n};\nconst DEFAULT_LABEL_TEXT_OPTIONS = {\n fontSize: 12,\n fill: '#fff',\n backgroundColor: 'rgba(0,0,0,0.7)',\n padding: 2,\n fontFamily: 'monospace',\n fontWeight: 'bold',\n selectable: false,\n evented: false,\n originX: 'left',\n originY: 'top',\n};\nexport const DEFAULT_LABEL = {\n getText: (mask) => mask.maskName,\n textOptions: { ...DEFAULT_LABEL_TEXT_OPTIONS },\n};\nexport const DEFAULT_CROP = {\n minWidth: 100,\n minHeight: 100,\n padding: 10,\n hideMasksDuringCrop: true,\n preserveMasksAfterCrop: false,\n allowRotationOfCropRect: false,\n exportFileType: 'source',\n exportQuality: undefined,\n};\nconst KNOWN_TOP_LEVEL_KEYS = new Set([\n 'canvasWidth',\n 'canvasHeight',\n 'backgroundColor',\n 'animationDuration',\n 'minScale',\n 'maxScale',\n 'scaleStep',\n 'rotationStep',\n 'expandCanvasToImage',\n 'fitImageToCanvas',\n 'coverImageToCanvas',\n 'downsampleOnLoad',\n 'downsampleMaxWidth',\n 'downsampleMaxHeight',\n 'downsampleQuality',\n 'preserveSourceFormat',\n 'downsampleMimeType',\n 'imageLoadTimeoutMs',\n 'maxHistorySize',\n 'exportMultiplier',\n 'maxExportPixels',\n 'exportAreaByDefault',\n 'mergeMaskByDefault',\n 'defaultMaskWidth',\n 'defaultMaskHeight',\n 'maskRotatable',\n 'maskLabelOnSelect',\n 'maskLabelOffset',\n 'maskName',\n 'groupSelection',\n 'showPlaceholder',\n 'initialImageBase64',\n 'defaultDownloadFileName',\n 'onImageLoadStart',\n 'onImageLoaded',\n 'onImageCleared',\n 'onImageChanged',\n 'onBusyChange',\n 'onEditorDisposed',\n 'onMasksChanged',\n 'onSelectionChange',\n 'onError',\n 'onWarning',\n 'label',\n 'crop',\n]);\nfunction normalizeCallback(value) {\n return typeof value === 'function' ? value : null;\n}\nfunction normalizePositiveInteger(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric <= 0)\n return fallback;\n return Math.max(1, Math.floor(numeric));\n}\nfunction normalizePositiveFiniteNumber(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric <= 0)\n return fallback;\n return numeric;\n}\nfunction normalizeNonNegativeFiniteNumber(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric < 0)\n return fallback;\n return numeric;\n}\nfunction normalizeFiniteNumber(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return fallback;\n return numeric;\n}\nfunction normalizeMaxHistorySize(value) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return DEFAULT_OPTIONS.maxHistorySize;\n return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeQualityOption(value) {\n if (value == null)\n return DEFAULT_OPTIONS.downsampleQuality;\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return DEFAULT_OPTIONS.downsampleQuality;\n return Math.max(0, Math.min(1, numeric));\n}\nfunction normalizeMaxExportPixels(value) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric <= 0)\n return DEFAULT_OPTIONS.maxExportPixels;\n return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeExportArea(value) {\n return value === 'canvas' || value === 'image' ? value : DEFAULT_OPTIONS.exportAreaByDefault;\n}\nfunction normalizeOptionalQuality(value) {\n if (value === undefined || value === null)\n return undefined;\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return undefined;\n return Math.max(0, Math.min(1, numeric));\n}\nexport function resolveOptions(input) {\n var _a, _b, _c, _d;\n const raw = input !== null && input !== void 0 ? input : {};\n const resolved = { ...DEFAULT_OPTIONS };\n for (const key of Object.keys(raw)) {\n if (!KNOWN_TOP_LEVEL_KEYS.has(key))\n continue;\n if (key === 'label' || key === 'crop')\n continue;\n if (key === 'onImageLoadStart' ||\n key === 'onImageLoaded' ||\n key === 'onImageCleared' ||\n key === 'onImageChanged' ||\n key === 'onBusyChange' ||\n key === 'onEditorDisposed' ||\n key === 'onMasksChanged' ||\n key === 'onSelectionChange' ||\n key === 'onError' ||\n key === 'onWarning') {\n continue;\n }\n const value = raw[key];\n if (value === undefined)\n continue;\n if (key === 'downsampleQuality') {\n resolved.downsampleQuality = normalizeQualityOption(value);\n continue;\n }\n if (key === 'maxExportPixels') {\n resolved.maxExportPixels = normalizeMaxExportPixels(value);\n continue;\n }\n if (key === 'exportAreaByDefault') {\n resolved.exportAreaByDefault = normalizeExportArea(value);\n continue;\n }\n if (key === 'canvasWidth') {\n resolved.canvasWidth = normalizePositiveInteger(value, DEFAULT_OPTIONS.canvasWidth);\n continue;\n }\n if (key === 'canvasHeight') {\n resolved.canvasHeight = normalizePositiveInteger(value, DEFAULT_OPTIONS.canvasHeight);\n continue;\n }\n if (key === 'animationDuration') {\n resolved.animationDuration = normalizeNonNegativeFiniteNumber(value, DEFAULT_OPTIONS.animationDuration);\n continue;\n }\n if (key === 'minScale') {\n resolved.minScale = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.minScale);\n continue;\n }\n if (key === 'maxScale') {\n resolved.maxScale = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.maxScale);\n continue;\n }\n if (key === 'scaleStep') {\n resolved.scaleStep = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.scaleStep);\n continue;\n }\n if (key === 'rotationStep') {\n resolved.rotationStep = normalizeFiniteNumber(value, DEFAULT_OPTIONS.rotationStep);\n continue;\n }\n if (key === 'downsampleMaxWidth') {\n resolved.downsampleMaxWidth = normalizePositiveInteger(value, DEFAULT_OPTIONS.downsampleMaxWidth);\n continue;\n }\n if (key === 'downsampleMaxHeight') {\n resolved.downsampleMaxHeight = normalizePositiveInteger(value, DEFAULT_OPTIONS.downsampleMaxHeight);\n continue;\n }\n if (key === 'imageLoadTimeoutMs') {\n resolved.imageLoadTimeoutMs = normalizePositiveInteger(value, DEFAULT_OPTIONS.imageLoadTimeoutMs);\n continue;\n }\n if (key === 'exportMultiplier') {\n resolved.exportMultiplier = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.exportMultiplier);\n continue;\n }\n if (key === 'defaultMaskWidth') {\n resolved.defaultMaskWidth = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.defaultMaskWidth);\n continue;\n }\n if (key === 'defaultMaskHeight') {\n resolved.defaultMaskHeight = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.defaultMaskHeight);\n continue;\n }\n if (key === 'maskLabelOffset') {\n resolved.maskLabelOffset = normalizeNonNegativeFiniteNumber(value, DEFAULT_OPTIONS.maskLabelOffset);\n continue;\n }\n resolved[key] = value;\n }\n resolved.onImageLoadStart = normalizeCallback(raw.onImageLoadStart);\n resolved.onImageLoaded = normalizeCallback(raw.onImageLoaded);\n resolved.onImageCleared = normalizeCallback(raw.onImageCleared);\n resolved.onImageChanged = normalizeCallback(raw.onImageChanged);\n resolved.onBusyChange = normalizeCallback(raw.onBusyChange);\n resolved.onEditorDisposed = normalizeCallback(raw.onEditorDisposed);\n resolved.onMasksChanged = normalizeCallback(raw.onMasksChanged);\n resolved.onSelectionChange = normalizeCallback(raw.onSelectionChange);\n resolved.onError = normalizeCallback(raw.onError);\n resolved.onWarning = normalizeCallback(raw.onWarning);\n resolved.maxHistorySize = normalizeMaxHistorySize(resolved.maxHistorySize);\n resolved.maxExportPixels = normalizeMaxExportPixels(resolved.maxExportPixels);\n if (resolved.minScale > resolved.maxScale) {\n const minScale = resolved.minScale;\n resolved.minScale = resolved.maxScale;\n resolved.maxScale = minScale;\n }\n const userLabel = raw.label && typeof raw.label === 'object' ? raw.label : {};\n const mergedTextOptions = {\n ...DEFAULT_LABEL_TEXT_OPTIONS,\n ...(userLabel.textOptions && typeof userLabel.textOptions === 'object'\n ? userLabel.textOptions\n : {}),\n };\n const label = {\n getText: typeof userLabel.getText === 'function' ? userLabel.getText : DEFAULT_LABEL.getText,\n textOptions: mergedTextOptions,\n };\n if (typeof userLabel.create === 'function') {\n label.create = userLabel.create;\n }\n Object.freeze(label.textOptions);\n Object.freeze(label);\n const userCrop = raw.crop && typeof raw.crop === 'object' ? raw.crop : {};\n const crop = {\n minWidth: normalizePositiveFiniteNumber(userCrop.minWidth, DEFAULT_CROP.minWidth),\n minHeight: normalizePositiveFiniteNumber(userCrop.minHeight, DEFAULT_CROP.minHeight),\n padding: normalizeNonNegativeFiniteNumber(userCrop.padding, DEFAULT_CROP.padding),\n hideMasksDuringCrop: (_a = userCrop.hideMasksDuringCrop) !== null && _a !== void 0 ? _a : DEFAULT_CROP.hideMasksDuringCrop,\n preserveMasksAfterCrop: (_b = userCrop.preserveMasksAfterCrop) !== null && _b !== void 0 ? _b : DEFAULT_CROP.preserveMasksAfterCrop,\n allowRotationOfCropRect: (_c = userCrop.allowRotationOfCropRect) !== null && _c !== void 0 ? _c : DEFAULT_CROP.allowRotationOfCropRect,\n exportFileType: (_d = userCrop.exportFileType) !== null && _d !== void 0 ? _d : DEFAULT_CROP.exportFileType,\n exportQuality: normalizeOptionalQuality(userCrop.exportQuality),\n };\n Object.freeze(crop);\n return {\n ...resolved,\n label,\n crop,\n };\n}\n//# sourceMappingURL=default-options.js.map","export class OperationGuard {\n constructor() {\n Object.defineProperty(this, \"isAnimationActive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"isDisposedFlag\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"isLoadingActive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"currentOperationName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"currentOperationToken\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n }\n isAnimating() {\n return this.isAnimationActive;\n }\n isDisposed() {\n return this.isDisposedFlag;\n }\n isLoading() {\n return this.isLoadingActive;\n }\n activeOperationName() {\n return this.currentOperationName;\n }\n isBusy() {\n return (this.isAnimationActive || this.isLoadingActive || this.currentOperationToken !== null);\n }\n beginAnimation() {\n this.isAnimationActive = true;\n }\n endAnimation() {\n this.isAnimationActive = false;\n }\n markDisposed() {\n this.isDisposedFlag = true;\n this.isAnimationActive = false;\n this.isLoadingActive = false;\n this.currentOperationName = null;\n this.currentOperationToken = null;\n }\n beginLoading() {\n this.isLoadingActive = true;\n }\n endLoading() {\n this.isLoadingActive = false;\n }\n beginBusyOperation(operationName) {\n const token = Symbol(operationName);\n this.currentOperationName = operationName;\n this.currentOperationToken = token;\n return token;\n }\n endBusyOperation(token) {\n if (token && token === this.currentOperationToken) {\n this.currentOperationName = null;\n this.currentOperationToken = null;\n }\n }\n isOwnOperation(token) {\n return !!token && token === this.currentOperationToken;\n }\n async runAnimation(animationTask) {\n this.beginAnimation();\n try {\n return await animationTask();\n }\n finally {\n this.endAnimation();\n }\n }\n assertNotAnimating(operationLabel) {\n if (this.isAnimationActive) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an animation is in progress.`);\n }\n }\n assertIdleForOperation(operationLabel, token) {\n var _a;\n if (this.isDisposedFlag) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" after dispose.`);\n }\n const ownOperation = this.isOwnOperation(token);\n if (this.isAnimationActive) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an animation is in progress.`);\n }\n if (this.isLoadingActive && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an image is loading.`);\n }\n if (this.currentOperationToken && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while ` +\n `${(_a = this.currentOperationName) !== null && _a !== void 0 ? _a : 'another operation'} is running.`);\n }\n }\n assertCanQueueAnimation(operationLabel, token) {\n var _a;\n if (this.isDisposedFlag) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" after dispose.`);\n }\n const ownOperation = this.isOwnOperation(token);\n if (this.isLoadingActive && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an image is loading.`);\n }\n if (this.currentOperationToken && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while ` +\n `${(_a = this.currentOperationName) !== null && _a !== void 0 ? _a : 'another operation'} is running.`);\n }\n }\n}\n//# sourceMappingURL=operation-guard.js.map","export function isMaskObject(object) {\n return 'maskId' in object && typeof object.maskId === 'number';\n}\n//# sourceMappingURL=public-types.js.map","import { isMaskObject } from './public-types.js';\nexport const SNAPSHOT_CUSTOM_KEYS = [\n 'maskId',\n 'maskUid',\n 'maskName',\n 'isCropRect',\n 'maskLabel',\n 'originalAlpha',\n 'originalStroke',\n 'originalStrokeWidth',\n 'hasControls',\n 'selectable',\n 'strokeUniform',\n 'lockRotation',\n 'transparentCorners',\n 'borderColor',\n 'cornerColor',\n 'cornerSize',\n];\nfunction copySnapshotCustomPropsFromCanvas(canvasObjects, jsonObjects) {\n if (!Array.isArray(jsonObjects))\n return;\n for (let index = 0; index < jsonObjects.length; index += 1) {\n const liveObject = canvasObjects[index];\n const jsonObject = jsonObjects[index];\n if (!liveObject || !jsonObject)\n continue;\n if (typeof liveObject.maskId === 'number')\n jsonObject.maskId = liveObject.maskId;\n if (typeof liveObject.maskUid === 'string')\n jsonObject.maskUid = liveObject.maskUid;\n if (typeof liveObject.maskName === 'string')\n jsonObject.maskName = liveObject.maskName;\n if (typeof liveObject.originalAlpha === 'number') {\n jsonObject.originalAlpha = liveObject.originalAlpha;\n }\n if ('originalStroke' in liveObject)\n jsonObject.originalStroke = liveObject.originalStroke;\n if (typeof liveObject.originalStrokeWidth === 'number') {\n jsonObject.originalStrokeWidth = liveObject.originalStrokeWidth;\n }\n if (typeof liveObject.hasControls === 'boolean') {\n jsonObject.hasControls = liveObject.hasControls;\n }\n if (typeof liveObject.selectable === 'boolean') {\n jsonObject.selectable = liveObject.selectable;\n }\n if (typeof liveObject.strokeUniform === 'boolean') {\n jsonObject.strokeUniform = liveObject.strokeUniform;\n }\n if (typeof liveObject.lockRotation === 'boolean') {\n jsonObject.lockRotation = liveObject.lockRotation;\n }\n if (typeof liveObject.transparentCorners === 'boolean') {\n jsonObject.transparentCorners = liveObject.transparentCorners;\n }\n if (typeof liveObject.borderColor === 'string') {\n jsonObject.borderColor = liveObject.borderColor;\n }\n if (typeof liveObject.cornerColor === 'string') {\n jsonObject.cornerColor = liveObject.cornerColor;\n }\n if (typeof liveObject.cornerSize === 'number') {\n jsonObject.cornerSize = liveObject.cornerSize;\n }\n if (liveObject.isCropRect === true)\n jsonObject.isCropRect = true;\n if (liveObject.maskLabel === true)\n jsonObject.maskLabel = true;\n }\n}\nfunction isActiveSelectionObject(object) {\n if (!object)\n return false;\n const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n if (type === 'activeselection')\n return true;\n const isType = object.isType;\n return (typeof isType === 'function' &&\n (isType.call(object, 'ActiveSelection') ||\n isType.call(object, 'activeSelection') ||\n isType.call(object, 'activeselection')));\n}\nexport function saveState(input) {\n var _a, _b, _c;\n const { canvas, currentScale, currentRotation, baseImageScale } = input;\n const activeObject = (_b = (_a = canvas).getActiveObject) === null || _b === void 0 ? void 0 : _b.call(_a);\n const activeMaskId = activeObject && isMaskObject(activeObject)\n ? activeObject.maskId\n : typeof input.activeMaskId === 'number'\n ? input.activeMaskId\n : null;\n if (isActiveSelectionObject(activeObject)) {\n canvas.discardActiveObject();\n }\n const jsonObj = canvas.toJSON(SNAPSHOT_CUSTOM_KEYS);\n copySnapshotCustomPropsFromCanvas(canvas.getObjects(), jsonObj.objects);\n if (Array.isArray(jsonObj.objects)) {\n jsonObj.objects = jsonObj.objects.filter((o) => o.isCropRect !== true && o.maskLabel !== true);\n }\n jsonObj._editorState = {\n currentScale,\n currentRotation,\n baseImageScale,\n currentImageMimeType: (_c = input.currentImageMimeType) !== null && _c !== void 0 ? _c : null,\n };\n if (activeMaskId !== null)\n jsonObj._editorState.activeMaskId = activeMaskId;\n return JSON.stringify(jsonObj);\n}\nexport async function loadFromState(input) {\n var _a, _b;\n const { canvas, jsonString: snapshotInput, setCanvasSize } = input;\n const jsonString = typeof snapshotInput === 'string' ? snapshotInput : JSON.stringify(snapshotInput);\n const json = JSON.parse(jsonString);\n if (typeof json.width === 'number' &&\n json.width > 0 &&\n typeof json.height === 'number' &&\n json.height > 0) {\n setCanvasSize(json.width, json.height);\n }\n await canvas.loadFromJSON(json);\n const objects = canvas.getObjects();\n restoreMaskPropsFromJson(objects, (_a = json.objects) !== null && _a !== void 0 ? _a : []);\n const editorState = json._editorState && typeof json._editorState === 'object'\n ? {\n currentScale: typeof json._editorState.currentScale === 'number'\n ? json._editorState.currentScale\n : 1,\n currentRotation: typeof json._editorState.currentRotation === 'number'\n ? json._editorState.currentRotation\n : 0,\n baseImageScale: typeof json._editorState.baseImageScale === 'number'\n ? json._editorState.baseImageScale\n : 1,\n }\n : null;\n if (editorState && json._editorState && typeof json._editorState.activeMaskId === 'number') {\n editorState.activeMaskId = json._editorState.activeMaskId;\n }\n if (editorState && json._editorState && 'currentImageMimeType' in json._editorState) {\n const mimeType = json._editorState.currentImageMimeType;\n editorState.currentImageMimeType =\n mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n ? mimeType\n : null;\n }\n const maxMaskId = objects\n .filter(isMaskObject)\n .reduce((max, maskObject) => Math.max(max, maskObject.maskId), 0);\n const originalImage = ((_b = objects.find(isOriginalImageObject)) !== null && _b !== void 0 ? _b : null);\n return {\n editorState,\n maxMaskId,\n originalImage,\n objects,\n jsonString,\n };\n}\nfunction isOriginalImageObject(object) {\n if (isMaskObject(object))\n return false;\n const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n if (type === 'image')\n return true;\n const isType = object.isType;\n return typeof isType === 'function' && isType.call(object, 'image');\n}\nfunction restoreMaskPropsFromJson(canvasObjs, jsonObjs) {\n var _a, _b, _c, _d, _e;\n const consumedCanvasIndexes = new Set();\n for (const jObj of jsonObjs) {\n if (typeof jObj.maskId !== 'number')\n continue;\n const jType = String((_a = jObj.type) !== null && _a !== void 0 ? _a : '');\n const jLeft = Number((_b = jObj.left) !== null && _b !== void 0 ? _b : 0);\n const jTop = Number((_c = jObj.top) !== null && _c !== void 0 ? _c : 0);\n const jUid = typeof jObj.maskUid === 'string' ? jObj.maskUid : null;\n let matchIndex = -1;\n if (jUid) {\n matchIndex = canvasObjs.findIndex((o, index) => {\n if (consumedCanvasIndexes.has(index))\n return false;\n return o.maskUid === jUid;\n });\n }\n if (matchIndex < 0) {\n matchIndex = canvasObjs.findIndex((o, index) => {\n var _a, _b;\n if (consumedCanvasIndexes.has(index))\n return false;\n if (jType && o.type !== jType)\n return false;\n return Math.abs(((_a = o.left) !== null && _a !== void 0 ? _a : 0) - jLeft) < 0.5 && Math.abs(((_b = o.top) !== null && _b !== void 0 ? _b : 0) - jTop) < 0.5;\n });\n }\n if (matchIndex < 0)\n continue;\n consumedCanvasIndexes.add(matchIndex);\n const match = canvasObjs[matchIndex];\n const maskObject = match;\n maskObject.maskId = jObj.maskId;\n if (typeof jObj.maskUid === 'string') {\n maskObject.maskUid = jObj.maskUid;\n }\n maskObject.maskName = String((_d = jObj.maskName) !== null && _d !== void 0 ? _d : '');\n maskObject.originalAlpha =\n typeof jObj.originalAlpha === 'number'\n ? jObj.originalAlpha\n : ((_e = maskObject.opacity) !== null && _e !== void 0 ? _e : 0.5);\n if ('originalStroke' in jObj) {\n maskObject.originalStroke = jObj.originalStroke;\n }\n if (typeof jObj.originalStrokeWidth === 'number') {\n maskObject.originalStrokeWidth = jObj.originalStrokeWidth;\n }\n if (typeof jObj.hasControls === 'boolean') {\n maskObject.hasControls = jObj.hasControls;\n }\n if (typeof jObj.selectable === 'boolean') {\n maskObject.selectable = jObj.selectable;\n }\n if (typeof jObj.strokeUniform === 'boolean') {\n maskObject.strokeUniform = jObj.strokeUniform;\n }\n if (typeof jObj.lockRotation === 'boolean') {\n maskObject.lockRotation = jObj.lockRotation;\n }\n if (typeof jObj.transparentCorners === 'boolean') {\n maskObject.transparentCorners = jObj.transparentCorners;\n }\n if (typeof jObj.borderColor === 'string') {\n maskObject.borderColor = jObj.borderColor;\n }\n if (typeof jObj.cornerColor === 'string') {\n maskObject.cornerColor = jObj.cornerColor;\n }\n if (typeof jObj.cornerSize === 'number') {\n maskObject.cornerSize = jObj.cornerSize;\n }\n }\n jsonObjs.forEach((jObj, index) => {\n if (jObj.maskLabel !== true)\n return;\n const canvasObj = canvasObjs[index];\n if (canvasObj) {\n canvasObj.maskLabel = true;\n }\n });\n}\n//# sourceMappingURL=state-serializer.js.map","export class Command {\n constructor(execute, undo) {\n Object.defineProperty(this, \"execute\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"undo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.execute = execute;\n this.undo = undo;\n }\n}\nexport class HistoryManager {\n constructor(maxSize = 50) {\n Object.defineProperty(this, \"history\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"currentIndex\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -1\n });\n Object.defineProperty(this, \"isProcessing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = maxSize;\n }\n execute(command) {\n void command.execute();\n this.pushAndTrim(command);\n }\n push(command) {\n this.pushAndTrim(command);\n }\n canUndo() {\n return this.currentIndex >= 0;\n }\n canRedo() {\n return this.currentIndex < this.history.length - 1;\n }\n async undo() {\n if (this.isProcessing || !this.canUndo())\n return;\n this.isProcessing = true;\n try {\n const cmd = this.history[this.currentIndex];\n if (!cmd)\n return;\n await cmd.undo();\n this.currentIndex--;\n }\n finally {\n this.isProcessing = false;\n }\n }\n async redo() {\n if (this.isProcessing || !this.canRedo())\n return;\n this.isProcessing = true;\n try {\n const cmd = this.history[this.currentIndex + 1];\n if (!cmd)\n return;\n await cmd.execute();\n this.currentIndex++;\n }\n finally {\n this.isProcessing = false;\n }\n }\n pushAndTrim(command) {\n if (this.currentIndex < this.history.length - 1) {\n this.history = this.history.slice(0, this.currentIndex + 1);\n }\n this.history.push(command);\n if (this.history.length > this.maxSize) {\n this.history.shift();\n }\n else {\n this.currentIndex++;\n }\n }\n}\n//# sourceMappingURL=history-manager.js.map","function looksLikeFabricModule(value) {\n if (value === null || typeof value !== 'object')\n return false;\n const candidate = value.Canvas;\n return typeof candidate === 'function';\n}\nfunction readGlobalFabric(globalScope) {\n return globalScope.fabric;\n}\nexport function detectFabric(fabricOrOptions, maybeOptions, globalScope = globalThis) {\n var _a;\n if (looksLikeFabricModule(fabricOrOptions)) {\n return {\n fabric: fabricOrOptions,\n isFabricLoaded: true,\n options: maybeOptions !== null && maybeOptions !== void 0 ? maybeOptions : {},\n };\n }\n const options = (_a = fabricOrOptions) !== null && _a !== void 0 ? _a : {};\n const globalFabric = readGlobalFabric(globalScope);\n if (looksLikeFabricModule(globalFabric)) {\n return {\n fabric: globalFabric,\n isFabricLoaded: true,\n options,\n };\n }\n console.error('[ImageEditor] fabric.js v7 is not available. ' +\n 'Pass it as the first constructor argument (ESM) or ' +\n 'load it as a global <script> before instantiation.');\n return {\n fabric: null,\n isFabricLoaded: false,\n options,\n };\n}\n//# sourceMappingURL=fabric-adapter.js.map","function fixPrototype(self, ctor) {\n Object.setPrototypeOf(self, ctor.prototype);\n}\nexport class FabricUnavailableError extends Error {\n constructor(message = 'Fabric.js v7 is not available. Pass the Fabric module explicitly to the constructor or expose it as `globalThis.fabric`.') {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'FabricUnavailableError'\n });\n fixPrototype(this, FabricUnavailableError);\n }\n}\nexport class ImageDecodeError extends Error {\n constructor(message = 'Failed to decode image data URL.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ImageDecodeError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, ImageDecodeError);\n }\n}\nexport class ImageLoadTimeoutError extends Error {\n constructor(label, elapsedMs) {\n super(`Image load timed out after ${elapsedMs}ms during ${label}`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ImageLoadTimeoutError'\n });\n Object.defineProperty(this, \"label\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"elapsedMs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.label = label;\n this.elapsedMs = elapsedMs;\n fixPrototype(this, ImageLoadTimeoutError);\n }\n}\nexport class DownsampleError extends Error {\n constructor(message = 'Failed to obtain a 2D context for downsampling.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'DownsampleError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, DownsampleError);\n }\n}\nexport class MergeMasksError extends Error {\n constructor(message = 'Failed to merge masks into the image.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'MergeMasksError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, MergeMasksError);\n }\n}\nexport class CropApplyError extends Error {\n constructor(message = 'Failed to apply crop to the image.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'CropApplyError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, CropApplyError);\n }\n}\nexport class ExportNotReadyError extends Error {\n constructor(operation = 'exportImageFile') {\n super(`Cannot ${operation}: no image is loaded on the canvas.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ExportNotReadyError'\n });\n Object.defineProperty(this, \"operation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.operation = operation;\n fixPrototype(this, ExportNotReadyError);\n }\n}\nexport class ExportError extends Error {\n constructor(message = 'Failed to export image.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ExportError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, ExportError);\n }\n}\n//# sourceMappingURL=errors.js.map","import { isMaskObject } from '../core/public-types.js';\nconst SELECTED_STROKE = '#ff0000';\nconst SELECTED_STROKE_WIDTH = 1;\nconst HOVER_STROKE = '#ff5500';\nconst HOVER_STROKE_WIDTH = 2;\nconst HOVER_OPACITY_BUMP = 0.2;\nconst DEFAULT_STROKE_FALLBACK = '#ccc';\nconst DEFAULT_STROKE_WIDTH_FALLBACK = 1;\nconst DEFAULT_ALPHA_FALLBACK = 0.5;\nexport function getMaskNormalStyle(mask) {\n var _a;\n const strokeWidth = Number(mask.originalStrokeWidth);\n const opacity = Number(mask.originalAlpha);\n return {\n stroke: (_a = mask.originalStroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK,\n strokeWidth: Number.isFinite(strokeWidth) ? strokeWidth : DEFAULT_STROKE_WIDTH_FALLBACK,\n opacity: Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK,\n };\n}\nexport function getMaskHoverStyle(mask) {\n const opacity = Number(mask.originalAlpha);\n const baseAlpha = Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK;\n return {\n stroke: HOVER_STROKE,\n strokeWidth: HOVER_STROKE_WIDTH,\n opacity: Math.min(baseAlpha + HOVER_OPACITY_BUMP, 1),\n };\n}\nexport function applyMaskSelectedStyle(mask) {\n mask.set({ stroke: SELECTED_STROKE, strokeWidth: SELECTED_STROKE_WIDTH });\n}\nexport function applyMaskUnselectedStyle(mask) {\n var _a;\n const strokeWidth = Number(mask.originalStrokeWidth);\n mask.set({\n stroke: (_a = mask.originalStroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK,\n strokeWidth: Number.isFinite(strokeWidth) ? strokeWidth : DEFAULT_STROKE_WIDTH_FALLBACK,\n });\n}\nexport function attachMaskHoverHandlers(mask) {\n const tagged = mask;\n const mouseover = () => {\n var _a;\n tagged.set(getMaskHoverStyle(tagged));\n (_a = tagged.canvas) === null || _a === void 0 ? void 0 : _a.requestRenderAll();\n };\n const mouseout = () => {\n var _a;\n tagged.set(getMaskNormalStyle(tagged));\n (_a = tagged.canvas) === null || _a === void 0 ? void 0 : _a.requestRenderAll();\n };\n tagged.on('mouseover', mouseover);\n tagged.on('mouseout', mouseout);\n tagged.imageEditorMaskHandlers = { mouseover, mouseout };\n}\nexport function reattachMaskHoverHandlers(mask) {\n var _a;\n const tagged = mask;\n if (tagged.imageEditorMaskHandlers) {\n try {\n tagged.off('mouseover', tagged.imageEditorMaskHandlers.mouseover);\n tagged.off('mouseout', tagged.imageEditorMaskHandlers.mouseout);\n }\n catch {\n }\n delete tagged.imageEditorMaskHandlers;\n }\n const patch = {};\n if (!Number.isFinite(Number(tagged.originalAlpha))) {\n const opacity = Number(tagged.opacity);\n patch.originalAlpha = Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK;\n }\n if (tagged.originalStroke == null) {\n patch.originalStroke = (_a = tagged.stroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK;\n }\n if (!Number.isFinite(Number(tagged.originalStrokeWidth))) {\n const sw = Number(tagged.strokeWidth);\n patch.originalStrokeWidth = Number.isFinite(sw) ? sw : DEFAULT_STROKE_WIDTH_FALLBACK;\n }\n if (Object.keys(patch).length > 0)\n tagged.set(patch);\n attachMaskHoverHandlers(tagged);\n}\nexport function detachMaskHoverHandlers(mask) {\n const tagged = mask;\n if (!tagged.imageEditorMaskHandlers)\n return;\n try {\n tagged.off('mouseover', tagged.imageEditorMaskHandlers.mouseover);\n tagged.off('mouseout', tagged.imageEditorMaskHandlers.mouseout);\n }\n catch {\n }\n delete tagged.imageEditorMaskHandlers;\n}\nexport function captureMaskStyleBackup(mask) {\n var _a, _b, _c, _d, _e, _f, _g;\n return {\n object: mask,\n opacity: (_a = mask.opacity) !== null && _a !== void 0 ? _a : 1,\n fill: ((_b = mask.fill) !== null && _b !== void 0 ? _b : null),\n strokeWidth: (_c = mask.strokeWidth) !== null && _c !== void 0 ? _c : 0,\n stroke: ((_d = mask.stroke) !== null && _d !== void 0 ? _d : null),\n selectable: (_e = mask.selectable) !== null && _e !== void 0 ? _e : true,\n evented: (_f = mask.evented) !== null && _f !== void 0 ? _f : true,\n lockRotation: (_g = mask.lockRotation) !== null && _g !== void 0 ? _g : false,\n };\n}\nexport function restoreMaskStyleBackup(backup) {\n try {\n backup.object.set({\n opacity: backup.opacity,\n fill: backup.fill,\n strokeWidth: backup.strokeWidth,\n stroke: backup.stroke,\n selectable: backup.selectable,\n evented: backup.evented,\n lockRotation: backup.lockRotation,\n });\n if (typeof backup.object.setCoords === 'function') {\n backup.object.setCoords();\n }\n }\n catch {\n }\n}\nexport function withNormalizedMaskStyles(context, callback) {\n if (!context.canvas)\n return callback();\n const masks = context.canvas.getObjects().filter(isMaskObject);\n const patches = [];\n try {\n for (const mask of masks) {\n const normal = getMaskNormalStyle(mask);\n const snapshot = {};\n const stylePatch = {};\n Object.keys(normal).forEach((key) => {\n const live = mask[key];\n if (live !== normal[key]) {\n snapshot[key] = live;\n stylePatch[key] = normal[key];\n }\n });\n if (Object.keys(stylePatch).length === 0)\n continue;\n patches.push({ object: mask, snapshot });\n mask.set(stylePatch);\n }\n return callback();\n }\n finally {\n for (const patch of patches) {\n try {\n patch.object.set(patch.snapshot);\n }\n catch {\n }\n }\n }\n}\nexport async function withMaskStyleBackup(context, mutator, callback) {\n if (!context.canvas)\n return await callback();\n const masks = context.canvas.getObjects().filter(isMaskObject);\n const backups = masks.map(captureMaskStyleBackup);\n try {\n masks.forEach((mask, index) => mutator(mask, index));\n return await callback();\n }\n finally {\n for (const backup of backups)\n restoreMaskStyleBackup(backup);\n }\n}\nexport function applyCropHideMaskStyle(mask) {\n try {\n mask.set({ opacity: 0, evented: false, selectable: false });\n }\n catch {\n }\n}\n//# sourceMappingURL=mask-style.js.map","export function hasMeaningfulCanvasRegion(rect, canvasWidth, canvasHeight) {\n const left = Number(rect.left);\n const top = Number(rect.top);\n const width = Number(rect.width);\n const height = Number(rect.height);\n if (!Number.isFinite(left) ||\n !Number.isFinite(top) ||\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0) {\n return false;\n }\n const right = left + width;\n const bottom = top + height;\n if (!Number.isFinite(right) || !Number.isFinite(bottom))\n return false;\n const safeCanvasWidth = Number(canvasWidth);\n const safeCanvasHeight = Number(canvasHeight);\n if (!Number.isFinite(safeCanvasWidth) ||\n !Number.isFinite(safeCanvasHeight) ||\n safeCanvasWidth <= 0 ||\n safeCanvasHeight <= 0) {\n return true;\n }\n const overlapWidth = Math.min(right, safeCanvasWidth) - Math.max(left, 0);\n const overlapHeight = Math.min(bottom, safeCanvasHeight) - Math.max(top, 0);\n return overlapWidth > 0 && overlapHeight > 0;\n}\nexport function getClampedCanvasRegion(rect, canvasWidth, canvasHeight, options = {}) {\n const safeLeft = Number.isFinite(rect.left) ? rect.left : 0;\n const safeTop = Number.isFinite(rect.top) ? rect.top : 0;\n const safeWidth = Math.max(0, Number.isFinite(rect.width) ? rect.width : 0);\n const safeHeight = Math.max(0, Number.isFinite(rect.height) ? rect.height : 0);\n const includePartialPixels = options.includePartialPixels !== false;\n const roundEnd = includePartialPixels ? Math.ceil : Math.floor;\n const hasCanvasWidth = Number.isFinite(canvasWidth);\n const hasCanvasHeight = Number.isFinite(canvasHeight);\n const safeCanvasWidth = hasCanvasWidth\n ? Math.max(1, Math.round(Number(canvasWidth)))\n : Number.POSITIVE_INFINITY;\n const safeCanvasHeight = hasCanvasHeight\n ? Math.max(1, Math.round(Number(canvasHeight)))\n : Number.POSITIVE_INFINITY;\n const left = Math.min(safeCanvasWidth - 1, Math.max(0, Math.floor(safeLeft)));\n const top = Math.min(safeCanvasHeight - 1, Math.max(0, Math.floor(safeTop)));\n const right = Math.min(safeCanvasWidth, Math.max(left + 1, roundEnd(safeLeft + safeWidth)));\n const bottom = Math.min(safeCanvasHeight, Math.max(top + 1, roundEnd(safeTop + safeHeight)));\n return {\n left,\n top,\n width: Math.max(1, right - left),\n height: Math.max(1, bottom - top),\n };\n}\nexport function floorRegion(rect) {\n return getClampedCanvasRegion(rect, undefined, undefined, { includePartialPixels: false });\n}\nexport function hasFractionalCanvasEdge(value) {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue))\n return false;\n return Math.abs(numericValue - Math.round(numericValue)) > 0.01;\n}\nexport function getPartialExportEdges(bounds, angle = 0) {\n if (!bounds)\n return null;\n const normalizedAngle = Math.abs((Number(angle) || 0) % 90);\n const isAxisAligned = normalizedAngle < 0.01 || Math.abs(normalizedAngle - 90) < 0.01;\n if (!isAxisAligned)\n return null;\n const left = Number(bounds.left) || 0;\n const top = Number(bounds.top) || 0;\n return {\n left: hasFractionalCanvasEdge(left),\n top: hasFractionalCanvasEdge(top),\n right: hasFractionalCanvasEdge(left + (Number(bounds.width) || 0)),\n bottom: hasFractionalCanvasEdge(top + (Number(bounds.height) || 0)),\n };\n}\nexport function getObjectBBox(object) {\n object.setCoords();\n const boundingRect = object.getBoundingRect();\n return {\n left: boundingRect.left,\n top: boundingRect.top,\n width: boundingRect.width,\n height: boundingRect.height,\n };\n}\nexport function clampRegionToCanvas(region, canvasWidth, canvasHeight) {\n const safeCw = Math.max(1, Math.floor(Number.isFinite(canvasWidth) ? canvasWidth : 1));\n const safeCh = Math.max(1, Math.floor(Number.isFinite(canvasHeight) ? canvasHeight : 1));\n const left = Math.max(0, Math.min(region.left, safeCw - 1));\n const top = Math.max(0, Math.min(region.top, safeCh - 1));\n const width = Math.max(1, Math.min(region.width, safeCw - left));\n const height = Math.max(1, Math.min(region.height, safeCh - top));\n return { left, top, width, height };\n}\n//# sourceMappingURL=canvas-region.js.map","const FORMAT_ALIAS_TABLE = Object.freeze({\n jpeg: 'jpeg',\n jpg: 'jpeg',\n 'image/jpeg': 'jpeg',\n png: 'png',\n 'image/png': 'png',\n webp: 'webp',\n 'image/webp': 'webp',\n});\nconst MIME_TABLE = Object.freeze({\n jpeg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n});\nexport function normalizeImageFormat(input) {\n var _a;\n return (_a = tryNormalizeImageFormat(input)) !== null && _a !== void 0 ? _a : 'jpeg';\n}\nexport function tryNormalizeImageFormat(input) {\n var _a;\n if (!input)\n return null;\n const key = String(input).toLowerCase();\n if (Object.prototype.hasOwnProperty.call(FORMAT_ALIAS_TABLE, key)) {\n return (_a = FORMAT_ALIAS_TABLE[key]) !== null && _a !== void 0 ? _a : null;\n }\n return null;\n}\nexport function mimeTypeFor(format) {\n return MIME_TABLE[format];\n}\nexport function clampQuality(quality, fallback) {\n const numeric = Number(quality);\n if (!Number.isFinite(numeric))\n return fallback;\n return Math.max(0, Math.min(1, numeric));\n}\nexport function resolveExportFormat(options, downsampleQuality) {\n var _a;\n const providedOptions = options !== null && options !== void 0 ? options : {};\n const fileType = providedOptions.fileType;\n const formatAlias = providedOptions.format;\n const requested = fileType || formatAlias;\n const format = normalizeImageFormat(requested);\n const mimeType = mimeTypeFor(format);\n if (format === 'png') {\n return { format, mimeType, quality: undefined };\n }\n const rawQuality = (_a = providedOptions.quality) !== null && _a !== void 0 ? _a : downsampleQuality;\n const quality = clampQuality(rawQuality, downsampleQuality);\n return { format, mimeType, quality };\n}\n//# sourceMappingURL=export-format.js.map","import { CropApplyError } from '../core/errors.js';\nimport { isMaskObject } from '../core/public-types.js';\nimport { Command } from '../history/history-manager.js';\nimport { applyCropHideMaskStyle, captureMaskStyleBackup, reattachMaskHoverHandlers, restoreMaskStyleBackup, } from '../mask/mask-style.js';\nimport { getClampedCanvasRegion, getObjectBBox, hasMeaningfulCanvasRegion, } from '../utils/canvas-region.js';\nimport { clampQuality as clampExportQuality, mimeTypeFor, tryNormalizeImageFormat, } from '../export/export-format.js';\nconst CROP_RECT_FILL = 'rgba(0,0,0,0.12)';\nconst CROP_RECT_STROKE = '#00aaff';\nconst CROP_RECT_DASH = [6, 4];\nconst CROP_RECT_CORNER_SIZE = 8;\nconst CROP_DEFAULT_PADDING = 10;\nconst CROPPED_EXPORT_QUALITY_FALLBACK = 0.92;\nfunction finiteNumberOrFallback(value, fallback) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\nfunction imageMimeToFormat(mimeType) {\n if (mimeType === 'image/jpeg')\n return 'jpeg';\n if (mimeType === 'image/png')\n return 'png';\n if (mimeType === 'image/webp')\n return 'webp';\n return null;\n}\nfunction resolveLossyCropQuality(cropExportQuality, downsampleQuality) {\n const cropQuality = Number(cropExportQuality);\n if (Number.isFinite(cropQuality)) {\n return clampExportQuality(cropQuality, CROPPED_EXPORT_QUALITY_FALLBACK);\n }\n const fallbackQuality = Number(downsampleQuality);\n if (Number.isFinite(fallbackQuality)) {\n return clampExportQuality(fallbackQuality, CROPPED_EXPORT_QUALITY_FALLBACK);\n }\n return CROPPED_EXPORT_QUALITY_FALLBACK;\n}\nfunction resolveCropExportFormat(input) {\n var _a, _b;\n const requested = input.cropExportFileType;\n const format = requested === undefined || requested === null || requested === 'source'\n ? ((_a = imageMimeToFormat(input.currentImageMimeType)) !== null && _a !== void 0 ? _a : 'png')\n : ((_b = tryNormalizeImageFormat(String(requested))) !== null && _b !== void 0 ? _b : 'png');\n const mimeType = mimeTypeFor(format);\n if (format === 'png')\n return { format, mimeType };\n return {\n format,\n mimeType,\n quality: resolveLossyCropQuality(input.cropExportQuality, input.downsampleQuality),\n };\n}\nfunction getCropRectContentBounds(cropRect) {\n const angle = Number(cropRect.angle) || 0;\n const normalizedAngle = Math.abs(angle % 360);\n if (normalizedAngle > 0.01 && Math.abs(normalizedAngle - 360) > 0.01) {\n return getObjectBBox(cropRect);\n }\n return {\n left: Number(cropRect.left) || 0,\n top: Number(cropRect.top) || 0,\n width: Math.max(0, (Number(cropRect.width) || 0) * Math.abs(Number(cropRect.scaleX) || 1)),\n height: Math.max(0, (Number(cropRect.height) || 0) * Math.abs(Number(cropRect.scaleY) || 1)),\n };\n}\nfunction removeCropRect(context, session) {\n for (const targetHandlers of session.handlers) {\n for (const record of targetHandlers.handlers) {\n try {\n targetHandlers.target.off(record.eventName, record.callback);\n }\n catch {\n }\n }\n }\n session.handlers = [];\n if (session.cropRect) {\n try {\n context.canvas.remove(session.cropRect);\n }\n catch {\n }\n session.cropRect = null;\n }\n}\nfunction restoreCropObjectState(session) {\n for (const record of session.prevEvented) {\n try {\n record.object.set({ evented: record.evented, selectable: record.selectable });\n }\n catch {\n }\n }\n session.prevEvented = [];\n}\nfunction restoreCropMaskBackups(session) {\n for (const backup of session.maskBackups) {\n restoreMaskStyleBackup(backup);\n }\n session.maskBackups = [];\n}\nfunction teardownSession(context, session) {\n removeCropRect(context, session);\n restoreCropObjectState(session);\n restoreCropMaskBackups(session);\n try {\n context.canvas.selection = !!session.prevSelection;\n }\n catch {\n }\n}\nfunction maskIntersectsRegion(mask, region) {\n const bbox = getObjectBBox(mask);\n return (bbox.left < region.left + region.width &&\n bbox.left + bbox.width > region.left &&\n bbox.top < region.top + region.height &&\n bbox.top + bbox.height > region.top);\n}\nfunction capturePreservedMasks(canvas, cropRegion, maskBackups = []) {\n var _a;\n const records = [];\n const styleBackupByMask = new Map(maskBackups.map((backup) => [backup.object, backup]));\n const masks = canvas.getObjects().filter(isMaskObject);\n for (const mask of masks) {\n try {\n mask.setCoords();\n const intersects = maskIntersectsRegion(mask, cropRegion);\n if (intersects) {\n const styleBackup = (_a = styleBackupByMask.get(mask)) !== null && _a !== void 0 ? _a : captureMaskStyleBackup(mask);\n records.push({\n mask,\n left: finiteNumberOrFallback(mask.left, 0),\n top: finiteNumberOrFallback(mask.top, 0),\n angle: finiteNumberOrFallback(mask.angle, 0),\n scaleX: finiteNumberOrFallback(mask.scaleX, 1),\n scaleY: finiteNumberOrFallback(mask.scaleY, 1),\n styleBackup,\n });\n }\n canvas.remove(mask);\n }\n catch {\n }\n }\n return records;\n}\nfunction reapplyPreservedMasks(context, cropRegion, records) {\n var _a;\n if (records.length === 0)\n return;\n const { canvas } = context;\n let maxRestoredId = 0;\n for (const record of records) {\n try {\n restoreMaskStyleBackup(record.styleBackup);\n record.mask.set({\n left: record.left - cropRegion.left,\n top: record.top - cropRegion.top,\n angle: record.angle,\n scaleX: record.scaleX,\n scaleY: record.scaleY,\n visible: true,\n });\n record.mask.setCoords();\n canvas.add(record.mask);\n canvas.bringObjectToFront(record.mask);\n reattachMaskHoverHandlers(record.mask);\n const id = Number(record.mask.maskId);\n if (Number.isFinite(id) && id > maxRestoredId)\n maxRestoredId = id;\n }\n catch {\n }\n }\n if (typeof context.getMaskCounter === 'function' &&\n typeof context.setMaskCounter === 'function') {\n const liveCounter = Number(context.getMaskCounter());\n const safeCounter = Number.isFinite(liveCounter) ? liveCounter : 0;\n context.setMaskCounter(Math.max(safeCounter, maxRestoredId));\n }\n try {\n (_a = context.updateMaskList) === null || _a === void 0 ? void 0 : _a.call(context);\n }\n catch {\n }\n}\nexport function enterCropMode(context) {\n const { canvas, options } = context;\n if (context.getCropSession())\n return;\n const originalImage = context.getOriginalImage();\n if (!originalImage)\n return;\n if (!context.isImageLoaded())\n return;\n canvas.discardActiveObject();\n const beforeJson = context.saveState();\n const prevSelection = !!canvas.selection;\n canvas.selection = false;\n originalImage.setCoords();\n const imageBounds = originalImage.getBoundingRect();\n const padding = Number.isFinite(Number(options.crop.padding))\n ? Number(options.crop.padding)\n : CROP_DEFAULT_PADDING;\n const boundsLeft = Math.max(0, Math.floor(imageBounds.left));\n const boundsTop = Math.max(0, Math.floor(imageBounds.top));\n const maxCropWidth = Math.max(1, Math.floor(imageBounds.width));\n const maxCropHeight = Math.max(1, Math.floor(imageBounds.height));\n const rectLeft = Math.min(boundsLeft + maxCropWidth - 1, Math.max(boundsLeft, Math.floor(imageBounds.left + padding)));\n const rectTop = Math.min(boundsTop + maxCropHeight - 1, Math.max(boundsTop, Math.floor(imageBounds.top + padding)));\n const configuredMinWidth = Math.max(1, Number(options.crop.minWidth) || 1);\n const configuredMinHeight = Math.max(1, Number(options.crop.minHeight) || 1);\n const minCropWidth = Math.min(configuredMinWidth, maxCropWidth);\n const minCropHeight = Math.min(configuredMinHeight, maxCropHeight);\n const allowRotation = !!options.crop.allowRotationOfCropRect;\n const cropRect = new context.fabric.Rect({\n left: rectLeft,\n top: rectTop,\n width: minCropWidth,\n height: minCropHeight,\n originX: 'left',\n originY: 'top',\n fill: CROP_RECT_FILL,\n stroke: CROP_RECT_STROKE,\n strokeDashArray: CROP_RECT_DASH,\n strokeWidth: 1,\n strokeUniform: true,\n selectable: true,\n lockRotation: !allowRotation,\n cornerSize: CROP_RECT_CORNER_SIZE,\n objectCaching: false,\n lockScalingFlip: true,\n });\n if (!allowRotation) {\n cropRect.setControlVisible('mtr', false);\n }\n canvas.add(cropRect);\n cropRect.isCropRect = true;\n canvas.bringObjectToFront(cropRect);\n canvas.setActiveObject(cropRect);\n const hideMasks = !!options.crop.hideMasksDuringCrop;\n const maskBackups = [];\n if (hideMasks) {\n canvas.getObjects().forEach((object) => {\n if (object === cropRect)\n return;\n if (!isMaskObject(object))\n return;\n maskBackups.push(captureMaskStyleBackup(object));\n });\n }\n const prevEvented = [];\n canvas.getObjects().forEach((object) => {\n var _a, _b;\n if (object === cropRect)\n return;\n prevEvented.push({\n object,\n evented: (_a = object.evented) !== null && _a !== void 0 ? _a : true,\n selectable: (_b = object.selectable) !== null && _b !== void 0 ? _b : true,\n });\n try {\n object.set({ evented: false, selectable: false });\n }\n catch {\n }\n });\n if (hideMasks) {\n for (const backup of maskBackups) {\n applyCropHideMaskStyle(backup.object);\n }\n }\n const handleCropRectModified = () => {\n try {\n const cropWidth = Math.max(1, Number(cropRect.width) || 1);\n const cropHeight = Math.max(1, Number(cropRect.height) || 1);\n const nextScaleX = Math.min(maxCropWidth / cropWidth, Math.max(minCropWidth / cropWidth, Number(cropRect.scaleX) || 1));\n const nextScaleY = Math.min(maxCropHeight / cropHeight, Math.max(minCropHeight / cropHeight, Number(cropRect.scaleY) || 1));\n const scaledWidth = cropWidth * nextScaleX;\n const scaledHeight = cropHeight * nextScaleY;\n const maxLeft = Math.max(boundsLeft, boundsLeft + maxCropWidth - scaledWidth);\n const maxTop = Math.max(boundsTop, boundsTop + maxCropHeight - scaledHeight);\n const nextLeft = Math.min(maxLeft, Math.max(boundsLeft, Number(cropRect.left) || boundsLeft));\n const nextTop = Math.min(maxTop, Math.max(boundsTop, Number(cropRect.top) || boundsTop));\n cropRect.set({\n left: nextLeft,\n top: nextTop,\n scaleX: nextScaleX,\n scaleY: nextScaleY,\n });\n cropRect.setCoords();\n canvas.requestRenderAll();\n }\n catch {\n }\n };\n cropRect.on('modified', handleCropRectModified);\n cropRect.on('moving', handleCropRectModified);\n cropRect.on('scaling', handleCropRectModified);\n const session = {\n beforeJson,\n prevSelection,\n prevEvented,\n maskBackups,\n cropRect,\n handlers: [\n {\n target: cropRect,\n handlers: [\n { eventName: 'modified', callback: handleCropRectModified },\n { eventName: 'moving', callback: handleCropRectModified },\n { eventName: 'scaling', callback: handleCropRectModified },\n ],\n },\n ],\n };\n context.setCropSession(session);\n canvas.renderAll();\n}\nexport function cancelCrop(context) {\n const session = context.getCropSession();\n if (!session)\n return;\n context.canvas.discardActiveObject();\n teardownSession(context, session);\n context.setCropSession(null);\n try {\n context.canvas.renderAll();\n }\n catch {\n }\n}\nexport async function applyCrop(context) {\n var _a, _b;\n const session = context.getCropSession();\n if (!session || !session.cropRect)\n return;\n const { canvas } = context;\n canvas.discardActiveObject();\n const beforeJson = session.beforeJson;\n const cropRect = session.cropRect;\n const preserveMasks = !!context.options.crop.preserveMasksAfterCrop;\n try {\n cropRect.setCoords();\n const cropAngle = Number(cropRect.angle) || 0;\n if (!context.options.crop.allowRotationOfCropRect && Math.abs(cropAngle % 360) > 0.01) {\n throw new CropApplyError('applyCrop failed: rotated crop rectangles are disabled.');\n }\n const rectBounds = getCropRectContentBounds(cropRect);\n if (!hasMeaningfulCanvasRegion(rectBounds, canvas.getWidth(), canvas.getHeight())) {\n throw new CropApplyError('applyCrop failed: crop region is empty or outside the canvas.');\n }\n const cropRegion = getClampedCanvasRegion(rectBounds, canvas.getWidth(), canvas.getHeight(), { includePartialPixels: false });\n const preservedRecords = preserveMasks\n ? capturePreservedMasks(canvas, cropRegion, session.maskBackups)\n : [];\n restoreCropObjectState(session);\n removeCropRect(context, session);\n canvas.selection = !!session.prevSelection;\n const cropFormat = resolveCropExportFormat({\n cropExportFileType: context.options.crop.exportFileType,\n currentImageMimeType: (_b = (_a = context.getCurrentImageMimeType) === null || _a === void 0 ? void 0 : _a.call(context)) !== null && _b !== void 0 ? _b : null,\n cropExportQuality: context.options.crop.exportQuality,\n downsampleQuality: context.options.downsampleQuality,\n });\n const exportOptions = {\n format: cropFormat.format,\n multiplier: 1,\n left: cropRegion.left,\n top: cropRegion.top,\n width: cropRegion.width,\n height: cropRegion.height,\n };\n if (cropFormat.quality !== undefined) {\n exportOptions.quality = cropFormat.quality;\n }\n const croppedBase64 = canvas.toDataURL(exportOptions);\n await context.loadImage(croppedBase64);\n if (preservedRecords.length > 0) {\n reapplyPreservedMasks(context, cropRegion, preservedRecords);\n canvas.renderAll();\n }\n const afterJson = context.saveState();\n context.setCropSession(null);\n if (beforeJson && afterJson && beforeJson !== afterJson) {\n context.historyManager.push(new Command(() => context.loadFromState(afterJson), () => context.loadFromState(beforeJson)));\n }\n }\n catch (error) {\n teardownSession(context, session);\n context.setCropSession(null);\n try {\n await context.loadFromState(beforeJson);\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] applyCrop: rollback failed', rollbackError);\n }\n if (error instanceof CropApplyError)\n throw error;\n const message = error instanceof Error ? `applyCrop failed: ${error.message}` : 'applyCrop failed';\n throw new CropApplyError(message, error);\n }\n}\n//# sourceMappingURL=crop-controller.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { reportError } from '../core/callback-reporter.js';\nimport { ExportError, ExportNotReadyError, MergeMasksError } from '../core/errors.js';\nimport { Command } from '../history/history-manager.js';\nimport { withMaskStyleBackup } from '../mask/mask-style.js';\nimport { getClampedCanvasRegion, getObjectBBox, getPartialExportEdges, hasMeaningfulCanvasRegion, } from '../utils/canvas-region.js';\nimport { resolveExportFormat } from './export-format.js';\nfunction resolveMultiplier(requested, fallback) {\n const num = Number(requested);\n if (Number.isFinite(num) && num > 0)\n return num;\n const fallbackValue = Number(fallback);\n return Number.isFinite(fallbackValue) && fallbackValue > 0 ? fallbackValue : 1;\n}\nfunction resolveExportArea(requested, fallback) {\n if (requested === 'canvas' || requested === 'image')\n return requested;\n return fallback === 'canvas' ? 'canvas' : 'image';\n}\nfunction resolveExportOptions(context, options) {\n const providedOptions = options !== null && options !== void 0 ? options : {};\n return {\n exportArea: resolveExportArea(providedOptions.exportArea, context.options.exportAreaByDefault),\n mergeMask: typeof providedOptions.mergeMask === 'boolean'\n ? providedOptions.mergeMask\n : context.options.mergeMaskByDefault,\n multiplier: resolveMultiplier(providedOptions.multiplier, context.options.exportMultiplier),\n format: resolveExportFormat(providedOptions, context.options.downsampleQuality),\n };\n}\nfunction readCanvasDimension(canvas, getterName, propertyName) {\n const canvasLike = canvas;\n const getter = canvasLike[getterName];\n const value = typeof getter === 'function' ? getter.call(canvasLike) : canvasLike[propertyName];\n return Math.max(1, Math.ceil(Number.isFinite(value) ? Number(value) : 1));\n}\nfunction assertExportPixelBudget(context, multiplier, region) {\n var _a, _b;\n const sourceWidth = (_a = region === null || region === void 0 ? void 0 : region.width) !== null && _a !== void 0 ? _a : readCanvasDimension(context.canvas, 'getWidth', 'width');\n const sourceHeight = (_b = region === null || region === void 0 ? void 0 : region.height) !== null && _b !== void 0 ? _b : readCanvasDimension(context.canvas, 'getHeight', 'height');\n const outputWidth = Math.max(1, Math.ceil(sourceWidth * multiplier));\n const outputHeight = Math.max(1, Math.ceil(sourceHeight * multiplier));\n const pixelCount = outputWidth * outputHeight;\n const maxPixels = context.options.maxExportPixels;\n if (!Number.isFinite(pixelCount) || pixelCount > maxPixels) {\n throw new RangeError(`[ImageEditor] Export size ${outputWidth}x${outputHeight} ` +\n `(${pixelCount} pixels) exceeds maxExportPixels (${maxPixels}).`);\n }\n}\nfunction computeExportRegion(context, exportArea) {\n if (exportArea === 'canvas')\n return { region: null, partialEdges: null };\n const originalImage = context.getOriginalImage();\n if (!originalImage)\n return { region: null, partialEdges: null };\n const bounds = getObjectBBox(originalImage);\n const canvasLike = context.canvas;\n const canvasWidth = typeof canvasLike.getWidth === 'function' ? canvasLike.getWidth() : canvasLike.width;\n const canvasHeight = typeof canvasLike.getHeight === 'function' ? canvasLike.getHeight() : canvasLike.height;\n if (!hasMeaningfulCanvasRegion(bounds, canvasWidth, canvasHeight)) {\n throw new ExportError('exportImageBase64 failed: image export region is empty.');\n }\n return {\n region: getClampedCanvasRegion(bounds, canvasWidth, canvasHeight, {\n includePartialPixels: true,\n }),\n partialEdges: getPartialExportEdges(bounds, Number(originalImage.angle) || 0),\n };\n}\nasync function withMaskExportState(context, mergeMask, callback) {\n if (!mergeMask)\n return withMasksHidden(context, callback);\n return withMaskStyleBackup({ canvas: context.canvas, options: context.options }, applyExportBakeInStyle, callback);\n}\nasync function withMasksHidden(context, callback) {\n const backups = getCanvasObjects(context.canvas)\n .filter(isMaskObject)\n .map((mask) => ({\n mask,\n visible: mask.visible,\n }));\n for (const backup of backups) {\n try {\n if (typeof backup.mask.set === 'function') {\n backup.mask.set({ visible: false });\n }\n else {\n backup.mask.visible = false;\n }\n }\n catch {\n }\n }\n try {\n return await callback();\n }\n finally {\n for (const backup of backups) {\n try {\n if (typeof backup.mask.set === 'function') {\n backup.mask.set({ visible: backup.visible });\n }\n else {\n backup.mask.visible = backup.visible;\n }\n }\n catch {\n }\n }\n }\n}\nfunction getCanvasObjects(canvas) {\n try {\n return canvas.getObjects();\n }\n catch {\n return [];\n }\n}\nfunction isObjectOnCanvas(canvas, object) {\n return getCanvasObjects(canvas).includes(object);\n}\nfunction captureMaskLabelBackups(canvas) {\n const backups = [];\n for (const object of getCanvasObjects(canvas)) {\n if (!isMaskObject(object))\n continue;\n const label = object.labelObject;\n if (!label)\n continue;\n const wasOnCanvas = isObjectOnCanvas(canvas, label);\n backups.push({\n mask: object,\n label,\n wasOnCanvas,\n visible: label.visible,\n });\n try {\n if (typeof label.set === 'function')\n label.set({ visible: false });\n if (wasOnCanvas)\n canvas.remove(label);\n }\n catch {\n }\n }\n return backups;\n}\nfunction restoreMaskLabelBackups(canvas, backups) {\n for (const backup of backups) {\n try {\n backup.mask.labelObject = backup.label;\n if (typeof backup.label.set === 'function') {\n backup.label.set({ visible: backup.visible });\n }\n else {\n backup.label.visible = backup.visible;\n }\n if (backup.wasOnCanvas && !isObjectOnCanvas(canvas, backup.label)) {\n canvas.add(backup.label);\n canvas.bringObjectToFront(backup.label);\n }\n }\n catch {\n }\n }\n}\nfunction captureActiveObject(canvas) {\n var _a;\n try {\n const canvasWithSelection = canvas;\n if (typeof canvasWithSelection.getActiveObject !== 'function')\n return null;\n return (_a = canvasWithSelection.getActiveObject()) !== null && _a !== void 0 ? _a : null;\n }\n catch {\n return null;\n }\n}\nfunction restoreActiveObject(canvas, activeObject) {\n if (!activeObject)\n return;\n try {\n const canvasWithSelection = canvas;\n if (typeof canvasWithSelection.setActiveObject === 'function') {\n canvasWithSelection.setActiveObject(activeObject);\n }\n }\n catch {\n }\n}\nfunction requestRender(canvas) {\n try {\n if (typeof canvas.requestRenderAll === 'function') {\n canvas.requestRenderAll();\n }\n else {\n canvas.renderAll();\n }\n }\n catch {\n }\n}\nfunction applyExportBakeInStyle(mask) {\n try {\n mask.set({\n opacity: 1,\n fill: '#000',\n strokeWidth: 0,\n stroke: null,\n selectable: false,\n });\n if (typeof mask.setCoords === 'function')\n mask.setCoords();\n }\n catch {\n }\n}\nfunction renderCanvasToDataUrl(canvas, format, quality, multiplier, region) {\n const fabricOptions = {\n format,\n multiplier,\n };\n if (quality !== undefined)\n fabricOptions.quality = quality;\n if (region) {\n fabricOptions.left = region.left;\n fabricOptions.top = region.top;\n fabricOptions.width = region.width;\n fabricOptions.height = region.height;\n }\n return canvas.toDataURL(fabricOptions);\n}\nfunction hasPartialEdges(edges) {\n return !!edges && (edges.left || edges.top || edges.right || edges.bottom);\n}\nfunction getImageDimensions(imageElement) {\n return {\n width: Math.max(1, imageElement.naturalWidth || imageElement.width || 1),\n height: Math.max(1, imageElement.naturalHeight || imageElement.height || 1),\n };\n}\nfunction loadImageElement(dataUrl) {\n return new Promise((resolve, reject) => {\n const imageElement = new Image();\n imageElement.crossOrigin = 'anonymous';\n const cleanup = () => {\n if (typeof imageElement.removeEventListener === 'function') {\n imageElement.removeEventListener('load', handleLoad);\n imageElement.removeEventListener('error', handleError);\n }\n else {\n imageElement.onload = null;\n imageElement.onerror = null;\n }\n };\n const handleLoad = () => {\n cleanup();\n resolve(imageElement);\n };\n const handleError = () => {\n cleanup();\n reject(new Error('Failed to decode export data URL'));\n };\n if (typeof imageElement.addEventListener === 'function') {\n imageElement.addEventListener('load', handleLoad, { once: true });\n imageElement.addEventListener('error', handleError, { once: true });\n }\n else {\n imageElement.onload = handleLoad;\n imageElement.onerror = handleError;\n }\n imageElement.src = dataUrl;\n });\n}\nasync function sealPartialTransparentEdges(dataUrl, edges) {\n if (!hasPartialEdges(edges))\n return dataUrl;\n const imageElement = await loadImageElement(dataUrl);\n const { width, height } = getImageDimensions(imageElement);\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const canvasContext = offscreenCanvas.getContext('2d');\n if (!canvasContext)\n throw new Error('2D canvas context is unavailable');\n canvasContext.drawImage(imageElement, 0, 0, width, height);\n const imageData = canvasContext.getImageData(0, 0, width, height);\n const pixels = imageData.data;\n const sealPixel = (x, y, fallbackX, fallbackY) => {\n var _a, _b, _c, _d, _e, _f;\n const index = (y * width + x) * 4;\n const fallbackIndex = (fallbackY * width + fallbackX) * 4;\n const alpha = (_a = pixels[index + 3]) !== null && _a !== void 0 ? _a : 0;\n const fallbackAlpha = (_b = pixels[fallbackIndex + 3]) !== null && _b !== void 0 ? _b : 0;\n if (alpha === 0 && fallbackAlpha > 0) {\n pixels[index] = (_c = pixels[fallbackIndex]) !== null && _c !== void 0 ? _c : 0;\n pixels[index + 1] = (_d = pixels[fallbackIndex + 1]) !== null && _d !== void 0 ? _d : 0;\n pixels[index + 2] = (_e = pixels[fallbackIndex + 2]) !== null && _e !== void 0 ? _e : 0;\n pixels[index + 3] = fallbackAlpha;\n }\n const nextAlpha = (_f = pixels[index + 3]) !== null && _f !== void 0 ? _f : 0;\n if (nextAlpha > 0 && nextAlpha < 255) {\n pixels[index + 3] = 255;\n }\n };\n if ((edges === null || edges === void 0 ? void 0 : edges.left) && width > 1) {\n for (let y = 0; y < height; y += 1)\n sealPixel(0, y, 1, y);\n }\n if ((edges === null || edges === void 0 ? void 0 : edges.right) && width > 1) {\n for (let y = 0; y < height; y += 1)\n sealPixel(width - 1, y, width - 2, y);\n }\n if ((edges === null || edges === void 0 ? void 0 : edges.top) && height > 1) {\n for (let x = 0; x < width; x += 1)\n sealPixel(x, 0, x, 1);\n }\n if ((edges === null || edges === void 0 ? void 0 : edges.bottom) && height > 1) {\n for (let x = 0; x < width; x += 1)\n sealPixel(x, height - 1, x, height - 2);\n }\n canvasContext.putImageData(imageData, 0, 0);\n return offscreenCanvas.toDataURL('image/png');\n}\nfunction getJpegBackgroundColor(backgroundColor) {\n return resolveCanvasFillStyle(backgroundColor);\n}\nfunction resolveCanvasFillStyle(backgroundColor, fallback = '#ffffff') {\n const value = String(backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : '').trim();\n if (!value || isTransparentCssColor(value))\n return '#ffffff';\n const context = createColorValidationContext();\n if (!context)\n return fallback;\n context.fillStyle = '#000001';\n const firstSentinel = context.fillStyle;\n context.fillStyle = value;\n const firstResolved = context.fillStyle;\n if (firstResolved !== firstSentinel)\n return firstResolved;\n context.fillStyle = '#000002';\n const secondSentinel = context.fillStyle;\n context.fillStyle = value;\n const secondResolved = context.fillStyle;\n if (secondResolved !== secondSentinel)\n return secondResolved;\n return fallback;\n}\nfunction createColorValidationContext() {\n try {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return null;\n }\n return document.createElement('canvas').getContext('2d');\n }\n catch {\n return null;\n }\n}\nfunction isTransparentCssColor(value) {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'transparent')\n return true;\n const hex = normalized.match(/^#([0-9a-f]{4}|[0-9a-f]{8})$/i);\n if (hex) {\n const digits = hex[1];\n const alpha = digits.length === 4 ? digits[3] : digits.slice(6, 8);\n return /^0+$/.test(alpha);\n }\n const commaAlpha = normalized.match(/^(?:rgba|hsla)\\((.*),\\s*([^,/)]+)\\)$/i);\n if (commaAlpha && isZeroCssAlpha(commaAlpha[2]))\n return true;\n const slashAlpha = normalized.match(/^[a-z][a-z0-9-]*\\([^/]+\\/\\s*([^)]+)\\)$/i);\n if (slashAlpha && isZeroCssAlpha(slashAlpha[1]))\n return true;\n return false;\n}\nfunction isZeroCssAlpha(value) {\n const alpha = value.trim();\n if (alpha.endsWith('%')) {\n const numericPercent = Number.parseFloat(alpha.slice(0, -1));\n return Number.isFinite(numericPercent) && numericPercent === 0;\n }\n const numericAlpha = Number.parseFloat(alpha);\n return Number.isFinite(numericAlpha) && numericAlpha === 0;\n}\nasync function convertDataUrlToOpaqueJpeg(dataUrl, backgroundColor, quality) {\n const imageElement = await loadImageElement(dataUrl);\n const { width, height } = getImageDimensions(imageElement);\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const canvasContext = offscreenCanvas.getContext('2d');\n if (!canvasContext)\n throw new Error('2D canvas context is unavailable');\n canvasContext.fillStyle = getJpegBackgroundColor(backgroundColor);\n canvasContext.fillRect(0, 0, width, height);\n canvasContext.drawImage(imageElement, 0, 0, width, height);\n return offscreenCanvas.toDataURL('image/jpeg', quality);\n}\nfunction dataUrlToBytes(dataUrl) {\n var _a;\n const match = /^data:image\\/[a-z0-9.+-]+;base64,([A-Za-z0-9+/=\\s]+)$/i.exec(dataUrl);\n if (!match || !((_a = match[1]) === null || _a === void 0 ? void 0 : _a.trim())) {\n throw new Error('exportImageFile received a malformed or empty image data URL.');\n }\n const commaAt = dataUrl.indexOf(',');\n const base64 = dataUrl.slice(commaAt + 1).replace(/\\s/g, '');\n if (typeof globalThis.atob === 'function') {\n const binary = globalThis.atob(base64);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = binary.length - 1; i >= 0; i -= 1) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n const bufferCtor = globalThis.Buffer;\n if (bufferCtor && typeof bufferCtor.from === 'function') {\n const source = bufferCtor.from(base64, 'base64');\n const buffer = new ArrayBuffer(source.length);\n const bytes = new Uint8Array(buffer);\n bytes.set(source);\n return bytes;\n }\n throw new Error('No base64 decoder is available for exportImageFile.');\n}\nasync function reencodeDataUrlAs(sourceDataUrl, target, backgroundColor) {\n if (sourceDataUrl.startsWith(`data:${target.mimeType}`)) {\n return sourceDataUrl;\n }\n const imageElement = await loadImageElement(sourceDataUrl);\n const { width, height } = getImageDimensions(imageElement);\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const canvasContext = offscreenCanvas.getContext('2d');\n if (!canvasContext) {\n throw new Error('Unable to acquire 2D context for export conversion');\n }\n if (target.format === 'jpeg') {\n canvasContext.fillStyle = getJpegBackgroundColor(backgroundColor);\n canvasContext.fillRect(0, 0, width, height);\n }\n canvasContext.drawImage(imageElement, 0, 0, width, height);\n return offscreenCanvas.toDataURL(target.mimeType, target.quality);\n}\nfunction warnNoImageLoaded(operation) {\n console.warn(`[ImageEditor] ${operation} skipped: no image is loaded on the canvas.`);\n}\nexport async function exportImageBase64(context, options) {\n if (!context.isImageLoaded()) {\n warnNoImageLoaded('exportImageBase64');\n return '';\n }\n const activeObject = captureActiveObject(context.canvas);\n const labelBackups = captureMaskLabelBackups(context.canvas);\n try {\n context.canvas.discardActiveObject();\n const resolved = resolveExportOptions(context, options);\n const { region, partialEdges } = computeExportRegion(context, resolved.exportArea);\n assertExportPixelBudget(context, resolved.multiplier, region);\n const renderFormat = region && resolved.format.format === 'jpeg' ? 'png' : resolved.format.format;\n const renderQuality = renderFormat === 'png' ? undefined : resolved.format.quality;\n let dataUrl = await withMaskExportState(context, resolved.mergeMask, async () => renderCanvasToDataUrl(context.canvas, renderFormat, renderQuality, resolved.multiplier, region));\n if (region) {\n dataUrl = await sealPartialTransparentEdges(dataUrl, partialEdges);\n if (resolved.format.format === 'jpeg') {\n dataUrl = await convertDataUrlToOpaqueJpeg(dataUrl, context.options.backgroundColor, resolved.format.quality);\n }\n }\n return dataUrl;\n }\n finally {\n restoreMaskLabelBackups(context.canvas, labelBackups);\n restoreActiveObject(context.canvas, activeObject);\n requestRender(context.canvas);\n }\n}\nexport async function exportImageFile(context, options) {\n var _a;\n if (!context.isImageLoaded()) {\n warnNoImageLoaded('exportImageFile');\n throw new ExportNotReadyError('exportImageFile');\n }\n const providedOptions = options !== null && options !== void 0 ? options : {};\n const fileName = (_a = providedOptions.fileName) !== null && _a !== void 0 ? _a : context.options.defaultDownloadFileName;\n const resolved = resolveExportFormat(providedOptions, context.options.downsampleQuality);\n const base64 = await exportImageBase64(context, {\n exportArea: providedOptions.exportArea,\n mergeMask: providedOptions.mergeMask,\n multiplier: providedOptions.multiplier,\n quality: providedOptions.quality,\n fileType: providedOptions.fileType,\n });\n if (!base64) {\n throw new ExportNotReadyError('exportImageFile');\n }\n const finalDataUrl = await reencodeDataUrlAs(base64, resolved, context.options.backgroundColor);\n let bytes;\n try {\n bytes = dataUrlToBytes(finalDataUrl);\n }\n catch (error) {\n throw new ExportError('exportImageFile failed to decode rendered data URL.', error);\n }\n return new File([bytes], fileName, { type: resolved.mimeType });\n}\nexport function downloadImage(context, fileName) {\n if (!context.isImageLoaded()) {\n warnNoImageLoaded('downloadImage');\n return;\n }\n const resolvedFileName = fileName !== null && fileName !== void 0 ? fileName : context.options.defaultDownloadFileName;\n void exportImageBase64(context, {\n exportArea: context.options.exportAreaByDefault,\n mergeMask: context.options.mergeMaskByDefault,\n multiplier: context.options.exportMultiplier,\n })\n .then((dataUrl) => {\n if (!dataUrl)\n return;\n const link = document.createElement('a');\n link.download = resolvedFileName;\n link.href = dataUrl;\n document.body.appendChild(link);\n try {\n link.click();\n }\n finally {\n document.body.removeChild(link);\n }\n })\n .catch((error) => {\n reportError(context.options, error, 'downloadImage failed.');\n console.error('[ImageEditor] downloadImage failed', error);\n });\n}\nexport async function mergeMasks(context) {\n if (!context.isImageLoaded())\n return;\n const masks = context.canvas\n .getObjects()\n .filter((o) => 'maskId' in o && typeof o.maskId === 'number');\n if (masks.length === 0)\n return;\n const beforeSnapshot = context.saveState();\n context.canvas.discardActiveObject();\n context.canvas.renderAll();\n const preScrollTop = context.containerElement ? context.containerElement.scrollTop : null;\n const preScrollLeft = context.containerElement ? context.containerElement.scrollLeft : null;\n try {\n const merged = await exportImageBase64(context, {\n exportArea: 'image',\n mergeMask: true,\n multiplier: context.options.exportMultiplier,\n fileType: 'png',\n });\n if (!merged) {\n throw new MergeMasksError('mergeMasks: exportImageBase64 returned an empty data URL.');\n }\n context.removeAllMasksNoHistory();\n await context.loadImage(merged, { preserveScroll: true });\n const afterSnapshot = context.saveState();\n if (context.containerElement) {\n try {\n if (preScrollTop !== null) {\n context.containerElement.scrollTop = preScrollTop;\n }\n if (preScrollLeft !== null) {\n context.containerElement.scrollLeft = preScrollLeft;\n }\n }\n catch (scrollError) {\n console.warn('[ImageEditor] mergeMasks: scroll restore failed', scrollError);\n }\n }\n if (beforeSnapshot && afterSnapshot && beforeSnapshot !== afterSnapshot) {\n context.historyManager.push(new Command(() => context.loadFromState(afterSnapshot), () => context.loadFromState(beforeSnapshot)));\n }\n }\n catch (error) {\n try {\n await context.loadFromState(beforeSnapshot);\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] mergeMasks: rollback failed', rollbackError);\n }\n if (error instanceof MergeMasksError)\n throw error;\n const message = error instanceof Error ? `mergeMasks failed: ${error.message}` : 'mergeMasks failed';\n throw new MergeMasksError(message, error);\n }\n}\n//# sourceMappingURL=export-service.js.map","import { ImageLoadTimeoutError } from '../core/errors.js';\nexport function withTimeout(promise, ms, label) {\n return new Promise((resolve, reject) => {\n const start = Date.now();\n const timeoutId = setTimeout(() => {\n reject(new ImageLoadTimeoutError(label, Date.now() - start));\n }, ms);\n promise.then((value) => {\n clearTimeout(timeoutId);\n resolve(value);\n }, (err) => {\n clearTimeout(timeoutId);\n reject(err);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","export function forceReflow(element) {\n if (!element)\n return;\n void element.offsetWidth;\n}\n//# sourceMappingURL=dom.js.map","import { forceReflow } from '../utils/dom.js';\nexport function selectLayoutStrategy(options) {\n if (options.fitImageToCanvas)\n return 'fit';\n if (options.coverImageToCanvas)\n return 'cover';\n return 'expand';\n}\nexport function detectLayoutConflict(options) {\n if (!options.fitImageToCanvas || !options.coverImageToCanvas)\n return null;\n const enabled = ['fit', 'cover'];\n if (options.expandCanvasToImage)\n enabled.push('expand');\n const selected = selectLayoutStrategy(options);\n return {\n enabled,\n selected,\n message: `Layout flags ${enabled.map((s) => `\\`${s}\\``).join(', ')} are enabled simultaneously. ` +\n `Using precedence \\`fit > cover > expand\\`; selected \\`${selected}\\`.`,\n };\n}\nexport class ViewportCache {\n constructor() {\n Object.defineProperty(this, \"lastVisible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n }\n measure(container, fallback, scrollbarSize) {\n var _a;\n if (!container)\n return fallback;\n const containerWidth = Math.floor(container.clientWidth);\n const containerHeight = Math.floor(container.clientHeight);\n if (containerWidth > 0 && containerHeight > 0) {\n this.lastVisible = measureContainerViewport(container, fallback, scrollbarSize);\n return this.lastVisible;\n }\n return (_a = this.lastVisible) !== null && _a !== void 0 ? _a : fallback;\n }\n peek() {\n return this.lastVisible;\n }\n clear() {\n this.lastVisible = null;\n }\n}\nconst OVERFLOW_EPSILON = 0.5;\nfunction normalizeOverflowValue(value) {\n return String(value !== null && value !== void 0 ? value : '')\n .trim()\n .toLowerCase();\n}\nfunction getContainerOverflowValues(container) {\n var _a, _b;\n const style = container.style;\n let computedOverflow = '';\n let computedOverflowX = '';\n let computedOverflowY = '';\n const view = (_b = (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) !== null && _b !== void 0 ? _b : (typeof window === 'undefined' ? null : window);\n if (typeof (view === null || view === void 0 ? void 0 : view.getComputedStyle) === 'function') {\n const computed = view.getComputedStyle(container);\n computedOverflow = computed.overflow;\n computedOverflowX = computed.overflowX;\n computedOverflowY = computed.overflowY;\n }\n const x = [\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflow),\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflowX),\n normalizeOverflowValue(computedOverflow),\n normalizeOverflowValue(computedOverflowX),\n ];\n const y = [\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflow),\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflowY),\n normalizeOverflowValue(computedOverflow),\n normalizeOverflowValue(computedOverflowY),\n ];\n return { x, y, all: [...x, ...y] };\n}\nfunction isAutoScrollableOverflow(value) {\n return value === 'auto' || value === 'overlay';\n}\nexport function measureScrollbarSize(ownerDocument) {\n const doc = ownerDocument !== null && ownerDocument !== void 0 ? ownerDocument : (typeof document === 'undefined' ? null : document);\n if (!(doc === null || doc === void 0 ? void 0 : doc.body))\n return { width: 0, height: 0 };\n const probe = doc.createElement('div');\n probe.style.position = 'absolute';\n probe.style.left = '-9999px';\n probe.style.top = '-9999px';\n probe.style.width = '100px';\n probe.style.height = '100px';\n probe.style.overflow = 'scroll';\n probe.style.visibility = 'hidden';\n probe.style.pointerEvents = 'none';\n doc.body.appendChild(probe);\n const width = Math.max(0, probe.offsetWidth - probe.clientWidth);\n const height = Math.max(0, probe.offsetHeight - probe.clientHeight);\n probe.remove();\n return { width, height };\n}\nfunction normalizeScrollbarSize(scrollbarSize) {\n return {\n width: Math.max(0, Number(scrollbarSize === null || scrollbarSize === void 0 ? void 0 : scrollbarSize.width) || 0),\n height: Math.max(0, Number(scrollbarSize === null || scrollbarSize === void 0 ? void 0 : scrollbarSize.height) || 0),\n };\n}\nexport function measureContainerViewport(container, fallback, scrollbarSize) {\n if (!container)\n return fallback;\n const clientWidth = Math.floor(container.clientWidth || 0);\n const clientHeight = Math.floor(container.clientHeight || 0);\n if (clientWidth <= 0 || clientHeight <= 0)\n return fallback;\n const overflow = getContainerOverflowValues(container);\n if (overflow.all.includes('scroll')) {\n return { width: clientWidth, height: clientHeight };\n }\n const scrollbar = normalizeScrollbarSize(scrollbarSize);\n const canAutoScrollX = overflow.x.some(isAutoScrollableOverflow);\n const canAutoScrollY = overflow.y.some(isAutoScrollableOverflow);\n const scrollWidth = Math.ceil(container.scrollWidth || 0);\n const scrollHeight = Math.ceil(container.scrollHeight || 0);\n const hasHorizontalScrollbar = canAutoScrollX && scrollWidth > clientWidth + OVERFLOW_EPSILON;\n const hasVerticalScrollbar = canAutoScrollY && scrollHeight > clientHeight + OVERFLOW_EPSILON;\n return {\n width: clientWidth + (hasVerticalScrollbar ? scrollbar.width : 0),\n height: clientHeight + (hasHorizontalScrollbar ? scrollbar.height : 0),\n };\n}\nexport function computeScrollableCanvasSize(contentWidth, contentHeight, viewport, scrollbarSize) {\n const viewportW = Math.max(1, viewport.width || 1);\n const viewportH = Math.max(1, viewport.height || 1);\n const scrollbar = normalizeScrollbarSize(scrollbarSize);\n let hasHorizontal = false;\n let hasVertical = false;\n for (let i = 0; i < 4; i += 1) {\n const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n const nextHorizontal = contentWidth > effectiveW + OVERFLOW_EPSILON;\n const nextVertical = contentHeight > effectiveH + OVERFLOW_EPSILON;\n if (nextHorizontal === hasHorizontal && nextVertical === hasVertical)\n break;\n hasHorizontal = nextHorizontal;\n hasVertical = nextVertical;\n }\n const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n return {\n width: hasHorizontal ? Math.ceil(contentWidth) : effectiveW,\n height: hasVertical ? Math.ceil(contentHeight) : effectiveH,\n };\n}\nexport function computeFitLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize) {\n const canvasWidth = Math.max(1, (containerSize.width || optionsCanvasWidth) - 1);\n const canvasHeight = Math.max(1, (containerSize.height || optionsCanvasHeight) - 1);\n const fitScale = Math.min(canvasWidth / imageWidth, canvasHeight / imageHeight, 1);\n return {\n canvasWidth,\n canvasHeight,\n imageScale: fitScale,\n imageLeft: 0,\n imageTop: 0,\n baseImageScale: fitScale,\n };\n}\nexport function computeCoverLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize, scrollbarSize) {\n const viewportW = containerSize.width || optionsCanvasWidth;\n const viewportH = containerSize.height || optionsCanvasHeight;\n const scrollbar = normalizeScrollbarSize(scrollbarSize);\n let hasHorizontal = false;\n let hasVertical = false;\n let coverScale = 1;\n let scaledW = imageWidth;\n let scaledH = imageHeight;\n for (let i = 0; i < 4; i += 1) {\n const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n coverScale = Math.min(1, Math.max(effectiveW / imageWidth, effectiveH / imageHeight));\n scaledW = imageWidth * coverScale;\n scaledH = imageHeight * coverScale;\n const nextHasHorizontal = scaledW > effectiveW + OVERFLOW_EPSILON;\n const nextHasVertical = scaledH > effectiveH + OVERFLOW_EPSILON;\n if (nextHasHorizontal === hasHorizontal && nextHasVertical === hasVertical)\n break;\n hasHorizontal = nextHasHorizontal;\n hasVertical = nextHasVertical;\n }\n const canvasSize = computeScrollableCanvasSize(scaledW, scaledH, {\n width: viewportW,\n height: viewportH,\n }, scrollbar);\n return {\n canvasWidth: canvasSize.width,\n canvasHeight: canvasSize.height,\n imageScale: coverScale,\n imageLeft: 0,\n imageTop: 0,\n baseImageScale: coverScale,\n };\n}\nexport function computeExpandLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize) {\n const canvasWidth = Math.max(containerSize.width, Math.floor(imageWidth));\n const canvasHeight = Math.max(containerSize.height, Math.floor(imageHeight));\n return {\n canvasWidth,\n canvasHeight,\n imageScale: 1,\n imageLeft: 0,\n imageTop: 0,\n baseImageScale: 1,\n };\n}\nexport function applyCanvasDimensions(canvas, width, height, containerElement) {\n const integerWidth = Math.max(1, Math.round(Number(width) || 1));\n const integerHeight = Math.max(1, Math.round(Number(height) || 1));\n canvas.setDimensions({ width: integerWidth, height: integerHeight });\n forceReflow(containerElement);\n}\n//# sourceMappingURL=layout-manager.js.map","import { DownsampleError } from '../core/errors.js';\nexport function computeDownsampleDimensions(srcWidth, srcHeight, maxWidth, maxHeight) {\n if (!isPositiveFinite(srcWidth) ||\n !isPositiveFinite(srcHeight) ||\n !isPositiveFinite(maxWidth) ||\n !isPositiveFinite(maxHeight)) {\n return {\n width: Math.max(1, Math.round(srcWidth) || 1),\n height: Math.max(1, Math.round(srcHeight) || 1),\n needsResize: false,\n };\n }\n const needsResize = srcWidth > maxWidth || srcHeight > maxHeight;\n if (!needsResize) {\n return { width: srcWidth, height: srcHeight, needsResize: false };\n }\n const ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\n return {\n width: Math.max(1, Math.round(srcWidth * ratio)),\n height: Math.max(1, Math.round(srcHeight * ratio)),\n needsResize: true,\n };\n}\nfunction isPositiveFinite(value) {\n return Number.isFinite(value) && value > 0;\n}\nexport function selectDownsampleMimeType(sourceMime, preserveSourceFormat, downsampleMimeType) {\n if (downsampleMimeType)\n return downsampleMimeType;\n if (preserveSourceFormat && (sourceMime === 'image/png' || sourceMime === 'image/webp')) {\n return sourceMime;\n }\n return 'image/jpeg';\n}\nexport function detectSourceMimeType(dataUrl) {\n const match = /^data:(image\\/[a-z0-9+\\-.]+)\\s*;/i.exec(dataUrl);\n return match ? match[1].toLowerCase() : null;\n}\nexport function resampleImage(imageElement, maxWidth, maxHeight, sourceMime, preserveSourceFormat, downsampleMimeType, quality) {\n const { width, height } = computeDownsampleDimensions(imageElement.naturalWidth, imageElement.naturalHeight, maxWidth, maxHeight);\n const mimeType = selectDownsampleMimeType(sourceMime, preserveSourceFormat, downsampleMimeType);\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const context = offscreenCanvas.getContext('2d');\n if (!context) {\n throw new DownsampleError('Failed to obtain a 2D context for downsampling.');\n }\n context.drawImage(imageElement, 0, 0, imageElement.naturalWidth, imageElement.naturalHeight, 0, 0, width, height);\n const dataUrl = mimeType === 'image/png'\n ? offscreenCanvas.toDataURL(mimeType)\n : offscreenCanvas.toDataURL(mimeType, quality);\n return { dataUrl, width, height, mimeType };\n}\n//# sourceMappingURL=image-resampler.js.map","import { reportError, reportWarning } from '../core/callback-reporter.js';\nimport { ImageDecodeError } from '../core/errors.js';\nimport { saveState, SNAPSHOT_CUSTOM_KEYS } from '../core/state-serializer.js';\nimport { withTimeout } from '../utils/timeout.js';\nimport { computeCoverLayout, computeExpandLayout, computeFitLayout, selectLayoutStrategy, applyCanvasDimensions, measureScrollbarSize, } from './layout-manager.js';\nimport { computeDownsampleDimensions, detectSourceMimeType, resampleImage, } from './image-resampler.js';\nexport async function loadImage(context, imageBase64, loadOptions = {}) {\n if (typeof imageBase64 !== 'string' || !imageBase64.startsWith('data:image/')) {\n return;\n }\n const placeholderHidden = context.placeholderElement\n ? !!context.placeholderElement.hidden\n : null;\n const containerScrollTop = context.containerElement ? context.containerElement.scrollTop : null;\n const containerScrollLeft = context.containerElement\n ? context.containerElement.scrollLeft\n : null;\n const containerOverflow = context.containerElement\n ? context.containerElement.style.overflow\n : null;\n const bundle = {\n placeholderHidden,\n containerScrollTop,\n containerScrollLeft,\n containerOverflow,\n originalImage: context.getOriginalImage(),\n isImageLoadedToCanvas: context.getIsImageLoadedToCanvas(),\n lastSnapshot: context.getLastSnapshot(),\n canvasJson: serializeCanvas(context.canvas),\n maskCounter: context.getMaskCounter(),\n currentScale: context.getCurrentScale(),\n currentRotation: context.getCurrentRotation(),\n baseImageScale: context.getBaseImageScale(),\n currentImageMimeType: context.getCurrentImageMimeType(),\n };\n try {\n context.setPlaceholderVisible(false);\n const decode = startImageDecode(imageBase64);\n let imageElement;\n try {\n imageElement = await withTimeout(decode.promise, context.options.imageLoadTimeoutMs, 'image decode');\n }\n catch (error) {\n decode.cleanup(true);\n throw error;\n }\n const loadSource = maybeDownsample(imageElement, imageBase64, context.options);\n const fabricImage = await withTimeout(context.fabric.FabricImage.fromURL(loadSource.dataUrl, { crossOrigin: 'anonymous' }), context.options.imageLoadTimeoutMs, 'FabricImage.fromURL');\n context.canvas.discardActiveObject();\n context.canvas.clear();\n context.canvas.backgroundColor = context.options.backgroundColor;\n fabricImage.set({\n originX: 'left',\n originY: 'top',\n selectable: false,\n evented: false,\n });\n const layout = computeLayout(context, fabricImage);\n applyCanvasDimensions(context.canvas, layout.canvasWidth, layout.canvasHeight, context.containerElement);\n fabricImage.set({ left: layout.imageLeft, top: layout.imageTop });\n fabricImage.scale(layout.imageScale);\n context.canvas.add(fabricImage);\n context.canvas.sendObjectToBack(fabricImage);\n context.setOriginalImage(fabricImage);\n context.setBaseImageScale(layout.baseImageScale);\n context.setCurrentScale(1);\n context.setCurrentRotation(0);\n context.setMaskCounter(0);\n context.setIsImageLoadedToCanvas(true);\n context.setCurrentImageMimeType(loadSource.mimeType);\n context.canvas.renderAll();\n context.setLastSnapshot(saveState({\n canvas: context.canvas,\n currentScale: 1,\n currentRotation: 0,\n baseImageScale: layout.baseImageScale,\n currentImageMimeType: loadSource.mimeType,\n }));\n if (loadOptions.preserveScroll === true && context.containerElement) {\n try {\n if (bundle.containerScrollTop !== null) {\n context.containerElement.scrollTop = bundle.containerScrollTop;\n }\n if (bundle.containerScrollLeft !== null) {\n context.containerElement.scrollLeft = bundle.containerScrollLeft;\n }\n }\n catch (error) {\n console.warn('[ImageEditor] preserveScroll restore failed', error);\n }\n }\n }\n catch (error) {\n await replayRollback(context, bundle);\n const errorMessage = error instanceof Error ? `loadImage failed: ${error.message}` : 'loadImage failed';\n reportError(context.options, error, errorMessage);\n throw error;\n }\n}\nfunction startImageDecode(dataUrl) {\n const imageElement = new Image();\n const cleanup = (clearSource = false) => {\n if (typeof imageElement.removeEventListener === 'function') {\n imageElement.removeEventListener('load', handleLoad);\n imageElement.removeEventListener('error', handleError);\n }\n else {\n imageElement.onload = null;\n imageElement.onerror = null;\n }\n if (clearSource) {\n imageElement.src = '';\n }\n };\n const handleLoad = () => {\n if (!hasNaturalImageDimensions(imageElement)) {\n cleanup(true);\n rejectImage(new ImageDecodeError('Failed to decode image data URL: image has no natural dimensions.', null));\n return;\n }\n cleanup(false);\n resolveImage(imageElement);\n };\n const handleError = (e) => {\n cleanup(true);\n rejectImage(new ImageDecodeError('Failed to decode image data URL.', e));\n };\n let resolveImage;\n let rejectImage;\n const promise = new Promise((resolve, reject) => {\n resolveImage = resolve;\n rejectImage = reject;\n if (typeof imageElement.addEventListener === 'function') {\n imageElement.addEventListener('load', handleLoad, { once: true });\n imageElement.addEventListener('error', handleError, { once: true });\n }\n else {\n imageElement.onload = handleLoad;\n imageElement.onerror = handleError;\n }\n imageElement.src = dataUrl;\n });\n return { promise, cleanup };\n}\nfunction hasNaturalImageDimensions(imageElement) {\n return (Number.isFinite(imageElement.naturalWidth) &&\n Number.isFinite(imageElement.naturalHeight) &&\n imageElement.naturalWidth > 0 &&\n imageElement.naturalHeight > 0);\n}\nfunction isPositiveFinite(value) {\n return Number.isFinite(value) && value > 0;\n}\nfunction toSupportedImageMimeType(mimeType) {\n return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n ? mimeType\n : null;\n}\nfunction maybeDownsample(imageElement, originalDataUrl, options) {\n const originalMimeType = toSupportedImageMimeType(detectSourceMimeType(originalDataUrl));\n if (!options.downsampleOnLoad) {\n return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n }\n if (!isPositiveFinite(options.downsampleMaxWidth) ||\n !isPositiveFinite(options.downsampleMaxHeight)) {\n reportWarning(options, null, 'loadImage skipped downsampling because downsample bounds are invalid.');\n return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n }\n const downsampleDimensions = computeDownsampleDimensions(imageElement.naturalWidth, imageElement.naturalHeight, options.downsampleMaxWidth, options.downsampleMaxHeight);\n if (!downsampleDimensions.needsResize) {\n return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n }\n const sourceMime = detectSourceMimeType(originalDataUrl);\n const resampledImage = resampleImage(imageElement, options.downsampleMaxWidth, options.downsampleMaxHeight, sourceMime, options.preserveSourceFormat, options.downsampleMimeType, options.downsampleQuality);\n const actualMimeType = toSupportedImageMimeType(detectSourceMimeType(resampledImage.dataUrl));\n return {\n dataUrl: resampledImage.dataUrl,\n mimeType: actualMimeType !== null && actualMimeType !== void 0 ? actualMimeType : resampledImage.mimeType,\n };\n}\nfunction computeLayout(context, fabricImage) {\n var _a, _b, _c, _d;\n const imageWidth = (_a = fabricImage.width) !== null && _a !== void 0 ? _a : 0;\n const imageHeight = (_b = fabricImage.height) !== null && _b !== void 0 ? _b : 0;\n const scrollbarSize = measureScrollbarSize((_d = (_c = context.containerElement) === null || _c === void 0 ? void 0 : _c.ownerDocument) !== null && _d !== void 0 ? _d : null);\n const viewport = context.viewportCache.measure(context.containerElement, {\n width: context.options.canvasWidth,\n height: context.options.canvasHeight,\n }, scrollbarSize);\n const strategy = selectLayoutStrategy(context.options);\n if (strategy === 'fit') {\n return computeFitLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport);\n }\n if (strategy === 'cover') {\n return computeCoverLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport, scrollbarSize);\n }\n return computeExpandLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport);\n}\nfunction serializeCanvas(canvas) {\n canvas.discardActiveObject();\n const json = canvas.toJSON(SNAPSHOT_CUSTOM_KEYS);\n return JSON.stringify(json);\n}\nasync function replayRollback(context, bundle) {\n if (context.containerElement && bundle.containerOverflow !== null) {\n try {\n context.containerElement.style.overflow = bundle.containerOverflow;\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] rollback: overflow restore failed', rollbackError);\n }\n }\n try {\n await context.canvas.loadFromJSON(JSON.parse(bundle.canvasJson));\n context.canvas.renderAll();\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] rollback: loadFromJSON failed', rollbackError);\n }\n context.setOriginalImage(bundle.originalImage);\n context.setIsImageLoadedToCanvas(bundle.isImageLoadedToCanvas);\n context.setLastSnapshot(bundle.lastSnapshot);\n context.setMaskCounter(bundle.maskCounter);\n context.setCurrentScale(bundle.currentScale);\n context.setCurrentRotation(bundle.currentRotation);\n context.setBaseImageScale(bundle.baseImageScale);\n context.setCurrentImageMimeType(bundle.currentImageMimeType);\n if (context.containerElement) {\n try {\n if (bundle.containerScrollTop !== null) {\n context.containerElement.scrollTop = bundle.containerScrollTop;\n }\n if (bundle.containerScrollLeft !== null) {\n context.containerElement.scrollLeft = bundle.containerScrollLeft;\n }\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] rollback: scroll restore failed', rollbackError);\n }\n }\n if (bundle.placeholderHidden !== null) {\n context.setPlaceholderVisible(!bundle.placeholderHidden);\n }\n}\n//# sourceMappingURL=image-loader.js.map","export function animateProps(object, props, options, guard) {\n return new Promise((resolve, reject) => {\n const propCount = Object.keys(props).length;\n if (propCount === 0) {\n resolve();\n return;\n }\n let completed = 0;\n try {\n object.animate(props, {\n duration: options.duration,\n onChange: () => {\n var _a;\n if (guard.isDisposed())\n return;\n (_a = options.onChange) === null || _a === void 0 ? void 0 : _a.call(options);\n },\n onComplete: () => {\n if (++completed >= propCount)\n resolve();\n },\n });\n }\n catch (error) {\n reject(error);\n }\n });\n}\nexport function restoreOrigin(object, originX, originY) {\n try {\n object.set({ originX, originY });\n object.setCoords();\n }\n catch {\n }\n}\n//# sourceMappingURL=fabric-animation.js.map","import { animateProps, restoreOrigin } from '../fabric/fabric-animation.js';\nexport class TransformController {\n constructor(context) {\n Object.defineProperty(this, \"context\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.context = context;\n }\n async scaleImage(factor) {\n if (!Number.isFinite(factor))\n return;\n const imageObject = this.context.getOriginalImage();\n if (!imageObject)\n return;\n if (this.context.guard.isAnimating())\n return;\n if (this.context.guard.isDisposed())\n return;\n const clamped = Math.max(this.context.options.minScale, Math.min(this.context.options.maxScale, factor));\n this.context.setCurrentScale(clamped);\n const targetAbs = this.context.getBaseImageScale() * clamped;\n try {\n const topLeft = computeTopLeftPoint(imageObject);\n imageObject.set({ originX: 'left', originY: 'top' });\n imageObject.setPositionByOrigin(topLeft, 'left', 'top');\n imageObject.setCoords();\n }\n catch (error) {\n console.warn('[ImageEditor] scaleImage: origin pre-anchor failed', error);\n }\n try {\n await this.context.guard.runAnimation(() => animateProps(imageObject, { scaleX: targetAbs, scaleY: targetAbs }, {\n duration: this.context.options.animationDuration,\n onChange: () => this.context.canvas.requestRenderAll(),\n }, this.context.guard));\n }\n catch (error) {\n console.warn('[ImageEditor] scaleImage animation error', error);\n return;\n }\n if (this.context.guard.isDisposed())\n return;\n imageObject.set({ scaleX: targetAbs, scaleY: targetAbs });\n imageObject.setCoords();\n if (this.context.afterTransformSnap)\n this.context.afterTransformSnap();\n this.context.saveCanvasState();\n }\n async rotateImage(degrees) {\n if (!Number.isFinite(degrees))\n return;\n const imageObject = this.context.getOriginalImage();\n if (!imageObject)\n return;\n if (this.context.guard.isAnimating())\n return;\n if (this.context.guard.isDisposed())\n return;\n this.context.setCurrentRotation(degrees);\n try {\n const centre = imageObject.getCenterPoint();\n imageObject.set({ originX: 'center', originY: 'center' });\n imageObject.setPositionByOrigin(centre, 'center', 'center');\n imageObject.setCoords();\n }\n catch (error) {\n console.warn('[ImageEditor] rotateImage: origin pre-anchor failed', error);\n }\n let animationFailed = false;\n try {\n await this.context.guard.runAnimation(() => animateProps(imageObject, { angle: degrees }, {\n duration: this.context.options.animationDuration,\n onChange: () => this.context.canvas.requestRenderAll(),\n }, this.context.guard));\n }\n catch (error) {\n animationFailed = true;\n console.warn('[ImageEditor] rotateImage animation error', error);\n }\n finally {\n if (this.context.guard.isDisposed()) {\n restoreOrigin(imageObject, 'left', 'top');\n }\n }\n if (animationFailed)\n return;\n if (this.context.guard.isDisposed())\n return;\n imageObject.set('angle', degrees);\n imageObject.setCoords();\n if (this.context.afterTransformSnap)\n this.context.afterTransformSnap();\n try {\n const newTopLeft = computeTopLeftPoint(imageObject);\n imageObject.set({ originX: 'left', originY: 'top' });\n imageObject.setPositionByOrigin(newTopLeft, 'left', 'top');\n imageObject.setCoords();\n }\n catch (error) {\n console.warn('[ImageEditor] rotateImage: origin post-restore failed', error);\n }\n this.context.saveCanvasState();\n }\n async resetImageTransform() {\n if (!this.context.getOriginalImage())\n return;\n this.context.setSuppressSaveState(true);\n try {\n await this.scaleImage(1);\n await this.rotateImage(0);\n }\n finally {\n this.context.setSuppressSaveState(false);\n }\n if (this.context.guard.isDisposed())\n return;\n this.context.saveCanvasState();\n }\n}\nfunction computeTopLeftPoint(object) {\n object.setCoords();\n const coords = object.getCoords();\n const first = coords[0];\n if (first)\n return first;\n const boundingRect = object.getBoundingRect();\n return { x: boundingRect.left, y: boundingRect.top };\n}\n//# sourceMappingURL=transform-controller.js.map","export function resolveNumeric(val, axis, fallback, canvas, options) {\n if (typeof val === 'number') {\n return val;\n }\n if (typeof val === 'function') {\n return val(canvas, options);\n }\n if (typeof val === 'string' && val.endsWith('%')) {\n const pct = parseFloat(val);\n if (!Number.isFinite(pct)) {\n return fallback;\n }\n const dim = axis === 'x' ? canvas.getWidth() : canvas.getHeight();\n return Math.floor(dim * (pct / 100));\n }\n return fallback;\n}\nexport function coercePoint(pt) {\n if (Array.isArray(pt)) {\n return { x: Number(pt[0]), y: Number(pt[1]) };\n }\n return { x: Number(pt.x), y: Number(pt.y) };\n}\n//# sourceMappingURL=number.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nimport { attachMaskHoverHandlers, detachMaskHoverHandlers } from './mask-style.js';\nimport { coercePoint, resolveNumeric } from '../utils/number.js';\nconst POLYGON_AREA_EPSILON = 1e-6;\nlet nextMaskUid = 0;\nfunction createMaskUid(maskId) {\n nextMaskUid += 1;\n return `mask-${maskId}-${nextMaskUid}`;\n}\nfunction isFabricObjectLike(value) {\n if (!value || typeof value !== 'object')\n return false;\n const candidate = value;\n return typeof candidate.set === 'function' && typeof candidate.on === 'function';\n}\nfunction warnInvalidMask(options, reason) {\n reportWarning(options, null, `createMask skipped: ${reason}.`);\n}\nfunction isResolvableNumericInput(value) {\n if (value === undefined)\n return true;\n if (typeof value === 'number')\n return Number.isFinite(value);\n if (typeof value === 'function')\n return true;\n if (typeof value === 'string' && value.endsWith('%')) {\n return Number.isFinite(Number.parseFloat(value));\n }\n return false;\n}\nfunction isFiniteNumber(value) {\n return typeof value === 'number' && Number.isFinite(value);\n}\nfunction validateFiniteField(options, fieldName, value) {\n if (isFiniteNumber(value))\n return true;\n warnInvalidMask(options, `${fieldName} must resolve to a finite number`);\n return false;\n}\nfunction validatePositiveField(options, fieldName, value) {\n if (isFiniteNumber(value) && value > 0)\n return true;\n warnInvalidMask(options, `${fieldName} must resolve to a positive number`);\n return false;\n}\nfunction validateNonNegativeField(options, fieldName, value) {\n if (isFiniteNumber(value) && value >= 0)\n return true;\n warnInvalidMask(options, `${fieldName} must resolve to a non-negative number`);\n return false;\n}\nfunction validateNumericInputs(options, config) {\n const fields = [\n ['width', config.width],\n ['height', config.height],\n ['rx', config.rx],\n ['ry', config.ry],\n ['radius', config.radius],\n ['left', config.left],\n ['top', config.top],\n ];\n for (const [fieldName, value] of fields) {\n if (!isResolvableNumericInput(value)) {\n warnInvalidMask(options, `${fieldName} is not a supported numeric value`);\n return false;\n }\n }\n return true;\n}\nfunction resolvePolygonPoints(options, points) {\n if (!Array.isArray(points) || points.length < 3) {\n warnInvalidMask(options, 'polygon masks require at least three points');\n return null;\n }\n const resolvedPoints = points.map(coercePoint);\n const allFinite = resolvedPoints.every((point) => Number.isFinite(point.x) && Number.isFinite(point.y));\n if (!allFinite) {\n warnInvalidMask(options, 'polygon points must contain finite x/y values');\n return null;\n }\n if (polygonArea(resolvedPoints) <= POLYGON_AREA_EPSILON) {\n warnInvalidMask(options, 'polygon points must describe a non-zero area');\n return null;\n }\n return resolvedPoints;\n}\nfunction polygonArea(points) {\n let area = 0;\n for (let index = 0; index < points.length; index += 1) {\n const current = points[index];\n const next = points[(index + 1) % points.length];\n area += current.x * next.y - next.x * current.y;\n }\n return Math.abs(area) / 2;\n}\nexport function createMask(context, config = {}) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n const { canvas, options, fabric: fabricModule } = context;\n if (!canvas)\n return null;\n const shapeType = (_a = config.shape) !== null && _a !== void 0 ? _a : 'rect';\n if (!validateNumericInputs(options, config))\n return null;\n const resolvedConfig = {\n shape: shapeType,\n width: options.defaultMaskWidth,\n height: options.defaultMaskHeight,\n color: 'rgba(0,0,0,0.5)',\n alpha: 0.5,\n gap: 5,\n left: undefined,\n top: undefined,\n angle: 0,\n selectable: true,\n ...config,\n };\n const firstOffset = 10;\n let left;\n let top;\n const previousMask = context.getLastMask();\n if (config.left === undefined && previousMask) {\n const previousRight = ((_b = previousMask.left) !== null && _b !== void 0 ? _b : 0) +\n (typeof previousMask.getScaledWidth === 'function'\n ? previousMask.getScaledWidth()\n : ((_c = previousMask.width) !== null && _c !== void 0 ? _c : 0) * ((_d = previousMask.scaleX) !== null && _d !== void 0 ? _d : 1));\n left = Math.round(previousRight + ((_e = resolvedConfig.gap) !== null && _e !== void 0 ? _e : 5));\n top = (_f = previousMask.top) !== null && _f !== void 0 ? _f : firstOffset;\n }\n else {\n left = resolveNumeric(config.left, 'x', firstOffset, canvas, options);\n top = resolveNumeric(config.top, 'y', firstOffset, canvas, options);\n }\n resolvedConfig.width = resolveNumeric(config.width, 'x', options.defaultMaskWidth, canvas, options);\n resolvedConfig.height = resolveNumeric(config.height, 'y', options.defaultMaskHeight, canvas, options);\n const rx = config.rx !== undefined ? resolveNumeric(config.rx, 'x', 0, canvas, options) : undefined;\n const ry = config.ry !== undefined ? resolveNumeric(config.ry, 'y', 0, canvas, options) : undefined;\n const radius = shapeType === 'circle'\n ? resolveNumeric(config.radius, 'x', Math.min(resolvedConfig.width, resolvedConfig.height) / 2, canvas, options)\n : undefined;\n const polygonPoints = shapeType === 'polygon' ? resolvePolygonPoints(options, config.points) : null;\n if (!validateFiniteField(options, 'left', left) ||\n !validateFiniteField(options, 'top', top) ||\n !validatePositiveField(options, 'width', resolvedConfig.width) ||\n !validatePositiveField(options, 'height', resolvedConfig.height) ||\n !validateFiniteField(options, 'gap', resolvedConfig.gap) ||\n !validateFiniteField(options, 'angle', resolvedConfig.angle) ||\n !validateFiniteField(options, 'alpha', resolvedConfig.alpha)) {\n return null;\n }\n if ((rx !== undefined && !validateNonNegativeField(options, 'rx', rx)) ||\n (ry !== undefined && !validateNonNegativeField(options, 'ry', ry)) ||\n (radius !== undefined && !validatePositiveField(options, 'radius', radius)) ||\n (shapeType === 'polygon' && polygonPoints === null)) {\n return null;\n }\n if (options.expandCanvasToImage) {\n const requiredWidth = Math.ceil(left + resolvedConfig.width + 10);\n const requiredHeight = Math.ceil(top + resolvedConfig.height + 10);\n const nextWidth = Math.max(canvas.getWidth(), requiredWidth);\n const nextHeight = Math.max(canvas.getHeight(), requiredHeight);\n if (nextWidth !== canvas.getWidth() || nextHeight !== canvas.getHeight()) {\n if (context.expandCanvasIfNeeded) {\n context.expandCanvasIfNeeded(nextWidth, nextHeight);\n }\n else {\n canvas.setDimensions({ width: nextWidth, height: nextHeight });\n }\n }\n }\n let mask;\n if (typeof resolvedConfig.fabricGenerator === 'function') {\n const generated = resolvedConfig.fabricGenerator(resolvedConfig, canvas, options);\n if (!isFabricObjectLike(generated)) {\n reportWarning(options, generated, 'createMask skipped: fabricGenerator did not return a Fabric object.');\n return null;\n }\n mask = generated;\n }\n else {\n const originProps = {\n originX: 'left',\n originY: 'top',\n };\n switch (shapeType) {\n case 'circle':\n mask = new fabricModule.Circle({\n left,\n top,\n ...originProps,\n radius,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_g = resolvedConfig.angle) !== null && _g !== void 0 ? _g : 0,\n ...resolvedConfig.styles,\n });\n break;\n case 'ellipse':\n mask = new fabricModule.Ellipse({\n left,\n top,\n ...originProps,\n rx: rx !== null && rx !== void 0 ? rx : resolvedConfig.width / 2,\n ry: ry !== null && ry !== void 0 ? ry : resolvedConfig.height / 2,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_h = resolvedConfig.angle) !== null && _h !== void 0 ? _h : 0,\n ...resolvedConfig.styles,\n });\n break;\n case 'polygon': {\n const polygon = new fabricModule.Polygon(polygonPoints, {\n ...originProps,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_j = resolvedConfig.angle) !== null && _j !== void 0 ? _j : 0,\n ...resolvedConfig.styles,\n });\n polygon.setCoords();\n const boundingRect = polygon.getBoundingRect();\n const deltaX = left - boundingRect.left;\n const deltaY = top - boundingRect.top;\n polygon.set({\n left: ((_k = polygon.left) !== null && _k !== void 0 ? _k : 0) + deltaX,\n top: ((_l = polygon.top) !== null && _l !== void 0 ? _l : 0) + deltaY,\n });\n polygon.setCoords();\n mask = polygon;\n break;\n }\n case 'rect':\n default:\n mask = new fabricModule.Rect({\n left,\n top,\n ...originProps,\n width: resolvedConfig.width,\n height: resolvedConfig.height,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_m = resolvedConfig.angle) !== null && _m !== void 0 ? _m : 0,\n ...(rx !== undefined ? { rx } : {}),\n ...(ry !== undefined ? { ry } : {}),\n ...resolvedConfig.styles,\n });\n }\n }\n const maskObject = mask;\n maskObject.selectable = 'selectable' in config ? !!config.selectable : true;\n maskObject.evented = 'evented' in config ? !!config.evented : true;\n maskObject.hasControls = 'hasControls' in config ? !!config.hasControls : true;\n maskObject.transparentCorners =\n 'transparentCorners' in config ? !!config.transparentCorners : false;\n maskObject.strokeUniform = 'strokeUniform' in config ? !!config.strokeUniform : true;\n maskObject.lockRotation = !options.maskRotatable;\n maskObject.borderColor = (_o = config.borderColor) !== null && _o !== void 0 ? _o : 'red';\n maskObject.cornerColor = (_p = config.cornerColor) !== null && _p !== void 0 ? _p : 'black';\n maskObject.cornerSize = (_q = config.cornerSize) !== null && _q !== void 0 ? _q : 8;\n const styles = ((_r = resolvedConfig.styles) !== null && _r !== void 0 ? _r : {});\n if ('stroke' in styles) {\n maskObject.stroke = styles.stroke;\n }\n else {\n maskObject.stroke = '#ccc';\n }\n if ('strokeWidth' in styles) {\n maskObject.strokeWidth = styles.strokeWidth;\n }\n else {\n maskObject.strokeWidth = 1;\n }\n if ('strokeDashArray' in styles) {\n maskObject.strokeDashArray = styles.strokeDashArray;\n }\n maskObject.originalAlpha = resolvedConfig.alpha;\n maskObject.originalStroke = maskObject.stroke;\n maskObject.originalStrokeWidth = maskObject.strokeWidth;\n attachMaskHoverHandlers(maskObject);\n const nextId = context.getMaskCounter() + 1;\n context.setMaskCounter(nextId);\n maskObject.maskId = nextId;\n maskObject.maskUid = createMaskUid(nextId);\n maskObject.maskName = `${options.maskName}${nextId}`;\n context.setLastMask(maskObject);\n canvas.add(maskObject);\n canvas.bringObjectToFront(maskObject);\n context.updateMaskList();\n if (resolvedConfig.selectable !== false) {\n canvas.setActiveObject(maskObject);\n }\n canvas.renderAll();\n context.saveCanvasState();\n if (typeof resolvedConfig.onCreate === 'function') {\n try {\n resolvedConfig.onCreate(maskObject, canvas);\n }\n catch (error) {\n reportWarning(options, error, 'createMask onCreate callback threw.');\n }\n }\n return maskObject;\n}\nexport function removeSelectedMask(context) {\n const active = context.canvas.getActiveObject();\n if (!active || !isMaskObject(active))\n return;\n context.removeLabelForMask(active);\n detachMaskHoverHandlers(active);\n context.canvas.remove(active);\n context.canvas.discardActiveObject();\n context.updateMaskList();\n context.canvas.renderAll();\n context.saveCanvasState();\n}\nexport function removeAllMasks(context, options = {}) {\n const masks = context.canvas.getObjects().filter(isMaskObject);\n if (masks.length === 0)\n return;\n for (const maskObject of masks) {\n context.removeLabelForMask(maskObject);\n detachMaskHoverHandlers(maskObject);\n context.canvas.remove(maskObject);\n }\n context.canvas.discardActiveObject();\n context.setLastMask(null);\n context.updateMaskList();\n context.canvas.renderAll();\n if (options.saveHistory !== false) {\n context.saveCanvasState();\n }\n}\n//# sourceMappingURL=mask-factory.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nexport function removeLabelForMask(context, mask) {\n if (!context.canvas || !mask.labelObject)\n return;\n try {\n if (context.canvas.getObjects().includes(mask.labelObject)) {\n context.canvas.remove(mask.labelObject);\n }\n }\n catch {\n }\n try {\n delete mask.labelObject;\n }\n catch {\n }\n}\nexport function createLabelForMask(context, mask) {\n var _a;\n const { canvas, options, fabric: fabricModule } = context;\n if (!canvas || !options.maskLabelOnSelect)\n return;\n removeLabelForMask(context, mask);\n let labelTextObject = null;\n if (typeof options.label.create === 'function') {\n try {\n labelTextObject = options.label.create(mask, fabricModule);\n }\n catch (error) {\n reportWarning(options, error, 'label.create callback threw.');\n labelTextObject = null;\n }\n }\n if (!labelTextObject) {\n const indexForGetText = mask.maskId - 1;\n let labelText = mask.maskName;\n if (typeof options.label.getText === 'function') {\n try {\n labelText = options.label.getText(mask, indexForGetText);\n }\n catch (error) {\n reportWarning(options, error, 'label.getText callback threw.');\n labelText = mask.maskName;\n }\n }\n const textOptions = {\n left: 0,\n top: 0,\n ...((_a = options.label.textOptions) !== null && _a !== void 0 ? _a : {}),\n originX: 'left',\n originY: 'top',\n };\n labelTextObject = new fabricModule.FabricText(labelText, textOptions);\n }\n labelTextObject.maskLabel = true;\n mask.labelObject = labelTextObject;\n canvas.add(labelTextObject);\n canvas.bringObjectToFront(labelTextObject);\n syncMaskLabel(context, mask);\n}\nexport function syncMaskLabel(context, mask) {\n var _a, _b, _c;\n const { canvas, options } = context;\n if (!canvas || !options.maskLabelOnSelect || !mask.labelObject)\n return;\n const coords = (_a = mask.getCoords) === null || _a === void 0 ? void 0 : _a.call(mask);\n if (!(coords === null || coords === void 0 ? void 0 : coords.length))\n return;\n const tl = coords[0];\n if (!tl)\n return;\n const center = mask.getCenterPoint();\n const vx = center.x - tl.x;\n const vy = center.y - tl.y;\n const dist = Math.sqrt(vx * vx + vy * vy) || 1;\n const offset = Math.max(0, (_b = options.maskLabelOffset) !== null && _b !== void 0 ? _b : 3);\n mask.labelObject.set({\n left: Math.round(tl.x + (vx / dist) * offset),\n top: Math.round(tl.y + (vy / dist) * offset),\n angle: (_c = mask.angle) !== null && _c !== void 0 ? _c : 0,\n originX: 'left',\n originY: 'top',\n visible: true,\n });\n mask.labelObject.setCoords();\n canvas.renderAll();\n}\nexport function showLabelForMask(context, mask) {\n if (!context.options.maskLabelOnSelect)\n return;\n if (!mask.labelObject) {\n createLabelForMask(context, mask);\n }\n if (mask.labelObject) {\n mask.labelObject.visible = true;\n syncMaskLabel(context, mask);\n }\n}\nexport function hideAllMaskLabels(context) {\n const { canvas } = context;\n if (!canvas)\n return;\n const objs = canvas.getObjects();\n objs.filter((o) => o.maskLabel).forEach((l) => {\n try {\n canvas.remove(l);\n }\n catch {\n }\n });\n objs.filter(isMaskObject).forEach((o) => {\n try {\n delete o.labelObject;\n }\n catch {\n }\n });\n}\n//# sourceMappingURL=mask-label-manager.js.map","import { isMaskObject } from '../core/public-types.js';\nexport function renderMaskList(context) {\n const listId = context.getListElementId();\n if (!listId)\n return;\n const listEl = document.getElementById(listId);\n if (!listEl || !context.canvas)\n return;\n listEl.innerHTML = '';\n const canvas = context.canvas;\n canvas\n .getObjects()\n .filter(isMaskObject)\n .forEach((mask) => {\n const listItemElement = document.createElement('li');\n listItemElement.className = 'list-group-item mask-item';\n listItemElement.textContent = mask.maskName;\n listItemElement.dataset.maskId = String(mask.maskId);\n listItemElement.onclick = () => {\n const id = Number(listItemElement.dataset.maskId);\n if (!Number.isFinite(id))\n return;\n const target = canvas\n .getObjects()\n .find((o) => isMaskObject(o) && o.maskId === id);\n if (!target)\n return;\n canvas.setActiveObject(target);\n context.onMaskSelected(target);\n };\n listEl.appendChild(listItemElement);\n });\n}\nexport function updateMaskListSelection(context, selectedMask) {\n const listId = context.getListElementId();\n if (!listId)\n return;\n const listEl = document.getElementById(listId);\n if (!listEl)\n return;\n const selectedId = selectedMask ? String(selectedMask.maskId) : null;\n listEl.querySelectorAll('.mask-item').forEach((item) => {\n const isSelected = selectedId !== null && item.dataset.maskId === selectedId;\n item.classList.toggle('active', isSelected);\n });\n}\n//# sourceMappingURL=mask-list.js.map","export class DomBindings {\n constructor(resolveElementId, isDisposed) {\n Object.defineProperty(this, \"registry\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"resolveElementId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isDisposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.resolveElementId = resolveElementId;\n this.isDisposed = isDisposed;\n }\n bindIfExists(key, eventType, handler) {\n const id = this.resolveElementId(key);\n if (!id)\n return false;\n const element = document.getElementById(id);\n if (!element)\n return false;\n const wrapped = (event) => {\n if (this.isDisposed())\n return;\n handler(event);\n };\n element.addEventListener(eventType, wrapped);\n this.registry.push({ elementKey: key, eventType, handler: wrapped });\n return true;\n }\n removeAll() {\n for (const entry of this.registry) {\n const id = this.resolveElementId(entry.elementKey);\n if (!id)\n continue;\n const element = document.getElementById(id);\n if (!element)\n continue;\n try {\n element.removeEventListener(entry.eventType, entry.handler);\n }\n catch {\n }\n }\n this.registry = [];\n }\n size() {\n return this.registry.length;\n }\n}\n//# sourceMappingURL=dom-bindings.js.map","export function setPlaceholderVisible(placeholderElement, containerElement, show) {\n if (placeholderElement) {\n placeholderElement.hidden = !show;\n placeholderElement.setAttribute('aria-hidden', show ? 'false' : 'true');\n }\n if (containerElement) {\n containerElement.hidden = show;\n containerElement.setAttribute('aria-hidden', show ? 'true' : 'false');\n }\n}\n//# sourceMappingURL=visibility-state.js.map","export const SUPPORTED_IMAGE_EXTENSIONS = {\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n webp: 'image/webp',\n gif: 'image/gif',\n bmp: 'image/bmp',\n};\nexport const SUPPORTED_IMAGE_MIME_TYPES = new Set(Object.values(SUPPORTED_IMAGE_EXTENSIONS));\nexport function inferImageMimeType(file) {\n var _a, _b;\n if (file.type && SUPPORTED_IMAGE_MIME_TYPES.has(file.type))\n return file.type;\n if (file.type)\n return null;\n const match = /\\.([a-z0-9]+)$/i.exec(file.name);\n const ext = (_a = match === null || match === void 0 ? void 0 : match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (!ext)\n return null;\n return (_b = SUPPORTED_IMAGE_EXTENSIONS[ext]) !== null && _b !== void 0 ? _b : null;\n}\nexport function readFileAsDataUrl(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const fileReaderResult = reader.result;\n if (typeof fileReaderResult === 'string') {\n resolve(fileReaderResult);\n }\n else {\n reject(new Error('FileReader returned a non-string result'));\n }\n };\n reader.onerror = () => {\n var _a;\n reject((_a = reader.error) !== null && _a !== void 0 ? _a : new Error('FileReader error'));\n };\n reader.onabort = () => {\n reject(new Error('FileReader read aborted'));\n };\n reader.readAsDataURL(file);\n });\n}\nexport function resetFileInput(input) {\n if (!input)\n return;\n try {\n input.value = '';\n }\n catch {\n }\n}\n//# sourceMappingURL=file.js.map","import { AnimationQueue } from './animation/animation-queue.js';\nimport { reportError, reportWarning } from './core/callback-reporter.js';\nimport { resolveOptions } from './core/default-options.js';\nimport { OperationGuard } from './core/operation-guard.js';\nimport { loadFromState as loadFromStateImpl, saveState as saveStateImpl, } from './core/state-serializer.js';\nimport { Command, HistoryManager } from './history/history-manager.js';\nimport { detectFabric } from './fabric/fabric-adapter.js';\nimport { isMaskObject } from './core/public-types.js';\nimport { applyCrop as applyCropImpl, cancelCrop as cancelCropImpl, enterCropMode as enterCropModeImpl, } from './crop/crop-controller.js';\nimport { downloadImage as downloadImageImpl, exportImageBase64 as exportImageBase64Impl, exportImageFile as exportImageFileImpl, mergeMasks as mergeMasksImpl, } from './export/export-service.js';\nimport { loadImage as loadImageImpl } from './image/image-loader.js';\nimport { ViewportCache, applyCanvasDimensions, computeScrollableCanvasSize, detectLayoutConflict, measureScrollbarSize, } from './image/layout-manager.js';\nimport { TransformController } from './image/transform-controller.js';\nimport { createMask as createMaskImpl, removeAllMasks as removeAllMasksImpl, removeSelectedMask as removeSelectedMaskImpl, } from './mask/mask-factory.js';\nimport { createLabelForMask, hideAllMaskLabels, removeLabelForMask, showLabelForMask, syncMaskLabel, } from './mask/mask-label-manager.js';\nimport { renderMaskList, updateMaskListSelection } from './mask/mask-list.js';\nimport { applyMaskSelectedStyle, applyMaskUnselectedStyle, reattachMaskHoverHandlers, } from './mask/mask-style.js';\nimport { DomBindings } from './ui/dom-bindings.js';\nimport { setPlaceholderVisible as setPlaceholderVisibleImpl } from './ui/visibility-state.js';\nimport { inferImageMimeType, readFileAsDataUrl, resetFileInput } from './utils/file.js';\nimport { detectSourceMimeType } from './image/image-resampler.js';\nconst LAYOUT_EPSILON = 0.5;\nconst INTERNAL_OPERATION_TOKEN = Symbol.for('ImageEditorInternalOperation');\nconst INTERNAL_ALLOW_DURING_ANIMATION_QUEUE = Symbol.for('ImageEditorAllowDuringAnimationQueue');\nconst CROP_MODE_CONTROL_KEYS = [\n 'scalePercentageInput',\n 'rotateLeftDegreesInput',\n 'rotateRightDegreesInput',\n 'rotateLeftButton',\n 'rotateRightButton',\n 'createMaskButton',\n 'removeSelectedMaskButton',\n 'removeAllMasksButton',\n 'mergeMasksButton',\n 'downloadImageButton',\n 'zoomInButton',\n 'zoomOutButton',\n 'resetImageTransformButton',\n 'undoButton',\n 'redoButton',\n 'imageInput',\n 'enterCropModeButton',\n 'applyCropButton',\n 'cancelCropButton',\n];\nconst CROP_MODE_ENABLED_KEYS = ['applyCropButton', 'cancelCropButton'];\nconst CROP_SESSION_ALLOWED_OPERATIONS = new Set(['applyCrop', 'cancelCrop']);\nexport class ImageEditor {\n constructor(fabricModuleOrOptions = {}, options = {}) {\n var _a;\n Object.defineProperty(this, \"fabricModule\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isFabricLoaded\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"canvas\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"canvasElement\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"containerElement\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"placeholderElement\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"elements\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"elementOriginalDisabledMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"elementOriginalAriaDisabledMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"elementOriginalPointerEventsMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"originalImage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"baseImageScale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"currentScale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"currentRotation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"isImageLoadedToCanvas\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"currentImageMimeType\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"maskCounter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"lastMask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"lastSnapshot\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"historyManager\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"operationGuard\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"animQueue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"transformController\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"viewportCache\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ViewportCache()\n });\n Object.defineProperty(this, \"cropSession\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"domBindings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"isDisposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"shouldSuppressSaveState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"lastEmittedIsBusy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"activeStateRestoreOperation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"nextSelectionChangeContext\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n const detected = detectFabric(fabricModuleOrOptions, options);\n this.fabricModule = (_a = detected.fabric) !== null && _a !== void 0 ? _a : {};\n this.isFabricLoaded = detected.isFabricLoaded;\n this.options = resolveOptions(detected.options);\n const layoutConflict = detectLayoutConflict(this.options);\n if (layoutConflict) {\n reportWarning(this.options, null, layoutConflict.message);\n }\n this.operationGuard = new OperationGuard();\n this.animQueue = new AnimationQueue();\n this.historyManager = new HistoryManager(this.options.maxHistorySize);\n }\n init(idMap = {}) {\n if (!this.isFabricLoaded) {\n const globalFabric = globalThis.fabric;\n if (!globalFabric ||\n typeof globalFabric.Canvas !== 'function') {\n return;\n }\n this.fabricModule = globalFabric;\n this.isFabricLoaded = true;\n }\n if (this.isDisposed)\n return;\n const defaults = {\n canvas: 'canvas',\n canvasContainer: null,\n imagePlaceholder: 'imagePlaceholder',\n scalePercentageInput: 'scalePercentageInput',\n rotateLeftDegreesInput: 'rotateLeftDegreesInput',\n rotateRightDegreesInput: 'rotateRightDegreesInput',\n rotateLeftButton: 'rotateLeftButton',\n rotateRightButton: 'rotateRightButton',\n createMaskButton: 'createMaskButton',\n removeSelectedMaskButton: 'removeSelectedMaskButton',\n removeAllMasksButton: 'removeAllMasksButton',\n mergeMasksButton: 'mergeMasksButton',\n downloadImageButton: 'downloadImageButton',\n maskList: 'maskList',\n zoomInButton: 'zoomInButton',\n zoomOutButton: 'zoomOutButton',\n resetImageTransformButton: 'resetImageTransformButton',\n undoButton: 'undoButton',\n redoButton: 'redoButton',\n imageInput: 'imageInput',\n enterCropModeButton: 'enterCropModeButton',\n applyCropButton: 'applyCropButton',\n cancelCropButton: 'cancelCropButton',\n uploadArea: 'uploadArea',\n };\n this.elements = { ...defaults, ...idMap };\n this.domBindings = new DomBindings((key) => this.elements[key], () => this.isDisposed);\n this.initCanvas();\n this.transformController = new TransformController(this.buildTransformContext());\n this.bindDomEvents();\n this.updateInputs();\n this.updateMaskList();\n this.updateUi();\n if (this.options.initialImageBase64) {\n void this.loadImage(this.options.initialImageBase64).catch(() => {\n });\n }\n else {\n this.updatePlaceholderStatus();\n }\n }\n initCanvas() {\n var _a;\n const id = this.elements.canvas;\n const canvasElement = id ? document.getElementById(id) : null;\n if (!canvasElement)\n throw new Error(`[ImageEditor] Canvas element not found: \"${id}\"`);\n this.canvasElement = canvasElement;\n const containerId = this.elements.canvasContainer;\n if (containerId) {\n this.containerElement =\n (_a = document.getElementById(containerId)) !== null && _a !== void 0 ? _a : canvasElement.parentElement;\n }\n else {\n this.containerElement = canvasElement.parentElement;\n }\n const placeholderId = this.elements.imagePlaceholder;\n this.placeholderElement = placeholderId ? document.getElementById(placeholderId) : null;\n let initialWidth = this.options.canvasWidth;\n let initialHeight = this.options.canvasHeight;\n if (this.containerElement) {\n const containerWidth = Math.floor(this.containerElement.clientWidth);\n const containerHeight = Math.floor(this.containerElement.clientHeight);\n if (containerWidth > 0 && containerHeight > 0) {\n initialWidth = containerWidth;\n initialHeight = containerHeight;\n }\n }\n this.canvas = new this.fabricModule.Canvas(canvasElement, {\n width: initialWidth,\n height: initialHeight,\n backgroundColor: this.options.backgroundColor,\n selection: this.options.groupSelection,\n preserveObjectStacking: true,\n });\n this.canvas.on('selection:created', (e) => {\n this.handleSelectionChanged(e.selected);\n });\n this.canvas.on('selection:updated', (e) => {\n this.handleSelectionChanged(e.selected);\n });\n this.canvas.on('selection:cleared', () => this.handleSelectionChanged([]));\n const onObjectEvent = (e) => {\n if (e.target && isMaskObject(e.target))\n this.syncMaskLabel(e.target);\n };\n const onObjectModified = (e) => {\n if (!e.target || !isMaskObject(e.target))\n return;\n this.syncMaskLabel(e.target);\n this.saveState();\n };\n this.canvas.on('object:moving', onObjectEvent);\n this.canvas.on('object:scaling', onObjectEvent);\n this.canvas.on('object:rotating', onObjectEvent);\n this.canvas.on('object:modified', onObjectModified);\n }\n bindDomEvents() {\n this.bindElementIfExists('uploadArea', 'click', () => {\n var _a;\n const inputId = this.elements.imageInput;\n if (inputId)\n (_a = document.getElementById(inputId)) === null || _a === void 0 ? void 0 : _a.click();\n });\n this.bindElementIfExists('imageInput', 'change', (e) => {\n var _a;\n const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];\n if (file)\n void this.loadImageFile(file);\n });\n this.bindElementIfExists('zoomInButton', 'click', () => {\n void this.scaleImage(this.currentScale + this.options.scaleStep);\n });\n this.bindElementIfExists('zoomOutButton', 'click', () => {\n void this.scaleImage(this.currentScale - this.options.scaleStep);\n });\n this.bindElementIfExists('resetImageTransformButton', 'click', () => {\n void this.resetImageTransform();\n });\n this.bindElementIfExists('createMaskButton', 'click', () => {\n this.createMask();\n });\n this.bindElementIfExists('removeSelectedMaskButton', 'click', () => {\n this.removeSelectedMask();\n });\n this.bindElementIfExists('removeAllMasksButton', 'click', () => {\n this.removeAllMasks();\n });\n this.bindElementIfExists('mergeMasksButton', 'click', () => {\n void this.mergeMasks();\n });\n this.bindElementIfExists('downloadImageButton', 'click', () => {\n this.downloadImage();\n });\n this.bindElementIfExists('undoButton', 'click', () => {\n this.undo();\n });\n this.bindElementIfExists('redoButton', 'click', () => {\n this.redo();\n });\n this.bindElementIfExists('rotateLeftButton', 'click', () => {\n const inputId = this.elements.rotateLeftDegreesInput;\n const inputEl = inputId\n ? document.getElementById(inputId)\n : null;\n let step = this.options.rotationStep;\n if (inputEl) {\n const parsedStep = parseFloat(inputEl.value);\n if (!isNaN(parsedStep))\n step = parsedStep;\n }\n void this.rotateImage(this.currentRotation - step);\n });\n this.bindElementIfExists('rotateRightButton', 'click', () => {\n const inputId = this.elements.rotateRightDegreesInput;\n const inputEl = inputId\n ? document.getElementById(inputId)\n : null;\n let step = this.options.rotationStep;\n if (inputEl) {\n const parsedStep = parseFloat(inputEl.value);\n if (!isNaN(parsedStep))\n step = parsedStep;\n }\n void this.rotateImage(this.currentRotation + step);\n });\n this.bindElementIfExists('enterCropModeButton', 'click', () => {\n this.enterCropMode();\n });\n this.bindElementIfExists('applyCropButton', 'click', () => {\n void this.applyCrop().catch((error) => {\n reportError(this.options, error, 'Crop apply failed.');\n });\n });\n this.bindElementIfExists('cancelCropButton', 'click', () => {\n this.cancelCrop();\n });\n }\n bindElementIfExists(key, event, handler) {\n var _a;\n (_a = this.domBindings) === null || _a === void 0 ? void 0 : _a.bindIfExists(key, event, handler);\n }\n async loadImageFile(file) {\n const inputId = this.elements.imageInput;\n const inputEl = inputId\n ? document.getElementById(inputId)\n : null;\n const mime = inferImageMimeType(file);\n if (!mime) {\n reportWarning(this.options, null, `Unsupported image file type: ${file.type || file.name || 'unknown'}.`);\n resetFileInput(inputEl);\n return;\n }\n let dataUrl;\n try {\n dataUrl = await readFileAsDataUrl(file);\n }\n catch (error) {\n reportError(this.options, error, 'Failed to read selected image file.');\n resetFileInput(inputEl);\n return;\n }\n try {\n await this.loadImage(dataUrl);\n }\n catch {\n }\n finally {\n resetFileInput(inputEl);\n }\n }\n async loadImage(base64, options = {}) {\n if (!this.isFabricLoaded || !this.canvas)\n return;\n if (this.isDisposed)\n return;\n if (typeof base64 !== 'string' || !base64.startsWith('data:image/'))\n return;\n if (!this.canRunIdleOperation('loadImage', options))\n return;\n const callbackContext = this.getOperationContext('loadImage', options);\n const previousImage = this.originalImage;\n const hadMasks = this.getMasks().length > 0;\n this.emitOptionCallback('onImageLoadStart', [callbackContext]);\n this.operationGuard.beginLoading();\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n this.hideAllMaskLabels();\n const loadImageContext = {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.options,\n containerElement: this.containerElement,\n placeholderElement: this.placeholderElement,\n viewportCache: this.viewportCache,\n getOriginalImage: () => this.originalImage,\n setOriginalImage: (v) => {\n this.originalImage = v;\n },\n getIsImageLoadedToCanvas: () => this.isImageLoadedToCanvas,\n setIsImageLoadedToCanvas: (v) => {\n this.isImageLoadedToCanvas = v;\n },\n getLastSnapshot: () => this.lastSnapshot,\n setLastSnapshot: (v) => {\n this.lastSnapshot = v;\n },\n getMaskCounter: () => this.maskCounter,\n setMaskCounter: (v) => {\n this.maskCounter = v;\n },\n getCurrentScale: () => this.currentScale,\n setCurrentScale: (v) => {\n this.currentScale = v;\n },\n getCurrentRotation: () => this.currentRotation,\n setCurrentRotation: (v) => {\n this.currentRotation = v;\n },\n getBaseImageScale: () => this.baseImageScale,\n setBaseImageScale: (v) => {\n this.baseImageScale = v;\n },\n getCurrentImageMimeType: () => this.currentImageMimeType,\n setCurrentImageMimeType: (v) => {\n this.currentImageMimeType = v;\n },\n setPlaceholderVisible: (show) => {\n setPlaceholderVisibleImpl(this.placeholderElement, this.containerElement, this.options.showPlaceholder ? show : false);\n },\n };\n try {\n await loadImageImpl(loadImageContext, base64, options);\n }\n finally {\n this.operationGuard.endLoading();\n this.emitBusyChangeIfChanged(callbackContext);\n if (!this.isDisposed && this.canvas)\n this.updateUi();\n }\n this.lastMask = null;\n this.updateInputs();\n this.updateMaskList();\n this.updateUi();\n if (previousImage && previousImage !== this.originalImage) {\n this.emitOptionCallback('onImageCleared', [previousImage, callbackContext]);\n }\n const imageInfo = this.getImageInfo();\n if (imageInfo) {\n this.emitOptionCallback('onImageLoaded', [imageInfo, callbackContext]);\n }\n if (hadMasks) {\n this.emitMasksChanged(callbackContext);\n }\n this.emitImageChanged(callbackContext);\n }\n getInternalOperationToken(options) {\n var _a;\n return ((_a = options === null || options === void 0 ? void 0 : options[INTERNAL_OPERATION_TOKEN]) !== null && _a !== void 0 ? _a : null);\n }\n canRunDuringAnimationQueue(options) {\n return !!(options === null || options === void 0 ? void 0 : options[INTERNAL_ALLOW_DURING_ANIMATION_QUEUE]);\n }\n withInternalOperationOptions(token, options = {}) {\n return {\n ...options,\n ...(token ? { [INTERNAL_OPERATION_TOKEN]: token } : {}),\n };\n }\n withAnimationQueueBypass(options = {}) {\n return {\n ...options,\n [INTERNAL_ALLOW_DURING_ANIMATION_QUEUE]: true,\n };\n }\n assertIdleForOperation(operationName, options) {\n const token = this.getInternalOperationToken(options);\n this.operationGuard.assertIdleForOperation(operationName, token);\n if (this.cropSession &&\n !this.operationGuard.isOwnOperation(token) &&\n !CROP_SESSION_ALLOWED_OPERATIONS.has(operationName)) {\n throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while crop mode is active.`);\n }\n if (this.animQueue.isBusy() && !this.canRunDuringAnimationQueue(options)) {\n throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while an animation is queued.`);\n }\n }\n canRunIdleOperation(operationName, options) {\n try {\n this.assertIdleForOperation(operationName, options);\n return true;\n }\n catch {\n return false;\n }\n }\n assertCanQueueAnimation(operationName, options) {\n this.operationGuard.assertCanQueueAnimation(operationName, this.getInternalOperationToken(options));\n }\n isImageLoaded() {\n var _a, _b;\n return !!(this.originalImage &&\n this.originalImage instanceof this.fabricModule.FabricImage &&\n ((_a = this.originalImage.width) !== null && _a !== void 0 ? _a : 0) > 0 &&\n ((_b = this.originalImage.height) !== null && _b !== void 0 ? _b : 0) > 0);\n }\n isBusy() {\n return this.operationGuard.isBusy() || this.animQueue.isBusy() || this.cropSession !== null;\n }\n setLayoutMode(mode) {\n if (mode !== 'fit' && mode !== 'cover' && mode !== 'expand') {\n reportWarning(this.options, new TypeError(`[ImageEditor] Unsupported layout mode ${JSON.stringify(mode)}. ` +\n 'Expected \"fit\", \"cover\", or \"expand\".'), 'Ignored invalid layout mode.');\n return;\n }\n this.options.fitImageToCanvas = mode === 'fit';\n this.options.coverImageToCanvas = mode === 'cover';\n this.options.expandCanvasToImage = mode === 'expand';\n }\n buildCallbackContext(operation, isInternalOperation = false) {\n return { operation, isInternalOperation };\n }\n getOperationContext(fallback, options) {\n const internal = this.getInternalOperationToken(options);\n const activeOperation = this.operationGuard.activeOperationName();\n if (internal && activeOperation) {\n return this.buildCallbackContext(activeOperation, true);\n }\n return this.buildCallbackContext(fallback, false);\n }\n emitOptionCallback(callbackName, args) {\n const callback = this.options[callbackName];\n if (typeof callback !== 'function')\n return;\n try {\n callback(...args);\n }\n catch (error) {\n console.error(`[ImageEditor] ${callbackName} callback threw`, error);\n }\n }\n getImageInfo() {\n if (!this.canvas || !this.originalImage)\n return null;\n const canvasWidth = this.canvas.getWidth();\n const canvasHeight = this.canvas.getHeight();\n let displayWidth;\n let displayHeight;\n try {\n this.originalImage.setCoords();\n const bounds = this.originalImage.getBoundingRect();\n displayWidth = Math.max(0, Number(bounds.width) || 0);\n displayHeight = Math.max(0, Number(bounds.height) || 0);\n }\n catch {\n displayWidth = Math.max(0, (Number(this.originalImage.width) || 0) *\n Math.abs(Number(this.originalImage.scaleX) || 1));\n displayHeight = Math.max(0, (Number(this.originalImage.height) || 0) *\n Math.abs(Number(this.originalImage.scaleY) || 1));\n }\n return {\n width: Math.max(0, Number(this.originalImage.width) || 0),\n height: Math.max(0, Number(this.originalImage.height) || 0),\n displayWidth,\n displayHeight,\n scale: this.currentScale,\n rotation: this.currentRotation,\n canvasWidth,\n canvasHeight,\n };\n }\n getMasks() {\n if (!this.canvas)\n return [];\n return this.canvas.getObjects().filter(isMaskObject).slice();\n }\n getMaskCollectionSignature() {\n return this.getMasks()\n .map((mask) => `${mask.maskId}:${mask.maskName}`)\n .join('|');\n }\n getEditorState() {\n const canvasWidth = this.canvas ? this.canvas.getWidth() : 0;\n const canvasHeight = this.canvas ? this.canvas.getHeight() : 0;\n const image = this.getImageInfo();\n return {\n hasImage: image !== null,\n image,\n maskCount: this.getMasks().length,\n currentScale: this.currentScale,\n currentRotation: this.currentRotation,\n isBusy: this.isBusy(),\n isCropMode: this.cropSession !== null,\n canUndo: this.historyManager.canUndo(),\n canRedo: this.historyManager.canRedo(),\n canvasWidth,\n canvasHeight,\n };\n }\n emitImageChanged(context) {\n this.emitOptionCallback('onImageChanged', [this.getEditorState(), context]);\n }\n emitMasksChanged(context) {\n this.emitOptionCallback('onMasksChanged', [this.getMasks(), context]);\n }\n emitBusyChangeIfChanged(context) {\n const isBusy = this.isBusy();\n if (this.lastEmittedIsBusy === isBusy)\n return;\n this.lastEmittedIsBusy = isBusy;\n this.emitOptionCallback('onBusyChange', [isBusy, context]);\n }\n buildSelection(selected) {\n var _a;\n const selectedMasks = selected.filter(isMaskObject);\n return {\n selectedMask: (_a = selectedMasks[0]) !== null && _a !== void 0 ? _a : null,\n selectedMasks,\n };\n }\n withSelectionChangeContext(context, callback) {\n const previous = this.nextSelectionChangeContext;\n this.nextSelectionChangeContext = context;\n try {\n return callback();\n }\n finally {\n this.nextSelectionChangeContext = previous;\n }\n }\n isSupportedImageMimeType(mimeType) {\n return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp';\n }\n inferCurrentImageMimeType() {\n const image = this.originalImage;\n if (!image)\n return null;\n let source = null;\n try {\n if (typeof image.getSrc === 'function')\n source = image.getSrc();\n else if (typeof image.src === 'string')\n source = image.src;\n }\n catch {\n source = null;\n }\n const mimeType = source ? detectSourceMimeType(source) : null;\n return this.isSupportedImageMimeType(mimeType) ? mimeType : null;\n }\n setCanvasSizePx(widthPx, heightPx) {\n if (!this.canvas)\n return;\n applyCanvasDimensions(this.canvas, widthPx, heightPx, this.containerElement);\n }\n alignObjectBoundingBoxToCanvasTopLeft(object) {\n var _a, _b;\n object.setCoords();\n const boundingRect = object.getBoundingRect();\n object.set({\n left: ((_a = object.left) !== null && _a !== void 0 ? _a : 0) - boundingRect.left,\n top: ((_b = object.top) !== null && _b !== void 0 ? _b : 0) - boundingRect.top,\n });\n object.setCoords();\n this.canvas.renderAll();\n }\n measureLayoutViewport(scrollbarSize) {\n return this.viewportCache.measure(this.containerElement, {\n width: this.options.canvasWidth,\n height: this.options.canvasHeight,\n }, scrollbarSize);\n }\n updateCanvasSizeToImageBounds() {\n var _a, _b;\n if (!this.originalImage)\n return;\n this.originalImage.setCoords();\n const boundingRect = this.originalImage.getBoundingRect();\n const scrollbarSize = measureScrollbarSize((_b = (_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : null);\n const viewport = this.measureLayoutViewport(scrollbarSize);\n if (this.options.fitImageToCanvas || this.options.coverImageToCanvas) {\n const canvasSize = computeScrollableCanvasSize(boundingRect.width, boundingRect.height, viewport, scrollbarSize);\n this.setCanvasSizePx(canvasSize.width, canvasSize.height);\n return;\n }\n if (boundingRect.width <= viewport.width && boundingRect.height <= viewport.height) {\n this.setCanvasSizePx(viewport.width, viewport.height);\n return;\n }\n this.setCanvasSizePx(Math.max(viewport.width, Math.ceil(boundingRect.width)), Math.max(viewport.height, Math.ceil(boundingRect.height)));\n }\n shouldNormalizeCanvasSizeAfterStateRestore() {\n var _a, _b;\n if (!this.canvas || !this.originalImage)\n return false;\n this.originalImage.setCoords();\n const boundingRect = this.originalImage.getBoundingRect();\n const viewport = this.measureLayoutViewport(measureScrollbarSize((_b = (_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : null));\n const canvasW = Math.ceil(this.canvas.getWidth());\n const canvasH = Math.ceil(this.canvas.getHeight());\n const clipsImage = boundingRect.width > canvasW + LAYOUT_EPSILON ||\n boundingRect.height > canvasH + LAYOUT_EPSILON;\n if (this.options.fitImageToCanvas || this.options.coverImageToCanvas) {\n const staleOverflowWidth = canvasW > viewport.width + LAYOUT_EPSILON &&\n boundingRect.width <= viewport.width + LAYOUT_EPSILON;\n const staleOverflowHeight = canvasH > viewport.height + LAYOUT_EPSILON &&\n boundingRect.height <= viewport.height + LAYOUT_EPSILON;\n return clipsImage || staleOverflowWidth || staleOverflowHeight;\n }\n if (this.options.expandCanvasToImage) {\n const expectedW = Math.max(viewport.width, Math.ceil(boundingRect.width));\n const expectedH = Math.max(viewport.height, Math.ceil(boundingRect.height));\n return (Math.abs(canvasW - expectedW) > LAYOUT_EPSILON ||\n Math.abs(canvasH - expectedH) > LAYOUT_EPSILON);\n }\n return clipsImage;\n }\n captureImageDisplayGeometry() {\n if (!this.canvas || !this.originalImage)\n return null;\n this.originalImage.setCoords();\n const boundingRect = this.originalImage.getBoundingRect();\n return {\n canvasWidth: this.canvas.getWidth(),\n canvasHeight: this.canvas.getHeight(),\n imageDisplayWidth: Math.max(1, boundingRect.width),\n imageDisplayHeight: Math.max(1, boundingRect.height),\n };\n }\n restoreMergedImageDisplayGeometry(geometry) {\n if (!geometry || !this.canvas || !this.originalImage)\n return;\n this.setCanvasSizePx(geometry.canvasWidth, geometry.canvasHeight);\n const sourceW = Math.max(1, this.originalImage.width || geometry.imageDisplayWidth);\n const sourceH = Math.max(1, this.originalImage.height || geometry.imageDisplayHeight);\n const scale = Math.min(geometry.imageDisplayWidth / sourceW, geometry.imageDisplayHeight / sourceH);\n this.originalImage.set({\n left: 0,\n top: 0,\n angle: 0,\n scaleX: scale,\n scaleY: scale,\n originX: 'left',\n originY: 'top',\n selectable: false,\n evented: false,\n hasControls: false,\n hoverCursor: 'default',\n });\n this.originalImage.setCoords();\n this.canvas.sendObjectToBack(this.originalImage);\n this.currentScale = 1;\n this.currentRotation = 0;\n this.baseImageScale = scale;\n this.lastSnapshot = this.captureSnapshotInternal();\n this.canvas.renderAll();\n }\n buildTransformContext() {\n return {\n canvas: this.canvas,\n options: this.options,\n guard: this.operationGuard,\n getOriginalImage: () => this.originalImage,\n getCurrentScale: () => this.currentScale,\n setCurrentScale: (n) => {\n this.currentScale = n;\n },\n getCurrentRotation: () => this.currentRotation,\n setCurrentRotation: (n) => {\n this.currentRotation = n;\n },\n getBaseImageScale: () => this.baseImageScale,\n saveCanvasState: () => {\n this.saveStateInternal(this.withAnimationQueueBypass());\n },\n setSuppressSaveState: (suppress) => {\n this.shouldSuppressSaveState = suppress;\n },\n afterTransformSnap: () => {\n if (this.isDisposed || !this.canvas || !this.originalImage)\n return;\n if (this.options.expandCanvasToImage ||\n this.options.coverImageToCanvas ||\n this.options.fitImageToCanvas) {\n this.updateCanvasSizeToImageBounds();\n }\n this.alignObjectBoundingBoxToCanvasTopLeft(this.originalImage);\n this.canvas\n .getObjects()\n .filter(isMaskObject)\n .forEach((maskObject) => this.syncMaskLabel(maskObject));\n },\n };\n }\n scaleImage(factor) {\n if (this.isDisposed || !this.transformController)\n return Promise.resolve();\n if (!Number.isFinite(factor))\n return Promise.resolve();\n try {\n this.assertCanQueueAnimation('scaleImage');\n }\n catch (error) {\n return Promise.reject(error);\n }\n const controller = this.transformController;\n const context = this.buildCallbackContext('scaleImage', false);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.updateUi();\n try {\n await controller.scaleImage(factor);\n if (!this.isDisposed)\n this.emitImageChanged(context);\n }\n finally {\n if (!this.isDisposed) {\n this.updateInputs();\n }\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n rotateImage(degrees) {\n if (this.isDisposed || !this.transformController)\n return Promise.resolve();\n if (!Number.isFinite(degrees))\n return Promise.resolve();\n try {\n this.assertCanQueueAnimation('rotateImage');\n }\n catch (error) {\n return Promise.reject(error);\n }\n const controller = this.transformController;\n const context = this.buildCallbackContext('rotateImage', false);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.updateUi();\n try {\n await controller.rotateImage(degrees);\n if (!this.isDisposed)\n this.emitImageChanged(context);\n }\n finally {\n if (!this.isDisposed) {\n this.updateInputs();\n }\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n resetImageTransform() {\n if (this.isDisposed || !this.transformController)\n return Promise.resolve();\n try {\n this.assertCanQueueAnimation('resetImageTransform');\n }\n catch (error) {\n return Promise.reject(error);\n }\n const controller = this.transformController;\n const context = this.buildCallbackContext('resetImageTransform', false);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.updateUi();\n try {\n await controller.resetImageTransform();\n if (!this.isDisposed)\n this.emitImageChanged(context);\n }\n finally {\n if (!this.isDisposed) {\n this.updateInputs();\n }\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n refreshUiAfterQueuedAnimation() {\n if (this.isDisposed || !this.canvas)\n return;\n this.updateInputs();\n this.updateUi();\n }\n async loadFromState(jsonString) {\n return this.loadFromStateInternal(jsonString);\n }\n async loadFromStateInternal(jsonString, options) {\n var _a;\n if (!jsonString || !this.canvas)\n return;\n if (this.isDisposed)\n return;\n if (!this.canRunIdleOperation('loadFromState', options))\n return;\n const activeRestoreOperation = this.activeStateRestoreOperation;\n const context = this.buildCallbackContext(activeRestoreOperation !== null && activeRestoreOperation !== void 0 ? activeRestoreOperation : 'loadFromState', activeRestoreOperation === 'undo' || activeRestoreOperation === 'redo');\n const previousImage = this.originalImage;\n const previousMaskSignature = this.getMaskCollectionSignature();\n try {\n const restoredState = await loadFromStateImpl({\n canvas: this.canvas,\n jsonString,\n setCanvasSize: (widthPx, heightPx) => this.setCanvasSizePx(widthPx, heightPx),\n });\n if (this.isDisposed || !this.canvas)\n return;\n this.hideAllMaskLabels();\n this.originalImage = restoredState.originalImage;\n if (this.originalImage) {\n this.originalImage.set({\n originX: 'left',\n originY: 'top',\n selectable: false,\n evented: false,\n hasControls: false,\n hoverCursor: 'default',\n });\n this.canvas.sendObjectToBack(this.originalImage);\n }\n this.maskCounter = restoredState.maxMaskId;\n const editorState = restoredState.editorState;\n if (editorState) {\n this.currentScale = editorState.currentScale;\n this.currentRotation = editorState.currentRotation;\n this.baseImageScale = editorState.baseImageScale;\n }\n if (this.originalImage) {\n this.currentImageMimeType =\n editorState && 'currentImageMimeType' in editorState\n ? ((_a = editorState.currentImageMimeType) !== null && _a !== void 0 ? _a : null)\n : this.inferCurrentImageMimeType();\n }\n else {\n this.currentImageMimeType = null;\n }\n this.isImageLoadedToCanvas = !!this.originalImage;\n if (this.originalImage &&\n (this.options.expandCanvasToImage ||\n this.options.coverImageToCanvas ||\n this.options.fitImageToCanvas) &&\n this.shouldNormalizeCanvasSizeAfterStateRestore()) {\n this.updateCanvasSizeToImageBounds();\n this.alignObjectBoundingBoxToCanvasTopLeft(this.originalImage);\n }\n const restoredMasks = restoredState.objects.filter(isMaskObject);\n this.lastMask = restoredMasks.reduce((lastMask, maskObject) => !lastMask || maskObject.maskId > lastMask.maskId ? maskObject : lastMask, null);\n restoredMasks.forEach((maskObject) => {\n applyMaskUnselectedStyle(maskObject);\n reattachMaskHoverHandlers(maskObject);\n });\n this.lastSnapshot = this.captureSnapshotInternal();\n this.canvas.renderAll();\n this.updateInputs();\n this.updateMaskList();\n this.updateUi();\n if (previousImage && previousImage !== this.originalImage) {\n this.emitOptionCallback('onImageCleared', [previousImage, context]);\n }\n if (previousMaskSignature !== this.getMaskCollectionSignature()) {\n this.emitMasksChanged(context);\n }\n this.emitImageChanged(context);\n const activeMaskId = editorState === null || editorState === void 0 ? void 0 : editorState.activeMaskId;\n if (typeof activeMaskId === 'number') {\n const activeMask = restoredMasks.find((maskObject) => maskObject.maskId === activeMaskId);\n if (activeMask) {\n this.withSelectionChangeContext(context, () => {\n this.canvas.setActiveObject(activeMask);\n this.handleSelectionChanged([activeMask]);\n });\n }\n }\n }\n catch (error) {\n reportError(this.options, error, 'Failed to restore canvas state.');\n throw error;\n }\n }\n saveState() {\n this.saveStateInternal();\n }\n saveStateInternal(options) {\n var _a, _b;\n if (!this.canvas || this.shouldSuppressSaveState)\n return;\n if (!this.canRunIdleOperation('saveState', options))\n return;\n const activeObj = this.canvas.getActiveObject();\n const activeMask = this.getActiveMaskForSnapshot();\n this.hideAllMaskLabels();\n try {\n const after = saveStateImpl({\n canvas: this.canvas,\n activeMaskId: (_a = activeMask === null || activeMask === void 0 ? void 0 : activeMask.maskId) !== null && _a !== void 0 ? _a : null,\n currentScale: this.currentScale,\n currentRotation: this.currentRotation,\n baseImageScale: this.baseImageScale,\n currentImageMimeType: this.currentImageMimeType,\n });\n const before = (_b = this.lastSnapshot) !== null && _b !== void 0 ? _b : after;\n if (after === before) {\n return;\n }\n let executedOnce = false;\n const cmd = new Command(async () => {\n if (executedOnce) {\n await this.loadFromStateInternal(after, this.withAnimationQueueBypass());\n }\n executedOnce = true;\n }, async () => {\n await this.loadFromStateInternal(before, this.withAnimationQueueBypass());\n });\n this.historyManager.execute(cmd);\n this.lastSnapshot = after;\n }\n catch (error) {\n reportWarning(this.options, error, 'Failed to capture canvas snapshot.');\n }\n finally {\n this.restoreActiveMaskAfterSnapshot(activeObj, activeMask);\n this.updateUi();\n }\n }\n restoreActiveMaskAfterSnapshot(activeObj, activeMask) {\n if (!this.canvas)\n return;\n const maskToRestore = activeObj && isMaskObject(activeObj) ? activeObj : activeMask;\n if (!maskToRestore || !this.canvas.getObjects().includes(maskToRestore))\n return;\n this.canvas.setActiveObject(maskToRestore);\n this.showLabelForMask(maskToRestore);\n this.updateMaskListSelection(maskToRestore);\n }\n undo() {\n if (this.isDisposed)\n return Promise.resolve();\n if (!this.canRunIdleOperation('undo'))\n return Promise.resolve();\n const context = this.buildCallbackContext('undo', true);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.activeStateRestoreOperation = 'undo';\n try {\n await this.historyManager.undo();\n }\n finally {\n this.activeStateRestoreOperation = null;\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n redo() {\n if (this.isDisposed)\n return Promise.resolve();\n if (!this.canRunIdleOperation('redo'))\n return Promise.resolve();\n const context = this.buildCallbackContext('redo', true);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.activeStateRestoreOperation = 'redo';\n try {\n await this.historyManager.redo();\n }\n finally {\n this.activeStateRestoreOperation = null;\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n createMask(config = {}) {\n if (!this.canvas)\n return null;\n if (!this.canRunIdleOperation('createMask'))\n return null;\n const callbackContext = this.buildCallbackContext('createMask', false);\n const createMaskContext = this.buildCreateMaskContext();\n const mask = this.withSelectionChangeContext(callbackContext, () => createMaskImpl(createMaskContext, config));\n if (mask) {\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n return mask;\n }\n removeSelectedMask() {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('removeSelectedMask'))\n return;\n const before = this.getMasks().length;\n const callbackContext = this.buildCallbackContext('removeSelectedMask', false);\n const removeMaskContext = this.buildRemoveMaskContext();\n this.withSelectionChangeContext(callbackContext, () => removeSelectedMaskImpl(removeMaskContext));\n this.updateUi();\n if (this.getMasks().length !== before) {\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n }\n removeAllMasks(options = {}) {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('removeAllMasks', options))\n return;\n const before = this.getMasks().length;\n const callbackContext = this.buildCallbackContext('removeAllMasks', false);\n const removeMaskContext = this.buildRemoveMaskContext();\n this.withSelectionChangeContext(callbackContext, () => removeAllMasksImpl(removeMaskContext, options));\n this.updateUi();\n if (this.getMasks().length !== before) {\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n }\n buildCreateMaskContext() {\n return {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.options,\n getLastMask: () => this.lastMask,\n setLastMask: (maskObject) => {\n this.lastMask = maskObject;\n },\n getMaskCounter: () => this.maskCounter,\n setMaskCounter: (n) => {\n this.maskCounter = n;\n },\n updateMaskList: () => {\n this.updateMaskList();\n },\n saveCanvasState: () => {\n this.saveState();\n },\n expandCanvasIfNeeded: (widthPx, heightPx) => {\n this.setCanvasSizePx(widthPx, heightPx);\n },\n };\n }\n buildRemoveMaskContext() {\n return {\n canvas: this.canvas,\n removeLabelForMask: (mask) => {\n this.removeLabelForMask(mask);\n },\n updateMaskList: () => {\n this.updateMaskList();\n },\n saveCanvasState: () => {\n this.saveState();\n },\n setLastMask: (maskObject) => {\n this.lastMask = maskObject;\n },\n };\n }\n buildMaskLabelContext() {\n if (!this.canvas)\n return null;\n return { fabric: this.fabricModule, canvas: this.canvas, options: this.options };\n }\n removeLabelForMask(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n removeLabelForMask(context, mask);\n }\n createLabelForMask(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n createLabelForMask(context, mask);\n }\n hideAllMaskLabels() {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n hideAllMaskLabels(context);\n }\n syncMaskLabel(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n syncMaskLabel(context, mask);\n }\n showLabelForMask(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n showLabelForMask(context, mask);\n }\n handleSelectionChanged(selected) {\n var _a, _b, _c;\n if (!this.canvas)\n return;\n const selectedMask = (_a = selected.find(isMaskObject)) !== null && _a !== void 0 ? _a : null;\n const masks = this.canvas.getObjects().filter(isMaskObject);\n masks.forEach((maskObject) => {\n if (maskObject !== selectedMask) {\n if (maskObject.labelObject) {\n this.removeLabelForMask(maskObject);\n }\n applyMaskUnselectedStyle(maskObject);\n }\n else {\n applyMaskSelectedStyle(maskObject);\n }\n });\n if (selectedMask)\n this.showLabelForMask(selectedMask);\n this.updateMaskListSelection(selectedMask);\n this.canvas.requestRenderAll();\n this.updateUi();\n const context = (_b = this.nextSelectionChangeContext) !== null && _b !== void 0 ? _b : this.buildCallbackContext((_c = this.activeStateRestoreOperation) !== null && _c !== void 0 ? _c : 'createMask', this.activeStateRestoreOperation === 'undo' ||\n this.activeStateRestoreOperation === 'redo');\n this.emitOptionCallback('onSelectionChange', [this.buildSelection(selected), context]);\n }\n buildMaskListContext() {\n return {\n canvas: this.canvas,\n getListElementId: () => this.elements.maskList,\n onMaskSelected: (mask) => this.handleSelectionChanged([mask]),\n };\n }\n updateMaskList() {\n renderMaskList(this.buildMaskListContext());\n }\n updateMaskListSelection(selectedMask) {\n updateMaskListSelection(this.buildMaskListContext(), selectedMask);\n }\n async mergeMasks() {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('mergeMasks'))\n return;\n const hasMasks = this.canvas.getObjects().some(isMaskObject);\n if (!hasMasks)\n return;\n const callbackContext = this.buildCallbackContext('mergeMasks', false);\n const operationToken = this.operationGuard.beginBusyOperation('mergeMasks');\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n try {\n const mergeMasksContext = this.buildMergeMasksContext(operationToken);\n await mergeMasksImpl(mergeMasksContext);\n this.updateInputs();\n this.updateMaskList();\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n }\n }\n downloadImage(fileName) {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('downloadImage'))\n return;\n const callbackContext = this.buildCallbackContext('downloadImage', false);\n const operationToken = this.operationGuard.beginBusyOperation('downloadImage');\n this.emitBusyChangeIfChanged(callbackContext);\n const exportContext = this.buildExportServiceContext();\n try {\n downloadImageImpl(exportContext, fileName);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n }\n }\n async exportImageBase64(options) {\n if (!this.canvas)\n return '';\n if (!this.canRunIdleOperation('exportImageBase64', options))\n return '';\n const callbackContext = this.buildCallbackContext('exportImageBase64', false);\n const operationToken = this.operationGuard.beginBusyOperation('exportImageBase64');\n this.emitBusyChangeIfChanged(callbackContext);\n const exportContext = this.buildExportServiceContext();\n try {\n return await exportImageBase64Impl(exportContext, options);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n }\n }\n async exportImageFile(options) {\n this.assertIdleForOperation('exportImageFile', options);\n const callbackContext = this.buildCallbackContext('exportImageFile', false);\n const operationToken = this.operationGuard.beginBusyOperation('exportImageFile');\n this.emitBusyChangeIfChanged(callbackContext);\n const exportContext = this.buildExportServiceContext();\n try {\n return await exportImageFileImpl(exportContext, options);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n }\n }\n buildExportServiceContext() {\n return {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.options,\n isImageLoaded: () => this.isImageLoaded(),\n getOriginalImage: () => this.originalImage,\n };\n }\n buildMergeMasksContext(operationToken) {\n return {\n ...this.buildExportServiceContext(),\n historyManager: this.historyManager,\n containerElement: this.containerElement,\n loadImage: async (base64, providedOptions) => {\n const geometry = this.captureImageDisplayGeometry();\n await this.loadImage(base64, this.withInternalOperationOptions(operationToken, providedOptions));\n this.restoreMergedImageDisplayGeometry(geometry);\n },\n saveState: () => this.captureSnapshotInternal(),\n loadFromState: (snapshot) => this.loadFromStateInternal(snapshot, this.withInternalOperationOptions(operationToken, this.withAnimationQueueBypass())),\n removeAllMasksNoHistory: () => {\n const context = this.buildRemoveMaskContext();\n removeAllMasksImpl(context, { saveHistory: false });\n },\n };\n }\n captureSnapshotInternal() {\n var _a;\n if (!this.canvas)\n return '';\n const activeMask = this.getActiveMaskForSnapshot();\n this.hideAllMaskLabels();\n return saveStateImpl({\n canvas: this.canvas,\n activeMaskId: (_a = activeMask === null || activeMask === void 0 ? void 0 : activeMask.maskId) !== null && _a !== void 0 ? _a : null,\n currentScale: this.currentScale,\n currentRotation: this.currentRotation,\n baseImageScale: this.baseImageScale,\n currentImageMimeType: this.currentImageMimeType,\n });\n }\n getActiveMaskForSnapshot() {\n var _a;\n if (!this.canvas)\n return null;\n const activeObject = this.canvas.getActiveObject();\n if (activeObject && isMaskObject(activeObject))\n return activeObject;\n return ((_a = this.canvas\n .getObjects()\n .find((object) => isMaskObject(object) && !!object.labelObject)) !== null && _a !== void 0 ? _a : null);\n }\n enterCropMode() {\n if (!this.canvas || !this.originalImage)\n return;\n if (this.cropSession)\n return;\n if (!this.isImageLoaded())\n return;\n if (!this.canRunIdleOperation('enterCropMode'))\n return;\n const cropControllerContext = this.buildCropControllerContext();\n enterCropModeImpl(cropControllerContext);\n this.updateUi();\n const callbackContext = this.buildCallbackContext('enterCropMode', false);\n this.emitBusyChangeIfChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n cancelCrop() {\n if (!this.canvas || !this.cropSession)\n return;\n if (!this.canRunIdleOperation('cancelCrop'))\n return;\n const cropControllerContext = this.buildCropControllerContext();\n cancelCropImpl(cropControllerContext);\n this.cropSession = null;\n this.updateUi();\n this.canvas.requestRenderAll();\n const callbackContext = this.buildCallbackContext('cancelCrop', false);\n this.emitBusyChangeIfChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n async applyCrop() {\n if (!this.canvas || !this.cropSession)\n return;\n if (!this.canRunIdleOperation('applyCrop'))\n return;\n const callbackContext = this.buildCallbackContext('applyCrop', false);\n const hadMasks = this.getMasks().length > 0;\n const operationToken = this.operationGuard.beginBusyOperation('applyCrop');\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n try {\n const cropControllerContext = this.buildCropControllerContext(operationToken);\n await applyCropImpl(cropControllerContext);\n this.updateInputs();\n this.updateMaskList();\n if (hadMasks || this.getMasks().length > 0) {\n this.emitMasksChanged(callbackContext);\n }\n this.emitImageChanged(callbackContext);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n }\n }\n buildCropControllerContext(operationToken) {\n return {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.options,\n historyManager: this.historyManager,\n isImageLoaded: () => this.isImageLoaded(),\n getOriginalImage: () => this.originalImage,\n getCurrentImageMimeType: () => this.currentImageMimeType,\n getCropSession: () => this.cropSession,\n setCropSession: (s) => {\n this.cropSession = s;\n },\n saveState: () => this.captureSnapshotInternal(),\n loadFromState: (snapshot) => this.loadFromStateInternal(snapshot, this.withInternalOperationOptions(operationToken, this.withAnimationQueueBypass())),\n loadImage: (base64, providedOptions) => this.loadImage(base64, this.withInternalOperationOptions(operationToken, providedOptions)),\n getMaskCounter: () => this.maskCounter,\n setMaskCounter: (n) => {\n this.maskCounter = n;\n },\n updateMaskList: () => {\n this.updateMaskList();\n },\n };\n }\n updateInputs() {\n const scaleId = this.elements.scalePercentageInput;\n if (!scaleId)\n return;\n const scaleInputElement = document.getElementById(scaleId);\n if (scaleInputElement)\n scaleInputElement.value = String(Math.round(this.currentScale * 100));\n }\n updateUi() {\n if (!this.canvas)\n return;\n const hasImage = !!this.originalImage;\n const masks = hasImage ? this.canvas.getObjects().filter(isMaskObject) : [];\n const hasMasks = masks.length > 0;\n const activeObject = this.canvas.getActiveObject();\n const hasSelectedMask = !!(activeObject && isMaskObject(activeObject));\n const isDefaultTransform = this.currentScale === 1 && this.currentRotation === 0;\n const canUndo = this.historyManager.canUndo();\n const canRedo = this.historyManager.canRedo();\n const isInCropMode = this.cropSession !== null;\n const isBusy = this.operationGuard.isBusy() || this.animQueue.isBusy();\n if (isInCropMode) {\n CROP_MODE_CONTROL_KEYS.forEach((key) => {\n this.setControlEnabled(key, !isBusy && CROP_MODE_ENABLED_KEYS.includes(key));\n });\n return;\n }\n this.setControlEnabled('scalePercentageInput', hasImage && !isBusy);\n this.setControlEnabled('rotateLeftDegreesInput', hasImage && !isBusy);\n this.setControlEnabled('rotateRightDegreesInput', hasImage && !isBusy);\n this.setControlEnabled('zoomInButton', hasImage && !isBusy && this.currentScale < this.options.maxScale);\n this.setControlEnabled('zoomOutButton', hasImage && !isBusy && this.currentScale > this.options.minScale);\n this.setControlEnabled('rotateLeftButton', hasImage && !isBusy);\n this.setControlEnabled('rotateRightButton', hasImage && !isBusy);\n this.setControlEnabled('createMaskButton', hasImage && !isBusy);\n this.setControlEnabled('removeSelectedMaskButton', hasSelectedMask && !isBusy);\n this.setControlEnabled('removeAllMasksButton', hasMasks && !isBusy);\n this.setControlEnabled('mergeMasksButton', hasImage && hasMasks && !isBusy);\n this.setControlEnabled('downloadImageButton', hasImage && !isBusy);\n this.setControlEnabled('resetImageTransformButton', hasImage && !isDefaultTransform && !isBusy);\n this.setControlEnabled('undoButton', hasImage && !isBusy && canUndo);\n this.setControlEnabled('redoButton', hasImage && !isBusy && canRedo);\n this.setControlEnabled('enterCropModeButton', hasImage && !isBusy);\n this.setControlEnabled('imageInput', !isBusy);\n this.setControlEnabled('applyCropButton', false);\n this.setControlEnabled('cancelCropButton', false);\n }\n setControlEnabled(key, isEnabled) {\n var _a;\n const id = this.elements[key];\n if (!id)\n return;\n const controlElement = document.getElementById(id);\n if (!controlElement)\n return;\n this.recordElementOriginalState(key, controlElement);\n if ('disabled' in controlElement) {\n controlElement.disabled = !isEnabled;\n return;\n }\n if (!isEnabled) {\n controlElement.setAttribute('aria-disabled', 'true');\n controlElement.style.pointerEvents = 'none';\n }\n else {\n const originalAria = this.elementOriginalAriaDisabledMap.get(key);\n if (originalAria === null || originalAria === undefined) {\n controlElement.removeAttribute('aria-disabled');\n }\n else {\n controlElement.setAttribute('aria-disabled', originalAria);\n }\n controlElement.style.pointerEvents =\n (_a = this.elementOriginalPointerEventsMap.get(key)) !== null && _a !== void 0 ? _a : '';\n }\n }\n recordElementOriginalState(key, element) {\n if (!this.elementOriginalAriaDisabledMap.has(key)) {\n this.elementOriginalAriaDisabledMap.set(key, element.getAttribute('aria-disabled'));\n }\n if (!this.elementOriginalPointerEventsMap.has(key)) {\n this.elementOriginalPointerEventsMap.set(key, element.style.pointerEvents || '');\n }\n if ('disabled' in element && !this.elementOriginalDisabledMap.has(key)) {\n this.elementOriginalDisabledMap.set(key, !!element.disabled);\n }\n }\n restoreElementOriginalStates() {\n var _a, _b;\n for (const key of Object.keys(this.elements)) {\n const id = this.elements[key];\n if (!id)\n continue;\n const element = document.getElementById(id);\n if (!element)\n continue;\n if ('disabled' in element && this.elementOriginalDisabledMap.has(key)) {\n element.disabled =\n (_a = this.elementOriginalDisabledMap.get(key)) !== null && _a !== void 0 ? _a : false;\n }\n if (this.elementOriginalAriaDisabledMap.has(key)) {\n const originalAria = this.elementOriginalAriaDisabledMap.get(key);\n if (originalAria === null || originalAria === undefined) {\n element.removeAttribute('aria-disabled');\n }\n else {\n element.setAttribute('aria-disabled', originalAria);\n }\n }\n if (this.elementOriginalPointerEventsMap.has(key)) {\n element.style.pointerEvents = (_b = this.elementOriginalPointerEventsMap.get(key)) !== null && _b !== void 0 ? _b : '';\n }\n }\n this.elementOriginalDisabledMap.clear();\n this.elementOriginalAriaDisabledMap.clear();\n this.elementOriginalPointerEventsMap.clear();\n }\n updatePlaceholderStatus() {\n setPlaceholderVisibleImpl(this.placeholderElement, this.containerElement, this.options.showPlaceholder ? !this.originalImage : false);\n }\n dispose() {\n var _a;\n if (this.isDisposed)\n return;\n const context = this.buildCallbackContext('dispose', false);\n const previousImage = this.originalImage;\n this.isDisposed = true;\n this.operationGuard.markDisposed();\n this.animQueue.clear();\n (_a = this.domBindings) === null || _a === void 0 ? void 0 : _a.removeAll();\n this.restoreElementOriginalStates();\n if (this.cropSession && this.canvas) {\n try {\n const context = this.buildCropControllerContext();\n cancelCropImpl(context);\n }\n catch {\n }\n this.cropSession = null;\n }\n if (this.canvas) {\n try {\n void Promise.resolve(this.canvas.dispose()).catch(() => {\n });\n }\n catch {\n }\n this.canvas = null;\n this.canvasElement = null;\n this.isImageLoadedToCanvas = false;\n }\n this.originalImage = null;\n this.currentImageMimeType = null;\n this.lastMask = null;\n this.maskCounter = 0;\n this.currentScale = 1;\n this.currentRotation = 0;\n this.baseImageScale = 1;\n this.lastSnapshot = null;\n this.transformController = null;\n this.viewportCache.clear();\n if (previousImage) {\n this.emitOptionCallback('onImageCleared', [previousImage, context]);\n }\n this.emitImageChanged(context);\n this.emitBusyChangeIfChanged(context);\n this.emitOptionCallback('onEditorDisposed', [context]);\n }\n}\n//# sourceMappingURL=image-editor.js.map"],"names":["clampExportQuality","isPositiveFinite","setPlaceholderVisibleImpl","loadImageImpl","loadFromStateImpl","saveStateImpl","createMaskImpl","removeSelectedMaskImpl","removeAllMasksImpl","mergeMasksImpl","downloadImageImpl","exportImageBase64Impl","exportImageFileImpl","enterCropModeImpl","cancelCropImpl","applyCropImpl"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../esm/animation/animation-queue.js","../esm/core/callback-reporter.js","../esm/export/export-format.js","../esm/core/default-options.js","../esm/core/operation-guard.js","../esm/core/public-types.js","../esm/core/state-serializer.js","../esm/history/history-manager.js","../esm/fabric/fabric-adapter.js","../esm/core/errors.js","../esm/mask/mask-style.js","../esm/utils/canvas-region.js","../esm/crop/crop-controller.js","../esm/image/image-resampler.js","../esm/utils/timeout.js","../esm/mosaic/mosaic-geometry.js","../esm/mosaic/mosaic-pixelate.js","../esm/mosaic/mosaic-controller.js","../esm/export/export-service.js","../esm/utils/dom.js","../esm/image/layout-manager.js","../esm/image/image-loader.js","../esm/fabric/fabric-animation.js","../esm/image/transform-controller.js","../esm/utils/number.js","../esm/mask/mask-factory.js","../esm/mask/mask-label-manager.js","../esm/mask/mask-list.js","../esm/ui/dom-bindings.js","../esm/ui/visibility-state.js","../esm/utils/file.js","../esm/image-editor.js"],"sourcesContent":["export class AnimationQueue {\n constructor() {\n Object.defineProperty(this, \"queue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"running\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n add(animationFn) {\n return new Promise((resolve, reject) => {\n this.queue.push({ run: animationFn, resolve, reject });\n if (!this.running) {\n void this.drainQueue();\n }\n });\n }\n clear(reason) {\n const pending = this.queue;\n this.queue = [];\n if (reason !== undefined) {\n for (const entry of pending) {\n entry.reject(reason);\n }\n }\n else {\n for (const entry of pending) {\n entry.resolve();\n }\n }\n }\n isRunning() {\n return this.running;\n }\n isBusy() {\n return this.running || this.queue.length > 0;\n }\n waitForIdle() {\n if (!this.running && this.queue.length === 0) {\n return Promise.resolve();\n }\n return this.add(() => Promise.resolve()).then(() => undefined, () => undefined);\n }\n async drainQueue() {\n if (this.running)\n return;\n this.running = true;\n try {\n while (this.queue.length > 0) {\n const entry = this.queue.shift();\n try {\n await entry.run();\n entry.resolve();\n }\n catch (error) {\n entry.reject(error);\n }\n }\n }\n finally {\n this.running = false;\n if (this.queue.length > 0) {\n void this.drainQueue();\n }\n }\n }\n}\n//# sourceMappingURL=animation-queue.js.map","export function reportWarning(options, error, message) {\n const warningCallback = options.onWarning;\n if (typeof warningCallback !== 'function')\n return;\n try {\n warningCallback(error, message);\n }\n catch (callbackError) {\n console.warn('[ImageEditor] onWarning callback threw', callbackError);\n }\n}\nexport function reportError(options, error, message) {\n const errorCallback = options.onError;\n if (typeof errorCallback !== 'function')\n return;\n try {\n errorCallback(error, message);\n }\n catch (callbackError) {\n console.error('[ImageEditor] onError callback threw', callbackError);\n }\n}\n//# sourceMappingURL=callback-reporter.js.map","const FORMAT_ALIAS_TABLE = Object.freeze({\n jpeg: 'jpeg',\n jpg: 'jpeg',\n 'image/jpeg': 'jpeg',\n png: 'png',\n 'image/png': 'png',\n webp: 'webp',\n 'image/webp': 'webp',\n});\nconst MIME_TABLE = Object.freeze({\n jpeg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n});\nexport function normalizeImageFormat(input) {\n var _a;\n return (_a = tryNormalizeImageFormat(input)) !== null && _a !== void 0 ? _a : 'jpeg';\n}\nexport function tryNormalizeImageFormat(input) {\n var _a;\n if (!input)\n return null;\n const key = String(input).toLowerCase();\n if (Object.prototype.hasOwnProperty.call(FORMAT_ALIAS_TABLE, key)) {\n return (_a = FORMAT_ALIAS_TABLE[key]) !== null && _a !== void 0 ? _a : null;\n }\n return null;\n}\nexport function mimeTypeFor(format) {\n return MIME_TABLE[format];\n}\nexport function clampQuality(quality, fallback) {\n const numeric = Number(quality);\n if (!Number.isFinite(numeric))\n return fallback;\n return Math.max(0, Math.min(1, numeric));\n}\nexport function resolveExportFormat(options, downsampleQuality) {\n var _a;\n const providedOptions = options !== null && options !== void 0 ? options : {};\n const fileType = providedOptions.fileType;\n const formatAlias = providedOptions.format;\n const requested = fileType || formatAlias;\n const format = normalizeImageFormat(requested);\n const mimeType = mimeTypeFor(format);\n if (format === 'png') {\n return { format, mimeType, quality: undefined };\n }\n const rawQuality = (_a = providedOptions.quality) !== null && _a !== void 0 ? _a : downsampleQuality;\n const quality = clampQuality(rawQuality, downsampleQuality);\n return { format, mimeType, quality };\n}\n//# sourceMappingURL=export-format.js.map","import { tryNormalizeImageFormat } from '../export/export-format.js';\nconst EMPTY_DEFAULT_MASK_CONFIG = Object.freeze({});\nconst DEFAULT_LAYOUT_MODE = 'expand';\nexport const DEFAULT_OPTIONS = {\n canvasWidth: 800,\n canvasHeight: 600,\n backgroundColor: 'transparent',\n animationDuration: 300,\n minScale: 0.1,\n maxScale: 5.0,\n scaleStep: 0.05,\n rotationStep: 90,\n defaultLayoutMode: DEFAULT_LAYOUT_MODE,\n layoutMode: DEFAULT_LAYOUT_MODE,\n downsampleOnLoad: true,\n downsampleMaxWidth: 4000,\n downsampleMaxHeight: 3000,\n downsampleQuality: 0.92,\n preserveSourceFormat: true,\n downsampleMimeType: null,\n imageLoadTimeoutMs: 30000,\n maxHistorySize: 50,\n exportMultiplier: 1,\n maxExportPixels: 50000000,\n exportAreaByDefault: 'image',\n mergeMaskByDefault: true,\n defaultMaskWidth: 50,\n defaultMaskHeight: 80,\n defaultMaskConfig: EMPTY_DEFAULT_MASK_CONFIG,\n maskRotatable: false,\n maskLabelOnSelect: true,\n maskLabelOffset: 3,\n maskName: 'mask',\n groupSelection: false,\n showPlaceholder: true,\n initialImageBase64: null,\n defaultDownloadFileName: 'edited_image.jpg',\n onImageLoadStart: null,\n onImageLoaded: null,\n onImageCleared: null,\n onImageChanged: null,\n onBusyChange: null,\n onEditorDisposed: null,\n onMasksChanged: null,\n onSelectionChange: null,\n onError: null,\n onWarning: null,\n};\nconst DEFAULT_LABEL_TEXT_OPTIONS = {\n fontSize: 12,\n fill: '#fff',\n backgroundColor: 'rgba(0,0,0,0.7)',\n padding: 2,\n fontFamily: 'monospace',\n fontWeight: 'bold',\n selectable: false,\n evented: false,\n originX: 'left',\n originY: 'top',\n};\nexport const DEFAULT_LABEL = {\n getText: (mask) => mask.maskName,\n textOptions: { ...DEFAULT_LABEL_TEXT_OPTIONS },\n};\nexport const DEFAULT_CROP = {\n minWidth: 100,\n minHeight: 100,\n padding: 10,\n hideMasksDuringCrop: true,\n preserveMasksAfterCrop: false,\n allowRotationOfCropRect: false,\n exportFileType: 'source',\n exportQuality: undefined,\n};\nexport const DEFAULT_MOSAIC_CONFIG = Object.freeze({\n brushSize: 48,\n blockSize: 8,\n previewStroke: '#333',\n previewStrokeWidth: 1,\n previewStrokeDashArray: Object.freeze([4, 4]),\n previewFill: 'rgba(0,0,0,0)',\n outputFileType: 'source',\n outputQuality: undefined,\n});\nconst KNOWN_TOP_LEVEL_KEYS = new Set([\n 'canvasWidth',\n 'canvasHeight',\n 'backgroundColor',\n 'animationDuration',\n 'minScale',\n 'maxScale',\n 'scaleStep',\n 'rotationStep',\n 'defaultLayoutMode',\n 'downsampleOnLoad',\n 'downsampleMaxWidth',\n 'downsampleMaxHeight',\n 'downsampleQuality',\n 'preserveSourceFormat',\n 'downsampleMimeType',\n 'imageLoadTimeoutMs',\n 'maxHistorySize',\n 'exportMultiplier',\n 'maxExportPixels',\n 'exportAreaByDefault',\n 'mergeMaskByDefault',\n 'defaultMaskWidth',\n 'defaultMaskHeight',\n 'defaultMaskConfig',\n 'maskRotatable',\n 'maskLabelOnSelect',\n 'maskLabelOffset',\n 'maskName',\n 'groupSelection',\n 'showPlaceholder',\n 'initialImageBase64',\n 'defaultDownloadFileName',\n 'onImageLoadStart',\n 'onImageLoaded',\n 'onImageCleared',\n 'onImageChanged',\n 'onBusyChange',\n 'onEditorDisposed',\n 'onMasksChanged',\n 'onSelectionChange',\n 'onError',\n 'onWarning',\n 'label',\n 'crop',\n 'defaultMosaicConfig',\n]);\nfunction normalizeCallback(value) {\n return typeof value === 'function' ? value : null;\n}\nexport function isLayoutMode(value) {\n return value === 'fit' || value === 'cover' || value === 'expand';\n}\nfunction normalizeLayoutMode(value) {\n return isLayoutMode(value) ? value : DEFAULT_LAYOUT_MODE;\n}\nfunction isConfigObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nfunction copyDefaultMaskConfigValue(value) {\n return Array.isArray(value) ? [...value] : value;\n}\nfunction normalizeDefaultMaskConfig(value) {\n if (!isConfigObject(value))\n return EMPTY_DEFAULT_MASK_CONFIG;\n const normalized = {};\n for (const [key, optionValue] of Object.entries(value)) {\n if (key === 'onCreate' || key === 'fabricGenerator' || key === 'styles')\n continue;\n normalized[key] = copyDefaultMaskConfigValue(optionValue);\n }\n const styles = value.styles;\n if (isConfigObject(styles)) {\n const copiedStyles = {};\n for (const [key, styleValue] of Object.entries(styles)) {\n copiedStyles[key] = copyDefaultMaskConfigValue(styleValue);\n }\n Object.freeze(copiedStyles);\n normalized.styles = copiedStyles;\n }\n Object.freeze(normalized);\n return normalized;\n}\nfunction normalizePositiveInteger(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric <= 0)\n return fallback;\n return Math.max(1, Math.floor(numeric));\n}\nfunction normalizePositiveFiniteNumber(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric <= 0)\n return fallback;\n return numeric;\n}\nfunction normalizeNonNegativeFiniteNumber(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric < 0)\n return fallback;\n return numeric;\n}\nfunction normalizeFiniteNumber(value, fallback) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return fallback;\n return numeric;\n}\nfunction normalizeMaxHistorySize(value) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return DEFAULT_OPTIONS.maxHistorySize;\n return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeQualityOption(value) {\n if (value == null)\n return DEFAULT_OPTIONS.downsampleQuality;\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return DEFAULT_OPTIONS.downsampleQuality;\n return Math.max(0, Math.min(1, numeric));\n}\nfunction normalizeMaxExportPixels(value) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric) || numeric <= 0)\n return DEFAULT_OPTIONS.maxExportPixels;\n return Math.max(1, Math.floor(numeric));\n}\nfunction normalizeExportArea(value) {\n return value === 'canvas' || value === 'image' ? value : DEFAULT_OPTIONS.exportAreaByDefault;\n}\nfunction normalizeOptionalQuality(value) {\n if (value === undefined || value === null)\n return undefined;\n const numeric = Number(value);\n if (!Number.isFinite(numeric))\n return undefined;\n return Math.max(0, Math.min(1, numeric));\n}\nfunction hasOwn(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\nfunction isFiniteNumber(value) {\n return typeof value === 'number' && Number.isFinite(value);\n}\nfunction normalizeMosaicPositiveNumber(value, fallback) {\n return isFiniteNumber(value) && value > 0 ? value : fallback;\n}\nfunction normalizeMosaicBlockSize(value, fallback) {\n return isFiniteNumber(value) && value > 0 ? Math.max(1, Math.floor(value)) : fallback;\n}\nfunction normalizeMosaicNonNegativeNumber(value, fallback) {\n return isFiniteNumber(value) && value >= 0 ? value : fallback;\n}\nfunction normalizeMosaicDashArray(value, fallback) {\n if (value === null)\n return null;\n if (Array.isArray(value) &&\n value.every((entry) => typeof entry === 'number' && Number.isFinite(entry) && entry >= 0)) {\n return [...value];\n }\n return fallback ? [...fallback] : null;\n}\nfunction normalizeMosaicOutputFileType(value, fallback) {\n var _a;\n if (value === 'source')\n return 'source';\n if (typeof value !== 'string')\n return fallback;\n return (_a = tryNormalizeImageFormat(value)) !== null && _a !== void 0 ? _a : fallback;\n}\nfunction normalizeMosaicOutputQuality(value, fallback) {\n if (value === undefined || value === null)\n return undefined;\n if (!isFiniteNumber(value))\n return fallback;\n return Math.max(0, Math.min(1, value));\n}\nexport function cloneResolvedMosaicConfig(config) {\n return {\n ...config,\n previewStrokeDashArray: config.previewStrokeDashArray\n ? [...config.previewStrokeDashArray]\n : null,\n };\n}\nexport function normalizeMosaicConfig(input, fallback) {\n if (!isConfigObject(input))\n return cloneResolvedMosaicConfig(fallback);\n return mergeMosaicConfigPatch(fallback, input);\n}\nexport function mergeMosaicConfigPatch(current, patch, fallback = current) {\n const raw = isConfigObject(patch) ? patch : {};\n const next = cloneResolvedMosaicConfig(current);\n if (hasOwn(raw, 'brushSize')) {\n next.brushSize = normalizeMosaicPositiveNumber(raw.brushSize, fallback.brushSize);\n }\n if (hasOwn(raw, 'blockSize')) {\n next.blockSize = normalizeMosaicBlockSize(raw.blockSize, fallback.blockSize);\n }\n if (hasOwn(raw, 'previewStroke')) {\n next.previewStroke =\n typeof raw.previewStroke === 'string' ? raw.previewStroke : fallback.previewStroke;\n }\n if (hasOwn(raw, 'previewStrokeWidth')) {\n next.previewStrokeWidth = normalizeMosaicNonNegativeNumber(raw.previewStrokeWidth, fallback.previewStrokeWidth);\n }\n if (hasOwn(raw, 'previewStrokeDashArray')) {\n next.previewStrokeDashArray = normalizeMosaicDashArray(raw.previewStrokeDashArray, fallback.previewStrokeDashArray);\n }\n if (hasOwn(raw, 'previewFill')) {\n next.previewFill =\n typeof raw.previewFill === 'string' ? raw.previewFill : fallback.previewFill;\n }\n if (hasOwn(raw, 'outputFileType')) {\n next.outputFileType = normalizeMosaicOutputFileType(raw.outputFileType, fallback.outputFileType);\n }\n if (hasOwn(raw, 'outputQuality')) {\n next.outputQuality = normalizeMosaicOutputQuality(raw.outputQuality, fallback.outputQuality);\n }\n return next;\n}\nexport function getInvalidMosaicConfigFields(input) {\n const raw = isConfigObject(input) ? input : {};\n const invalid = [];\n if (hasOwn(raw, 'brushSize') &&\n !(typeof raw.brushSize === 'number' && Number.isFinite(raw.brushSize) && raw.brushSize > 0)) {\n invalid.push('brushSize');\n }\n if (hasOwn(raw, 'blockSize') &&\n !(typeof raw.blockSize === 'number' && Number.isFinite(raw.blockSize) && raw.blockSize > 0)) {\n invalid.push('blockSize');\n }\n if (hasOwn(raw, 'previewStroke') && typeof raw.previewStroke !== 'string') {\n invalid.push('previewStroke');\n }\n if (hasOwn(raw, 'previewStrokeWidth') &&\n !(typeof raw.previewStrokeWidth === 'number' &&\n Number.isFinite(raw.previewStrokeWidth) &&\n raw.previewStrokeWidth >= 0)) {\n invalid.push('previewStrokeWidth');\n }\n if (hasOwn(raw, 'previewStrokeDashArray')) {\n const value = raw.previewStrokeDashArray;\n const valid = value === null ||\n (Array.isArray(value) &&\n value.every((entry) => typeof entry === 'number' && Number.isFinite(entry) && entry >= 0));\n if (!valid)\n invalid.push('previewStrokeDashArray');\n }\n if (hasOwn(raw, 'previewFill') && typeof raw.previewFill !== 'string') {\n invalid.push('previewFill');\n }\n if (hasOwn(raw, 'outputFileType')) {\n const value = raw.outputFileType;\n const valid = value === 'source' || (typeof value === 'string' && tryNormalizeImageFormat(value));\n if (!valid)\n invalid.push('outputFileType');\n }\n if (hasOwn(raw, 'outputQuality') &&\n raw.outputQuality !== undefined &&\n raw.outputQuality !== null &&\n !(typeof raw.outputQuality === 'number' && Number.isFinite(raw.outputQuality))) {\n invalid.push('outputQuality');\n }\n return invalid;\n}\nexport function areResolvedMosaicConfigsEqual(left, right) {\n const leftDash = left.previewStrokeDashArray;\n const rightDash = right.previewStrokeDashArray;\n const dashEqual = leftDash === rightDash ||\n (Array.isArray(leftDash) &&\n Array.isArray(rightDash) &&\n leftDash.length === rightDash.length &&\n leftDash.every((value, index) => value === rightDash[index]));\n return (left.brushSize === right.brushSize &&\n left.blockSize === right.blockSize &&\n left.previewStroke === right.previewStroke &&\n left.previewStrokeWidth === right.previewStrokeWidth &&\n dashEqual &&\n left.previewFill === right.previewFill &&\n left.outputFileType === right.outputFileType &&\n left.outputQuality === right.outputQuality);\n}\nexport function resolveOptions(input) {\n var _a, _b, _c, _d;\n const raw = input !== null && input !== void 0 ? input : {};\n const resolved = { ...DEFAULT_OPTIONS };\n for (const key of Object.keys(raw)) {\n if (!KNOWN_TOP_LEVEL_KEYS.has(key))\n continue;\n if (key === 'label' || key === 'crop' || key === 'defaultMosaicConfig')\n continue;\n if (key === 'onImageLoadStart' ||\n key === 'onImageLoaded' ||\n key === 'onImageCleared' ||\n key === 'onImageChanged' ||\n key === 'onBusyChange' ||\n key === 'onEditorDisposed' ||\n key === 'onMasksChanged' ||\n key === 'onSelectionChange' ||\n key === 'onError' ||\n key === 'onWarning') {\n continue;\n }\n const value = raw[key];\n if (value === undefined)\n continue;\n if (key === 'downsampleQuality') {\n resolved.downsampleQuality = normalizeQualityOption(value);\n continue;\n }\n if (key === 'maxExportPixels') {\n resolved.maxExportPixels = normalizeMaxExportPixels(value);\n continue;\n }\n if (key === 'exportAreaByDefault') {\n resolved.exportAreaByDefault = normalizeExportArea(value);\n continue;\n }\n if (key === 'defaultLayoutMode') {\n const layoutMode = normalizeLayoutMode(value);\n resolved.defaultLayoutMode = layoutMode;\n resolved.layoutMode = layoutMode;\n continue;\n }\n if (key === 'canvasWidth') {\n resolved.canvasWidth = normalizePositiveInteger(value, DEFAULT_OPTIONS.canvasWidth);\n continue;\n }\n if (key === 'canvasHeight') {\n resolved.canvasHeight = normalizePositiveInteger(value, DEFAULT_OPTIONS.canvasHeight);\n continue;\n }\n if (key === 'animationDuration') {\n resolved.animationDuration = normalizeNonNegativeFiniteNumber(value, DEFAULT_OPTIONS.animationDuration);\n continue;\n }\n if (key === 'minScale') {\n resolved.minScale = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.minScale);\n continue;\n }\n if (key === 'maxScale') {\n resolved.maxScale = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.maxScale);\n continue;\n }\n if (key === 'scaleStep') {\n resolved.scaleStep = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.scaleStep);\n continue;\n }\n if (key === 'rotationStep') {\n resolved.rotationStep = normalizeFiniteNumber(value, DEFAULT_OPTIONS.rotationStep);\n continue;\n }\n if (key === 'downsampleMaxWidth') {\n resolved.downsampleMaxWidth = normalizePositiveInteger(value, DEFAULT_OPTIONS.downsampleMaxWidth);\n continue;\n }\n if (key === 'downsampleMaxHeight') {\n resolved.downsampleMaxHeight = normalizePositiveInteger(value, DEFAULT_OPTIONS.downsampleMaxHeight);\n continue;\n }\n if (key === 'imageLoadTimeoutMs') {\n resolved.imageLoadTimeoutMs = normalizePositiveInteger(value, DEFAULT_OPTIONS.imageLoadTimeoutMs);\n continue;\n }\n if (key === 'exportMultiplier') {\n resolved.exportMultiplier = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.exportMultiplier);\n continue;\n }\n if (key === 'defaultMaskWidth') {\n resolved.defaultMaskWidth = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.defaultMaskWidth);\n continue;\n }\n if (key === 'defaultMaskHeight') {\n resolved.defaultMaskHeight = normalizePositiveFiniteNumber(value, DEFAULT_OPTIONS.defaultMaskHeight);\n continue;\n }\n if (key === 'defaultMaskConfig') {\n resolved.defaultMaskConfig = normalizeDefaultMaskConfig(value);\n continue;\n }\n if (key === 'maskLabelOffset') {\n resolved.maskLabelOffset = normalizeNonNegativeFiniteNumber(value, DEFAULT_OPTIONS.maskLabelOffset);\n continue;\n }\n resolved[key] = value;\n }\n resolved.onImageLoadStart = normalizeCallback(raw.onImageLoadStart);\n resolved.onImageLoaded = normalizeCallback(raw.onImageLoaded);\n resolved.onImageCleared = normalizeCallback(raw.onImageCleared);\n resolved.onImageChanged = normalizeCallback(raw.onImageChanged);\n resolved.onBusyChange = normalizeCallback(raw.onBusyChange);\n resolved.onEditorDisposed = normalizeCallback(raw.onEditorDisposed);\n resolved.onMasksChanged = normalizeCallback(raw.onMasksChanged);\n resolved.onSelectionChange = normalizeCallback(raw.onSelectionChange);\n resolved.onError = normalizeCallback(raw.onError);\n resolved.onWarning = normalizeCallback(raw.onWarning);\n resolved.maxHistorySize = normalizeMaxHistorySize(resolved.maxHistorySize);\n resolved.maxExportPixels = normalizeMaxExportPixels(resolved.maxExportPixels);\n if (resolved.minScale > resolved.maxScale) {\n const minScale = resolved.minScale;\n resolved.minScale = resolved.maxScale;\n resolved.maxScale = minScale;\n }\n const userLabel = raw.label && typeof raw.label === 'object' ? raw.label : {};\n const mergedTextOptions = {\n ...DEFAULT_LABEL_TEXT_OPTIONS,\n ...(userLabel.textOptions && typeof userLabel.textOptions === 'object'\n ? userLabel.textOptions\n : {}),\n };\n const label = {\n getText: typeof userLabel.getText === 'function' ? userLabel.getText : DEFAULT_LABEL.getText,\n textOptions: mergedTextOptions,\n };\n if (typeof userLabel.create === 'function') {\n label.create = userLabel.create;\n }\n Object.freeze(label.textOptions);\n Object.freeze(label);\n const userCrop = raw.crop && typeof raw.crop === 'object' ? raw.crop : {};\n const crop = {\n minWidth: normalizePositiveFiniteNumber(userCrop.minWidth, DEFAULT_CROP.minWidth),\n minHeight: normalizePositiveFiniteNumber(userCrop.minHeight, DEFAULT_CROP.minHeight),\n padding: normalizeNonNegativeFiniteNumber(userCrop.padding, DEFAULT_CROP.padding),\n hideMasksDuringCrop: (_a = userCrop.hideMasksDuringCrop) !== null && _a !== void 0 ? _a : DEFAULT_CROP.hideMasksDuringCrop,\n preserveMasksAfterCrop: (_b = userCrop.preserveMasksAfterCrop) !== null && _b !== void 0 ? _b : DEFAULT_CROP.preserveMasksAfterCrop,\n allowRotationOfCropRect: (_c = userCrop.allowRotationOfCropRect) !== null && _c !== void 0 ? _c : DEFAULT_CROP.allowRotationOfCropRect,\n exportFileType: (_d = userCrop.exportFileType) !== null && _d !== void 0 ? _d : DEFAULT_CROP.exportFileType,\n exportQuality: normalizeOptionalQuality(userCrop.exportQuality),\n };\n Object.freeze(crop);\n const defaultMosaicConfig = normalizeMosaicConfig(raw.defaultMosaicConfig, DEFAULT_MOSAIC_CONFIG);\n if (defaultMosaicConfig.previewStrokeDashArray) {\n Object.freeze(defaultMosaicConfig.previewStrokeDashArray);\n }\n Object.freeze(defaultMosaicConfig);\n return Object.freeze({\n ...resolved,\n label,\n crop,\n defaultMosaicConfig,\n });\n}\n//# sourceMappingURL=default-options.js.map","export class OperationGuard {\n constructor() {\n Object.defineProperty(this, \"isAnimationActive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"isDisposedFlag\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"isLoadingActive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"currentOperationName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"currentOperationToken\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"animationAborters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Set()\n });\n }\n isAnimating() {\n return this.isAnimationActive;\n }\n isDisposed() {\n return this.isDisposedFlag;\n }\n isLoading() {\n return this.isLoadingActive;\n }\n activeOperationName() {\n return this.currentOperationName;\n }\n isBusy() {\n return (this.isAnimationActive || this.isLoadingActive || this.currentOperationToken !== null);\n }\n beginAnimation() {\n this.isAnimationActive = true;\n }\n endAnimation() {\n this.isAnimationActive = false;\n }\n markDisposed() {\n this.isDisposedFlag = true;\n this.isAnimationActive = false;\n this.isLoadingActive = false;\n this.currentOperationName = null;\n this.currentOperationToken = null;\n for (const abort of this.animationAborters) {\n try {\n abort();\n }\n catch {\n }\n }\n this.animationAborters.clear();\n }\n registerAnimationAborter(abort) {\n if (this.isDisposedFlag) {\n try {\n abort();\n }\n catch {\n }\n return () => undefined;\n }\n this.animationAborters.add(abort);\n return () => {\n this.animationAborters.delete(abort);\n };\n }\n beginLoading() {\n this.isLoadingActive = true;\n }\n endLoading() {\n this.isLoadingActive = false;\n }\n beginBusyOperation(operationName) {\n const token = Symbol(operationName);\n this.currentOperationName = operationName;\n this.currentOperationToken = token;\n return token;\n }\n endBusyOperation(token) {\n if (token && token === this.currentOperationToken) {\n this.currentOperationName = null;\n this.currentOperationToken = null;\n }\n }\n isOwnOperation(token) {\n return !!token && token === this.currentOperationToken;\n }\n async runAnimation(animationTask) {\n this.beginAnimation();\n try {\n return await animationTask();\n }\n finally {\n this.endAnimation();\n }\n }\n assertNotAnimating(operationLabel) {\n if (this.isAnimationActive) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an animation is in progress.`);\n }\n }\n assertIdleForOperation(operationLabel, token) {\n var _a;\n if (this.isDisposedFlag) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" after dispose.`);\n }\n const ownOperation = this.isOwnOperation(token);\n if (this.isAnimationActive) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an animation is in progress.`);\n }\n if (this.isLoadingActive && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an image is loading.`);\n }\n if (this.currentOperationToken && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while ` +\n `${(_a = this.currentOperationName) !== null && _a !== void 0 ? _a : 'another operation'} is running.`);\n }\n }\n assertCanQueueAnimation(operationLabel, token) {\n var _a;\n if (this.isDisposedFlag) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" after dispose.`);\n }\n const ownOperation = this.isOwnOperation(token);\n if (this.isLoadingActive && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while an image is loading.`);\n }\n if (this.currentOperationToken && !ownOperation) {\n throw new Error(`[ImageEditor] Cannot run \"${operationLabel}\" while ` +\n `${(_a = this.currentOperationName) !== null && _a !== void 0 ? _a : 'another operation'} is running.`);\n }\n }\n}\n//# sourceMappingURL=operation-guard.js.map","export function isMaskObject(object) {\n return 'maskId' in object && typeof object.maskId === 'number';\n}\n//# sourceMappingURL=public-types.js.map","import { isMaskObject } from './public-types.js';\nexport const SNAPSHOT_CUSTOM_KEYS = [\n 'maskId',\n 'maskUid',\n 'maskName',\n 'isCropRect',\n 'maskLabel',\n 'originalAlpha',\n 'originalStroke',\n 'originalStrokeWidth',\n 'hasControls',\n 'selectable',\n 'strokeUniform',\n 'lockRotation',\n 'transparentCorners',\n 'borderColor',\n 'cornerColor',\n 'cornerSize',\n 'isMosaicPreview',\n];\nfunction copySnapshotCustomPropsFromCanvas(canvasObjects, jsonObjects) {\n if (!Array.isArray(jsonObjects))\n return;\n for (let index = 0; index < jsonObjects.length; index += 1) {\n const liveObject = canvasObjects[index];\n const jsonObject = jsonObjects[index];\n if (!liveObject || !jsonObject)\n continue;\n if (typeof liveObject.maskId === 'number')\n jsonObject.maskId = liveObject.maskId;\n if (typeof liveObject.maskUid === 'string')\n jsonObject.maskUid = liveObject.maskUid;\n if (typeof liveObject.maskName === 'string')\n jsonObject.maskName = liveObject.maskName;\n if (typeof liveObject.originalAlpha === 'number') {\n jsonObject.originalAlpha = liveObject.originalAlpha;\n }\n if ('originalStroke' in liveObject)\n jsonObject.originalStroke = liveObject.originalStroke;\n if (typeof liveObject.originalStrokeWidth === 'number') {\n jsonObject.originalStrokeWidth = liveObject.originalStrokeWidth;\n }\n if (typeof liveObject.hasControls === 'boolean') {\n jsonObject.hasControls = liveObject.hasControls;\n }\n if (typeof liveObject.selectable === 'boolean') {\n jsonObject.selectable = liveObject.selectable;\n }\n if (typeof liveObject.strokeUniform === 'boolean') {\n jsonObject.strokeUniform = liveObject.strokeUniform;\n }\n if (typeof liveObject.lockRotation === 'boolean') {\n jsonObject.lockRotation = liveObject.lockRotation;\n }\n if (typeof liveObject.transparentCorners === 'boolean') {\n jsonObject.transparentCorners = liveObject.transparentCorners;\n }\n if (typeof liveObject.borderColor === 'string') {\n jsonObject.borderColor = liveObject.borderColor;\n }\n if (typeof liveObject.cornerColor === 'string') {\n jsonObject.cornerColor = liveObject.cornerColor;\n }\n if (typeof liveObject.cornerSize === 'number') {\n jsonObject.cornerSize = liveObject.cornerSize;\n }\n if (liveObject.isCropRect === true)\n jsonObject.isCropRect = true;\n if (liveObject.maskLabel === true)\n jsonObject.maskLabel = true;\n if (liveObject.isMosaicPreview === true)\n jsonObject.isMosaicPreview = true;\n }\n}\nfunction isActiveSelectionObject(object) {\n if (!object)\n return false;\n const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n if (type === 'activeselection')\n return true;\n const isType = object.isType;\n return (typeof isType === 'function' &&\n (isType.call(object, 'ActiveSelection') || isType.call(object, 'activeSelection')));\n}\nexport function saveState(input) {\n var _a, _b, _c;\n const { canvas, currentScale, currentRotation, baseImageScale } = input;\n const activeObject = (_b = (_a = canvas).getActiveObject) === null || _b === void 0 ? void 0 : _b.call(_a);\n const activeMaskId = activeObject && isMaskObject(activeObject)\n ? activeObject.maskId\n : typeof input.activeMaskId === 'number'\n ? input.activeMaskId\n : null;\n if (isActiveSelectionObject(activeObject)) {\n canvas.discardActiveObject();\n }\n const jsonObj = canvas.toJSON(SNAPSHOT_CUSTOM_KEYS);\n copySnapshotCustomPropsFromCanvas(canvas.getObjects(), jsonObj.objects);\n if (Array.isArray(jsonObj.objects)) {\n jsonObj.objects = jsonObj.objects.filter((o) => o.isCropRect !== true && o.maskLabel !== true && o.isMosaicPreview !== true);\n }\n jsonObj._editorState = {\n currentScale,\n currentRotation,\n baseImageScale,\n currentImageMimeType: (_c = input.currentImageMimeType) !== null && _c !== void 0 ? _c : null,\n };\n if (activeMaskId !== null)\n jsonObj._editorState.activeMaskId = activeMaskId;\n return JSON.stringify(jsonObj);\n}\nexport async function loadFromState(input) {\n var _a, _b;\n const { canvas, jsonString: snapshotInput, setCanvasSize } = input;\n const jsonString = typeof snapshotInput === 'string' ? snapshotInput : JSON.stringify(snapshotInput);\n const json = JSON.parse(jsonString);\n if (typeof json.width === 'number' &&\n json.width > 0 &&\n typeof json.height === 'number' &&\n json.height > 0) {\n setCanvasSize(json.width, json.height);\n }\n await canvas.loadFromJSON(json);\n const objects = canvas.getObjects();\n restoreMaskPropsFromJson(objects, (_a = json.objects) !== null && _a !== void 0 ? _a : []);\n const editorState = json._editorState && typeof json._editorState === 'object'\n ? {\n currentScale: typeof json._editorState.currentScale === 'number'\n ? json._editorState.currentScale\n : 1,\n currentRotation: typeof json._editorState.currentRotation === 'number'\n ? json._editorState.currentRotation\n : 0,\n baseImageScale: typeof json._editorState.baseImageScale === 'number'\n ? json._editorState.baseImageScale\n : 1,\n }\n : null;\n if (editorState && json._editorState && typeof json._editorState.activeMaskId === 'number') {\n editorState.activeMaskId = json._editorState.activeMaskId;\n }\n if (editorState && json._editorState && 'currentImageMimeType' in json._editorState) {\n const mimeType = json._editorState.currentImageMimeType;\n editorState.currentImageMimeType =\n mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n ? mimeType\n : null;\n }\n const maxMaskId = objects\n .filter(isMaskObject)\n .reduce((max, maskObject) => Math.max(max, maskObject.maskId), 0);\n const originalImage = ((_b = objects.find(isOriginalImageObject)) !== null && _b !== void 0 ? _b : null);\n return {\n editorState,\n maxMaskId,\n originalImage,\n objects,\n jsonString,\n };\n}\nfunction isOriginalImageObject(object) {\n if (isMaskObject(object))\n return false;\n const type = typeof object.type === 'string' ? object.type.toLowerCase() : '';\n if (type === 'image')\n return true;\n const isType = object.isType;\n return typeof isType === 'function' && isType.call(object, 'image');\n}\nfunction restoreMaskPropsFromJson(canvasObjs, jsonObjs) {\n var _a, _b, _c, _d, _e;\n const consumedCanvasIndexes = new Set();\n for (const jObj of jsonObjs) {\n if (typeof jObj.maskId !== 'number')\n continue;\n const jType = String((_a = jObj.type) !== null && _a !== void 0 ? _a : '');\n const jLeft = Number((_b = jObj.left) !== null && _b !== void 0 ? _b : 0);\n const jTop = Number((_c = jObj.top) !== null && _c !== void 0 ? _c : 0);\n const jUid = typeof jObj.maskUid === 'string' ? jObj.maskUid : null;\n let matchIndex = -1;\n if (jUid) {\n matchIndex = canvasObjs.findIndex((o, index) => {\n if (consumedCanvasIndexes.has(index))\n return false;\n return o.maskUid === jUid;\n });\n }\n if (matchIndex < 0) {\n matchIndex = canvasObjs.findIndex((o, index) => {\n var _a, _b;\n if (consumedCanvasIndexes.has(index))\n return false;\n if (jType && o.type !== jType)\n return false;\n return Math.abs(((_a = o.left) !== null && _a !== void 0 ? _a : 0) - jLeft) < 0.5 && Math.abs(((_b = o.top) !== null && _b !== void 0 ? _b : 0) - jTop) < 0.5;\n });\n }\n if (matchIndex < 0)\n continue;\n consumedCanvasIndexes.add(matchIndex);\n const match = canvasObjs[matchIndex];\n const maskObject = match;\n maskObject.maskId = jObj.maskId;\n if (typeof jObj.maskUid === 'string') {\n maskObject.maskUid = jObj.maskUid;\n }\n maskObject.maskName = String((_d = jObj.maskName) !== null && _d !== void 0 ? _d : '');\n maskObject.originalAlpha =\n typeof jObj.originalAlpha === 'number'\n ? jObj.originalAlpha\n : ((_e = maskObject.opacity) !== null && _e !== void 0 ? _e : 0.5);\n if ('originalStroke' in jObj) {\n maskObject.originalStroke = jObj.originalStroke;\n }\n if (typeof jObj.originalStrokeWidth === 'number') {\n maskObject.originalStrokeWidth = jObj.originalStrokeWidth;\n }\n if (typeof jObj.hasControls === 'boolean') {\n maskObject.hasControls = jObj.hasControls;\n }\n if (typeof jObj.selectable === 'boolean') {\n maskObject.selectable = jObj.selectable;\n }\n if (typeof jObj.strokeUniform === 'boolean') {\n maskObject.strokeUniform = jObj.strokeUniform;\n }\n if (typeof jObj.lockRotation === 'boolean') {\n maskObject.lockRotation = jObj.lockRotation;\n }\n if (typeof jObj.transparentCorners === 'boolean') {\n maskObject.transparentCorners = jObj.transparentCorners;\n }\n if (typeof jObj.borderColor === 'string') {\n maskObject.borderColor = jObj.borderColor;\n }\n if (typeof jObj.cornerColor === 'string') {\n maskObject.cornerColor = jObj.cornerColor;\n }\n if (typeof jObj.cornerSize === 'number') {\n maskObject.cornerSize = jObj.cornerSize;\n }\n }\n jsonObjs.forEach((jObj, index) => {\n if (jObj.maskLabel !== true)\n return;\n const canvasObj = canvasObjs[index];\n if (canvasObj) {\n canvasObj.maskLabel = true;\n }\n });\n}\n//# sourceMappingURL=state-serializer.js.map","export class Command {\n constructor(execute, undo) {\n Object.defineProperty(this, \"execute\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"undo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.execute = execute;\n this.undo = undo;\n }\n}\nexport class HistoryManager {\n constructor(maxSize = 50) {\n Object.defineProperty(this, \"history\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"currentIndex\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -1\n });\n Object.defineProperty(this, \"isProcessing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = maxSize;\n }\n execute(command) {\n void command.execute();\n this.pushAndTrim(command);\n }\n push(command) {\n this.pushAndTrim(command);\n }\n canUndo() {\n return this.currentIndex >= 0;\n }\n canRedo() {\n return this.currentIndex < this.history.length - 1;\n }\n async undo() {\n if (this.isProcessing || !this.canUndo())\n return;\n this.isProcessing = true;\n try {\n const cmd = this.history[this.currentIndex];\n if (!cmd)\n return;\n await cmd.undo();\n this.currentIndex--;\n }\n finally {\n this.isProcessing = false;\n }\n }\n async redo() {\n if (this.isProcessing || !this.canRedo())\n return;\n this.isProcessing = true;\n try {\n const cmd = this.history[this.currentIndex + 1];\n if (!cmd)\n return;\n await cmd.execute();\n this.currentIndex++;\n }\n finally {\n this.isProcessing = false;\n }\n }\n pushAndTrim(command) {\n if (this.currentIndex < this.history.length - 1) {\n this.history = this.history.slice(0, this.currentIndex + 1);\n }\n this.history.push(command);\n if (this.history.length > this.maxSize) {\n this.history.shift();\n }\n else {\n this.currentIndex++;\n }\n }\n}\n//# sourceMappingURL=history-manager.js.map","function looksLikeFabricModule(value) {\n if (value === null || typeof value !== 'object')\n return false;\n const candidate = value.Canvas;\n return typeof candidate === 'function';\n}\nfunction readGlobalFabric(globalScope) {\n return globalScope.fabric;\n}\nexport function detectFabric(fabricOrOptions, maybeOptions, globalScope = globalThis) {\n var _a;\n if (looksLikeFabricModule(fabricOrOptions)) {\n return {\n fabric: fabricOrOptions,\n isFabricLoaded: true,\n options: maybeOptions !== null && maybeOptions !== void 0 ? maybeOptions : {},\n };\n }\n const options = (_a = fabricOrOptions) !== null && _a !== void 0 ? _a : {};\n const globalFabric = readGlobalFabric(globalScope);\n if (looksLikeFabricModule(globalFabric)) {\n return {\n fabric: globalFabric,\n isFabricLoaded: true,\n options,\n };\n }\n console.error('[ImageEditor] fabric.js v7 is not available. ' +\n 'Pass it as the first constructor argument (ESM) or ' +\n 'load it as a global <script> before instantiation.');\n return {\n fabric: null,\n isFabricLoaded: false,\n options,\n };\n}\n//# sourceMappingURL=fabric-adapter.js.map","function fixPrototype(self, ctor) {\n Object.setPrototypeOf(self, ctor.prototype);\n}\nexport class FabricUnavailableError extends Error {\n constructor(message = 'Fabric.js v7 is not available. Pass the Fabric module explicitly to the constructor or expose it as `globalThis.fabric`.') {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'FabricUnavailableError'\n });\n fixPrototype(this, FabricUnavailableError);\n }\n}\nexport class ImageDecodeError extends Error {\n constructor(message = 'Failed to decode image data URL.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ImageDecodeError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, ImageDecodeError);\n }\n}\nexport class ImageLoadTimeoutError extends Error {\n constructor(label, elapsedMs) {\n super(`Image load timed out after ${elapsedMs}ms during ${label}`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ImageLoadTimeoutError'\n });\n Object.defineProperty(this, \"label\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"elapsedMs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.label = label;\n this.elapsedMs = elapsedMs;\n fixPrototype(this, ImageLoadTimeoutError);\n }\n}\nexport class DownsampleError extends Error {\n constructor(message = 'Failed to obtain a 2D context for downsampling.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'DownsampleError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, DownsampleError);\n }\n}\nexport class MergeMasksError extends Error {\n constructor(message = 'Failed to merge masks into the image.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'MergeMasksError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, MergeMasksError);\n }\n}\nexport class CropApplyError extends Error {\n constructor(message = 'Failed to apply crop to the image.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'CropApplyError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, CropApplyError);\n }\n}\nexport class ExportNotReadyError extends Error {\n constructor(operation = 'exportImageFile') {\n super(`Cannot ${operation}: no image is loaded on the canvas.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ExportNotReadyError'\n });\n Object.defineProperty(this, \"operation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.operation = operation;\n fixPrototype(this, ExportNotReadyError);\n }\n}\nexport class ExportError extends Error {\n constructor(message = 'Failed to export image.', originalError = null) {\n super(message);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ExportError'\n });\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n fixPrototype(this, ExportError);\n }\n}\n//# sourceMappingURL=errors.js.map","import { isMaskObject } from '../core/public-types.js';\nconst SELECTED_STROKE = '#ff0000';\nconst SELECTED_STROKE_WIDTH = 1;\nconst HOVER_STROKE = '#ff5500';\nconst HOVER_STROKE_WIDTH = 2;\nconst HOVER_OPACITY_BUMP = 0.2;\nconst DEFAULT_STROKE_FALLBACK = '#ccc';\nconst DEFAULT_STROKE_WIDTH_FALLBACK = 1;\nconst DEFAULT_ALPHA_FALLBACK = 0.5;\nexport function getMaskNormalStyle(mask) {\n var _a;\n const strokeWidth = Number(mask.originalStrokeWidth);\n const opacity = Number(mask.originalAlpha);\n return {\n stroke: (_a = mask.originalStroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK,\n strokeWidth: Number.isFinite(strokeWidth) ? strokeWidth : DEFAULT_STROKE_WIDTH_FALLBACK,\n opacity: Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK,\n };\n}\nexport function getMaskHoverStyle(mask) {\n const opacity = Number(mask.originalAlpha);\n const baseAlpha = Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK;\n return {\n stroke: HOVER_STROKE,\n strokeWidth: HOVER_STROKE_WIDTH,\n opacity: Math.min(baseAlpha + HOVER_OPACITY_BUMP, 1),\n };\n}\nexport function applyMaskSelectedStyle(mask) {\n mask.set({ stroke: SELECTED_STROKE, strokeWidth: SELECTED_STROKE_WIDTH });\n}\nexport function applyMaskUnselectedStyle(mask) {\n var _a;\n const strokeWidth = Number(mask.originalStrokeWidth);\n mask.set({\n stroke: (_a = mask.originalStroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK,\n strokeWidth: Number.isFinite(strokeWidth) ? strokeWidth : DEFAULT_STROKE_WIDTH_FALLBACK,\n });\n}\nexport function attachMaskHoverHandlers(mask) {\n const tagged = mask;\n const mouseover = () => {\n var _a;\n tagged.set(getMaskHoverStyle(tagged));\n (_a = tagged.canvas) === null || _a === void 0 ? void 0 : _a.requestRenderAll();\n };\n const mouseout = () => {\n var _a;\n tagged.set(getMaskNormalStyle(tagged));\n (_a = tagged.canvas) === null || _a === void 0 ? void 0 : _a.requestRenderAll();\n };\n tagged.on('mouseover', mouseover);\n tagged.on('mouseout', mouseout);\n tagged.imageEditorMaskHandlers = { mouseover, mouseout };\n}\nexport function reattachMaskHoverHandlers(mask) {\n var _a;\n const tagged = mask;\n if (tagged.imageEditorMaskHandlers) {\n try {\n tagged.off('mouseover', tagged.imageEditorMaskHandlers.mouseover);\n tagged.off('mouseout', tagged.imageEditorMaskHandlers.mouseout);\n }\n catch {\n }\n delete tagged.imageEditorMaskHandlers;\n }\n const patch = {};\n if (!Number.isFinite(Number(tagged.originalAlpha))) {\n const opacity = Number(tagged.opacity);\n patch.originalAlpha = Number.isFinite(opacity) ? opacity : DEFAULT_ALPHA_FALLBACK;\n }\n if (tagged.originalStroke == null) {\n patch.originalStroke = (_a = tagged.stroke) !== null && _a !== void 0 ? _a : DEFAULT_STROKE_FALLBACK;\n }\n if (!Number.isFinite(Number(tagged.originalStrokeWidth))) {\n const sw = Number(tagged.strokeWidth);\n patch.originalStrokeWidth = Number.isFinite(sw) ? sw : DEFAULT_STROKE_WIDTH_FALLBACK;\n }\n if (Object.keys(patch).length > 0)\n tagged.set(patch);\n attachMaskHoverHandlers(tagged);\n}\nexport function detachMaskHoverHandlers(mask) {\n const tagged = mask;\n if (!tagged.imageEditorMaskHandlers)\n return;\n try {\n tagged.off('mouseover', tagged.imageEditorMaskHandlers.mouseover);\n tagged.off('mouseout', tagged.imageEditorMaskHandlers.mouseout);\n }\n catch {\n }\n delete tagged.imageEditorMaskHandlers;\n}\nexport function captureMaskStyleBackup(mask) {\n var _a, _b, _c, _d, _e, _f, _g;\n return {\n object: mask,\n opacity: (_a = mask.opacity) !== null && _a !== void 0 ? _a : 1,\n fill: ((_b = mask.fill) !== null && _b !== void 0 ? _b : null),\n strokeWidth: (_c = mask.strokeWidth) !== null && _c !== void 0 ? _c : 0,\n stroke: ((_d = mask.stroke) !== null && _d !== void 0 ? _d : null),\n selectable: (_e = mask.selectable) !== null && _e !== void 0 ? _e : true,\n evented: (_f = mask.evented) !== null && _f !== void 0 ? _f : true,\n lockRotation: (_g = mask.lockRotation) !== null && _g !== void 0 ? _g : false,\n };\n}\nexport function restoreMaskStyleBackup(backup) {\n try {\n backup.object.set({\n opacity: backup.opacity,\n fill: backup.fill,\n strokeWidth: backup.strokeWidth,\n stroke: backup.stroke,\n selectable: backup.selectable,\n evented: backup.evented,\n lockRotation: backup.lockRotation,\n });\n if (typeof backup.object.setCoords === 'function') {\n backup.object.setCoords();\n }\n }\n catch {\n }\n}\nexport function withNormalizedMaskStyles(context, callback) {\n if (!context.canvas)\n return callback();\n const masks = context.canvas.getObjects().filter(isMaskObject);\n const patches = [];\n try {\n for (const mask of masks) {\n const normal = getMaskNormalStyle(mask);\n const snapshot = {};\n const stylePatch = {};\n Object.keys(normal).forEach((key) => {\n const live = mask[key];\n if (live !== normal[key]) {\n snapshot[key] = live;\n stylePatch[key] = normal[key];\n }\n });\n if (Object.keys(stylePatch).length === 0)\n continue;\n patches.push({ object: mask, snapshot });\n mask.set(stylePatch);\n }\n return callback();\n }\n finally {\n for (const patch of patches) {\n try {\n patch.object.set(patch.snapshot);\n }\n catch {\n }\n }\n }\n}\nexport async function withMaskStyleBackup(context, mutator, callback) {\n if (!context.canvas)\n return await callback();\n const masks = context.canvas.getObjects().filter(isMaskObject);\n const backups = masks.map(captureMaskStyleBackup);\n try {\n masks.forEach((mask, index) => mutator(mask, index));\n return await callback();\n }\n finally {\n for (const backup of backups)\n restoreMaskStyleBackup(backup);\n }\n}\nexport function applyCropHideMaskStyle(mask) {\n try {\n mask.set({ opacity: 0, evented: false, selectable: false });\n }\n catch {\n }\n}\n//# sourceMappingURL=mask-style.js.map","export function hasMeaningfulCanvasRegion(rect, canvasWidth, canvasHeight) {\n const left = Number(rect.left);\n const top = Number(rect.top);\n const width = Number(rect.width);\n const height = Number(rect.height);\n if (!Number.isFinite(left) ||\n !Number.isFinite(top) ||\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0) {\n return false;\n }\n const right = left + width;\n const bottom = top + height;\n if (!Number.isFinite(right) || !Number.isFinite(bottom))\n return false;\n const safeCanvasWidth = Number(canvasWidth);\n const safeCanvasHeight = Number(canvasHeight);\n if (!Number.isFinite(safeCanvasWidth) ||\n !Number.isFinite(safeCanvasHeight) ||\n safeCanvasWidth <= 0 ||\n safeCanvasHeight <= 0) {\n return true;\n }\n const overlapWidth = Math.min(right, safeCanvasWidth) - Math.max(left, 0);\n const overlapHeight = Math.min(bottom, safeCanvasHeight) - Math.max(top, 0);\n return overlapWidth > 0 && overlapHeight > 0;\n}\nexport function getClampedCanvasRegion(rect, canvasWidth, canvasHeight, options = {}) {\n const safeLeft = Number.isFinite(rect.left) ? rect.left : 0;\n const safeTop = Number.isFinite(rect.top) ? rect.top : 0;\n const safeWidth = Math.max(0, Number.isFinite(rect.width) ? rect.width : 0);\n const safeHeight = Math.max(0, Number.isFinite(rect.height) ? rect.height : 0);\n const includePartialPixels = options.includePartialPixels !== false;\n const roundEnd = includePartialPixels ? Math.ceil : Math.floor;\n const hasCanvasWidth = Number.isFinite(canvasWidth);\n const hasCanvasHeight = Number.isFinite(canvasHeight);\n const safeCanvasWidth = hasCanvasWidth\n ? Math.max(1, Math.round(Number(canvasWidth)))\n : Number.POSITIVE_INFINITY;\n const safeCanvasHeight = hasCanvasHeight\n ? Math.max(1, Math.round(Number(canvasHeight)))\n : Number.POSITIVE_INFINITY;\n const left = Math.min(safeCanvasWidth - 1, Math.max(0, Math.floor(safeLeft)));\n const top = Math.min(safeCanvasHeight - 1, Math.max(0, Math.floor(safeTop)));\n const right = Math.min(safeCanvasWidth, Math.max(left + 1, roundEnd(safeLeft + safeWidth)));\n const bottom = Math.min(safeCanvasHeight, Math.max(top + 1, roundEnd(safeTop + safeHeight)));\n return {\n left,\n top,\n width: Math.max(1, right - left),\n height: Math.max(1, bottom - top),\n };\n}\nexport function floorRegion(rect) {\n return getClampedCanvasRegion(rect, undefined, undefined, { includePartialPixels: false });\n}\nexport function hasFractionalCanvasEdge(value) {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue))\n return false;\n return Math.abs(numericValue - Math.round(numericValue)) > 0.01;\n}\nexport function getPartialExportEdges(bounds, angle = 0) {\n if (!bounds)\n return null;\n const normalizedAngle = Math.abs((Number(angle) || 0) % 90);\n const isAxisAligned = normalizedAngle < 0.01 || Math.abs(normalizedAngle - 90) < 0.01;\n if (!isAxisAligned)\n return null;\n const left = Number(bounds.left) || 0;\n const top = Number(bounds.top) || 0;\n return {\n left: hasFractionalCanvasEdge(left),\n top: hasFractionalCanvasEdge(top),\n right: hasFractionalCanvasEdge(left + (Number(bounds.width) || 0)),\n bottom: hasFractionalCanvasEdge(top + (Number(bounds.height) || 0)),\n };\n}\nexport function getObjectBBox(object) {\n object.setCoords();\n const boundingRect = object.getBoundingRect();\n return {\n left: boundingRect.left,\n top: boundingRect.top,\n width: boundingRect.width,\n height: boundingRect.height,\n };\n}\nexport function clampRegionToCanvas(region, canvasWidth, canvasHeight) {\n const safeCw = Math.max(1, Math.floor(Number.isFinite(canvasWidth) ? canvasWidth : 1));\n const safeCh = Math.max(1, Math.floor(Number.isFinite(canvasHeight) ? canvasHeight : 1));\n const left = Math.max(0, Math.min(region.left, safeCw - 1));\n const top = Math.max(0, Math.min(region.top, safeCh - 1));\n const width = Math.max(1, Math.min(region.width, safeCw - left));\n const height = Math.max(1, Math.min(region.height, safeCh - top));\n return { left, top, width, height };\n}\n//# sourceMappingURL=canvas-region.js.map","import { CropApplyError } from '../core/errors.js';\nimport { isMaskObject } from '../core/public-types.js';\nimport { Command } from '../history/history-manager.js';\nimport { applyCropHideMaskStyle, captureMaskStyleBackup, reattachMaskHoverHandlers, restoreMaskStyleBackup, } from '../mask/mask-style.js';\nimport { getClampedCanvasRegion, getObjectBBox, hasMeaningfulCanvasRegion, } from '../utils/canvas-region.js';\nimport { clampQuality as clampExportQuality, mimeTypeFor, tryNormalizeImageFormat, } from '../export/export-format.js';\nconst CROP_RECT_FILL = 'rgba(0,0,0,0.12)';\nconst CROP_RECT_STROKE = '#00aaff';\nconst CROP_RECT_DASH = [6, 4];\nconst CROP_RECT_CORNER_SIZE = 8;\nconst CROP_DEFAULT_PADDING = 10;\nconst CROPPED_EXPORT_QUALITY_FALLBACK = 0.92;\nfunction finiteNumberOrFallback(value, fallback) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\nfunction imageMimeToFormat(mimeType) {\n if (mimeType === 'image/jpeg')\n return 'jpeg';\n if (mimeType === 'image/png')\n return 'png';\n if (mimeType === 'image/webp')\n return 'webp';\n return null;\n}\nfunction resolveLossyCropQuality(cropExportQuality, downsampleQuality) {\n const cropQuality = Number(cropExportQuality);\n if (Number.isFinite(cropQuality)) {\n return clampExportQuality(cropQuality, CROPPED_EXPORT_QUALITY_FALLBACK);\n }\n const fallbackQuality = Number(downsampleQuality);\n if (Number.isFinite(fallbackQuality)) {\n return clampExportQuality(fallbackQuality, CROPPED_EXPORT_QUALITY_FALLBACK);\n }\n return CROPPED_EXPORT_QUALITY_FALLBACK;\n}\nfunction resolveCropExportFormat(input) {\n var _a, _b;\n const requested = input.cropExportFileType;\n const format = requested === undefined || requested === null || requested === 'source'\n ? ((_a = imageMimeToFormat(input.currentImageMimeType)) !== null && _a !== void 0 ? _a : 'png')\n : ((_b = tryNormalizeImageFormat(String(requested))) !== null && _b !== void 0 ? _b : 'png');\n const mimeType = mimeTypeFor(format);\n if (format === 'png')\n return { format, mimeType };\n return {\n format,\n mimeType,\n quality: resolveLossyCropQuality(input.cropExportQuality, input.downsampleQuality),\n };\n}\nfunction getCropRectContentBounds(cropRect) {\n const angle = Number(cropRect.angle) || 0;\n const normalizedAngle = Math.abs(angle % 360);\n if (normalizedAngle > 0.01 && Math.abs(normalizedAngle - 360) > 0.01) {\n return getObjectBBox(cropRect);\n }\n return {\n left: Number(cropRect.left) || 0,\n top: Number(cropRect.top) || 0,\n width: Math.max(0, (Number(cropRect.width) || 0) * Math.abs(Number(cropRect.scaleX) || 1)),\n height: Math.max(0, (Number(cropRect.height) || 0) * Math.abs(Number(cropRect.scaleY) || 1)),\n };\n}\nfunction removeCropRect(context, session) {\n for (const targetHandlers of session.handlers) {\n for (const record of targetHandlers.handlers) {\n try {\n targetHandlers.target.off(record.eventName, record.callback);\n }\n catch {\n }\n }\n }\n session.handlers = [];\n if (session.cropRect) {\n try {\n context.canvas.remove(session.cropRect);\n }\n catch {\n }\n session.cropRect = null;\n }\n}\nfunction restoreCropObjectState(session) {\n for (const record of session.prevEvented) {\n try {\n record.object.set({ evented: record.evented, selectable: record.selectable });\n }\n catch {\n }\n }\n session.prevEvented = [];\n}\nfunction restoreCropMaskBackups(session) {\n for (const backup of session.maskBackups) {\n restoreMaskStyleBackup(backup);\n }\n session.maskBackups = [];\n}\nfunction teardownSession(context, session) {\n removeCropRect(context, session);\n restoreCropObjectState(session);\n restoreCropMaskBackups(session);\n try {\n context.canvas.selection = !!session.prevSelection;\n }\n catch {\n }\n}\nfunction maskIntersectsRegion(mask, region) {\n const bbox = getObjectBBox(mask);\n return (bbox.left < region.left + region.width &&\n bbox.left + bbox.width > region.left &&\n bbox.top < region.top + region.height &&\n bbox.top + bbox.height > region.top);\n}\nfunction capturePreservedMasks(canvas, cropRegion, maskBackups = []) {\n var _a;\n const records = [];\n const styleBackupByMask = maskBackups.length > 0\n ? new Map(maskBackups.map((backup) => [backup.object, backup]))\n : null;\n const masks = canvas.getObjects().filter(isMaskObject);\n for (const mask of masks) {\n try {\n mask.setCoords();\n const intersects = maskIntersectsRegion(mask, cropRegion);\n if (intersects) {\n const styleBackup = (_a = styleBackupByMask === null || styleBackupByMask === void 0 ? void 0 : styleBackupByMask.get(mask)) !== null && _a !== void 0 ? _a : captureMaskStyleBackup(mask);\n records.push({\n mask,\n left: finiteNumberOrFallback(mask.left, 0),\n top: finiteNumberOrFallback(mask.top, 0),\n angle: finiteNumberOrFallback(mask.angle, 0),\n scaleX: finiteNumberOrFallback(mask.scaleX, 1),\n scaleY: finiteNumberOrFallback(mask.scaleY, 1),\n styleBackup,\n });\n }\n canvas.remove(mask);\n }\n catch {\n }\n }\n return records;\n}\nfunction reapplyPreservedMasks(context, cropRegion, records) {\n var _a;\n if (records.length === 0)\n return;\n const { canvas } = context;\n let maxRestoredId = 0;\n for (const record of records) {\n try {\n restoreMaskStyleBackup(record.styleBackup);\n record.mask.set({\n left: record.left - cropRegion.left,\n top: record.top - cropRegion.top,\n angle: record.angle,\n scaleX: record.scaleX,\n scaleY: record.scaleY,\n visible: true,\n });\n record.mask.setCoords();\n canvas.add(record.mask);\n canvas.bringObjectToFront(record.mask);\n reattachMaskHoverHandlers(record.mask);\n const id = Number(record.mask.maskId);\n if (Number.isFinite(id) && id > maxRestoredId)\n maxRestoredId = id;\n }\n catch {\n }\n }\n if (typeof context.getMaskCounter === 'function' &&\n typeof context.setMaskCounter === 'function') {\n const liveCounter = Number(context.getMaskCounter());\n const safeCounter = Number.isFinite(liveCounter) ? liveCounter : 0;\n context.setMaskCounter(Math.max(safeCounter, maxRestoredId));\n }\n try {\n (_a = context.updateMaskList) === null || _a === void 0 ? void 0 : _a.call(context);\n }\n catch {\n }\n}\nexport function enterCropMode(context) {\n const { canvas, options } = context;\n if (context.getCropSession())\n return;\n const originalImage = context.getOriginalImage();\n if (!originalImage)\n return;\n if (!context.isImageLoaded())\n return;\n canvas.discardActiveObject();\n const beforeJson = context.saveState();\n const prevSelection = !!canvas.selection;\n canvas.selection = false;\n originalImage.setCoords();\n const imageBounds = originalImage.getBoundingRect();\n const padding = Number.isFinite(Number(options.crop.padding))\n ? Number(options.crop.padding)\n : CROP_DEFAULT_PADDING;\n const boundsLeft = Math.max(0, Math.floor(imageBounds.left));\n const boundsTop = Math.max(0, Math.floor(imageBounds.top));\n const maxCropWidth = Math.max(1, Math.floor(imageBounds.width));\n const maxCropHeight = Math.max(1, Math.floor(imageBounds.height));\n const rectLeft = Math.min(boundsLeft + maxCropWidth - 1, Math.max(boundsLeft, Math.floor(imageBounds.left + padding)));\n const rectTop = Math.min(boundsTop + maxCropHeight - 1, Math.max(boundsTop, Math.floor(imageBounds.top + padding)));\n const configuredMinWidth = Math.max(1, Number(options.crop.minWidth) || 1);\n const configuredMinHeight = Math.max(1, Number(options.crop.minHeight) || 1);\n const minCropWidth = Math.min(configuredMinWidth, maxCropWidth);\n const minCropHeight = Math.min(configuredMinHeight, maxCropHeight);\n const allowRotation = !!options.crop.allowRotationOfCropRect;\n const cropRect = new context.fabric.Rect({\n left: rectLeft,\n top: rectTop,\n width: minCropWidth,\n height: minCropHeight,\n originX: 'left',\n originY: 'top',\n fill: CROP_RECT_FILL,\n stroke: CROP_RECT_STROKE,\n strokeDashArray: CROP_RECT_DASH,\n strokeWidth: 1,\n strokeUniform: true,\n selectable: true,\n lockRotation: !allowRotation,\n cornerSize: CROP_RECT_CORNER_SIZE,\n objectCaching: false,\n lockScalingFlip: true,\n });\n if (!allowRotation) {\n cropRect.setControlVisible('mtr', false);\n }\n canvas.add(cropRect);\n cropRect.isCropRect = true;\n canvas.bringObjectToFront(cropRect);\n canvas.setActiveObject(cropRect);\n const hideMasks = !!options.crop.hideMasksDuringCrop;\n const maskBackups = [];\n if (hideMasks) {\n canvas.getObjects().forEach((object) => {\n if (object === cropRect)\n return;\n if (!isMaskObject(object))\n return;\n maskBackups.push(captureMaskStyleBackup(object));\n });\n }\n const prevEvented = [];\n canvas.getObjects().forEach((object) => {\n var _a, _b;\n if (object === cropRect)\n return;\n prevEvented.push({\n object,\n evented: (_a = object.evented) !== null && _a !== void 0 ? _a : true,\n selectable: (_b = object.selectable) !== null && _b !== void 0 ? _b : true,\n });\n try {\n object.set({ evented: false, selectable: false });\n }\n catch {\n }\n });\n if (hideMasks) {\n for (const backup of maskBackups) {\n applyCropHideMaskStyle(backup.object);\n }\n }\n const handleCropRectModified = () => {\n try {\n const cropWidth = Math.max(1, Number(cropRect.width) || 1);\n const cropHeight = Math.max(1, Number(cropRect.height) || 1);\n const nextScaleX = Math.min(maxCropWidth / cropWidth, Math.max(minCropWidth / cropWidth, Number(cropRect.scaleX) || 1));\n const nextScaleY = Math.min(maxCropHeight / cropHeight, Math.max(minCropHeight / cropHeight, Number(cropRect.scaleY) || 1));\n const scaledWidth = cropWidth * nextScaleX;\n const scaledHeight = cropHeight * nextScaleY;\n const maxLeft = Math.max(boundsLeft, boundsLeft + maxCropWidth - scaledWidth);\n const maxTop = Math.max(boundsTop, boundsTop + maxCropHeight - scaledHeight);\n const nextLeft = Math.min(maxLeft, Math.max(boundsLeft, Number(cropRect.left) || boundsLeft));\n const nextTop = Math.min(maxTop, Math.max(boundsTop, Number(cropRect.top) || boundsTop));\n cropRect.set({\n left: nextLeft,\n top: nextTop,\n scaleX: nextScaleX,\n scaleY: nextScaleY,\n });\n cropRect.setCoords();\n canvas.requestRenderAll();\n }\n catch {\n }\n };\n cropRect.on('modified', handleCropRectModified);\n cropRect.on('moving', handleCropRectModified);\n cropRect.on('scaling', handleCropRectModified);\n const session = {\n beforeJson,\n prevSelection,\n prevEvented,\n maskBackups,\n cropRect,\n handlers: [\n {\n target: cropRect,\n handlers: [\n { eventName: 'modified', callback: handleCropRectModified },\n { eventName: 'moving', callback: handleCropRectModified },\n { eventName: 'scaling', callback: handleCropRectModified },\n ],\n },\n ],\n };\n context.setCropSession(session);\n canvas.renderAll();\n}\nexport function cancelCrop(context) {\n const session = context.getCropSession();\n if (!session)\n return;\n context.canvas.discardActiveObject();\n teardownSession(context, session);\n context.setCropSession(null);\n try {\n context.canvas.renderAll();\n }\n catch {\n }\n}\nexport async function applyCrop(context) {\n var _a, _b;\n const session = context.getCropSession();\n if (!session || !session.cropRect)\n return;\n const { canvas } = context;\n canvas.discardActiveObject();\n const beforeJson = session.beforeJson;\n const cropRect = session.cropRect;\n const preserveMasks = !!context.options.crop.preserveMasksAfterCrop;\n try {\n cropRect.setCoords();\n const cropAngle = Number(cropRect.angle) || 0;\n if (!context.options.crop.allowRotationOfCropRect && Math.abs(cropAngle % 360) > 0.01) {\n throw new CropApplyError('applyCrop failed: rotated crop rectangles are disabled.');\n }\n const rectBounds = getCropRectContentBounds(cropRect);\n if (!hasMeaningfulCanvasRegion(rectBounds, canvas.getWidth(), canvas.getHeight())) {\n throw new CropApplyError('applyCrop failed: crop region is empty or outside the canvas.');\n }\n const cropRegion = getClampedCanvasRegion(rectBounds, canvas.getWidth(), canvas.getHeight(), { includePartialPixels: false });\n const preservedRecords = preserveMasks\n ? capturePreservedMasks(canvas, cropRegion, session.maskBackups)\n : [];\n restoreCropObjectState(session);\n removeCropRect(context, session);\n canvas.selection = !!session.prevSelection;\n const cropFormat = resolveCropExportFormat({\n cropExportFileType: context.options.crop.exportFileType,\n currentImageMimeType: (_b = (_a = context.getCurrentImageMimeType) === null || _a === void 0 ? void 0 : _a.call(context)) !== null && _b !== void 0 ? _b : null,\n cropExportQuality: context.options.crop.exportQuality,\n downsampleQuality: context.options.downsampleQuality,\n });\n const exportOptions = {\n format: cropFormat.format,\n multiplier: 1,\n left: cropRegion.left,\n top: cropRegion.top,\n width: cropRegion.width,\n height: cropRegion.height,\n };\n if (cropFormat.quality !== undefined) {\n exportOptions.quality = cropFormat.quality;\n }\n const croppedBase64 = canvas.toDataURL(exportOptions);\n await context.loadImage(croppedBase64);\n if (preservedRecords.length > 0) {\n reapplyPreservedMasks(context, cropRegion, preservedRecords);\n canvas.renderAll();\n }\n const afterJson = context.saveState();\n context.setCropSession(null);\n if (beforeJson && afterJson && beforeJson !== afterJson) {\n context.historyManager.push(new Command(() => context.loadFromState(afterJson), () => context.loadFromState(beforeJson)));\n }\n }\n catch (error) {\n teardownSession(context, session);\n context.setCropSession(null);\n try {\n await context.loadFromState(beforeJson);\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] applyCrop: rollback failed', rollbackError);\n }\n if (error instanceof CropApplyError)\n throw error;\n const message = error instanceof Error ? `applyCrop failed: ${error.message}` : 'applyCrop failed';\n throw new CropApplyError(message, error);\n }\n}\n//# sourceMappingURL=crop-controller.js.map","import { DownsampleError } from '../core/errors.js';\nexport function computeDownsampleDimensions(srcWidth, srcHeight, maxWidth, maxHeight) {\n if (!isPositiveFinite(srcWidth) ||\n !isPositiveFinite(srcHeight) ||\n !isPositiveFinite(maxWidth) ||\n !isPositiveFinite(maxHeight)) {\n return {\n width: Math.max(1, Math.round(srcWidth) || 1),\n height: Math.max(1, Math.round(srcHeight) || 1),\n needsResize: false,\n };\n }\n const needsResize = srcWidth > maxWidth || srcHeight > maxHeight;\n if (!needsResize) {\n return { width: srcWidth, height: srcHeight, needsResize: false };\n }\n const ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\n return {\n width: Math.max(1, Math.round(srcWidth * ratio)),\n height: Math.max(1, Math.round(srcHeight * ratio)),\n needsResize: true,\n };\n}\nfunction isPositiveFinite(value) {\n return Number.isFinite(value) && value > 0;\n}\nexport function selectDownsampleMimeType(sourceMime, preserveSourceFormat, downsampleMimeType) {\n if (downsampleMimeType)\n return downsampleMimeType;\n if (preserveSourceFormat && (sourceMime === 'image/png' || sourceMime === 'image/webp')) {\n return sourceMime;\n }\n return 'image/jpeg';\n}\nexport function detectSourceMimeType(dataUrl) {\n const match = /^data:(image\\/[a-z0-9+\\-.]+)\\s*;/i.exec(dataUrl);\n return match ? match[1].toLowerCase() : null;\n}\nexport function resampleImage(imageElement, maxWidth, maxHeight, sourceMime, preserveSourceFormat, downsampleMimeType, quality, ownerDocument) {\n var _a;\n const { width, height } = computeDownsampleDimensions(imageElement.naturalWidth, imageElement.naturalHeight, maxWidth, maxHeight);\n const mimeType = selectDownsampleMimeType(sourceMime, preserveSourceFormat, downsampleMimeType);\n const documentForCanvas = (_a = ownerDocument !== null && ownerDocument !== void 0 ? ownerDocument : imageElement.ownerDocument) !== null && _a !== void 0 ? _a : (typeof document !== 'undefined' ? document : null);\n if (!documentForCanvas) {\n throw new DownsampleError('Failed to obtain an owner document for downsampling.');\n }\n const offscreenCanvas = documentForCanvas.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const context = offscreenCanvas.getContext('2d');\n if (!context) {\n throw new DownsampleError('Failed to obtain a 2D context for downsampling.');\n }\n context.drawImage(imageElement, 0, 0, imageElement.naturalWidth, imageElement.naturalHeight, 0, 0, width, height);\n const dataUrl = mimeType === 'image/png'\n ? offscreenCanvas.toDataURL(mimeType)\n : offscreenCanvas.toDataURL(mimeType, quality);\n return { dataUrl, width, height, mimeType };\n}\n//# sourceMappingURL=image-resampler.js.map","import { ImageLoadTimeoutError } from '../core/errors.js';\nexport function withTimeout(promise, ms, label) {\n return new Promise((resolve, reject) => {\n const start = Date.now();\n const timeoutId = setTimeout(() => {\n reject(new ImageLoadTimeoutError(label, Date.now() - start));\n }, ms);\n promise.then((value) => {\n clearTimeout(timeoutId);\n resolve(value);\n }, (err) => {\n clearTimeout(timeoutId);\n reject(err);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","const MATRIX_DETERMINANT_EPSILON = 1e-8;\nconst MATRIX_SCALE_EPSILON = 1e-8;\nfunction toMatrix2D(matrix) {\n if (matrix.length < 6)\n return null;\n const a = matrix[0];\n const b = matrix[1];\n const c = matrix[2];\n const d = matrix[3];\n const e = matrix[4];\n const f = matrix[5];\n if (!Number.isFinite(a) ||\n !Number.isFinite(b) ||\n !Number.isFinite(c) ||\n !Number.isFinite(d) ||\n !Number.isFinite(e) ||\n !Number.isFinite(f)) {\n return null;\n }\n return { a: a, b: b, c: c, d: d, e: e, f: f };\n}\nfunction invertMatrix(matrix) {\n const determinant = matrix.a * matrix.d - matrix.b * matrix.c;\n if (!Number.isFinite(determinant) || Math.abs(determinant) < MATRIX_DETERMINANT_EPSILON) {\n return null;\n }\n return {\n a: matrix.d / determinant,\n b: -matrix.b / determinant,\n c: -matrix.c / determinant,\n d: matrix.a / determinant,\n e: (matrix.c * matrix.f - matrix.d * matrix.e) / determinant,\n f: (matrix.b * matrix.e - matrix.a * matrix.f) / determinant,\n };\n}\nfunction transformPoint(point, matrix) {\n return {\n x: matrix.a * point.x + matrix.c * point.y + matrix.e,\n y: matrix.b * point.x + matrix.d * point.y + matrix.f,\n };\n}\nfunction getSourceRadiusFromMatrix(matrix, canvasRadius) {\n const scaleX = Math.hypot(matrix.a, matrix.b);\n const scaleY = Math.hypot(matrix.c, matrix.d);\n const minScale = Math.min(scaleX > MATRIX_SCALE_EPSILON ? scaleX : Number.POSITIVE_INFINITY, scaleY > MATRIX_SCALE_EPSILON ? scaleY : Number.POSITIVE_INFINITY);\n if (!Number.isFinite(minScale) || minScale <= 0)\n return canvasRadius;\n return canvasRadius / minScale;\n}\nexport function getMosaicImagePoint(fabric, image, canvasPoint, brushDiameterCanvasPx) {\n void fabric;\n const width = Number(image.width) || 0;\n const height = Number(image.height) || 0;\n const brushDiameter = Number(brushDiameterCanvasPx);\n if (width <= 0 ||\n height <= 0 ||\n !Number.isFinite(canvasPoint.x) ||\n !Number.isFinite(canvasPoint.y) ||\n !Number.isFinite(brushDiameter) ||\n brushDiameter <= 0) {\n return null;\n }\n const matrix = toMatrix2D(image.calcTransformMatrix());\n if (!matrix)\n return null;\n const inverse = invertMatrix(matrix);\n if (!inverse)\n return null;\n const localPoint = transformPoint(canvasPoint, inverse);\n const sourceX = localPoint.x + width / 2;\n const sourceY = localPoint.y + height / 2;\n if (sourceX < 0 || sourceY < 0 || sourceX > width || sourceY > height) {\n return null;\n }\n return {\n sourceX,\n sourceY,\n sourceRadius: getSourceRadiusFromMatrix(matrix, brushDiameter / 2),\n };\n}\n//# sourceMappingURL=mosaic-geometry.js.map","function normalizeBlockSize(value) {\n return Number.isFinite(value) && value > 0 ? Math.max(1, Math.floor(value)) : 1;\n}\nfunction isInsideCircle(x, y, centerX, centerY, radiusSquared) {\n const dx = x - centerX;\n const dy = y - centerY;\n return dx * dx + dy * dy <= radiusSquared;\n}\nfunction pixelOffset(width, x, y) {\n return (y * width + x) * 4;\n}\nexport function applyCircularMosaicToImageData(options) {\n var _a, _b, _c, _d;\n const { imageData } = options;\n const { width, height, data } = imageData;\n const centerX = Number(options.centerX);\n const centerY = Number(options.centerY);\n const radius = Number(options.radius);\n if (!Number.isFinite(centerX) ||\n !Number.isFinite(centerY) ||\n !Number.isFinite(radius) ||\n radius <= 0 ||\n width <= 0 ||\n height <= 0) {\n return false;\n }\n const blockSize = normalizeBlockSize(options.blockSize);\n const minX = Math.max(0, Math.floor(centerX - radius));\n const maxX = Math.min(width - 1, Math.ceil(centerX + radius));\n const minY = Math.max(0, Math.floor(centerY - radius));\n const maxY = Math.min(height - 1, Math.ceil(centerY + radius));\n if (minX > maxX || minY > maxY)\n return false;\n const radiusSquared = radius * radius;\n let processed = false;\n for (let blockY = minY; blockY <= maxY; blockY += blockSize) {\n for (let blockX = minX; blockX <= maxX; blockX += blockSize) {\n const blockMaxX = Math.min(maxX, blockX + blockSize - 1);\n const blockMaxY = Math.min(maxY, blockY + blockSize - 1);\n let sampleOffset = -1;\n for (let y = blockY; y <= blockMaxY && sampleOffset < 0; y += 1) {\n for (let x = blockX; x <= blockMaxX; x += 1) {\n if (!isInsideCircle(x, y, centerX, centerY, radiusSquared))\n continue;\n sampleOffset = pixelOffset(width, x, y);\n break;\n }\n }\n if (sampleOffset < 0)\n continue;\n const red = (_a = data[sampleOffset]) !== null && _a !== void 0 ? _a : 0;\n const green = (_b = data[sampleOffset + 1]) !== null && _b !== void 0 ? _b : 0;\n const blue = (_c = data[sampleOffset + 2]) !== null && _c !== void 0 ? _c : 0;\n const alpha = (_d = data[sampleOffset + 3]) !== null && _d !== void 0 ? _d : 0;\n for (let y = blockY; y <= blockMaxY; y += 1) {\n for (let x = blockX; x <= blockMaxX; x += 1) {\n if (!isInsideCircle(x, y, centerX, centerY, radiusSquared))\n continue;\n const offset = pixelOffset(width, x, y);\n data[offset] = red;\n data[offset + 1] = green;\n data[offset + 2] = blue;\n data[offset + 3] = alpha;\n processed = true;\n }\n }\n }\n }\n return processed;\n}\n//# sourceMappingURL=mosaic-pixelate.js.map","import { reportError, reportWarning } from '../core/callback-reporter.js';\nimport { mimeTypeFor, tryNormalizeImageFormat } from '../export/export-format.js';\nimport { Command } from '../history/history-manager.js';\nimport { detectSourceMimeType } from '../image/image-resampler.js';\nimport { withTimeout } from '../utils/timeout.js';\nimport { getMosaicImagePoint } from './mosaic-geometry.js';\nimport { applyCircularMosaicToImageData } from './mosaic-pixelate.js';\nconst MAX_PENDING_MOSAIC_POINTS = 4096;\nfunction getCanvasDocument(context) {\n var _a, _b, _c, _d, _e;\n const element = (_b = (_a = context.canvas).getElement) === null || _b === void 0 ? void 0 : _b.call(_a);\n return ((_e = (_c = element === null || element === void 0 ? void 0 : element.ownerDocument) !== null && _c !== void 0 ? _c : (_d = context.canvas.lowerCanvasEl) === null || _d === void 0 ? void 0 : _d.ownerDocument) !== null && _e !== void 0 ? _e : document);\n}\nfunction isFinitePoint(value) {\n const point = value;\n return (!!point &&\n typeof point.x === 'number' &&\n Number.isFinite(point.x) &&\n typeof point.y === 'number' &&\n Number.isFinite(point.y));\n}\nfunction getPointerFromFabricEvent(canvas, event) {\n const fabricEvent = event;\n if (isFinitePoint(fabricEvent.scenePoint))\n return fabricEvent.scenePoint;\n if (isFinitePoint(fabricEvent.pointer))\n return fabricEvent.pointer;\n if (isFinitePoint(fabricEvent.absolutePointer))\n return fabricEvent.absolutePointer;\n if (fabricEvent.e && typeof canvas.getPointer === 'function') {\n const pointer = canvas.getPointer(fabricEvent.e);\n if (isFinitePoint(pointer))\n return pointer;\n }\n return null;\n}\nfunction safeRender(canvas) {\n try {\n canvas.requestRenderAll();\n }\n catch {\n try {\n canvas.renderAll();\n }\n catch {\n }\n }\n}\nfunction createPreviewCircle(context) {\n var _a;\n const config = context.getMosaicConfig();\n const circle = new context.fabric.Circle({\n left: 0,\n top: 0,\n radius: config.brushSize / 2,\n originX: 'center',\n originY: 'center',\n fill: config.previewFill,\n stroke: config.previewStroke,\n strokeWidth: config.previewStrokeWidth,\n strokeDashArray: (_a = config.previewStrokeDashArray) !== null && _a !== void 0 ? _a : undefined,\n selectable: false,\n evented: false,\n excludeFromExport: true,\n objectCaching: false,\n visible: false,\n });\n circle.isMosaicPreview = true;\n return circle;\n}\nfunction ensurePreviewCircle(context, session) {\n var _a;\n const { canvas } = context;\n const circle = (_a = session.previewCircle) !== null && _a !== void 0 ? _a : createPreviewCircle(context);\n session.previewCircle = circle;\n if (!canvas.getObjects().includes(circle)) {\n canvas.add(circle);\n }\n canvas.bringObjectToFront(circle);\n updateMosaicPreview(context);\n return circle;\n}\nfunction removePreviewCircle(context, session) {\n const circle = session.previewCircle;\n if (!circle)\n return;\n try {\n context.canvas.remove(circle);\n }\n catch {\n }\n session.previewCircle = null;\n}\nfunction createPreviewImage(context, sourceImage, rasterCache) {\n const image = new context.fabric.FabricImage(rasterCache.offscreenCanvas, {\n selectable: false,\n evented: false,\n excludeFromExport: true,\n objectCaching: false,\n visible: true,\n });\n copyBaseImageProperties(image, sourceImage);\n image.set({\n selectable: false,\n evented: false,\n excludeFromExport: true,\n objectCaching: false,\n visible: true,\n });\n image.isMosaicPreview = true;\n return image;\n}\nfunction placePreviewImageAfterBase(context, previewImage, sourceImage) {\n var _a, _b;\n const sourceIndex = context.canvas.getObjects().indexOf(sourceImage);\n if (sourceIndex < 0)\n return;\n try {\n (_b = (_a = context.canvas).moveObjectTo) === null || _b === void 0 ? void 0 : _b.call(_a, previewImage, sourceIndex + 1);\n }\n catch {\n }\n}\nfunction ensurePreviewImage(context, session, sourceImage) {\n var _a;\n const rasterCache = session.rasterCache;\n if (!rasterCache)\n return null;\n const previewImage = (_a = session.previewImage) !== null && _a !== void 0 ? _a : createPreviewImage(context, sourceImage, rasterCache);\n session.previewImage = previewImage;\n copyBaseImageProperties(previewImage, sourceImage);\n previewImage.set({\n selectable: false,\n evented: false,\n excludeFromExport: true,\n objectCaching: false,\n visible: true,\n });\n previewImage.dirty = true;\n if (!context.canvas.getObjects().includes(previewImage)) {\n context.canvas.add(previewImage);\n }\n placePreviewImageAfterBase(context, previewImage, sourceImage);\n const circle = session.previewCircle;\n if (circle && context.canvas.getObjects().includes(circle)) {\n context.canvas.bringObjectToFront(circle);\n }\n return previewImage;\n}\nfunction removePreviewImage(context, session) {\n const image = session.previewImage;\n if (!image)\n return;\n try {\n context.canvas.remove(image);\n }\n catch {\n }\n session.previewImage = null;\n}\nfunction hidePreview(context) {\n var _a;\n const circle = (_a = context.getMosaicSession()) === null || _a === void 0 ? void 0 : _a.previewCircle;\n if (!circle)\n return;\n circle.set({ visible: false });\n safeRender(context.canvas);\n}\nfunction movePreview(context, point) {\n const session = context.getMosaicSession();\n if (!session)\n return;\n const circle = ensurePreviewCircle(context, session);\n circle.set({ left: point.x, top: point.y, visible: true });\n safeRender(context.canvas);\n}\nfunction attachCanvasHandler(context, session, eventName, callback) {\n context.canvas.on(eventName, callback);\n session.handlers.push({ eventName, callback });\n}\nfunction detachCanvasHandlers(context, session) {\n for (const record of session.handlers) {\n try {\n context.canvas.off(record.eventName, record.callback);\n }\n catch {\n }\n }\n session.handlers = [];\n}\nfunction restoreObjectStates(session) {\n for (const record of session.prevObjectStates) {\n try {\n record.object.set({ evented: record.evented, selectable: record.selectable });\n }\n catch {\n }\n }\n session.prevObjectStates = [];\n}\nfunction getImageSource(image) {\n var _a;\n const imageWithSource = image;\n try {\n const src = (_a = imageWithSource.getSrc) === null || _a === void 0 ? void 0 : _a.call(imageWithSource);\n if (typeof src === 'string' && src.length > 0)\n return src;\n }\n catch {\n }\n return typeof imageWithSource.src === 'string' && imageWithSource.src.length > 0\n ? imageWithSource.src\n : null;\n}\nfunction imageDimension(value) {\n const numeric = Number(value);\n return Number.isFinite(numeric) && numeric > 0 ? Math.floor(numeric) : 0;\n}\nfunction decodeImageSource(ownerDocument, source) {\n return new Promise((resolve, reject) => {\n const imageElement = ownerDocument.createElement('img');\n const cleanup = () => {\n if (typeof imageElement.removeEventListener === 'function') {\n imageElement.removeEventListener('load', handleLoad);\n imageElement.removeEventListener('error', handleError);\n }\n else {\n imageElement.onload = null;\n imageElement.onerror = null;\n }\n };\n const handleLoad = () => {\n const width = imageDimension(imageElement.naturalWidth || imageElement.width);\n const height = imageDimension(imageElement.naturalHeight || imageElement.height);\n cleanup();\n if (width <= 0 || height <= 0) {\n reject(new Error('Mosaic image decode failed: source image has no dimensions.'));\n return;\n }\n resolve({ element: imageElement, width, height });\n };\n const handleError = (event) => {\n cleanup();\n const message = typeof event === 'string'\n ? `Mosaic image decode failed: ${event}`\n : 'Mosaic image decode failed.';\n reject(new Error(message));\n };\n if (!source.startsWith('data:')) {\n imageElement.crossOrigin = 'anonymous';\n }\n if (typeof imageElement.addEventListener === 'function') {\n imageElement.addEventListener('load', handleLoad, { once: true });\n imageElement.addEventListener('error', handleError, { once: true });\n }\n else {\n imageElement.onload = handleLoad;\n imageElement.onerror = handleError;\n }\n imageElement.src = source;\n });\n}\nfunction toSupportedMimeType(mimeType) {\n return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n ? mimeType\n : null;\n}\nfunction mimeToFormat(mimeType) {\n if (mimeType === 'image/jpeg')\n return 'jpeg';\n if (mimeType === 'image/webp')\n return 'webp';\n return 'png';\n}\nfunction resolveMosaicOutputFormat(context, source) {\n var _a, _b, _c, _d;\n const config = context.getMosaicConfig();\n const requested = config.outputFileType;\n const format = requested === 'source'\n ? mimeToFormat((_b = (_a = context.getCurrentImageMimeType()) !== null && _a !== void 0 ? _a : toSupportedMimeType(detectSourceMimeType(source))) !== null && _b !== void 0 ? _b : 'image/png')\n : ((_c = tryNormalizeImageFormat(String(requested))) !== null && _c !== void 0 ? _c : 'png');\n const mimeType = mimeTypeFor(format);\n if (format === 'png')\n return { mimeType };\n return {\n mimeType,\n quality: (_d = config.outputQuality) !== null && _d !== void 0 ? _d : context.options.downsampleQuality,\n };\n}\nasync function createFabricImageFromDataUrl(context, dataUrl) {\n return await withTimeout(context.fabric.FabricImage.fromURL(dataUrl, { crossOrigin: 'anonymous' }), context.options.imageLoadTimeoutMs, 'Mosaic FabricImage.fromURL');\n}\nfunction copyBaseImageProperties(target, source) {\n target.set({\n left: source.left,\n top: source.top,\n scaleX: source.scaleX,\n scaleY: source.scaleY,\n angle: source.angle,\n skewX: source.skewX,\n skewY: source.skewY,\n flipX: source.flipX,\n flipY: source.flipY,\n originX: source.originX,\n originY: source.originY,\n selectable: source.selectable,\n evented: source.evented,\n hasControls: source.hasControls,\n hoverCursor: source.hoverCursor,\n });\n target.setCoords();\n}\nfunction replaceBaseImage(context, oldImage, newImage, mimeType) {\n const { canvas } = context;\n let oldRemoved = false;\n let newAdded = false;\n try {\n copyBaseImageProperties(newImage, oldImage);\n canvas.remove(oldImage);\n oldRemoved = true;\n canvas.add(newImage);\n newAdded = true;\n canvas.sendObjectToBack(newImage);\n context.setOriginalImage(newImage);\n context.setCurrentImageMimeType(mimeType);\n canvas.renderAll();\n }\n catch (error) {\n try {\n if (newAdded)\n canvas.remove(newImage);\n if (oldRemoved && !canvas.getObjects().includes(oldImage)) {\n canvas.add(oldImage);\n canvas.sendObjectToBack(oldImage);\n }\n context.setOriginalImage(oldImage);\n }\n catch {\n }\n throw error;\n }\n}\nfunction pushMosaicHistory(context, after) {\n var _a;\n const before = (_a = context.getLastSnapshot()) !== null && _a !== void 0 ? _a : after;\n if (!before || !after || before === after)\n return;\n context.historyManager.push(new Command(async () => {\n await context.loadFromState(after);\n }, async () => {\n await context.loadFromState(before);\n }));\n context.setLastSnapshot(after);\n}\nasync function getOrCreateRasterCache(context, session, source) {\n if (session.rasterCache)\n return session.rasterCache;\n const ownerDocument = getCanvasDocument(context);\n const decoded = await decodeImageSource(ownerDocument, source);\n const offscreenCanvas = ownerDocument.createElement('canvas');\n offscreenCanvas.width = decoded.width;\n offscreenCanvas.height = decoded.height;\n const renderingContext = offscreenCanvas.getContext('2d');\n if (!renderingContext) {\n reportError(context.options, new Error('Mosaic could not obtain a 2D canvas context.'), 'Mosaic apply failed.');\n return null;\n }\n renderingContext.drawImage(decoded.element, 0, 0, decoded.width, decoded.height);\n let imageData;\n try {\n imageData = renderingContext.getImageData(0, 0, decoded.width, decoded.height);\n }\n catch (error) {\n reportError(context.options, error, 'Mosaic apply failed because the source image pixels could not be read.');\n return null;\n }\n const rasterCache = {\n offscreenCanvas,\n renderingContext,\n imageData,\n source,\n width: decoded.width,\n height: decoded.height,\n };\n session.rasterCache = rasterCache;\n return rasterCache;\n}\nfunction applyMosaicImagePoint(context, session, sourceImage, imagePoint) {\n const rasterCache = session.rasterCache;\n if (!rasterCache)\n return false;\n const config = context.getMosaicConfig();\n const previousPoint = session.lastImagePoint;\n const points = previousPoint\n ? interpolateMosaicPoints(previousPoint, imagePoint)\n : [imagePoint];\n let changed = false;\n for (const point of points) {\n changed =\n applyCircularMosaicToImageData({\n imageData: rasterCache.imageData,\n centerX: point.sourceX,\n centerY: point.sourceY,\n radius: point.sourceRadius,\n blockSize: config.blockSize,\n }) || changed;\n }\n session.lastImagePoint = imagePoint;\n if (changed) {\n session.hasUncommittedChanges = true;\n rasterCache.renderingContext.putImageData(rasterCache.imageData, 0, 0);\n ensurePreviewImage(context, session, sourceImage);\n safeRender(context.canvas);\n }\n return changed;\n}\nfunction interpolateMosaicPoints(start, end) {\n const dx = end.sourceX - start.sourceX;\n const dy = end.sourceY - start.sourceY;\n const distance = Math.hypot(dx, dy);\n const minRadius = Math.min(start.sourceRadius, end.sourceRadius);\n const spacing = Math.max(1, minRadius / 2);\n const steps = Math.max(1, Math.ceil(distance / spacing));\n const points = [];\n for (let index = 1; index <= steps; index += 1) {\n const t = index / steps;\n points.push({\n sourceX: start.sourceX + dx * t,\n sourceY: start.sourceY + dy * t,\n sourceRadius: start.sourceRadius + (end.sourceRadius - start.sourceRadius) * t,\n });\n }\n return points;\n}\nasync function applyMosaicPointToCache(context, expectedSession, canvasPoint) {\n const session = context.getMosaicSession();\n if (!session || session !== expectedSession)\n return;\n const originalImage = context.getOriginalImage();\n if (!originalImage || !context.isImageLoaded())\n return;\n const config = context.getMosaicConfig();\n const imagePoint = getMosaicImagePoint(context.fabric, originalImage, canvasPoint, config.brushSize);\n if (!imagePoint) {\n session.lastImagePoint = null;\n return;\n }\n const source = getImageSource(originalImage);\n if (!source) {\n reportWarning(context.options, new Error('Mosaic cannot read the current image source.'), 'Mosaic skipped because the image source is unavailable.');\n return;\n }\n const rasterCache = await getOrCreateRasterCache(context, session, source);\n if (!rasterCache)\n return;\n applyMosaicImagePoint(context, session, originalImage, imagePoint);\n}\nasync function commitMosaicChanges(context, session, callbackContext) {\n var _a;\n session.commitRequested = false;\n session.lastImagePoint = null;\n if (!session.hasUncommittedChanges || !session.rasterCache)\n return;\n const originalImage = context.getOriginalImage();\n if (!originalImage || !context.isImageLoaded())\n return;\n const source = (_a = getImageSource(originalImage)) !== null && _a !== void 0 ? _a : session.rasterCache.source;\n const rasterCache = session.rasterCache;\n rasterCache.renderingContext.putImageData(rasterCache.imageData, 0, 0);\n const output = resolveMosaicOutputFormat(context, source);\n const nextDataUrl = output.quality === undefined\n ? rasterCache.offscreenCanvas.toDataURL(output.mimeType)\n : rasterCache.offscreenCanvas.toDataURL(output.mimeType, output.quality);\n const nextImage = await createFabricImageFromDataUrl(context, nextDataUrl);\n removePreviewCircle(context, session);\n removePreviewImage(context, session);\n try {\n replaceBaseImage(context, originalImage, nextImage, output.mimeType);\n const after = context.captureSnapshot();\n pushMosaicHistory(context, after);\n rasterCache.source = nextDataUrl;\n session.hasUncommittedChanges = false;\n }\n finally {\n if (context.getMosaicSession() === session) {\n ensurePreviewCircle(context, session);\n }\n }\n context.updateInputs();\n context.updateUi();\n context.emitImageChanged(callbackContext);\n}\nasync function drainMosaicQueue(context, expectedSession) {\n const session = context.getMosaicSession();\n if (!session || session !== expectedSession || session.isApplying)\n return;\n session.isApplying = true;\n const callbackContext = context.buildCallbackContext('applyMosaic', false);\n context.emitBusyChangeIfChanged(callbackContext);\n context.updateUi();\n try {\n while (context.getMosaicSession() === session && session.pendingCanvasPoints.length > 0) {\n const point = session.pendingCanvasPoints.shift();\n if (point) {\n await applyMosaicPointToCache(context, session, point);\n }\n }\n if (context.getMosaicSession() === session && session.commitRequested) {\n await commitMosaicChanges(context, session, callbackContext);\n }\n }\n finally {\n if (context.getMosaicSession() === session) {\n session.isApplying = false;\n }\n context.emitBusyChangeIfChanged(callbackContext);\n context.updateUi();\n if (context.getMosaicSession() === session &&\n (session.pendingCanvasPoints.length > 0 || session.commitRequested)) {\n void drainMosaicQueue(context, session).catch((error) => {\n reportError(context.options, error, 'Mosaic apply failed.');\n });\n }\n }\n}\nfunction enqueueMosaicPoint(context, canvasPoint) {\n const session = context.getMosaicSession();\n if (!session)\n return;\n session.pendingCanvasPoints.push(canvasPoint);\n if (session.pendingCanvasPoints.length > MAX_PENDING_MOSAIC_POINTS) {\n session.pendingCanvasPoints.splice(0, session.pendingCanvasPoints.length - MAX_PENDING_MOSAIC_POINTS);\n }\n void drainMosaicQueue(context, session).catch((error) => {\n reportError(context.options, error, 'Mosaic apply failed.');\n });\n}\nfunction requestMosaicCommit(context, session) {\n session.commitRequested = true;\n void drainMosaicQueue(context, session).catch((error) => {\n reportError(context.options, error, 'Mosaic apply failed.');\n });\n}\nfunction installMosaicHandlers(context, session) {\n attachCanvasHandler(context, session, 'mouse:move', (event) => {\n const pointer = getPointerFromFabricEvent(context.canvas, event);\n if (!pointer) {\n hidePreview(context);\n return;\n }\n movePreview(context, pointer);\n const currentSession = context.getMosaicSession();\n if (currentSession === null || currentSession === void 0 ? void 0 : currentSession.isPointerDown) {\n enqueueMosaicPoint(context, pointer);\n }\n });\n attachCanvasHandler(context, session, 'mouse:out', () => {\n hidePreview(context);\n const currentSession = context.getMosaicSession();\n if (currentSession === null || currentSession === void 0 ? void 0 : currentSession.isPointerDown) {\n currentSession.isPointerDown = false;\n requestMosaicCommit(context, currentSession);\n }\n });\n attachCanvasHandler(context, session, 'mouse:down', (event) => {\n const pointer = getPointerFromFabricEvent(context.canvas, event);\n if (!pointer)\n return;\n const currentSession = context.getMosaicSession();\n if (!currentSession)\n return;\n currentSession.isPointerDown = true;\n currentSession.lastImagePoint = null;\n enqueueMosaicPoint(context, pointer);\n });\n attachCanvasHandler(context, session, 'mouse:up', (event) => {\n const currentSession = context.getMosaicSession();\n if (!currentSession)\n return;\n const pointer = getPointerFromFabricEvent(context.canvas, event);\n if (pointer) {\n movePreview(context, pointer);\n enqueueMosaicPoint(context, pointer);\n }\n currentSession.isPointerDown = false;\n requestMosaicCommit(context, currentSession);\n });\n}\nexport function enterMosaicMode(context) {\n if (context.getMosaicSession())\n return;\n if (!context.isImageLoaded() || !context.getOriginalImage())\n return;\n const { canvas } = context;\n context.hideAllMaskLabels();\n canvas.discardActiveObject();\n const prevSelection = !!canvas.selection;\n const prevDefaultCursor = canvas.defaultCursor;\n const prevObjectStates = canvas.getObjects().map((object) => {\n var _a, _b;\n return ({\n object,\n evented: (_a = object.evented) !== null && _a !== void 0 ? _a : true,\n selectable: (_b = object.selectable) !== null && _b !== void 0 ? _b : true,\n });\n });\n for (const record of prevObjectStates) {\n try {\n record.object.set({ evented: false, selectable: false });\n }\n catch {\n }\n }\n canvas.selection = false;\n canvas.defaultCursor = 'crosshair';\n const session = {\n previewCircle: null,\n previewImage: null,\n prevSelection,\n prevDefaultCursor,\n prevObjectStates,\n handlers: [],\n rasterCache: null,\n pendingCanvasPoints: [],\n isPointerDown: false,\n isApplying: false,\n commitRequested: false,\n hasUncommittedChanges: false,\n lastImagePoint: null,\n };\n context.setMosaicSession(session);\n ensurePreviewCircle(context, session);\n installMosaicHandlers(context, session);\n canvas.renderAll();\n}\nexport function exitMosaicMode(context) {\n var _a;\n const session = context.getMosaicSession();\n if (!session)\n return;\n detachCanvasHandlers(context, session);\n removePreviewCircle(context, session);\n removePreviewImage(context, session);\n restoreObjectStates(session);\n context.canvas.selection = !!session.prevSelection;\n context.canvas.defaultCursor = (_a = session.prevDefaultCursor) !== null && _a !== void 0 ? _a : 'default';\n context.setMosaicSession(null);\n context.canvas.renderAll();\n}\nexport function updateMosaicPreview(context) {\n var _a;\n const session = context.getMosaicSession();\n const circle = session === null || session === void 0 ? void 0 : session.previewCircle;\n if (!session || !circle)\n return;\n const config = context.getMosaicConfig();\n circle.set({\n radius: config.brushSize / 2,\n fill: config.previewFill,\n stroke: config.previewStroke,\n strokeWidth: config.previewStrokeWidth,\n strokeDashArray: (_a = config.previewStrokeDashArray) !== null && _a !== void 0 ? _a : undefined,\n });\n context.canvas.bringObjectToFront(circle);\n safeRender(context.canvas);\n}\nexport function isMosaicPreviewObject(object) {\n return object.isMosaicPreview === true;\n}\n//# sourceMappingURL=mosaic-controller.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { reportError } from '../core/callback-reporter.js';\nimport { ExportError, ExportNotReadyError, MergeMasksError } from '../core/errors.js';\nimport { Command } from '../history/history-manager.js';\nimport { withMaskStyleBackup } from '../mask/mask-style.js';\nimport { getClampedCanvasRegion, getObjectBBox, getPartialExportEdges, hasMeaningfulCanvasRegion, } from '../utils/canvas-region.js';\nimport { resolveExportFormat } from './export-format.js';\nfunction resolveMultiplier(requested, fallback) {\n const num = Number(requested);\n if (Number.isFinite(num) && num > 0)\n return num;\n const fallbackValue = Number(fallback);\n return Number.isFinite(fallbackValue) && fallbackValue > 0 ? fallbackValue : 1;\n}\nfunction resolveExportArea(requested, fallback) {\n if (requested === 'canvas' || requested === 'image')\n return requested;\n return fallback === 'canvas' ? 'canvas' : 'image';\n}\nfunction resolveExportOptions(context, options) {\n const providedOptions = options !== null && options !== void 0 ? options : {};\n return {\n exportArea: resolveExportArea(providedOptions.exportArea, context.options.exportAreaByDefault),\n mergeMask: typeof providedOptions.mergeMask === 'boolean'\n ? providedOptions.mergeMask\n : context.options.mergeMaskByDefault,\n multiplier: resolveMultiplier(providedOptions.multiplier, context.options.exportMultiplier),\n format: resolveExportFormat(providedOptions, context.options.downsampleQuality),\n };\n}\nfunction readCanvasDimension(canvas, getterName, propertyName) {\n const canvasLike = canvas;\n const getter = canvasLike[getterName];\n const value = typeof getter === 'function' ? getter.call(canvasLike) : canvasLike[propertyName];\n return Math.max(1, Math.ceil(Number.isFinite(value) ? Number(value) : 1));\n}\nfunction assertExportPixelBudget(context, multiplier, region) {\n var _a, _b;\n const sourceWidth = (_a = region === null || region === void 0 ? void 0 : region.width) !== null && _a !== void 0 ? _a : readCanvasDimension(context.canvas, 'getWidth', 'width');\n const sourceHeight = (_b = region === null || region === void 0 ? void 0 : region.height) !== null && _b !== void 0 ? _b : readCanvasDimension(context.canvas, 'getHeight', 'height');\n const outputWidth = Math.max(1, Math.ceil(sourceWidth * multiplier));\n const outputHeight = Math.max(1, Math.ceil(sourceHeight * multiplier));\n const pixelCount = outputWidth * outputHeight;\n const maxPixels = context.options.maxExportPixels;\n if (!Number.isFinite(pixelCount) || pixelCount > maxPixels) {\n throw new RangeError(`[ImageEditor] Export size ${outputWidth}x${outputHeight} ` +\n `(${pixelCount} pixels) exceeds maxExportPixels (${maxPixels}).`);\n }\n}\nfunction computeExportRegion(context, exportArea) {\n if (exportArea === 'canvas')\n return { region: null, partialEdges: null };\n const originalImage = context.getOriginalImage();\n if (!originalImage)\n return { region: null, partialEdges: null };\n const bounds = getObjectBBox(originalImage);\n const canvasLike = context.canvas;\n const canvasWidth = typeof canvasLike.getWidth === 'function' ? canvasLike.getWidth() : canvasLike.width;\n const canvasHeight = typeof canvasLike.getHeight === 'function' ? canvasLike.getHeight() : canvasLike.height;\n if (!hasMeaningfulCanvasRegion(bounds, canvasWidth, canvasHeight)) {\n throw new ExportError('exportImageBase64 failed: image export region is empty.');\n }\n return {\n region: getClampedCanvasRegion(bounds, canvasWidth, canvasHeight, {\n includePartialPixels: true,\n }),\n partialEdges: getPartialExportEdges(bounds, Number(originalImage.angle) || 0),\n };\n}\nasync function withMaskExportState(context, mergeMask, callback) {\n if (!mergeMask)\n return withMasksHidden(context, callback);\n return withMaskStyleBackup({ canvas: context.canvas, options: context.options }, applyExportBakeInStyle, callback);\n}\nasync function withMasksHidden(context, callback) {\n const backups = getCanvasObjects(context.canvas)\n .filter(isMaskObject)\n .map((mask) => ({\n mask,\n visible: mask.visible,\n }));\n for (const backup of backups) {\n try {\n if (typeof backup.mask.set === 'function') {\n backup.mask.set({ visible: false });\n }\n else {\n backup.mask.visible = false;\n }\n }\n catch {\n }\n }\n try {\n return await callback();\n }\n finally {\n for (const backup of backups) {\n try {\n if (typeof backup.mask.set === 'function') {\n backup.mask.set({ visible: backup.visible });\n }\n else {\n backup.mask.visible = backup.visible;\n }\n }\n catch {\n }\n }\n }\n}\nfunction getCanvasObjects(canvas) {\n try {\n return canvas.getObjects();\n }\n catch {\n return [];\n }\n}\nfunction isObjectOnCanvas(canvas, object) {\n return getCanvasObjects(canvas).includes(object);\n}\nfunction captureMaskLabelBackups(canvas) {\n const backups = [];\n for (const object of getCanvasObjects(canvas)) {\n if (!isMaskObject(object))\n continue;\n const label = object.labelObject;\n if (!label)\n continue;\n const wasOnCanvas = isObjectOnCanvas(canvas, label);\n backups.push({\n mask: object,\n label,\n wasOnCanvas,\n visible: label.visible,\n });\n try {\n if (typeof label.set === 'function')\n label.set({ visible: false });\n if (wasOnCanvas)\n canvas.remove(label);\n }\n catch {\n }\n }\n return backups;\n}\nfunction restoreMaskLabelBackups(canvas, backups) {\n for (const backup of backups) {\n try {\n backup.mask.labelObject = backup.label;\n if (typeof backup.label.set === 'function') {\n backup.label.set({ visible: backup.visible });\n }\n else {\n backup.label.visible = backup.visible;\n }\n if (backup.wasOnCanvas && !isObjectOnCanvas(canvas, backup.label)) {\n canvas.add(backup.label);\n canvas.bringObjectToFront(backup.label);\n }\n }\n catch {\n }\n }\n}\nfunction captureActiveObject(canvas) {\n var _a;\n try {\n const canvasWithSelection = canvas;\n if (typeof canvasWithSelection.getActiveObject !== 'function')\n return null;\n return (_a = canvasWithSelection.getActiveObject()) !== null && _a !== void 0 ? _a : null;\n }\n catch {\n return null;\n }\n}\nfunction restoreActiveObject(canvas, activeObject) {\n if (!activeObject)\n return;\n try {\n const canvasWithSelection = canvas;\n if (typeof canvasWithSelection.setActiveObject === 'function') {\n canvasWithSelection.setActiveObject(activeObject);\n }\n }\n catch {\n }\n}\nfunction requestRender(canvas) {\n try {\n if (typeof canvas.requestRenderAll === 'function') {\n canvas.requestRenderAll();\n }\n else {\n canvas.renderAll();\n }\n }\n catch {\n }\n}\nfunction applyExportBakeInStyle(mask) {\n try {\n mask.set({\n opacity: 1,\n fill: '#000',\n strokeWidth: 0,\n stroke: null,\n selectable: false,\n });\n if (typeof mask.setCoords === 'function')\n mask.setCoords();\n }\n catch {\n }\n}\nfunction renderCanvasToDataUrl(canvas, format, quality, multiplier, region) {\n const fabricOptions = {\n format,\n multiplier,\n };\n if (quality !== undefined)\n fabricOptions.quality = quality;\n if (region) {\n fabricOptions.left = region.left;\n fabricOptions.top = region.top;\n fabricOptions.width = region.width;\n fabricOptions.height = region.height;\n }\n return canvas.toDataURL(fabricOptions);\n}\nfunction hasPartialEdges(edges) {\n return !!edges && (edges.left || edges.top || edges.right || edges.bottom);\n}\nfunction getImageDimensions(imageElement) {\n return {\n width: Math.max(1, imageElement.naturalWidth || imageElement.width || 1),\n height: Math.max(1, imageElement.naturalHeight || imageElement.height || 1),\n };\n}\nfunction loadImageElement(dataUrl) {\n return new Promise((resolve, reject) => {\n const imageElement = new Image();\n imageElement.crossOrigin = 'anonymous';\n const cleanup = () => {\n if (typeof imageElement.removeEventListener === 'function') {\n imageElement.removeEventListener('load', handleLoad);\n imageElement.removeEventListener('error', handleError);\n }\n else {\n imageElement.onload = null;\n imageElement.onerror = null;\n }\n };\n const handleLoad = () => {\n cleanup();\n resolve(imageElement);\n };\n const handleError = () => {\n cleanup();\n reject(new Error('Failed to decode export data URL'));\n };\n if (typeof imageElement.addEventListener === 'function') {\n imageElement.addEventListener('load', handleLoad, { once: true });\n imageElement.addEventListener('error', handleError, { once: true });\n }\n else {\n imageElement.onload = handleLoad;\n imageElement.onerror = handleError;\n }\n imageElement.src = dataUrl;\n });\n}\nasync function sealPartialTransparentEdges(dataUrl, edges, target) {\n if (!hasPartialEdges(edges))\n return dataUrl;\n const imageElement = await loadImageElement(dataUrl);\n const { width, height } = getImageDimensions(imageElement);\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const canvasContext = offscreenCanvas.getContext('2d');\n if (!canvasContext)\n throw new Error('2D canvas context is unavailable');\n canvasContext.drawImage(imageElement, 0, 0, width, height);\n const imageData = canvasContext.getImageData(0, 0, width, height);\n const pixels = imageData.data;\n const sealPixel = (x, y, fallbackX, fallbackY) => {\n var _a, _b, _c, _d, _e, _f;\n const index = (y * width + x) * 4;\n const fallbackIndex = (fallbackY * width + fallbackX) * 4;\n const alpha = (_a = pixels[index + 3]) !== null && _a !== void 0 ? _a : 0;\n const fallbackAlpha = (_b = pixels[fallbackIndex + 3]) !== null && _b !== void 0 ? _b : 0;\n if (alpha === 0 && fallbackAlpha > 0) {\n pixels[index] = (_c = pixels[fallbackIndex]) !== null && _c !== void 0 ? _c : 0;\n pixels[index + 1] = (_d = pixels[fallbackIndex + 1]) !== null && _d !== void 0 ? _d : 0;\n pixels[index + 2] = (_e = pixels[fallbackIndex + 2]) !== null && _e !== void 0 ? _e : 0;\n pixels[index + 3] = fallbackAlpha;\n }\n const nextAlpha = (_f = pixels[index + 3]) !== null && _f !== void 0 ? _f : 0;\n if (nextAlpha > 0 && nextAlpha < 255) {\n pixels[index + 3] = 255;\n }\n };\n if ((edges === null || edges === void 0 ? void 0 : edges.left) && width > 1) {\n for (let y = 0; y < height; y += 1)\n sealPixel(0, y, 1, y);\n }\n if ((edges === null || edges === void 0 ? void 0 : edges.right) && width > 1) {\n for (let y = 0; y < height; y += 1)\n sealPixel(width - 1, y, width - 2, y);\n }\n if ((edges === null || edges === void 0 ? void 0 : edges.top) && height > 1) {\n for (let x = 0; x < width; x += 1)\n sealPixel(x, 0, x, 1);\n }\n if ((edges === null || edges === void 0 ? void 0 : edges.bottom) && height > 1) {\n for (let x = 0; x < width; x += 1)\n sealPixel(x, height - 1, x, height - 2);\n }\n canvasContext.putImageData(imageData, 0, 0);\n return target.quality === undefined\n ? offscreenCanvas.toDataURL(target.mimeType)\n : offscreenCanvas.toDataURL(target.mimeType, target.quality);\n}\nfunction getJpegBackgroundColor(backgroundColor) {\n return resolveCanvasFillStyle(backgroundColor);\n}\nfunction resolveCanvasFillStyle(backgroundColor, fallback = '#ffffff') {\n const value = String(backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : '').trim();\n if (!value || isTransparentCssColor(value))\n return '#ffffff';\n const context = createColorValidationContext();\n if (!context)\n return fallback;\n context.fillStyle = '#000001';\n const firstSentinel = context.fillStyle;\n context.fillStyle = value;\n const firstResolved = context.fillStyle;\n if (firstResolved !== firstSentinel)\n return firstResolved;\n context.fillStyle = '#000002';\n const secondSentinel = context.fillStyle;\n context.fillStyle = value;\n const secondResolved = context.fillStyle;\n if (secondResolved !== secondSentinel)\n return secondResolved;\n return fallback;\n}\nfunction createColorValidationContext() {\n try {\n if (typeof document === 'undefined' || typeof document.createElement !== 'function') {\n return null;\n }\n return document.createElement('canvas').getContext('2d');\n }\n catch {\n return null;\n }\n}\nfunction getCanvasDocument(canvas) {\n var _a, _b, _c, _d, _e;\n const canvasLike = canvas;\n return ((_e = (_c = (_b = (_a = canvasLike.getElement) === null || _a === void 0 ? void 0 : _a.call(canvasLike)) === null || _b === void 0 ? void 0 : _b.ownerDocument) !== null && _c !== void 0 ? _c : (_d = canvasLike.lowerCanvasEl) === null || _d === void 0 ? void 0 : _d.ownerDocument) !== null && _e !== void 0 ? _e : document);\n}\nfunction isTransparentCssColor(value) {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'transparent')\n return true;\n const hex = normalized.match(/^#([0-9a-f]{4}|[0-9a-f]{8})$/i);\n if (hex) {\n const digits = hex[1];\n const alpha = digits.length === 4 ? digits[3] : digits.slice(6, 8);\n return /^0+$/.test(alpha);\n }\n const commaAlpha = normalized.match(/^(?:rgba|hsla)\\((.*),\\s*([^,/)]+)\\)$/i);\n if (commaAlpha && isZeroCssAlpha(commaAlpha[2]))\n return true;\n const slashAlpha = normalized.match(/^[a-z][a-z0-9-]*\\([^/]+\\/\\s*([^)]+)\\)$/i);\n if (slashAlpha && isZeroCssAlpha(slashAlpha[1]))\n return true;\n return false;\n}\nfunction isZeroCssAlpha(value) {\n const alpha = value.trim();\n if (alpha.endsWith('%')) {\n const numericPercent = Number.parseFloat(alpha.slice(0, -1));\n return Number.isFinite(numericPercent) && numericPercent === 0;\n }\n const numericAlpha = Number.parseFloat(alpha);\n return Number.isFinite(numericAlpha) && numericAlpha === 0;\n}\nasync function convertDataUrlToOpaqueJpeg(dataUrl, backgroundColor, quality) {\n const imageElement = await loadImageElement(dataUrl);\n const { width, height } = getImageDimensions(imageElement);\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const canvasContext = offscreenCanvas.getContext('2d');\n if (!canvasContext)\n throw new Error('2D canvas context is unavailable');\n canvasContext.fillStyle = getJpegBackgroundColor(backgroundColor);\n canvasContext.fillRect(0, 0, width, height);\n canvasContext.drawImage(imageElement, 0, 0, width, height);\n return offscreenCanvas.toDataURL('image/jpeg', quality);\n}\nfunction dataUrlToBytes(dataUrl) {\n var _a;\n const match = /^data:image\\/[a-z0-9.+-]+;base64,([A-Za-z0-9+/=]+)$/i.exec(dataUrl);\n const base64 = (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : '';\n if (!base64) {\n throw new Error('exportImageFile received a malformed or empty image data URL.');\n }\n if (typeof globalThis.atob === 'function') {\n const binary = globalThis.atob(base64);\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = binary.length - 1; i >= 0; i -= 1) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n const bufferCtor = globalThis.Buffer;\n if (bufferCtor && typeof bufferCtor.from === 'function') {\n const source = bufferCtor.from(base64, 'base64');\n const buffer = new ArrayBuffer(source.length);\n const bytes = new Uint8Array(buffer);\n bytes.set(source);\n return bytes;\n }\n throw new Error('No base64 decoder is available for exportImageFile.');\n}\nasync function reencodeDataUrlAs(sourceDataUrl, target, backgroundColor) {\n if (sourceDataUrl.startsWith(`data:${target.mimeType}`)) {\n return sourceDataUrl;\n }\n const imageElement = await loadImageElement(sourceDataUrl);\n const { width, height } = getImageDimensions(imageElement);\n const offscreenCanvas = document.createElement('canvas');\n offscreenCanvas.width = width;\n offscreenCanvas.height = height;\n const canvasContext = offscreenCanvas.getContext('2d');\n if (!canvasContext) {\n throw new Error('Unable to acquire 2D context for export conversion');\n }\n if (target.format === 'jpeg') {\n canvasContext.fillStyle = getJpegBackgroundColor(backgroundColor);\n canvasContext.fillRect(0, 0, width, height);\n }\n canvasContext.drawImage(imageElement, 0, 0, width, height);\n return offscreenCanvas.toDataURL(target.mimeType, target.quality);\n}\nfunction warnNoImageLoaded(operation) {\n console.warn(`[ImageEditor] ${operation} skipped: no image is loaded on the canvas.`);\n}\nexport async function exportImageBase64(context, options) {\n if (!context.isImageLoaded()) {\n warnNoImageLoaded('exportImageBase64');\n return '';\n }\n const activeObject = captureActiveObject(context.canvas);\n const labelBackups = captureMaskLabelBackups(context.canvas);\n try {\n context.canvas.discardActiveObject();\n const resolved = resolveExportOptions(context, options);\n const { region, partialEdges } = computeExportRegion(context, resolved.exportArea);\n assertExportPixelBudget(context, resolved.multiplier, region);\n const renderFormat = region && resolved.format.format === 'jpeg' ? 'png' : resolved.format.format;\n const renderQuality = renderFormat === 'png' ? undefined : resolved.format.quality;\n let dataUrl = await withMaskExportState(context, resolved.mergeMask, async () => renderCanvasToDataUrl(context.canvas, renderFormat, renderQuality, resolved.multiplier, region));\n if (region) {\n const sealedFormat = resolved.format.format === 'jpeg'\n ? { format: 'png', mimeType: 'image/png', quality: undefined }\n : resolved.format;\n dataUrl = await sealPartialTransparentEdges(dataUrl, partialEdges, sealedFormat);\n if (resolved.format.format === 'jpeg') {\n dataUrl = await convertDataUrlToOpaqueJpeg(dataUrl, context.options.backgroundColor, resolved.format.quality);\n }\n }\n return dataUrl;\n }\n finally {\n restoreMaskLabelBackups(context.canvas, labelBackups);\n restoreActiveObject(context.canvas, activeObject);\n requestRender(context.canvas);\n }\n}\nexport async function exportImageFile(context, options) {\n var _a;\n if (!context.isImageLoaded()) {\n warnNoImageLoaded('exportImageFile');\n throw new ExportNotReadyError('exportImageFile');\n }\n const providedOptions = options !== null && options !== void 0 ? options : {};\n const fileName = (_a = providedOptions.fileName) !== null && _a !== void 0 ? _a : context.options.defaultDownloadFileName;\n const resolved = resolveExportFormat(providedOptions, context.options.downsampleQuality);\n const base64 = await exportImageBase64(context, {\n exportArea: providedOptions.exportArea,\n mergeMask: providedOptions.mergeMask,\n multiplier: providedOptions.multiplier,\n quality: providedOptions.quality,\n fileType: providedOptions.fileType,\n });\n if (!base64) {\n throw new ExportNotReadyError('exportImageFile');\n }\n const finalDataUrl = await reencodeDataUrlAs(base64, resolved, context.options.backgroundColor);\n let bytes;\n try {\n bytes = dataUrlToBytes(finalDataUrl);\n }\n catch (error) {\n throw new ExportError('exportImageFile failed to decode rendered data URL.', error);\n }\n return new File([bytes], fileName, { type: resolved.mimeType });\n}\nexport function downloadImage(context, fileName) {\n if (!context.isImageLoaded()) {\n warnNoImageLoaded('downloadImage');\n return;\n }\n const resolvedFileName = fileName !== null && fileName !== void 0 ? fileName : context.options.defaultDownloadFileName;\n void exportImageBase64(context, {\n exportArea: context.options.exportAreaByDefault,\n mergeMask: context.options.mergeMaskByDefault,\n multiplier: context.options.exportMultiplier,\n })\n .then((dataUrl) => {\n if (!dataUrl)\n return;\n const ownerDocument = getCanvasDocument(context.canvas);\n const link = ownerDocument.createElement('a');\n link.download = resolvedFileName;\n link.href = dataUrl;\n const body = ownerDocument.body;\n body.appendChild(link);\n try {\n link.click();\n }\n finally {\n body.removeChild(link);\n }\n })\n .catch((error) => {\n reportError(context.options, error, 'downloadImage failed.');\n console.error('[ImageEditor] downloadImage failed', error);\n });\n}\nexport async function mergeMasks(context) {\n if (!context.isImageLoaded())\n return;\n const masks = context.canvas\n .getObjects()\n .filter((o) => 'maskId' in o && typeof o.maskId === 'number');\n if (masks.length === 0)\n return;\n const beforeSnapshot = context.saveState();\n context.canvas.discardActiveObject();\n context.canvas.renderAll();\n const preScrollTop = context.containerElement ? context.containerElement.scrollTop : null;\n const preScrollLeft = context.containerElement ? context.containerElement.scrollLeft : null;\n try {\n const merged = await exportImageBase64(context, {\n exportArea: 'image',\n mergeMask: true,\n multiplier: context.options.exportMultiplier,\n fileType: 'png',\n });\n if (!merged) {\n throw new MergeMasksError('mergeMasks: exportImageBase64 returned an empty data URL.');\n }\n context.removeAllMasksNoHistory();\n await context.loadImage(merged, { preserveScroll: true });\n const afterSnapshot = context.saveState();\n if (context.containerElement) {\n try {\n if (preScrollTop !== null) {\n context.containerElement.scrollTop = preScrollTop;\n }\n if (preScrollLeft !== null) {\n context.containerElement.scrollLeft = preScrollLeft;\n }\n }\n catch (scrollError) {\n console.warn('[ImageEditor] mergeMasks: scroll restore failed', scrollError);\n }\n }\n if (beforeSnapshot && afterSnapshot && beforeSnapshot !== afterSnapshot) {\n context.historyManager.push(new Command(() => context.loadFromState(afterSnapshot), () => context.loadFromState(beforeSnapshot)));\n }\n }\n catch (error) {\n try {\n await context.loadFromState(beforeSnapshot);\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] mergeMasks: rollback failed', rollbackError);\n }\n if (error instanceof MergeMasksError)\n throw error;\n const message = error instanceof Error ? `mergeMasks failed: ${error.message}` : 'mergeMasks failed';\n throw new MergeMasksError(message, error);\n }\n}\n//# sourceMappingURL=export-service.js.map","export function forceReflow(element) {\n if (!element)\n return;\n void element.offsetWidth;\n}\n//# sourceMappingURL=dom.js.map","import { forceReflow } from '../utils/dom.js';\nexport function selectLayoutStrategy(mode) {\n return mode;\n}\nexport class ViewportCache {\n constructor() {\n Object.defineProperty(this, \"lastVisible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n }\n measure(container, fallback, scrollbarSize) {\n var _a;\n if (!container)\n return fallback;\n const containerWidth = Math.floor(container.clientWidth);\n const containerHeight = Math.floor(container.clientHeight);\n if (containerWidth > 0 && containerHeight > 0) {\n this.lastVisible = measureContainerViewport(container, fallback, scrollbarSize);\n return this.lastVisible;\n }\n return (_a = this.lastVisible) !== null && _a !== void 0 ? _a : fallback;\n }\n peek() {\n return this.lastVisible;\n }\n clear() {\n this.lastVisible = null;\n }\n}\nconst OVERFLOW_EPSILON = 0.5;\nfunction normalizeOverflowValue(value) {\n return String(value !== null && value !== void 0 ? value : '')\n .trim()\n .toLowerCase();\n}\nfunction getContainerOverflowValues(container) {\n var _a, _b;\n const style = container.style;\n let computedOverflow = '';\n let computedOverflowX = '';\n let computedOverflowY = '';\n const view = (_b = (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) !== null && _b !== void 0 ? _b : (typeof window === 'undefined' ? null : window);\n if (typeof (view === null || view === void 0 ? void 0 : view.getComputedStyle) === 'function') {\n const computed = view.getComputedStyle(container);\n computedOverflow = computed.overflow;\n computedOverflowX = computed.overflowX;\n computedOverflowY = computed.overflowY;\n }\n const x = [\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflow),\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflowX),\n normalizeOverflowValue(computedOverflow),\n normalizeOverflowValue(computedOverflowX),\n ];\n const y = [\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflow),\n normalizeOverflowValue(style === null || style === void 0 ? void 0 : style.overflowY),\n normalizeOverflowValue(computedOverflow),\n normalizeOverflowValue(computedOverflowY),\n ];\n return { x, y, all: [...x, ...y] };\n}\nfunction isAutoScrollableOverflow(value) {\n return value === 'auto' || value === 'overlay';\n}\nexport function measureScrollbarSize(ownerDocument) {\n const doc = ownerDocument !== null && ownerDocument !== void 0 ? ownerDocument : (typeof document === 'undefined' ? null : document);\n if (!(doc === null || doc === void 0 ? void 0 : doc.body))\n return { width: 0, height: 0 };\n const probe = doc.createElement('div');\n probe.style.position = 'absolute';\n probe.style.left = '-9999px';\n probe.style.top = '-9999px';\n probe.style.width = '100px';\n probe.style.height = '100px';\n probe.style.overflow = 'scroll';\n probe.style.visibility = 'hidden';\n probe.style.pointerEvents = 'none';\n doc.body.appendChild(probe);\n const width = Math.max(0, probe.offsetWidth - probe.clientWidth);\n const height = Math.max(0, probe.offsetHeight - probe.clientHeight);\n probe.remove();\n return { width, height };\n}\nfunction normalizeScrollbarSize(scrollbarSize) {\n return {\n width: Math.max(0, Number(scrollbarSize === null || scrollbarSize === void 0 ? void 0 : scrollbarSize.width) || 0),\n height: Math.max(0, Number(scrollbarSize === null || scrollbarSize === void 0 ? void 0 : scrollbarSize.height) || 0),\n };\n}\nexport function measureContainerViewport(container, fallback, scrollbarSize) {\n if (!container)\n return fallback;\n const clientWidth = Math.floor(container.clientWidth || 0);\n const clientHeight = Math.floor(container.clientHeight || 0);\n if (clientWidth <= 0 || clientHeight <= 0)\n return fallback;\n const overflow = getContainerOverflowValues(container);\n if (overflow.all.includes('scroll')) {\n return { width: clientWidth, height: clientHeight };\n }\n const scrollbar = normalizeScrollbarSize(scrollbarSize);\n const canAutoScrollX = overflow.x.some(isAutoScrollableOverflow);\n const canAutoScrollY = overflow.y.some(isAutoScrollableOverflow);\n const scrollWidth = Math.ceil(container.scrollWidth || 0);\n const scrollHeight = Math.ceil(container.scrollHeight || 0);\n const hasHorizontalScrollbar = canAutoScrollX && scrollWidth > clientWidth + OVERFLOW_EPSILON;\n const hasVerticalScrollbar = canAutoScrollY && scrollHeight > clientHeight + OVERFLOW_EPSILON;\n return {\n width: clientWidth + (hasVerticalScrollbar ? scrollbar.width : 0),\n height: clientHeight + (hasHorizontalScrollbar ? scrollbar.height : 0),\n };\n}\nexport function computeScrollableCanvasSize(contentWidth, contentHeight, viewport, scrollbarSize) {\n const viewportW = Math.max(1, viewport.width || 1);\n const viewportH = Math.max(1, viewport.height || 1);\n const scrollbar = normalizeScrollbarSize(scrollbarSize);\n let hasHorizontal = false;\n let hasVertical = false;\n for (let i = 0; i < 4; i += 1) {\n const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n const nextHorizontal = contentWidth > effectiveW + OVERFLOW_EPSILON;\n const nextVertical = contentHeight > effectiveH + OVERFLOW_EPSILON;\n if (nextHorizontal === hasHorizontal && nextVertical === hasVertical)\n break;\n hasHorizontal = nextHorizontal;\n hasVertical = nextVertical;\n }\n const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n return {\n width: hasHorizontal ? Math.ceil(contentWidth) : effectiveW,\n height: hasVertical ? Math.ceil(contentHeight) : effectiveH,\n };\n}\nexport function computeFitLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize) {\n const canvasWidth = Math.max(1, (containerSize.width || optionsCanvasWidth) - 1);\n const canvasHeight = Math.max(1, (containerSize.height || optionsCanvasHeight) - 1);\n const fitScale = Math.min(canvasWidth / imageWidth, canvasHeight / imageHeight, 1);\n return {\n canvasWidth,\n canvasHeight,\n imageScale: fitScale,\n imageLeft: 0,\n imageTop: 0,\n baseImageScale: fitScale,\n };\n}\nexport function computeCoverLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize, scrollbarSize) {\n const viewportW = containerSize.width || optionsCanvasWidth;\n const viewportH = containerSize.height || optionsCanvasHeight;\n const scrollbar = normalizeScrollbarSize(scrollbarSize);\n let hasHorizontal = false;\n let hasVertical = false;\n let coverScale = 1;\n let scaledW = imageWidth;\n let scaledH = imageHeight;\n for (let i = 0; i < 4; i += 1) {\n const effectiveW = Math.max(1, viewportW - (hasVertical ? scrollbar.width : 0));\n const effectiveH = Math.max(1, viewportH - (hasHorizontal ? scrollbar.height : 0));\n coverScale = Math.min(1, Math.max(effectiveW / imageWidth, effectiveH / imageHeight));\n scaledW = imageWidth * coverScale;\n scaledH = imageHeight * coverScale;\n const nextHasHorizontal = scaledW > effectiveW + OVERFLOW_EPSILON;\n const nextHasVertical = scaledH > effectiveH + OVERFLOW_EPSILON;\n if (nextHasHorizontal === hasHorizontal && nextHasVertical === hasVertical)\n break;\n hasHorizontal = nextHasHorizontal;\n hasVertical = nextHasVertical;\n }\n const canvasSize = computeScrollableCanvasSize(scaledW, scaledH, {\n width: viewportW,\n height: viewportH,\n }, scrollbar);\n return {\n canvasWidth: canvasSize.width,\n canvasHeight: canvasSize.height,\n imageScale: coverScale,\n imageLeft: 0,\n imageTop: 0,\n baseImageScale: coverScale,\n };\n}\nexport function computeExpandLayout(imageWidth, imageHeight, optionsCanvasWidth, optionsCanvasHeight, containerSize) {\n const canvasWidth = Math.max(containerSize.width, Math.floor(imageWidth));\n const canvasHeight = Math.max(containerSize.height, Math.floor(imageHeight));\n return {\n canvasWidth,\n canvasHeight,\n imageScale: 1,\n imageLeft: 0,\n imageTop: 0,\n baseImageScale: 1,\n };\n}\nexport function applyCanvasDimensions(canvas, width, height, containerElement) {\n const integerWidth = Math.max(1, Math.round(Number(width) || 1));\n const integerHeight = Math.max(1, Math.round(Number(height) || 1));\n canvas.setDimensions({ width: integerWidth, height: integerHeight });\n forceReflow(containerElement);\n}\n//# sourceMappingURL=layout-manager.js.map","import { reportError, reportWarning } from '../core/callback-reporter.js';\nimport { ImageDecodeError } from '../core/errors.js';\nimport { saveState, SNAPSHOT_CUSTOM_KEYS } from '../core/state-serializer.js';\nimport { withTimeout } from '../utils/timeout.js';\nimport { computeCoverLayout, computeExpandLayout, computeFitLayout, selectLayoutStrategy, applyCanvasDimensions, measureScrollbarSize, } from './layout-manager.js';\nimport { computeDownsampleDimensions, detectSourceMimeType, resampleImage, } from './image-resampler.js';\nexport async function loadImage(context, imageBase64, loadOptions = {}) {\n if (typeof imageBase64 !== 'string' || !imageBase64.startsWith('data:image/')) {\n return;\n }\n const placeholderHidden = context.placeholderElement\n ? !!context.placeholderElement.hidden\n : null;\n const containerScrollTop = context.containerElement ? context.containerElement.scrollTop : null;\n const containerScrollLeft = context.containerElement\n ? context.containerElement.scrollLeft\n : null;\n const bundle = {\n placeholderHidden,\n containerScrollTop,\n containerScrollLeft,\n originalImage: context.getOriginalImage(),\n isImageLoadedToCanvas: context.getIsImageLoadedToCanvas(),\n lastSnapshot: context.getLastSnapshot(),\n canvasJson: serializeCanvas(context.canvas),\n maskCounter: context.getMaskCounter(),\n currentScale: context.getCurrentScale(),\n currentRotation: context.getCurrentRotation(),\n baseImageScale: context.getBaseImageScale(),\n currentImageMimeType: context.getCurrentImageMimeType(),\n };\n try {\n context.setPlaceholderVisible(false);\n const decode = startImageDecode(imageBase64);\n let imageElement;\n try {\n imageElement = await withTimeout(decode.promise, context.options.imageLoadTimeoutMs, 'image decode');\n }\n catch (error) {\n decode.cleanup(true);\n throw error;\n }\n const loadSource = maybeDownsample(imageElement, imageBase64, context.options, getCanvasDocument(context.canvas));\n const fabricImage = await withTimeout(context.fabric.FabricImage.fromURL(loadSource.dataUrl, { crossOrigin: 'anonymous' }), context.options.imageLoadTimeoutMs, 'FabricImage.fromURL');\n context.canvas.discardActiveObject();\n context.canvas.clear();\n context.canvas.backgroundColor = context.options.backgroundColor;\n fabricImage.set({\n originX: 'left',\n originY: 'top',\n selectable: false,\n evented: false,\n });\n const layout = computeLayout(context, fabricImage);\n applyCanvasDimensions(context.canvas, layout.canvasWidth, layout.canvasHeight, context.containerElement);\n fabricImage.set({ left: layout.imageLeft, top: layout.imageTop });\n fabricImage.scale(layout.imageScale);\n context.canvas.add(fabricImage);\n context.canvas.sendObjectToBack(fabricImage);\n context.setOriginalImage(fabricImage);\n context.setBaseImageScale(layout.baseImageScale);\n context.setCurrentScale(1);\n context.setCurrentRotation(0);\n context.setMaskCounter(0);\n context.setIsImageLoadedToCanvas(true);\n context.setCurrentImageMimeType(loadSource.mimeType);\n context.canvas.renderAll();\n context.setLastSnapshot(saveState({\n canvas: context.canvas,\n currentScale: 1,\n currentRotation: 0,\n baseImageScale: layout.baseImageScale,\n currentImageMimeType: loadSource.mimeType,\n }));\n if (loadOptions.preserveScroll === true && context.containerElement) {\n try {\n if (bundle.containerScrollTop !== null) {\n context.containerElement.scrollTop = bundle.containerScrollTop;\n }\n if (bundle.containerScrollLeft !== null) {\n context.containerElement.scrollLeft = bundle.containerScrollLeft;\n }\n }\n catch (error) {\n console.warn('[ImageEditor] preserveScroll restore failed', error);\n }\n }\n }\n catch (error) {\n await replayRollback(context, bundle);\n const errorMessage = error instanceof Error ? `loadImage failed: ${error.message}` : 'loadImage failed';\n reportError(context.options, error, errorMessage);\n throw error;\n }\n}\nfunction startImageDecode(dataUrl) {\n const imageElement = new Image();\n const cleanup = (clearSource = false) => {\n if (typeof imageElement.removeEventListener === 'function') {\n imageElement.removeEventListener('load', handleLoad);\n imageElement.removeEventListener('error', handleError);\n }\n else {\n imageElement.onload = null;\n imageElement.onerror = null;\n }\n if (clearSource) {\n imageElement.src = '';\n }\n };\n const handleLoad = () => {\n if (!hasNaturalImageDimensions(imageElement)) {\n cleanup(true);\n rejectImage(new ImageDecodeError('Failed to decode image data URL: image has no natural dimensions.', null));\n return;\n }\n cleanup(false);\n resolveImage(imageElement);\n };\n const handleError = (e) => {\n cleanup(true);\n rejectImage(new ImageDecodeError('Failed to decode image data URL.', e));\n };\n let resolveImage;\n let rejectImage;\n const promise = new Promise((resolve, reject) => {\n resolveImage = resolve;\n rejectImage = reject;\n if (typeof imageElement.addEventListener === 'function') {\n imageElement.addEventListener('load', handleLoad, { once: true });\n imageElement.addEventListener('error', handleError, { once: true });\n }\n else {\n imageElement.onload = handleLoad;\n imageElement.onerror = handleError;\n }\n imageElement.src = dataUrl;\n });\n return { promise, cleanup };\n}\nfunction hasNaturalImageDimensions(imageElement) {\n return (Number.isFinite(imageElement.naturalWidth) &&\n Number.isFinite(imageElement.naturalHeight) &&\n imageElement.naturalWidth > 0 &&\n imageElement.naturalHeight > 0);\n}\nfunction isPositiveFinite(value) {\n return Number.isFinite(value) && value > 0;\n}\nfunction toSupportedImageMimeType(mimeType) {\n return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp'\n ? mimeType\n : null;\n}\nfunction maybeDownsample(imageElement, originalDataUrl, options, ownerDocument) {\n const originalMimeType = toSupportedImageMimeType(detectSourceMimeType(originalDataUrl));\n if (!options.downsampleOnLoad) {\n return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n }\n if (!isPositiveFinite(options.downsampleMaxWidth) ||\n !isPositiveFinite(options.downsampleMaxHeight)) {\n reportWarning(options, null, 'loadImage skipped downsampling because downsample bounds are invalid.');\n return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n }\n const downsampleDimensions = computeDownsampleDimensions(imageElement.naturalWidth, imageElement.naturalHeight, options.downsampleMaxWidth, options.downsampleMaxHeight);\n if (!downsampleDimensions.needsResize) {\n return { dataUrl: originalDataUrl, mimeType: originalMimeType };\n }\n const sourceMime = detectSourceMimeType(originalDataUrl);\n const resampledImage = resampleImage(imageElement, options.downsampleMaxWidth, options.downsampleMaxHeight, sourceMime, options.preserveSourceFormat, options.downsampleMimeType, options.downsampleQuality, ownerDocument);\n const actualMimeType = toSupportedImageMimeType(detectSourceMimeType(resampledImage.dataUrl));\n return {\n dataUrl: resampledImage.dataUrl,\n mimeType: actualMimeType !== null && actualMimeType !== void 0 ? actualMimeType : resampledImage.mimeType,\n };\n}\nfunction getCanvasDocument(canvas) {\n var _a, _b, _c, _d, _e;\n const canvasLike = canvas;\n return ((_e = (_c = (_b = (_a = canvasLike.getElement) === null || _a === void 0 ? void 0 : _a.call(canvasLike)) === null || _b === void 0 ? void 0 : _b.ownerDocument) !== null && _c !== void 0 ? _c : (_d = canvasLike.lowerCanvasEl) === null || _d === void 0 ? void 0 : _d.ownerDocument) !== null && _e !== void 0 ? _e : (typeof document !== 'undefined' ? document : undefined));\n}\nfunction computeLayout(context, fabricImage) {\n var _a, _b, _c, _d;\n const imageWidth = (_a = fabricImage.width) !== null && _a !== void 0 ? _a : 0;\n const imageHeight = (_b = fabricImage.height) !== null && _b !== void 0 ? _b : 0;\n const scrollbarSize = measureScrollbarSize((_d = (_c = context.containerElement) === null || _c === void 0 ? void 0 : _c.ownerDocument) !== null && _d !== void 0 ? _d : null);\n const viewport = context.viewportCache.measure(context.containerElement, {\n width: context.options.canvasWidth,\n height: context.options.canvasHeight,\n }, scrollbarSize);\n const strategy = selectLayoutStrategy(context.options.layoutMode);\n if (strategy === 'fit') {\n return computeFitLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport);\n }\n if (strategy === 'cover') {\n return computeCoverLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport, scrollbarSize);\n }\n return computeExpandLayout(imageWidth, imageHeight, context.options.canvasWidth, context.options.canvasHeight, viewport);\n}\nfunction serializeCanvas(canvas) {\n canvas.discardActiveObject();\n const json = canvas.toJSON(SNAPSHOT_CUSTOM_KEYS);\n return JSON.stringify(json);\n}\nasync function replayRollback(context, bundle) {\n try {\n await context.canvas.loadFromJSON(JSON.parse(bundle.canvasJson));\n context.canvas.renderAll();\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] rollback: loadFromJSON failed', rollbackError);\n }\n context.setOriginalImage(bundle.originalImage);\n context.setIsImageLoadedToCanvas(bundle.isImageLoadedToCanvas);\n context.setLastSnapshot(bundle.lastSnapshot);\n context.setMaskCounter(bundle.maskCounter);\n context.setCurrentScale(bundle.currentScale);\n context.setCurrentRotation(bundle.currentRotation);\n context.setBaseImageScale(bundle.baseImageScale);\n context.setCurrentImageMimeType(bundle.currentImageMimeType);\n if (context.containerElement) {\n try {\n if (bundle.containerScrollTop !== null) {\n context.containerElement.scrollTop = bundle.containerScrollTop;\n }\n if (bundle.containerScrollLeft !== null) {\n context.containerElement.scrollLeft = bundle.containerScrollLeft;\n }\n }\n catch (rollbackError) {\n console.warn('[ImageEditor] rollback: scroll restore failed', rollbackError);\n }\n }\n if (bundle.placeholderHidden !== null) {\n context.setPlaceholderVisible(!bundle.placeholderHidden);\n }\n}\n//# sourceMappingURL=image-loader.js.map","const ANIMATION_SETTLE_GRACE_MS = 1000;\nexport function animateProps(object, props, options, guard) {\n return new Promise((resolve, reject) => {\n const propCount = Object.keys(props).length;\n if (propCount === 0 || guard.isDisposed()) {\n resolve();\n return;\n }\n let completed = 0;\n let settled = false;\n let aborters = [];\n let timeoutId = null;\n let unregisterAborter = null;\n const cleanup = () => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n unregisterAborter === null || unregisterAborter === void 0 ? void 0 : unregisterAborter();\n unregisterAborter = null;\n };\n const settle = () => {\n if (settled)\n return;\n settled = true;\n cleanup();\n resolve();\n };\n const fail = (error) => {\n if (settled)\n return;\n settled = true;\n cleanup();\n reject(error);\n };\n const abortAndSettle = () => {\n for (const abort of aborters) {\n try {\n abort();\n }\n catch {\n }\n }\n settle();\n };\n const duration = Number.isFinite(options.duration) ? Math.max(0, options.duration) : 0;\n timeoutId = setTimeout(abortAndSettle, duration + ANIMATION_SETTLE_GRACE_MS);\n unregisterAborter = guard.registerAnimationAborter(abortAndSettle);\n try {\n const animationResult = object.animate(props, {\n duration: options.duration,\n onChange: () => {\n var _a;\n if (guard.isDisposed())\n return;\n (_a = options.onChange) === null || _a === void 0 ? void 0 : _a.call(options);\n },\n onComplete: () => {\n if (++completed >= propCount)\n settle();\n },\n });\n aborters = collectAnimationAborters(animationResult);\n }\n catch (error) {\n fail(error);\n }\n });\n}\nfunction collectAnimationAborters(animationResult) {\n const handles = Array.isArray(animationResult)\n ? animationResult\n : animationResult && typeof animationResult === 'object'\n ? Object.values(animationResult)\n : [animationResult];\n return handles.flatMap((handle) => {\n const abort = handle === null || handle === void 0 ? void 0 : handle.abort;\n return typeof abort === 'function' ? [() => abort.call(handle)] : [];\n });\n}\nexport function restoreOrigin(object, originX, originY) {\n try {\n object.set({ originX, originY });\n object.setCoords();\n }\n catch {\n }\n}\n//# sourceMappingURL=fabric-animation.js.map","import { animateProps, restoreOrigin } from '../fabric/fabric-animation.js';\nexport class TransformController {\n constructor(context) {\n Object.defineProperty(this, \"context\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.context = context;\n }\n async scaleImage(factor) {\n if (!Number.isFinite(factor))\n return;\n const imageObject = this.context.getOriginalImage();\n if (!imageObject)\n return;\n if (this.context.guard.isAnimating())\n return;\n if (this.context.guard.isDisposed())\n return;\n const clamped = Math.max(this.context.options.minScale, Math.min(this.context.options.maxScale, factor));\n this.context.setCurrentScale(clamped);\n const targetAbs = this.context.getBaseImageScale() * clamped;\n try {\n const topLeft = computeTopLeftPoint(imageObject);\n imageObject.set({ originX: 'left', originY: 'top' });\n imageObject.setPositionByOrigin(topLeft, 'left', 'top');\n imageObject.setCoords();\n }\n catch (error) {\n console.warn('[ImageEditor] scaleImage: origin pre-anchor failed', error);\n }\n try {\n await this.context.guard.runAnimation(() => animateProps(imageObject, { scaleX: targetAbs, scaleY: targetAbs }, {\n duration: this.context.options.animationDuration,\n onChange: () => this.context.canvas.requestRenderAll(),\n }, this.context.guard));\n }\n catch (error) {\n console.warn('[ImageEditor] scaleImage animation error', error);\n return;\n }\n if (this.context.guard.isDisposed())\n return;\n imageObject.set({ scaleX: targetAbs, scaleY: targetAbs });\n imageObject.setCoords();\n if (this.context.afterTransformSnap)\n this.context.afterTransformSnap();\n this.context.saveCanvasState();\n }\n async rotateImage(degrees) {\n if (!Number.isFinite(degrees))\n return;\n const imageObject = this.context.getOriginalImage();\n if (!imageObject)\n return;\n if (this.context.guard.isAnimating())\n return;\n if (this.context.guard.isDisposed())\n return;\n this.context.setCurrentRotation(degrees);\n try {\n const centre = imageObject.getCenterPoint();\n imageObject.set({ originX: 'center', originY: 'center' });\n imageObject.setPositionByOrigin(centre, 'center', 'center');\n imageObject.setCoords();\n }\n catch (error) {\n console.warn('[ImageEditor] rotateImage: origin pre-anchor failed', error);\n }\n let animationFailed = false;\n try {\n await this.context.guard.runAnimation(() => animateProps(imageObject, { angle: degrees }, {\n duration: this.context.options.animationDuration,\n onChange: () => this.context.canvas.requestRenderAll(),\n }, this.context.guard));\n }\n catch (error) {\n animationFailed = true;\n console.warn('[ImageEditor] rotateImage animation error', error);\n }\n finally {\n if (this.context.guard.isDisposed()) {\n restoreOrigin(imageObject, 'left', 'top');\n }\n }\n if (animationFailed)\n return;\n if (this.context.guard.isDisposed())\n return;\n imageObject.set('angle', degrees);\n imageObject.setCoords();\n if (this.context.afterTransformSnap)\n this.context.afterTransformSnap();\n try {\n const newTopLeft = computeTopLeftPoint(imageObject);\n imageObject.set({ originX: 'left', originY: 'top' });\n imageObject.setPositionByOrigin(newTopLeft, 'left', 'top');\n imageObject.setCoords();\n }\n catch (error) {\n console.warn('[ImageEditor] rotateImage: origin post-restore failed', error);\n }\n this.context.saveCanvasState();\n }\n async resetImageTransform() {\n if (!this.context.getOriginalImage())\n return;\n this.context.setSuppressSaveState(true);\n try {\n await this.scaleImage(1);\n await this.rotateImage(0);\n }\n finally {\n this.context.setSuppressSaveState(false);\n }\n if (this.context.guard.isDisposed())\n return;\n this.context.saveCanvasState();\n }\n}\nfunction computeTopLeftPoint(object) {\n object.setCoords();\n const coords = object.getCoords();\n const first = coords[0];\n if (first)\n return first;\n const boundingRect = object.getBoundingRect();\n return { x: boundingRect.left, y: boundingRect.top };\n}\n//# sourceMappingURL=transform-controller.js.map","export function resolveNumeric(val, axis, fallback, canvas, options) {\n if (typeof val === 'number') {\n return val;\n }\n if (typeof val === 'function') {\n return val(canvas, options);\n }\n if (typeof val === 'string' && val.endsWith('%')) {\n const pct = parseFloat(val);\n if (!Number.isFinite(pct)) {\n return fallback;\n }\n const dim = axis === 'x' ? canvas.getWidth() : canvas.getHeight();\n return Math.floor(dim * (pct / 100));\n }\n return fallback;\n}\nexport function coercePoint(pt) {\n if (Array.isArray(pt)) {\n return { x: Number(pt[0]), y: Number(pt[1]) };\n }\n return { x: Number(pt.x), y: Number(pt.y) };\n}\n//# sourceMappingURL=number.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nimport { attachMaskHoverHandlers, detachMaskHoverHandlers } from './mask-style.js';\nimport { coercePoint, resolveNumeric } from '../utils/number.js';\nconst POLYGON_AREA_EPSILON = 1e-6;\nfunction createMaskUid(maskId) {\n return `mask-${maskId}`;\n}\nfunction isFabricObjectLike(value) {\n if (!value || typeof value !== 'object')\n return false;\n const candidate = value;\n return typeof candidate.set === 'function' && typeof candidate.on === 'function';\n}\nfunction isStyleObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nfunction mergeMaskConfig(defaultMaskConfig, config) {\n const safeDefaultConfig = { ...defaultMaskConfig };\n const defaultStyles = safeDefaultConfig.styles;\n delete safeDefaultConfig.onCreate;\n delete safeDefaultConfig.fabricGenerator;\n delete safeDefaultConfig.styles;\n const configStyles = isStyleObject(config.styles) ? config.styles : {};\n const safeDefaultStyles = isStyleObject(defaultStyles) ? defaultStyles : {};\n return {\n ...safeDefaultConfig,\n ...config,\n styles: {\n ...safeDefaultStyles,\n ...configStyles,\n },\n };\n}\nfunction warnInvalidMask(options, reason) {\n reportWarning(options, null, `createMask skipped: ${reason}.`);\n}\nfunction isResolvableNumericInput(value) {\n if (value === undefined)\n return true;\n if (typeof value === 'number')\n return Number.isFinite(value);\n if (typeof value === 'function')\n return true;\n if (typeof value === 'string' && value.endsWith('%')) {\n return Number.isFinite(Number.parseFloat(value));\n }\n return false;\n}\nfunction isFiniteNumber(value) {\n return typeof value === 'number' && Number.isFinite(value);\n}\nfunction validateFiniteField(options, fieldName, value) {\n if (isFiniteNumber(value))\n return true;\n warnInvalidMask(options, `${fieldName} must resolve to a finite number`);\n return false;\n}\nfunction validatePositiveField(options, fieldName, value) {\n if (isFiniteNumber(value) && value > 0)\n return true;\n warnInvalidMask(options, `${fieldName} must resolve to a positive number`);\n return false;\n}\nfunction validateNonNegativeField(options, fieldName, value) {\n if (isFiniteNumber(value) && value >= 0)\n return true;\n warnInvalidMask(options, `${fieldName} must resolve to a non-negative number`);\n return false;\n}\nfunction validateNumericInputs(options, config) {\n const fields = [\n ['width', config.width],\n ['height', config.height],\n ['rx', config.rx],\n ['ry', config.ry],\n ['radius', config.radius],\n ['left', config.left],\n ['top', config.top],\n ];\n for (const [fieldName, value] of fields) {\n if (!isResolvableNumericInput(value)) {\n warnInvalidMask(options, `${fieldName} is not a supported numeric value`);\n return false;\n }\n }\n return true;\n}\nfunction resolvePolygonPoints(options, points) {\n if (!Array.isArray(points) || points.length < 3) {\n warnInvalidMask(options, 'polygon masks require at least three points');\n return null;\n }\n const resolvedPoints = points.map(coercePoint);\n const allFinite = resolvedPoints.every((point) => Number.isFinite(point.x) && Number.isFinite(point.y));\n if (!allFinite) {\n warnInvalidMask(options, 'polygon points must contain finite x/y values');\n return null;\n }\n if (polygonArea(resolvedPoints) <= POLYGON_AREA_EPSILON) {\n warnInvalidMask(options, 'polygon points must describe a non-zero area');\n return null;\n }\n return resolvedPoints;\n}\nfunction polygonArea(points) {\n let area = 0;\n for (let index = 0; index < points.length; index += 1) {\n const current = points[index];\n const next = points[(index + 1) % points.length];\n area += current.x * next.y - next.x * current.y;\n }\n return Math.abs(area) / 2;\n}\nexport function createMask(context, config = {}) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n const { canvas, options, fabric: fabricModule } = context;\n if (!canvas)\n return null;\n const mergedConfig = mergeMaskConfig(options.defaultMaskConfig, config);\n const shapeType = (_a = mergedConfig.shape) !== null && _a !== void 0 ? _a : 'rect';\n if (!validateNumericInputs(options, mergedConfig))\n return null;\n const resolvedConfig = {\n width: options.defaultMaskWidth,\n height: options.defaultMaskHeight,\n color: 'rgba(0,0,0,0.5)',\n alpha: 0.5,\n gap: 5,\n left: undefined,\n top: undefined,\n angle: 0,\n selectable: true,\n ...mergedConfig,\n shape: shapeType,\n };\n const firstOffset = 10;\n let left;\n let top;\n const previousMask = context.getLastMask();\n if (mergedConfig.left === undefined && previousMask) {\n const previousRight = ((_b = previousMask.left) !== null && _b !== void 0 ? _b : 0) +\n (typeof previousMask.getScaledWidth === 'function'\n ? previousMask.getScaledWidth()\n : ((_c = previousMask.width) !== null && _c !== void 0 ? _c : 0) * ((_d = previousMask.scaleX) !== null && _d !== void 0 ? _d : 1));\n left = Math.round(previousRight + ((_e = resolvedConfig.gap) !== null && _e !== void 0 ? _e : 5));\n top = (_f = previousMask.top) !== null && _f !== void 0 ? _f : firstOffset;\n }\n else {\n left = resolveNumeric(mergedConfig.left, 'x', firstOffset, canvas, options);\n top = resolveNumeric(mergedConfig.top, 'y', firstOffset, canvas, options);\n }\n resolvedConfig.width = resolveNumeric(mergedConfig.width, 'x', options.defaultMaskWidth, canvas, options);\n resolvedConfig.height = resolveNumeric(mergedConfig.height, 'y', options.defaultMaskHeight, canvas, options);\n const rx = mergedConfig.rx !== undefined\n ? resolveNumeric(mergedConfig.rx, 'x', 0, canvas, options)\n : undefined;\n const ry = mergedConfig.ry !== undefined\n ? resolveNumeric(mergedConfig.ry, 'y', 0, canvas, options)\n : undefined;\n const radius = shapeType === 'circle'\n ? resolveNumeric(mergedConfig.radius, 'x', Math.min(resolvedConfig.width, resolvedConfig.height) / 2, canvas, options)\n : undefined;\n const polygonPoints = shapeType === 'polygon' ? resolvePolygonPoints(options, mergedConfig.points) : null;\n if (!validateFiniteField(options, 'left', left) ||\n !validateFiniteField(options, 'top', top) ||\n !validatePositiveField(options, 'width', resolvedConfig.width) ||\n !validatePositiveField(options, 'height', resolvedConfig.height) ||\n !validateFiniteField(options, 'gap', resolvedConfig.gap) ||\n !validateFiniteField(options, 'angle', resolvedConfig.angle) ||\n !validateFiniteField(options, 'alpha', resolvedConfig.alpha)) {\n return null;\n }\n if ((rx !== undefined && !validateNonNegativeField(options, 'rx', rx)) ||\n (ry !== undefined && !validateNonNegativeField(options, 'ry', ry)) ||\n (radius !== undefined && !validatePositiveField(options, 'radius', radius)) ||\n (shapeType === 'polygon' && polygonPoints === null)) {\n return null;\n }\n if (options.layoutMode === 'expand') {\n const requiredWidth = Math.ceil(left + resolvedConfig.width + 10);\n const requiredHeight = Math.ceil(top + resolvedConfig.height + 10);\n const nextWidth = Math.max(canvas.getWidth(), requiredWidth);\n const nextHeight = Math.max(canvas.getHeight(), requiredHeight);\n if (nextWidth !== canvas.getWidth() || nextHeight !== canvas.getHeight()) {\n if (context.expandCanvasIfNeeded) {\n context.expandCanvasIfNeeded(nextWidth, nextHeight);\n }\n else {\n canvas.setDimensions({ width: nextWidth, height: nextHeight });\n }\n }\n }\n let mask;\n if (typeof config.fabricGenerator === 'function') {\n const generated = config.fabricGenerator(resolvedConfig, canvas, options);\n if (!isFabricObjectLike(generated)) {\n reportWarning(options, generated, 'createMask skipped: fabricGenerator did not return a Fabric object.');\n return null;\n }\n mask = generated;\n }\n else {\n const originProps = {\n originX: 'left',\n originY: 'top',\n };\n switch (shapeType) {\n case 'circle':\n mask = new fabricModule.Circle({\n left,\n top,\n ...originProps,\n radius,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_g = resolvedConfig.angle) !== null && _g !== void 0 ? _g : 0,\n ...resolvedConfig.styles,\n });\n break;\n case 'ellipse':\n mask = new fabricModule.Ellipse({\n left,\n top,\n ...originProps,\n rx: rx !== null && rx !== void 0 ? rx : resolvedConfig.width / 2,\n ry: ry !== null && ry !== void 0 ? ry : resolvedConfig.height / 2,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_h = resolvedConfig.angle) !== null && _h !== void 0 ? _h : 0,\n ...resolvedConfig.styles,\n });\n break;\n case 'polygon': {\n const polygon = new fabricModule.Polygon(polygonPoints, {\n ...originProps,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_j = resolvedConfig.angle) !== null && _j !== void 0 ? _j : 0,\n ...resolvedConfig.styles,\n });\n polygon.setCoords();\n const boundingRect = polygon.getBoundingRect();\n const deltaX = left - boundingRect.left;\n const deltaY = top - boundingRect.top;\n polygon.set({\n left: ((_k = polygon.left) !== null && _k !== void 0 ? _k : 0) + deltaX,\n top: ((_l = polygon.top) !== null && _l !== void 0 ? _l : 0) + deltaY,\n });\n polygon.setCoords();\n mask = polygon;\n break;\n }\n case 'rect':\n default:\n mask = new fabricModule.Rect({\n left,\n top,\n ...originProps,\n width: resolvedConfig.width,\n height: resolvedConfig.height,\n fill: resolvedConfig.color,\n opacity: resolvedConfig.alpha,\n angle: (_m = resolvedConfig.angle) !== null && _m !== void 0 ? _m : 0,\n ...(rx !== undefined ? { rx } : {}),\n ...(ry !== undefined ? { ry } : {}),\n ...resolvedConfig.styles,\n });\n }\n }\n const maskObject = mask;\n maskObject.selectable = 'selectable' in mergedConfig ? !!mergedConfig.selectable : true;\n maskObject.evented = 'evented' in mergedConfig ? !!mergedConfig.evented : true;\n maskObject.hasControls = 'hasControls' in mergedConfig ? !!mergedConfig.hasControls : true;\n maskObject.transparentCorners =\n 'transparentCorners' in mergedConfig ? !!mergedConfig.transparentCorners : false;\n maskObject.strokeUniform =\n 'strokeUniform' in mergedConfig ? !!mergedConfig.strokeUniform : true;\n maskObject.lockRotation = !options.maskRotatable;\n maskObject.borderColor = (_o = mergedConfig.borderColor) !== null && _o !== void 0 ? _o : 'red';\n maskObject.cornerColor = (_p = mergedConfig.cornerColor) !== null && _p !== void 0 ? _p : 'black';\n maskObject.cornerSize = (_q = mergedConfig.cornerSize) !== null && _q !== void 0 ? _q : 8;\n const styles = ((_r = resolvedConfig.styles) !== null && _r !== void 0 ? _r : {});\n if ('stroke' in styles) {\n maskObject.stroke = styles.stroke;\n }\n else {\n maskObject.stroke = '#ccc';\n }\n if ('strokeWidth' in styles) {\n maskObject.strokeWidth = styles.strokeWidth;\n }\n else {\n maskObject.strokeWidth = 1;\n }\n if ('strokeDashArray' in styles) {\n maskObject.strokeDashArray = styles.strokeDashArray;\n }\n maskObject.originalAlpha = resolvedConfig.alpha;\n maskObject.originalStroke = maskObject.stroke;\n maskObject.originalStrokeWidth = maskObject.strokeWidth;\n attachMaskHoverHandlers(maskObject);\n const nextId = context.getMaskCounter() + 1;\n context.setMaskCounter(nextId);\n maskObject.maskId = nextId;\n maskObject.maskUid = createMaskUid(nextId);\n maskObject.maskName = `${options.maskName}${nextId}`;\n context.setLastMask(maskObject);\n canvas.add(maskObject);\n canvas.bringObjectToFront(maskObject);\n context.updateMaskList();\n if (resolvedConfig.selectable !== false) {\n canvas.setActiveObject(maskObject);\n }\n canvas.renderAll();\n context.saveCanvasState();\n if (typeof config.onCreate === 'function') {\n try {\n config.onCreate(maskObject, canvas);\n }\n catch (error) {\n reportWarning(options, error, 'createMask onCreate callback threw.');\n }\n }\n return maskObject;\n}\nexport function removeSelectedMask(context) {\n const active = context.canvas.getActiveObject();\n if (!active || !isMaskObject(active))\n return;\n context.removeLabelForMask(active);\n detachMaskHoverHandlers(active);\n context.canvas.remove(active);\n context.canvas.discardActiveObject();\n context.updateMaskList();\n context.canvas.renderAll();\n context.saveCanvasState();\n}\nexport function removeAllMasks(context, options = {}) {\n const masks = context.canvas.getObjects().filter(isMaskObject);\n if (masks.length === 0)\n return;\n for (const maskObject of masks) {\n context.removeLabelForMask(maskObject);\n detachMaskHoverHandlers(maskObject);\n context.canvas.remove(maskObject);\n }\n context.canvas.discardActiveObject();\n context.setLastMask(null);\n context.updateMaskList();\n context.canvas.renderAll();\n if (options.saveHistory !== false) {\n context.saveCanvasState();\n }\n}\n//# sourceMappingURL=mask-factory.js.map","import { isMaskObject } from '../core/public-types.js';\nimport { reportWarning } from '../core/callback-reporter.js';\nexport function removeLabelForMask(context, mask) {\n if (!context.canvas || !mask.labelObject)\n return;\n try {\n if (context.canvas.getObjects().includes(mask.labelObject)) {\n context.canvas.remove(mask.labelObject);\n }\n }\n catch {\n }\n try {\n delete mask.labelObject;\n }\n catch {\n }\n}\nexport function createLabelForMask(context, mask) {\n var _a;\n const { canvas, options, fabric: fabricModule } = context;\n if (!canvas || !options.maskLabelOnSelect)\n return;\n removeLabelForMask(context, mask);\n let labelTextObject = null;\n if (typeof options.label.create === 'function') {\n try {\n labelTextObject = options.label.create(mask, fabricModule);\n }\n catch (error) {\n reportWarning(options, error, 'label.create callback threw.');\n labelTextObject = null;\n }\n }\n if (!labelTextObject) {\n const indexForGetText = mask.maskId - 1;\n let labelText = mask.maskName;\n if (typeof options.label.getText === 'function') {\n try {\n labelText = options.label.getText(mask, indexForGetText);\n }\n catch (error) {\n reportWarning(options, error, 'label.getText callback threw.');\n labelText = mask.maskName;\n }\n }\n const textOptions = {\n left: 0,\n top: 0,\n ...((_a = options.label.textOptions) !== null && _a !== void 0 ? _a : {}),\n originX: 'left',\n originY: 'top',\n };\n labelTextObject = new fabricModule.FabricText(labelText, textOptions);\n }\n labelTextObject.maskLabel = true;\n mask.labelObject = labelTextObject;\n canvas.add(labelTextObject);\n canvas.bringObjectToFront(labelTextObject);\n syncMaskLabel(context, mask);\n}\nexport function syncMaskLabel(context, mask) {\n var _a, _b, _c;\n const { canvas, options } = context;\n if (!canvas || !options.maskLabelOnSelect || !mask.labelObject)\n return;\n const coords = (_a = mask.getCoords) === null || _a === void 0 ? void 0 : _a.call(mask);\n if (!(coords === null || coords === void 0 ? void 0 : coords.length))\n return;\n const tl = coords[0];\n if (!tl)\n return;\n const center = mask.getCenterPoint();\n const vx = center.x - tl.x;\n const vy = center.y - tl.y;\n const dist = Math.sqrt(vx * vx + vy * vy) || 1;\n const offset = Math.max(0, (_b = options.maskLabelOffset) !== null && _b !== void 0 ? _b : 3);\n mask.labelObject.set({\n left: Math.round(tl.x + (vx / dist) * offset),\n top: Math.round(tl.y + (vy / dist) * offset),\n angle: (_c = mask.angle) !== null && _c !== void 0 ? _c : 0,\n originX: 'left',\n originY: 'top',\n visible: true,\n });\n mask.labelObject.setCoords();\n canvas.renderAll();\n}\nexport function showLabelForMask(context, mask) {\n if (!context.options.maskLabelOnSelect)\n return;\n if (!mask.labelObject) {\n createLabelForMask(context, mask);\n }\n if (mask.labelObject) {\n mask.labelObject.visible = true;\n syncMaskLabel(context, mask);\n }\n}\nexport function hideAllMaskLabels(context) {\n const { canvas } = context;\n if (!canvas)\n return;\n const objs = canvas.getObjects();\n objs.filter((o) => o.maskLabel).forEach((l) => {\n try {\n canvas.remove(l);\n }\n catch {\n }\n });\n objs.filter(isMaskObject).forEach((o) => {\n try {\n delete o.labelObject;\n }\n catch {\n }\n });\n}\n//# sourceMappingURL=mask-label-manager.js.map","import { isMaskObject } from '../core/public-types.js';\nfunction getMaskListDocument(context) {\n var _a, _b, _c, _d, _e;\n const canvasLike = context.canvas;\n return ((_e = (_c = (_b = (_a = canvasLike === null || canvasLike === void 0 ? void 0 : canvasLike.getElement) === null || _a === void 0 ? void 0 : _a.call(canvasLike)) === null || _b === void 0 ? void 0 : _b.ownerDocument) !== null && _c !== void 0 ? _c : (_d = canvasLike === null || canvasLike === void 0 ? void 0 : canvasLike.lowerCanvasEl) === null || _d === void 0 ? void 0 : _d.ownerDocument) !== null && _e !== void 0 ? _e : document);\n}\nexport function renderMaskList(context) {\n const listId = context.getListElementId();\n if (!listId)\n return;\n const ownerDocument = getMaskListDocument(context);\n const listEl = ownerDocument.getElementById(listId);\n if (!listEl || !context.canvas)\n return;\n listEl.innerHTML = '';\n const canvas = context.canvas;\n canvas\n .getObjects()\n .filter(isMaskObject)\n .forEach((mask) => {\n const listItemElement = ownerDocument.createElement('li');\n listItemElement.className = 'list-group-item mask-item';\n listItemElement.textContent = mask.maskName;\n listItemElement.dataset.maskId = String(mask.maskId);\n listItemElement.onclick = () => {\n const id = Number(listItemElement.dataset.maskId);\n if (!Number.isFinite(id))\n return;\n const target = canvas\n .getObjects()\n .find((o) => isMaskObject(o) && o.maskId === id);\n if (!target)\n return;\n canvas.setActiveObject(target);\n context.onMaskSelected(target);\n };\n listEl.appendChild(listItemElement);\n });\n}\nexport function updateMaskListSelection(context, selectedMask) {\n const listId = context.getListElementId();\n if (!listId)\n return;\n const listEl = getMaskListDocument(context).getElementById(listId);\n if (!listEl)\n return;\n const selectedId = selectedMask ? String(selectedMask.maskId) : null;\n listEl.querySelectorAll('.mask-item').forEach((item) => {\n const isSelected = selectedId !== null && item.dataset.maskId === selectedId;\n item.classList.toggle('active', isSelected);\n });\n}\n//# sourceMappingURL=mask-list.js.map","export class DomBindings {\n constructor(resolveElementId, isDisposed, resolveDocument = () => document) {\n Object.defineProperty(this, \"registry\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"resolveElementId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isDisposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"resolveDocument\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.resolveElementId = resolveElementId;\n this.isDisposed = isDisposed;\n this.resolveDocument = resolveDocument;\n }\n bindIfExists(key, eventType, handler) {\n const id = this.resolveElementId(key);\n if (!id)\n return false;\n const element = this.resolveDocument().getElementById(id);\n if (!element)\n return false;\n const wrapped = (event) => {\n if (this.isDisposed())\n return;\n handler(event);\n };\n element.addEventListener(eventType, wrapped);\n this.registry.push({ elementKey: key, eventType, handler: wrapped });\n return true;\n }\n removeAll() {\n for (const entry of this.registry) {\n const id = this.resolveElementId(entry.elementKey);\n if (!id)\n continue;\n const element = this.resolveDocument().getElementById(id);\n if (!element)\n continue;\n try {\n element.removeEventListener(entry.eventType, entry.handler);\n }\n catch {\n }\n }\n this.registry = [];\n }\n size() {\n return this.registry.length;\n }\n}\n//# sourceMappingURL=dom-bindings.js.map","export function setPlaceholderVisible(placeholderElement, containerElement, show) {\n if (placeholderElement) {\n placeholderElement.hidden = !show;\n placeholderElement.setAttribute('aria-hidden', show ? 'false' : 'true');\n }\n if (containerElement) {\n containerElement.hidden = show;\n containerElement.setAttribute('aria-hidden', show ? 'true' : 'false');\n }\n}\n//# sourceMappingURL=visibility-state.js.map","export const SUPPORTED_IMAGE_EXTENSIONS = {\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n webp: 'image/webp',\n gif: 'image/gif',\n bmp: 'image/bmp',\n};\nexport const SUPPORTED_IMAGE_MIME_TYPES = new Set(Object.values(SUPPORTED_IMAGE_EXTENSIONS));\nexport function inferImageMimeType(file) {\n var _a, _b;\n if (file.type && SUPPORTED_IMAGE_MIME_TYPES.has(file.type))\n return file.type;\n if (file.type)\n return null;\n const match = /\\.([a-z0-9]+)$/i.exec(file.name);\n const ext = (_a = match === null || match === void 0 ? void 0 : match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (!ext)\n return null;\n return (_b = SUPPORTED_IMAGE_EXTENSIONS[ext]) !== null && _b !== void 0 ? _b : null;\n}\nexport function readFileAsDataUrl(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const fileReaderResult = reader.result;\n if (typeof fileReaderResult === 'string') {\n resolve(fileReaderResult);\n }\n else {\n reject(new Error('FileReader returned a non-string result'));\n }\n };\n reader.onerror = () => {\n var _a;\n reject((_a = reader.error) !== null && _a !== void 0 ? _a : new Error('FileReader error'));\n };\n reader.onabort = () => {\n reject(new Error('FileReader read aborted'));\n };\n reader.readAsDataURL(file);\n });\n}\nexport function resetFileInput(input) {\n if (!input)\n return;\n try {\n input.value = '';\n }\n catch {\n }\n}\n//# sourceMappingURL=file.js.map","import { AnimationQueue } from './animation/animation-queue.js';\nimport { reportError, reportWarning } from './core/callback-reporter.js';\nimport { areResolvedMosaicConfigsEqual, cloneResolvedMosaicConfig, getInvalidMosaicConfigFields, isLayoutMode, mergeMosaicConfigPatch, resolveOptions, } from './core/default-options.js';\nimport { OperationGuard } from './core/operation-guard.js';\nimport { loadFromState as loadFromStateImpl, saveState as saveStateImpl, } from './core/state-serializer.js';\nimport { Command, HistoryManager } from './history/history-manager.js';\nimport { detectFabric } from './fabric/fabric-adapter.js';\nimport { isMaskObject } from './core/public-types.js';\nimport { applyCrop as applyCropImpl, cancelCrop as cancelCropImpl, enterCropMode as enterCropModeImpl, } from './crop/crop-controller.js';\nimport { enterMosaicMode as enterMosaicModeImpl, exitMosaicMode as exitMosaicModeImpl, updateMosaicPreview, } from './mosaic/mosaic-controller.js';\nimport { downloadImage as downloadImageImpl, exportImageBase64 as exportImageBase64Impl, exportImageFile as exportImageFileImpl, mergeMasks as mergeMasksImpl, } from './export/export-service.js';\nimport { loadImage as loadImageImpl } from './image/image-loader.js';\nimport { ViewportCache, applyCanvasDimensions, computeScrollableCanvasSize, measureScrollbarSize, } from './image/layout-manager.js';\nimport { TransformController } from './image/transform-controller.js';\nimport { createMask as createMaskImpl, removeAllMasks as removeAllMasksImpl, removeSelectedMask as removeSelectedMaskImpl, } from './mask/mask-factory.js';\nimport { createLabelForMask, hideAllMaskLabels, removeLabelForMask, showLabelForMask, syncMaskLabel, } from './mask/mask-label-manager.js';\nimport { renderMaskList, updateMaskListSelection } from './mask/mask-list.js';\nimport { applyMaskSelectedStyle, applyMaskUnselectedStyle, reattachMaskHoverHandlers, } from './mask/mask-style.js';\nimport { DomBindings } from './ui/dom-bindings.js';\nimport { setPlaceholderVisible as setPlaceholderVisibleImpl } from './ui/visibility-state.js';\nimport { inferImageMimeType, readFileAsDataUrl, resetFileInput } from './utils/file.js';\nimport { detectSourceMimeType } from './image/image-resampler.js';\nconst LAYOUT_EPSILON = 0.5;\nconst INTERNAL_OPERATION_TOKEN = Symbol('ImageEditorInternalOperation');\nconst INTERNAL_ALLOW_DURING_ANIMATION_QUEUE = Symbol('ImageEditorAllowDuringAnimationQueue');\nconst CROP_MODE_CONTROL_KEYS = [\n 'scalePercentageInput',\n 'rotateLeftDegreesInput',\n 'rotateRightDegreesInput',\n 'rotateLeftButton',\n 'rotateRightButton',\n 'createMaskButton',\n 'removeSelectedMaskButton',\n 'removeAllMasksButton',\n 'mergeMasksButton',\n 'downloadImageButton',\n 'zoomInButton',\n 'zoomOutButton',\n 'resetImageTransformButton',\n 'undoButton',\n 'redoButton',\n 'imageInput',\n 'enterCropModeButton',\n 'applyCropButton',\n 'cancelCropButton',\n 'enterMosaicModeButton',\n 'exitMosaicModeButton',\n 'mosaicBrushSizeInput',\n 'mosaicBlockSizeInput',\n];\nconst CROP_MODE_ENABLED_KEYS = ['applyCropButton', 'cancelCropButton'];\nconst CROP_SESSION_ALLOWED_OPERATIONS = new Set(['applyCrop', 'cancelCrop']);\nconst MOSAIC_MODE_CONTROL_KEYS = [\n 'scalePercentageInput',\n 'rotateLeftDegreesInput',\n 'rotateRightDegreesInput',\n 'rotateLeftButton',\n 'rotateRightButton',\n 'createMaskButton',\n 'removeSelectedMaskButton',\n 'removeAllMasksButton',\n 'mergeMasksButton',\n 'downloadImageButton',\n 'zoomInButton',\n 'zoomOutButton',\n 'resetImageTransformButton',\n 'undoButton',\n 'redoButton',\n 'imageInput',\n 'enterCropModeButton',\n 'applyCropButton',\n 'cancelCropButton',\n 'enterMosaicModeButton',\n 'exitMosaicModeButton',\n 'mosaicBrushSizeInput',\n 'mosaicBlockSizeInput',\n];\nconst MOSAIC_MODE_ENABLED_KEYS = [\n 'exitMosaicModeButton',\n 'mosaicBrushSizeInput',\n 'mosaicBlockSizeInput',\n];\nconst MOSAIC_SESSION_ALLOWED_OPERATIONS = new Set([\n 'exitMosaicMode',\n 'applyMosaic',\n 'setMosaicConfig',\n 'resetMosaicConfig',\n 'setMosaicBrushSize',\n 'setMosaicBlockSize',\n 'saveState',\n]);\nconst SCROLLBAR_SETTLE_EPSILON = 1;\nconst IMAGE_EDITOR_OPERATIONS = new Set([\n 'init',\n 'loadImage',\n 'loadFromState',\n 'saveState',\n 'scaleImage',\n 'rotateImage',\n 'resetImageTransform',\n 'createMask',\n 'removeSelectedMask',\n 'removeAllMasks',\n 'mergeMasks',\n 'enterCropMode',\n 'applyCrop',\n 'cancelCrop',\n 'enterMosaicMode',\n 'exitMosaicMode',\n 'applyMosaic',\n 'setMosaicConfig',\n 'resetMosaicConfig',\n 'setMosaicBrushSize',\n 'setMosaicBlockSize',\n 'undo',\n 'redo',\n 'exportImageBase64',\n 'exportImageFile',\n 'downloadImage',\n 'dispose',\n]);\nfunction isImageEditorOperation(value) {\n return value !== null && IMAGE_EDITOR_OPERATIONS.has(value);\n}\nexport class ImageEditor {\n constructor(fabricModuleOrOptions = {}, options = {}) {\n var _a;\n Object.defineProperty(this, \"fabricModule\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"isFabricLoaded\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"currentLayoutMode\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'expand'\n });\n Object.defineProperty(this, \"defaultMosaicConfig\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"currentMosaicConfig\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"canvas\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"canvasElement\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"containerElement\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"placeholderElement\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"elements\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"elementOriginalDisabledMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"elementOriginalAriaDisabledMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"elementOriginalPointerEventsMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"originalImage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"baseImageScale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"currentScale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"currentRotation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"isImageLoadedToCanvas\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"currentImageMimeType\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"maskCounter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"lastMask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"lastSnapshot\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"historyManager\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"operationGuard\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"animQueue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"transformController\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"viewportCache\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ViewportCache()\n });\n Object.defineProperty(this, \"cropSession\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"mosaicSession\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"domBindings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"isDisposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"shouldSuppressSaveState\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"lastEmittedIsBusy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"activeStateRestoreOperation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"nextSelectionChangeContext\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n const detected = detectFabric(fabricModuleOrOptions, options);\n this.fabricModule = (_a = detected.fabric) !== null && _a !== void 0 ? _a : {};\n this.isFabricLoaded = detected.isFabricLoaded;\n this.options = resolveOptions(detected.options);\n this.currentLayoutMode = this.options.layoutMode;\n this.defaultMosaicConfig = this.options.defaultMosaicConfig;\n this.currentMosaicConfig = cloneResolvedMosaicConfig(this.defaultMosaicConfig);\n const rawDefaultLayoutMode = detected.options\n .defaultLayoutMode;\n if (rawDefaultLayoutMode !== undefined && !isLayoutMode(rawDefaultLayoutMode)) {\n reportWarning(this.options, new TypeError(`[ImageEditor] Unsupported defaultLayoutMode ` +\n `${JSON.stringify(rawDefaultLayoutMode)}. ` +\n 'Expected \"fit\", \"cover\", or \"expand\".'), 'Invalid defaultLayoutMode fell back to \"expand\".');\n }\n this.operationGuard = new OperationGuard();\n this.animQueue = new AnimationQueue();\n this.historyManager = new HistoryManager(this.options.maxHistorySize);\n }\n init(idMap = {}) {\n if (!this.isFabricLoaded) {\n const globalFabric = globalThis.fabric;\n if (!globalFabric ||\n typeof globalFabric.Canvas !== 'function') {\n return;\n }\n this.fabricModule = globalFabric;\n this.isFabricLoaded = true;\n }\n if (this.isDisposed)\n return;\n const defaults = {\n canvas: 'canvas',\n canvasContainer: null,\n imagePlaceholder: 'imagePlaceholder',\n scalePercentageInput: 'scalePercentageInput',\n rotateLeftDegreesInput: 'rotateLeftDegreesInput',\n rotateRightDegreesInput: 'rotateRightDegreesInput',\n rotateLeftButton: 'rotateLeftButton',\n rotateRightButton: 'rotateRightButton',\n createMaskButton: 'createMaskButton',\n removeSelectedMaskButton: 'removeSelectedMaskButton',\n removeAllMasksButton: 'removeAllMasksButton',\n mergeMasksButton: 'mergeMasksButton',\n downloadImageButton: 'downloadImageButton',\n maskList: 'maskList',\n zoomInButton: 'zoomInButton',\n zoomOutButton: 'zoomOutButton',\n resetImageTransformButton: 'resetImageTransformButton',\n undoButton: 'undoButton',\n redoButton: 'redoButton',\n imageInput: 'imageInput',\n enterCropModeButton: 'enterCropModeButton',\n applyCropButton: 'applyCropButton',\n cancelCropButton: 'cancelCropButton',\n enterMosaicModeButton: 'enterMosaicModeButton',\n exitMosaicModeButton: 'exitMosaicModeButton',\n mosaicBrushSizeInput: 'mosaicBrushSizeInput',\n mosaicBlockSizeInput: 'mosaicBlockSizeInput',\n uploadArea: 'uploadArea',\n };\n this.elements = { ...defaults, ...idMap };\n this.domBindings = new DomBindings((key) => this.elements[key], () => this.isDisposed, () => { var _a, _b; return (_b = (_a = this.canvasElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : document; });\n this.initCanvas();\n this.transformController = new TransformController(this.buildTransformContext());\n this.bindDomEvents();\n this.updateInputs();\n this.updateMaskList();\n this.updateUi();\n if (this.options.initialImageBase64) {\n void this.loadImage(this.options.initialImageBase64).catch(() => {\n });\n }\n else {\n this.updatePlaceholderStatus();\n }\n }\n initCanvas() {\n var _a;\n const id = this.elements.canvas;\n const canvasElement = id ? document.getElementById(id) : null;\n if (!canvasElement)\n throw new Error(`[ImageEditor] Canvas element not found: \"${id}\"`);\n this.canvasElement = canvasElement;\n const containerId = this.elements.canvasContainer;\n if (containerId) {\n this.containerElement =\n (_a = document.getElementById(containerId)) !== null && _a !== void 0 ? _a : canvasElement.parentElement;\n }\n else {\n this.containerElement = canvasElement.parentElement;\n }\n const placeholderId = this.elements.imagePlaceholder;\n this.placeholderElement = placeholderId ? document.getElementById(placeholderId) : null;\n let initialWidth = this.options.canvasWidth;\n let initialHeight = this.options.canvasHeight;\n if (this.containerElement) {\n const containerWidth = Math.floor(this.containerElement.clientWidth);\n const containerHeight = Math.floor(this.containerElement.clientHeight);\n if (containerWidth > 0 && containerHeight > 0) {\n initialWidth = containerWidth;\n initialHeight = containerHeight;\n }\n }\n this.canvas = new this.fabricModule.Canvas(canvasElement, {\n width: initialWidth,\n height: initialHeight,\n backgroundColor: this.options.backgroundColor,\n selection: this.options.groupSelection,\n preserveObjectStacking: true,\n });\n this.canvas.on('selection:created', (e) => {\n this.handleSelectionChanged(e.selected);\n });\n this.canvas.on('selection:updated', (e) => {\n this.handleSelectionChanged(e.selected);\n });\n this.canvas.on('selection:cleared', () => this.handleSelectionChanged([]));\n const onObjectEvent = (e) => {\n if (e.target && isMaskObject(e.target))\n this.syncMaskLabel(e.target);\n };\n const onObjectModified = (e) => {\n if (!e.target || !isMaskObject(e.target))\n return;\n this.syncMaskLabel(e.target);\n this.saveState();\n };\n this.canvas.on('object:moving', onObjectEvent);\n this.canvas.on('object:scaling', onObjectEvent);\n this.canvas.on('object:rotating', onObjectEvent);\n this.canvas.on('object:modified', onObjectModified);\n }\n bindDomEvents() {\n this.bindElementIfExists('uploadArea', 'click', () => {\n var _a;\n const inputId = this.elements.imageInput;\n if (inputId)\n (_a = document.getElementById(inputId)) === null || _a === void 0 ? void 0 : _a.click();\n });\n this.bindElementIfExists('imageInput', 'change', (e) => {\n var _a;\n const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];\n if (file)\n void this.loadImageFile(file);\n });\n this.bindElementIfExists('zoomInButton', 'click', () => {\n void this.scaleImage(this.currentScale + this.options.scaleStep);\n });\n this.bindElementIfExists('zoomOutButton', 'click', () => {\n void this.scaleImage(this.currentScale - this.options.scaleStep);\n });\n this.bindElementIfExists('resetImageTransformButton', 'click', () => {\n void this.resetImageTransform();\n });\n this.bindElementIfExists('createMaskButton', 'click', () => {\n this.createMask();\n });\n this.bindElementIfExists('removeSelectedMaskButton', 'click', () => {\n this.removeSelectedMask();\n });\n this.bindElementIfExists('removeAllMasksButton', 'click', () => {\n this.removeAllMasks();\n });\n this.bindElementIfExists('mergeMasksButton', 'click', () => {\n void this.mergeMasks();\n });\n this.bindElementIfExists('downloadImageButton', 'click', () => {\n this.downloadImage();\n });\n this.bindElementIfExists('undoButton', 'click', () => {\n this.undo();\n });\n this.bindElementIfExists('redoButton', 'click', () => {\n this.redo();\n });\n this.bindElementIfExists('rotateLeftButton', 'click', () => {\n const inputId = this.elements.rotateLeftDegreesInput;\n const inputEl = inputId\n ? document.getElementById(inputId)\n : null;\n let step = this.options.rotationStep;\n if (inputEl) {\n const parsedStep = parseFloat(inputEl.value);\n if (!isNaN(parsedStep))\n step = parsedStep;\n }\n void this.rotateImage(this.currentRotation - step);\n });\n this.bindElementIfExists('rotateRightButton', 'click', () => {\n const inputId = this.elements.rotateRightDegreesInput;\n const inputEl = inputId\n ? document.getElementById(inputId)\n : null;\n let step = this.options.rotationStep;\n if (inputEl) {\n const parsedStep = parseFloat(inputEl.value);\n if (!isNaN(parsedStep))\n step = parsedStep;\n }\n void this.rotateImage(this.currentRotation + step);\n });\n this.bindElementIfExists('enterCropModeButton', 'click', () => {\n this.enterCropMode();\n });\n this.bindElementIfExists('applyCropButton', 'click', () => {\n void this.applyCrop().catch((error) => {\n reportError(this.options, error, 'Crop apply failed.');\n });\n });\n this.bindElementIfExists('cancelCropButton', 'click', () => {\n this.cancelCrop();\n });\n this.bindElementIfExists('enterMosaicModeButton', 'click', () => {\n this.enterMosaicMode();\n });\n this.bindElementIfExists('exitMosaicModeButton', 'click', () => {\n this.exitMosaicMode();\n });\n const bindMosaicSizeInput = (key, applyValue) => {\n const handler = (event) => {\n const parsed = parseFloat(event.target.value);\n applyValue(parsed);\n };\n this.bindElementIfExists(key, 'input', handler);\n this.bindElementIfExists(key, 'change', handler);\n };\n bindMosaicSizeInput('mosaicBrushSizeInput', (value) => {\n this.setMosaicBrushSize(value);\n });\n bindMosaicSizeInput('mosaicBlockSizeInput', (value) => {\n this.setMosaicBlockSize(value);\n });\n }\n bindElementIfExists(key, event, handler) {\n var _a;\n (_a = this.domBindings) === null || _a === void 0 ? void 0 : _a.bindIfExists(key, event, handler);\n }\n async loadImageFile(file) {\n const inputId = this.elements.imageInput;\n const inputEl = inputId\n ? document.getElementById(inputId)\n : null;\n const mime = inferImageMimeType(file);\n if (!mime) {\n reportWarning(this.options, null, `Unsupported image file type: ${file.type || file.name || 'unknown'}.`);\n resetFileInput(inputEl);\n return;\n }\n let dataUrl;\n try {\n dataUrl = await readFileAsDataUrl(file);\n }\n catch (error) {\n reportError(this.options, error, 'Failed to read selected image file.');\n resetFileInput(inputEl);\n return;\n }\n try {\n await this.loadImage(dataUrl);\n }\n catch {\n }\n finally {\n resetFileInput(inputEl);\n }\n }\n async loadImage(base64, options = {}) {\n return this.loadImageInternal(base64, options);\n }\n async loadImageInternal(base64, options = {}) {\n if (!this.isFabricLoaded || !this.canvas)\n return;\n if (this.isDisposed)\n return;\n if (typeof base64 !== 'string' || !base64.startsWith('data:image/'))\n return;\n if (!this.canRunIdleOperation('loadImage', options))\n return;\n const callbackContext = this.getOperationContext('loadImage', options);\n const previousImage = this.originalImage;\n const hadMasks = this.getMasks().length > 0;\n this.emitOptionCallback('onImageLoadStart', [callbackContext]);\n this.operationGuard.beginLoading();\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n this.hideAllMaskLabels();\n const loadImageContext = {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.getRuntimeOptions(),\n containerElement: this.containerElement,\n placeholderElement: this.placeholderElement,\n viewportCache: this.viewportCache,\n getOriginalImage: () => this.originalImage,\n setOriginalImage: (v) => {\n this.originalImage = v;\n },\n getIsImageLoadedToCanvas: () => this.isImageLoadedToCanvas,\n setIsImageLoadedToCanvas: (v) => {\n this.isImageLoadedToCanvas = v;\n },\n getLastSnapshot: () => this.lastSnapshot,\n setLastSnapshot: (v) => {\n this.lastSnapshot = v;\n },\n getMaskCounter: () => this.maskCounter,\n setMaskCounter: (v) => {\n this.maskCounter = v;\n },\n getCurrentScale: () => this.currentScale,\n setCurrentScale: (v) => {\n this.currentScale = v;\n },\n getCurrentRotation: () => this.currentRotation,\n setCurrentRotation: (v) => {\n this.currentRotation = v;\n },\n getBaseImageScale: () => this.baseImageScale,\n setBaseImageScale: (v) => {\n this.baseImageScale = v;\n },\n getCurrentImageMimeType: () => this.currentImageMimeType,\n setCurrentImageMimeType: (v) => {\n this.currentImageMimeType = v;\n },\n setPlaceholderVisible: (show) => {\n setPlaceholderVisibleImpl(this.placeholderElement, this.containerElement, this.options.showPlaceholder ? show : false);\n },\n };\n try {\n await loadImageImpl(loadImageContext, base64, options);\n }\n finally {\n this.operationGuard.endLoading();\n this.emitBusyChangeIfChanged(callbackContext);\n if (!this.isDisposed && this.canvas)\n this.updateUi();\n }\n this.lastMask = null;\n this.updateInputs();\n this.updateMaskList();\n this.updateUi();\n if (previousImage && previousImage !== this.originalImage) {\n this.emitOptionCallback('onImageCleared', [previousImage, callbackContext]);\n }\n const imageInfo = this.getImageInfo();\n if (imageInfo) {\n this.emitOptionCallback('onImageLoaded', [imageInfo, callbackContext]);\n }\n if (hadMasks) {\n this.emitMasksChanged(callbackContext);\n }\n this.emitImageChanged(callbackContext);\n }\n getInternalOperationToken(options) {\n var _a;\n return ((_a = options === null || options === void 0 ? void 0 : options[INTERNAL_OPERATION_TOKEN]) !== null && _a !== void 0 ? _a : null);\n }\n canRunDuringAnimationQueue(options) {\n return !!(options === null || options === void 0 ? void 0 : options[INTERNAL_ALLOW_DURING_ANIMATION_QUEUE]);\n }\n withInternalOperationOptions(token, options = {}) {\n return {\n ...options,\n ...(token ? { [INTERNAL_OPERATION_TOKEN]: token } : {}),\n };\n }\n withAnimationQueueBypass(options = {}) {\n return {\n ...options,\n [INTERNAL_ALLOW_DURING_ANIMATION_QUEUE]: true,\n };\n }\n assertIdleForOperation(operationName, options) {\n const token = this.getInternalOperationToken(options);\n this.operationGuard.assertIdleForOperation(operationName, token);\n if (this.cropSession &&\n !this.operationGuard.isOwnOperation(token) &&\n !CROP_SESSION_ALLOWED_OPERATIONS.has(operationName)) {\n throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while crop mode is active.`);\n }\n if (this.mosaicSession &&\n !this.operationGuard.isOwnOperation(token) &&\n !MOSAIC_SESSION_ALLOWED_OPERATIONS.has(operationName)) {\n throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while mosaic mode is active.`);\n }\n if (this.animQueue.isBusy() && !this.canRunDuringAnimationQueue(options)) {\n throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while an animation is queued.`);\n }\n }\n canRunIdleOperation(operationName, options) {\n try {\n this.assertIdleForOperation(operationName, options);\n return true;\n }\n catch (error) {\n if (!this.isExpectedIdleGuardError(error, operationName)) {\n throw error;\n }\n return false;\n }\n }\n isExpectedIdleGuardError(error, operationName) {\n return (error instanceof Error &&\n error.message.startsWith(`[ImageEditor] Cannot run \"${operationName}\" `));\n }\n assertCanQueueAnimation(operationName, options) {\n this.operationGuard.assertCanQueueAnimation(operationName, this.getInternalOperationToken(options));\n }\n isImageLoaded() {\n var _a, _b;\n return !!(this.originalImage &&\n this.originalImage instanceof this.fabricModule.FabricImage &&\n ((_a = this.originalImage.width) !== null && _a !== void 0 ? _a : 0) > 0 &&\n ((_b = this.originalImage.height) !== null && _b !== void 0 ? _b : 0) > 0);\n }\n isBusy() {\n return (this.operationGuard.isBusy() ||\n this.animQueue.isBusy() ||\n this.cropSession !== null ||\n this.mosaicSession !== null);\n }\n setLayoutMode(mode) {\n if (!isLayoutMode(mode)) {\n reportWarning(this.options, new TypeError(`[ImageEditor] Unsupported layout mode ${JSON.stringify(mode)}. ` +\n 'Expected \"fit\", \"cover\", or \"expand\".'), 'Ignored invalid layout mode.');\n return;\n }\n this.currentLayoutMode = mode;\n }\n getRuntimeOptions() {\n if (this.currentLayoutMode === this.options.layoutMode)\n return this.options;\n return Object.freeze({\n ...this.options,\n layoutMode: this.currentLayoutMode,\n });\n }\n buildCallbackContext(operation, isInternalOperation = false) {\n return { operation, isInternalOperation };\n }\n getOperationContext(fallback, options) {\n const internal = this.getInternalOperationToken(options);\n const activeOperation = this.operationGuard.activeOperationName();\n if (internal && activeOperation) {\n return this.buildCallbackContext(isImageEditorOperation(activeOperation) ? activeOperation : fallback, true);\n }\n return this.buildCallbackContext(fallback, false);\n }\n emitOptionCallback(callbackName, args) {\n const callback = this.options[callbackName];\n if (typeof callback !== 'function')\n return;\n try {\n callback(...args);\n }\n catch (error) {\n console.error(`[ImageEditor] ${callbackName} callback threw`, error);\n }\n }\n getImageInfo() {\n if (!this.canvas || !this.originalImage)\n return null;\n const canvasWidth = this.canvas.getWidth();\n const canvasHeight = this.canvas.getHeight();\n let displayWidth;\n let displayHeight;\n try {\n this.originalImage.setCoords();\n const bounds = this.originalImage.getBoundingRect();\n displayWidth = Math.max(0, Number(bounds.width) || 0);\n displayHeight = Math.max(0, Number(bounds.height) || 0);\n }\n catch {\n displayWidth = Math.max(0, (Number(this.originalImage.width) || 0) *\n Math.abs(Number(this.originalImage.scaleX) || 1));\n displayHeight = Math.max(0, (Number(this.originalImage.height) || 0) *\n Math.abs(Number(this.originalImage.scaleY) || 1));\n }\n return {\n width: Math.max(0, Number(this.originalImage.width) || 0),\n height: Math.max(0, Number(this.originalImage.height) || 0),\n displayWidth,\n displayHeight,\n scale: this.currentScale,\n rotation: this.currentRotation,\n canvasWidth,\n canvasHeight,\n };\n }\n getMasks() {\n if (!this.canvas)\n return [];\n return this.canvas.getObjects().filter(isMaskObject).slice();\n }\n getMaskCollectionSignature() {\n return this.getMasks()\n .map((mask) => `${mask.maskId}:${mask.maskName}`)\n .join('|');\n }\n getEditorState() {\n const canvasWidth = this.canvas ? this.canvas.getWidth() : 0;\n const canvasHeight = this.canvas ? this.canvas.getHeight() : 0;\n const image = this.getImageInfo();\n return {\n hasImage: image !== null,\n image,\n maskCount: this.getMasks().length,\n currentScale: this.currentScale,\n currentRotation: this.currentRotation,\n isBusy: this.isBusy(),\n isCropMode: this.cropSession !== null,\n isMosaicMode: this.mosaicSession !== null,\n canUndo: this.historyManager.canUndo(),\n canRedo: this.historyManager.canRedo(),\n canvasWidth,\n canvasHeight,\n };\n }\n emitImageChanged(context) {\n this.emitOptionCallback('onImageChanged', [this.getEditorState(), context]);\n }\n emitMasksChanged(context) {\n this.emitOptionCallback('onMasksChanged', [this.getMasks(), context]);\n }\n emitBusyChangeIfChanged(context) {\n const isBusy = this.isBusy();\n if (this.lastEmittedIsBusy === isBusy)\n return;\n this.lastEmittedIsBusy = isBusy;\n this.emitOptionCallback('onBusyChange', [isBusy, context]);\n }\n buildSelection(selected) {\n var _a;\n const selectedMasks = selected.filter(isMaskObject);\n return {\n selectedMask: (_a = selectedMasks[0]) !== null && _a !== void 0 ? _a : null,\n selectedMasks,\n };\n }\n withSelectionChangeContext(context, callback) {\n const previous = this.nextSelectionChangeContext;\n this.nextSelectionChangeContext = context;\n try {\n return callback();\n }\n finally {\n this.nextSelectionChangeContext = previous;\n }\n }\n isSupportedImageMimeType(mimeType) {\n return mimeType === 'image/jpeg' || mimeType === 'image/png' || mimeType === 'image/webp';\n }\n inferCurrentImageMimeType() {\n const image = this.originalImage;\n if (!image)\n return null;\n let source = null;\n try {\n if (typeof image.getSrc === 'function')\n source = image.getSrc();\n else if (typeof image.src === 'string')\n source = image.src;\n }\n catch {\n source = null;\n }\n const mimeType = source ? detectSourceMimeType(source) : null;\n return this.isSupportedImageMimeType(mimeType) ? mimeType : null;\n }\n setCanvasSizePx(widthPx, heightPx) {\n if (!this.canvas)\n return;\n applyCanvasDimensions(this.canvas, widthPx, heightPx, this.containerElement);\n }\n alignObjectBoundingBoxToCanvasTopLeft(object) {\n var _a, _b;\n object.setCoords();\n const boundingRect = object.getBoundingRect();\n object.set({\n left: ((_a = object.left) !== null && _a !== void 0 ? _a : 0) - boundingRect.left,\n top: ((_b = object.top) !== null && _b !== void 0 ? _b : 0) - boundingRect.top,\n });\n object.setCoords();\n this.canvas.renderAll();\n }\n measureLayoutViewport(scrollbarSize) {\n return this.viewportCache.measure(this.containerElement, {\n width: this.options.canvasWidth,\n height: this.options.canvasHeight,\n }, scrollbarSize);\n }\n updateCanvasSizeToImageBounds() {\n var _a, _b;\n if (!this.originalImage)\n return;\n this.originalImage.setCoords();\n const boundingRect = this.originalImage.getBoundingRect();\n const scrollbarSize = measureScrollbarSize((_b = (_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : null);\n const viewport = this.measureLayoutViewport(scrollbarSize);\n if (this.currentLayoutMode === 'fit' || this.currentLayoutMode === 'cover') {\n const canvasSize = computeScrollableCanvasSize(boundingRect.width, boundingRect.height, viewport, scrollbarSize);\n this.setCanvasSizePx(canvasSize.width, canvasSize.height);\n return;\n }\n if (boundingRect.width <= viewport.width && boundingRect.height <= viewport.height) {\n this.setCanvasSizePx(viewport.width, viewport.height);\n return;\n }\n this.setCanvasSizePx(Math.max(viewport.width, Math.ceil(boundingRect.width)), Math.max(viewport.height, Math.ceil(boundingRect.height)));\n }\n shouldNormalizeCanvasSizeAfterStateRestore() {\n var _a, _b;\n if (!this.canvas || !this.originalImage)\n return false;\n this.originalImage.setCoords();\n const boundingRect = this.originalImage.getBoundingRect();\n const viewport = this.measureLayoutViewport(measureScrollbarSize((_b = (_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : null));\n const canvasW = Math.ceil(this.canvas.getWidth());\n const canvasH = Math.ceil(this.canvas.getHeight());\n const clipsImage = boundingRect.width > canvasW + LAYOUT_EPSILON ||\n boundingRect.height > canvasH + LAYOUT_EPSILON;\n if (this.currentLayoutMode === 'fit' || this.currentLayoutMode === 'cover') {\n const staleOverflowWidth = canvasW > viewport.width + LAYOUT_EPSILON &&\n boundingRect.width <= viewport.width + LAYOUT_EPSILON;\n const staleOverflowHeight = canvasH > viewport.height + LAYOUT_EPSILON &&\n boundingRect.height <= viewport.height + LAYOUT_EPSILON;\n return clipsImage || staleOverflowWidth || staleOverflowHeight;\n }\n if (this.currentLayoutMode === 'expand') {\n const expectedW = Math.max(viewport.width, Math.ceil(boundingRect.width));\n const expectedH = Math.max(viewport.height, Math.ceil(boundingRect.height));\n return (Math.abs(canvasW - expectedW) > LAYOUT_EPSILON ||\n Math.abs(canvasH - expectedH) > LAYOUT_EPSILON);\n }\n return clipsImage;\n }\n settleFitCoverScrollbarsAfterStateRestore() {\n if (!this.canvas ||\n !this.containerElement ||\n (this.currentLayoutMode !== 'fit' && this.currentLayoutMode !== 'cover')) {\n return;\n }\n const canvasW = Math.ceil(this.canvas.getWidth());\n const canvasH = Math.ceil(this.canvas.getHeight());\n if (canvasW <= 1 || canvasH <= 1)\n return;\n const clientW = Math.floor(this.containerElement.clientWidth || 0);\n const clientH = Math.floor(this.containerElement.clientHeight || 0);\n if (clientW <= 0 || clientH <= 0)\n return;\n const scrollW = Math.ceil(this.containerElement.scrollWidth || 0);\n const scrollH = Math.ceil(this.containerElement.scrollHeight || 0);\n const hasHorizontalScrollbar = scrollW > clientW + LAYOUT_EPSILON;\n const hasVerticalScrollbar = scrollH > clientH + LAYOUT_EPSILON;\n if (!hasHorizontalScrollbar && !hasVerticalScrollbar)\n return;\n const nudgeWidth = hasVerticalScrollbar && Math.abs(canvasW - clientW) <= SCROLLBAR_SETTLE_EPSILON;\n const nudgeHeight = hasHorizontalScrollbar && Math.abs(canvasH - clientH) <= SCROLLBAR_SETTLE_EPSILON;\n if (!nudgeWidth && !nudgeHeight)\n return;\n this.setCanvasSizePx(nudgeWidth ? canvasW - 1 : canvasW, nudgeHeight ? canvasH - 1 : canvasH);\n this.setCanvasSizePx(canvasW, canvasH);\n }\n captureImageDisplayGeometry() {\n if (!this.canvas || !this.originalImage)\n return null;\n this.originalImage.setCoords();\n const boundingRect = this.originalImage.getBoundingRect();\n return {\n canvasWidth: this.canvas.getWidth(),\n canvasHeight: this.canvas.getHeight(),\n imageDisplayWidth: Math.max(1, boundingRect.width),\n imageDisplayHeight: Math.max(1, boundingRect.height),\n };\n }\n restoreMergedImageDisplayGeometry(geometry) {\n if (!geometry || !this.canvas || !this.originalImage)\n return;\n this.setCanvasSizePx(geometry.canvasWidth, geometry.canvasHeight);\n const sourceW = Math.max(1, this.originalImage.width || geometry.imageDisplayWidth);\n const sourceH = Math.max(1, this.originalImage.height || geometry.imageDisplayHeight);\n const scale = Math.min(geometry.imageDisplayWidth / sourceW, geometry.imageDisplayHeight / sourceH);\n this.originalImage.set({\n left: 0,\n top: 0,\n angle: 0,\n scaleX: scale,\n scaleY: scale,\n originX: 'left',\n originY: 'top',\n selectable: false,\n evented: false,\n hasControls: false,\n hoverCursor: 'default',\n });\n this.originalImage.setCoords();\n this.canvas.sendObjectToBack(this.originalImage);\n this.currentScale = 1;\n this.currentRotation = 0;\n this.baseImageScale = scale;\n this.lastSnapshot = this.captureSnapshotInternal();\n this.canvas.renderAll();\n }\n buildTransformContext() {\n return {\n canvas: this.canvas,\n options: this.options,\n guard: this.operationGuard,\n getOriginalImage: () => this.originalImage,\n getCurrentScale: () => this.currentScale,\n setCurrentScale: (n) => {\n this.currentScale = n;\n },\n getCurrentRotation: () => this.currentRotation,\n setCurrentRotation: (n) => {\n this.currentRotation = n;\n },\n getBaseImageScale: () => this.baseImageScale,\n saveCanvasState: () => {\n this.saveStateInternal(this.withAnimationQueueBypass());\n },\n setSuppressSaveState: (suppress) => {\n this.shouldSuppressSaveState = suppress;\n },\n afterTransformSnap: () => {\n if (this.isDisposed || !this.canvas || !this.originalImage)\n return;\n this.updateCanvasSizeToImageBounds();\n this.alignObjectBoundingBoxToCanvasTopLeft(this.originalImage);\n this.canvas\n .getObjects()\n .filter(isMaskObject)\n .forEach((maskObject) => this.syncMaskLabel(maskObject));\n },\n };\n }\n scaleImage(factor) {\n if (this.isDisposed || !this.transformController)\n return Promise.resolve();\n if (!Number.isFinite(factor))\n return Promise.resolve();\n try {\n this.assertCanQueueAnimation('scaleImage');\n }\n catch (error) {\n return Promise.reject(error);\n }\n const controller = this.transformController;\n const context = this.buildCallbackContext('scaleImage', false);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.updateUi();\n try {\n await controller.scaleImage(factor);\n if (!this.isDisposed)\n this.emitImageChanged(context);\n }\n finally {\n if (!this.isDisposed) {\n this.updateInputs();\n }\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n rotateImage(degrees) {\n if (this.isDisposed || !this.transformController)\n return Promise.resolve();\n if (!Number.isFinite(degrees))\n return Promise.resolve();\n try {\n this.assertCanQueueAnimation('rotateImage');\n }\n catch (error) {\n return Promise.reject(error);\n }\n const controller = this.transformController;\n const context = this.buildCallbackContext('rotateImage', false);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.updateUi();\n try {\n await controller.rotateImage(degrees);\n if (!this.isDisposed)\n this.emitImageChanged(context);\n }\n finally {\n if (!this.isDisposed) {\n this.updateInputs();\n }\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n resetImageTransform() {\n if (this.isDisposed || !this.transformController)\n return Promise.resolve();\n try {\n this.assertCanQueueAnimation('resetImageTransform');\n }\n catch (error) {\n return Promise.reject(error);\n }\n const controller = this.transformController;\n const context = this.buildCallbackContext('resetImageTransform', false);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.updateUi();\n try {\n await controller.resetImageTransform();\n if (!this.isDisposed)\n this.emitImageChanged(context);\n }\n finally {\n if (!this.isDisposed) {\n this.updateInputs();\n }\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n refreshUiAfterQueuedAnimation() {\n if (this.isDisposed || !this.canvas)\n return;\n this.updateInputs();\n this.updateUi();\n }\n async loadFromState(jsonString) {\n return this.loadFromStateInternal(jsonString);\n }\n async loadFromStateInternal(jsonString, options) {\n var _a;\n if (!jsonString || !this.canvas)\n return;\n if (this.isDisposed)\n return;\n if (!this.canRunIdleOperation('loadFromState', options))\n return;\n const activeRestoreOperation = this.activeStateRestoreOperation;\n const context = this.buildCallbackContext(activeRestoreOperation !== null && activeRestoreOperation !== void 0 ? activeRestoreOperation : 'loadFromState', activeRestoreOperation === 'undo' || activeRestoreOperation === 'redo');\n const previousImage = this.originalImage;\n const previousMaskSignature = this.getMaskCollectionSignature();\n try {\n const restoredState = await loadFromStateImpl({\n canvas: this.canvas,\n jsonString,\n setCanvasSize: (widthPx, heightPx) => this.setCanvasSizePx(widthPx, heightPx),\n });\n if (this.isDisposed || !this.canvas)\n return;\n this.hideAllMaskLabels();\n this.originalImage = restoredState.originalImage;\n if (this.originalImage) {\n this.originalImage.set({\n originX: 'left',\n originY: 'top',\n selectable: false,\n evented: false,\n hasControls: false,\n hoverCursor: 'default',\n });\n this.canvas.sendObjectToBack(this.originalImage);\n }\n this.maskCounter = restoredState.maxMaskId;\n const editorState = restoredState.editorState;\n if (editorState) {\n this.currentScale = editorState.currentScale;\n this.currentRotation = editorState.currentRotation;\n this.baseImageScale = editorState.baseImageScale;\n }\n if (this.originalImage) {\n this.currentImageMimeType =\n editorState && 'currentImageMimeType' in editorState\n ? ((_a = editorState.currentImageMimeType) !== null && _a !== void 0 ? _a : null)\n : this.inferCurrentImageMimeType();\n }\n else {\n this.currentImageMimeType = null;\n }\n this.isImageLoadedToCanvas = !!this.originalImage;\n if (this.originalImage && this.shouldNormalizeCanvasSizeAfterStateRestore()) {\n this.updateCanvasSizeToImageBounds();\n this.alignObjectBoundingBoxToCanvasTopLeft(this.originalImage);\n }\n if (this.originalImage) {\n this.settleFitCoverScrollbarsAfterStateRestore();\n }\n const restoredMasks = restoredState.objects.filter(isMaskObject);\n this.lastMask = restoredMasks.reduce((lastMask, maskObject) => !lastMask || maskObject.maskId > lastMask.maskId ? maskObject : lastMask, null);\n restoredMasks.forEach((maskObject) => {\n applyMaskUnselectedStyle(maskObject);\n reattachMaskHoverHandlers(maskObject);\n });\n this.lastSnapshot = this.captureSnapshotInternal();\n this.canvas.renderAll();\n this.updateInputs();\n this.updateMaskList();\n this.updateUi();\n if (previousImage && previousImage !== this.originalImage) {\n this.emitOptionCallback('onImageCleared', [previousImage, context]);\n }\n if (previousMaskSignature !== this.getMaskCollectionSignature()) {\n this.emitMasksChanged(context);\n }\n this.emitImageChanged(context);\n const activeMaskId = editorState === null || editorState === void 0 ? void 0 : editorState.activeMaskId;\n if (typeof activeMaskId === 'number') {\n const activeMask = restoredMasks.find((maskObject) => maskObject.maskId === activeMaskId);\n if (activeMask) {\n this.withSelectionChangeContext(context, () => {\n this.canvas.setActiveObject(activeMask);\n this.handleSelectionChanged([activeMask]);\n });\n }\n }\n }\n catch (error) {\n reportError(this.options, error, 'Failed to restore canvas state.');\n throw error;\n }\n }\n saveState() {\n this.saveStateInternal();\n }\n saveStateInternal(options) {\n var _a, _b;\n if (!this.canvas || this.shouldSuppressSaveState)\n return;\n if (!this.canRunIdleOperation('saveState', options))\n return;\n const activeObj = this.canvas.getActiveObject();\n const activeMask = this.getActiveMaskForSnapshot();\n this.hideAllMaskLabels();\n try {\n const after = saveStateImpl({\n canvas: this.canvas,\n activeMaskId: (_a = activeMask === null || activeMask === void 0 ? void 0 : activeMask.maskId) !== null && _a !== void 0 ? _a : null,\n currentScale: this.currentScale,\n currentRotation: this.currentRotation,\n baseImageScale: this.baseImageScale,\n currentImageMimeType: this.currentImageMimeType,\n });\n const before = (_b = this.lastSnapshot) !== null && _b !== void 0 ? _b : after;\n if (after === before) {\n return;\n }\n const cmd = new Command(async () => {\n await this.loadFromStateInternal(after, this.withAnimationQueueBypass());\n }, async () => {\n await this.loadFromStateInternal(before, this.withAnimationQueueBypass());\n });\n this.historyManager.push(cmd);\n this.lastSnapshot = after;\n }\n catch (error) {\n reportWarning(this.options, error, 'Failed to capture canvas snapshot.');\n }\n finally {\n this.restoreActiveMaskAfterSnapshot(activeObj, activeMask);\n this.updateUi();\n }\n }\n restoreActiveMaskAfterSnapshot(activeObj, activeMask) {\n if (!this.canvas)\n return;\n const maskToRestore = activeObj && isMaskObject(activeObj) ? activeObj : activeMask;\n if (!maskToRestore || !this.canvas.getObjects().includes(maskToRestore))\n return;\n this.canvas.setActiveObject(maskToRestore);\n this.showLabelForMask(maskToRestore);\n this.updateMaskListSelection(maskToRestore);\n }\n undo() {\n if (this.isDisposed)\n return Promise.resolve();\n if (!this.canRunIdleOperation('undo'))\n return Promise.resolve();\n const context = this.buildCallbackContext('undo', true);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.activeStateRestoreOperation = 'undo';\n try {\n await this.historyManager.undo();\n }\n finally {\n this.activeStateRestoreOperation = null;\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n redo() {\n if (this.isDisposed)\n return Promise.resolve();\n if (!this.canRunIdleOperation('redo'))\n return Promise.resolve();\n const context = this.buildCallbackContext('redo', true);\n const job = this.animQueue.add(async () => {\n if (this.isDisposed)\n return;\n this.activeStateRestoreOperation = 'redo';\n try {\n await this.historyManager.redo();\n }\n finally {\n this.activeStateRestoreOperation = null;\n }\n });\n this.emitBusyChangeIfChanged(context);\n return job.finally(() => {\n this.refreshUiAfterQueuedAnimation();\n this.emitBusyChangeIfChanged(context);\n });\n }\n createMask(config = {}) {\n if (!this.canvas)\n return null;\n if (!this.canRunIdleOperation('createMask'))\n return null;\n const callbackContext = this.buildCallbackContext('createMask', false);\n const createMaskContext = this.buildCreateMaskContext();\n const mask = this.withSelectionChangeContext(callbackContext, () => createMaskImpl(createMaskContext, config));\n if (mask) {\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n return mask;\n }\n removeSelectedMask() {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('removeSelectedMask'))\n return;\n const before = this.getMasks().length;\n const callbackContext = this.buildCallbackContext('removeSelectedMask', false);\n const removeMaskContext = this.buildRemoveMaskContext();\n this.withSelectionChangeContext(callbackContext, () => removeSelectedMaskImpl(removeMaskContext));\n this.updateUi();\n if (this.getMasks().length !== before) {\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n }\n removeAllMasks(options = {}) {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('removeAllMasks', options))\n return;\n const before = this.getMasks().length;\n const callbackContext = this.buildCallbackContext('removeAllMasks', false);\n const removeMaskContext = this.buildRemoveMaskContext();\n this.withSelectionChangeContext(callbackContext, () => removeAllMasksImpl(removeMaskContext, options));\n this.updateUi();\n if (this.getMasks().length !== before) {\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n }\n buildCreateMaskContext() {\n return {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.getRuntimeOptions(),\n getLastMask: () => this.lastMask,\n setLastMask: (maskObject) => {\n this.lastMask = maskObject;\n },\n getMaskCounter: () => this.maskCounter,\n setMaskCounter: (n) => {\n this.maskCounter = n;\n },\n updateMaskList: () => {\n this.updateMaskList();\n },\n saveCanvasState: () => {\n this.saveState();\n },\n expandCanvasIfNeeded: (widthPx, heightPx) => {\n this.setCanvasSizePx(widthPx, heightPx);\n },\n };\n }\n buildRemoveMaskContext() {\n return {\n canvas: this.canvas,\n removeLabelForMask: (mask) => {\n this.removeLabelForMask(mask);\n },\n updateMaskList: () => {\n this.updateMaskList();\n },\n saveCanvasState: () => {\n this.saveState();\n },\n setLastMask: (maskObject) => {\n this.lastMask = maskObject;\n },\n };\n }\n buildMaskLabelContext() {\n if (!this.canvas)\n return null;\n return { fabric: this.fabricModule, canvas: this.canvas, options: this.options };\n }\n removeLabelForMask(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n removeLabelForMask(context, mask);\n }\n createLabelForMask(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n createLabelForMask(context, mask);\n }\n hideAllMaskLabels() {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n hideAllMaskLabels(context);\n }\n syncMaskLabel(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n syncMaskLabel(context, mask);\n }\n showLabelForMask(mask) {\n const context = this.buildMaskLabelContext();\n if (!context)\n return;\n showLabelForMask(context, mask);\n }\n handleSelectionChanged(selected) {\n var _a, _b, _c;\n if (!this.canvas)\n return;\n const selectedMask = (_a = selected.find(isMaskObject)) !== null && _a !== void 0 ? _a : null;\n const masks = this.canvas.getObjects().filter(isMaskObject);\n masks.forEach((maskObject) => {\n if (maskObject !== selectedMask) {\n if (maskObject.labelObject) {\n this.removeLabelForMask(maskObject);\n }\n applyMaskUnselectedStyle(maskObject);\n }\n else {\n applyMaskSelectedStyle(maskObject);\n }\n });\n if (selectedMask)\n this.showLabelForMask(selectedMask);\n this.updateMaskListSelection(selectedMask);\n this.canvas.requestRenderAll();\n this.updateUi();\n const context = (_b = this.nextSelectionChangeContext) !== null && _b !== void 0 ? _b : this.buildCallbackContext((_c = this.activeStateRestoreOperation) !== null && _c !== void 0 ? _c : 'createMask', this.activeStateRestoreOperation === 'undo' ||\n this.activeStateRestoreOperation === 'redo');\n this.emitOptionCallback('onSelectionChange', [this.buildSelection(selected), context]);\n }\n buildMaskListContext() {\n return {\n canvas: this.canvas,\n getListElementId: () => this.elements.maskList,\n onMaskSelected: (mask) => this.handleSelectionChanged([mask]),\n };\n }\n updateMaskList() {\n renderMaskList(this.buildMaskListContext());\n }\n updateMaskListSelection(selectedMask) {\n updateMaskListSelection(this.buildMaskListContext(), selectedMask);\n }\n async mergeMasks() {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('mergeMasks'))\n return;\n const hasMasks = this.canvas.getObjects().some(isMaskObject);\n if (!hasMasks)\n return;\n const callbackContext = this.buildCallbackContext('mergeMasks', false);\n const operationToken = this.operationGuard.beginBusyOperation('mergeMasks');\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n try {\n const mergeMasksContext = this.buildMergeMasksContext(operationToken);\n await mergeMasksImpl(mergeMasksContext);\n this.updateInputs();\n this.updateMaskList();\n this.emitMasksChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n }\n }\n downloadImage(fileName) {\n if (!this.canvas)\n return;\n if (!this.canRunIdleOperation('downloadImage'))\n return;\n const callbackContext = this.buildCallbackContext('downloadImage', false);\n const operationToken = this.operationGuard.beginBusyOperation('downloadImage');\n this.emitBusyChangeIfChanged(callbackContext);\n const exportContext = this.buildExportServiceContext();\n try {\n downloadImageImpl(exportContext, fileName);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n }\n }\n async exportImageBase64(options) {\n if (!this.canvas)\n return '';\n if (!this.canRunIdleOperation('exportImageBase64', options))\n return '';\n const callbackContext = this.buildCallbackContext('exportImageBase64', false);\n const operationToken = this.operationGuard.beginBusyOperation('exportImageBase64');\n this.emitBusyChangeIfChanged(callbackContext);\n const exportContext = this.buildExportServiceContext();\n try {\n return await exportImageBase64Impl(exportContext, options);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n }\n }\n async exportImageFile(options) {\n this.assertIdleForOperation('exportImageFile', options);\n const callbackContext = this.buildCallbackContext('exportImageFile', false);\n const operationToken = this.operationGuard.beginBusyOperation('exportImageFile');\n this.emitBusyChangeIfChanged(callbackContext);\n const exportContext = this.buildExportServiceContext();\n try {\n return await exportImageFileImpl(exportContext, options);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n }\n }\n buildExportServiceContext() {\n return {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.options,\n isImageLoaded: () => this.isImageLoaded(),\n getOriginalImage: () => this.originalImage,\n };\n }\n buildMergeMasksContext(operationToken) {\n return {\n ...this.buildExportServiceContext(),\n historyManager: this.historyManager,\n containerElement: this.containerElement,\n loadImage: async (base64, providedOptions) => {\n const geometry = this.captureImageDisplayGeometry();\n await this.loadImageInternal(base64, this.withInternalOperationOptions(operationToken, providedOptions !== null && providedOptions !== void 0 ? providedOptions : {}));\n this.restoreMergedImageDisplayGeometry(geometry);\n },\n saveState: () => this.captureSnapshotInternal(),\n loadFromState: (snapshot) => this.loadFromStateInternal(snapshot, this.withInternalOperationOptions(operationToken, this.withAnimationQueueBypass())),\n removeAllMasksNoHistory: () => {\n const context = this.buildRemoveMaskContext();\n removeAllMasksImpl(context, { saveHistory: false });\n },\n };\n }\n captureSnapshotInternal() {\n var _a;\n if (!this.canvas) {\n throw new Error('[ImageEditor] Cannot capture canvas snapshot before init or after dispose.');\n }\n const activeMask = this.getActiveMaskForSnapshot();\n this.hideAllMaskLabels();\n return saveStateImpl({\n canvas: this.canvas,\n activeMaskId: (_a = activeMask === null || activeMask === void 0 ? void 0 : activeMask.maskId) !== null && _a !== void 0 ? _a : null,\n currentScale: this.currentScale,\n currentRotation: this.currentRotation,\n baseImageScale: this.baseImageScale,\n currentImageMimeType: this.currentImageMimeType,\n });\n }\n getActiveMaskForSnapshot() {\n var _a;\n if (!this.canvas)\n return null;\n const activeObject = this.canvas.getActiveObject();\n if (activeObject && isMaskObject(activeObject))\n return activeObject;\n const labeledMasks = this.canvas\n .getObjects()\n .filter((object) => isMaskObject(object) && !!object.labelObject);\n return labeledMasks.length === 1 ? ((_a = labeledMasks[0]) !== null && _a !== void 0 ? _a : null) : null;\n }\n enterMosaicMode() {\n if (!this.canvas || !this.originalImage)\n return;\n if (this.mosaicSession)\n return;\n if (!this.isImageLoaded())\n return;\n if (!this.canRunIdleOperation('enterMosaicMode'))\n return;\n enterMosaicModeImpl(this.buildMosaicControllerContext());\n this.updateInputs();\n this.updateUi();\n const callbackContext = this.buildCallbackContext('enterMosaicMode', false);\n this.emitBusyChangeIfChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n exitMosaicMode() {\n if (!this.canvas || !this.mosaicSession)\n return;\n if (!this.canRunIdleOperation('exitMosaicMode'))\n return;\n exitMosaicModeImpl(this.buildMosaicControllerContext());\n this.updateInputs();\n this.updateUi();\n const callbackContext = this.buildCallbackContext('exitMosaicMode', false);\n this.emitBusyChangeIfChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n isMosaicMode() {\n return this.mosaicSession !== null;\n }\n getMosaicConfig() {\n return cloneResolvedMosaicConfig(this.currentMosaicConfig);\n }\n setMosaicConfig(config) {\n this.applyMosaicConfigPatch(config, 'setMosaicConfig');\n }\n resetMosaicConfig() {\n if (this.isDisposed)\n return;\n const nextConfig = cloneResolvedMosaicConfig(this.defaultMosaicConfig);\n if (areResolvedMosaicConfigsEqual(this.currentMosaicConfig, nextConfig))\n return;\n this.currentMosaicConfig = nextConfig;\n if (this.mosaicSession && this.canvas) {\n updateMosaicPreview(this.buildMosaicControllerContext());\n }\n this.updateInputs();\n this.updateUi();\n this.emitImageChanged(this.buildCallbackContext('resetMosaicConfig', false));\n }\n setMosaicBrushSize(size) {\n this.applyMosaicConfigPatch({ brushSize: size }, 'setMosaicBrushSize');\n }\n setMosaicBlockSize(size) {\n this.applyMosaicConfigPatch({ blockSize: size }, 'setMosaicBlockSize');\n }\n applyMosaicConfigPatch(config, operation) {\n if (this.isDisposed)\n return;\n if (config === null || typeof config !== 'object' || Array.isArray(config)) {\n reportWarning(this.options, new TypeError('[ImageEditor] Invalid Mosaic config object.'), 'Ignored invalid Mosaic config.');\n return;\n }\n const invalidFields = getInvalidMosaicConfigFields(config);\n if (invalidFields.length > 0) {\n reportWarning(this.options, new TypeError(`[ImageEditor] Ignored invalid Mosaic config field(s): ` +\n `${invalidFields.join(', ')}.`), 'Ignored invalid Mosaic config fields.');\n }\n const nextConfig = mergeMosaicConfigPatch(this.currentMosaicConfig, config);\n if (areResolvedMosaicConfigsEqual(this.currentMosaicConfig, nextConfig))\n return;\n this.currentMosaicConfig = nextConfig;\n if (this.mosaicSession && this.canvas) {\n updateMosaicPreview(this.buildMosaicControllerContext());\n }\n this.updateInputs();\n this.updateUi();\n this.emitImageChanged(this.buildCallbackContext(operation, false));\n }\n buildMosaicControllerContext() {\n return {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.options,\n historyManager: this.historyManager,\n getMosaicConfig: () => cloneResolvedMosaicConfig(this.currentMosaicConfig),\n isImageLoaded: () => this.isImageLoaded(),\n getOriginalImage: () => this.originalImage,\n setOriginalImage: (image) => {\n this.originalImage = image;\n },\n getCurrentImageMimeType: () => this.currentImageMimeType,\n setCurrentImageMimeType: (mimeType) => {\n this.currentImageMimeType = mimeType;\n },\n getLastSnapshot: () => this.lastSnapshot,\n setLastSnapshot: (snapshot) => {\n this.lastSnapshot = snapshot;\n },\n captureSnapshot: () => this.captureSnapshotInternal(),\n loadFromState: (snapshot) => this.loadFromStateInternal(snapshot, this.withAnimationQueueBypass()),\n updateUi: () => {\n this.updateUi();\n },\n updateInputs: () => {\n this.updateInputs();\n },\n hideAllMaskLabels: () => {\n this.hideAllMaskLabels();\n },\n emitImageChanged: (context) => {\n this.emitImageChanged(context);\n },\n emitBusyChangeIfChanged: (context) => {\n this.emitBusyChangeIfChanged(context);\n },\n buildCallbackContext: (operation, isInternal) => this.buildCallbackContext(operation, isInternal),\n getMosaicSession: () => this.mosaicSession,\n setMosaicSession: (session) => {\n this.mosaicSession = session;\n },\n };\n }\n enterCropMode() {\n if (!this.canvas || !this.originalImage)\n return;\n if (this.cropSession)\n return;\n if (!this.isImageLoaded())\n return;\n if (!this.canRunIdleOperation('enterCropMode'))\n return;\n const cropControllerContext = this.buildCropControllerContext();\n enterCropModeImpl(cropControllerContext);\n this.updateUi();\n const callbackContext = this.buildCallbackContext('enterCropMode', false);\n this.emitBusyChangeIfChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n cancelCrop() {\n if (!this.canvas || !this.cropSession)\n return;\n if (!this.canRunIdleOperation('cancelCrop'))\n return;\n const cropControllerContext = this.buildCropControllerContext();\n cancelCropImpl(cropControllerContext);\n this.cropSession = null;\n this.updateUi();\n this.canvas.requestRenderAll();\n const callbackContext = this.buildCallbackContext('cancelCrop', false);\n this.emitBusyChangeIfChanged(callbackContext);\n this.emitImageChanged(callbackContext);\n }\n async applyCrop() {\n if (!this.canvas || !this.cropSession)\n return;\n if (!this.canRunIdleOperation('applyCrop'))\n return;\n const callbackContext = this.buildCallbackContext('applyCrop', false);\n const hadMasks = this.getMasks().length > 0;\n const operationToken = this.operationGuard.beginBusyOperation('applyCrop');\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n try {\n const cropControllerContext = this.buildCropControllerContext(operationToken);\n await applyCropImpl(cropControllerContext);\n this.updateInputs();\n this.updateMaskList();\n if (hadMasks || this.getMasks().length > 0) {\n this.emitMasksChanged(callbackContext);\n }\n this.emitImageChanged(callbackContext);\n }\n finally {\n this.operationGuard.endBusyOperation(operationToken);\n this.emitBusyChangeIfChanged(callbackContext);\n this.updateUi();\n }\n }\n buildCropControllerContext(operationToken) {\n return {\n fabric: this.fabricModule,\n canvas: this.canvas,\n options: this.options,\n historyManager: this.historyManager,\n isImageLoaded: () => this.isImageLoaded(),\n getOriginalImage: () => this.originalImage,\n getCurrentImageMimeType: () => this.currentImageMimeType,\n getCropSession: () => this.cropSession,\n setCropSession: (s) => {\n this.cropSession = s;\n },\n saveState: () => this.captureSnapshotInternal(),\n loadFromState: (snapshot) => this.loadFromStateInternal(snapshot, this.withInternalOperationOptions(operationToken, this.withAnimationQueueBypass())),\n loadImage: (base64, providedOptions) => this.loadImageInternal(base64, this.withInternalOperationOptions(operationToken, providedOptions !== null && providedOptions !== void 0 ? providedOptions : {})),\n getMaskCounter: () => this.maskCounter,\n setMaskCounter: (n) => {\n this.maskCounter = n;\n },\n updateMaskList: () => {\n this.updateMaskList();\n },\n };\n }\n updateInputs() {\n const scaleId = this.elements.scalePercentageInput;\n if (scaleId) {\n const scaleInputElement = document.getElementById(scaleId);\n if (scaleInputElement) {\n scaleInputElement.value = String(Math.round(this.currentScale * 100));\n }\n }\n const mosaicConfig = this.getMosaicConfig();\n const mosaicBrushSizeInputId = this.elements.mosaicBrushSizeInput;\n if (mosaicBrushSizeInputId) {\n const brushInput = document.getElementById(mosaicBrushSizeInputId);\n if (brushInput)\n brushInput.value = String(mosaicConfig.brushSize);\n }\n const mosaicBlockSizeInputId = this.elements.mosaicBlockSizeInput;\n if (mosaicBlockSizeInputId) {\n const blockInput = document.getElementById(mosaicBlockSizeInputId);\n if (blockInput)\n blockInput.value = String(mosaicConfig.blockSize);\n }\n }\n updateUi() {\n var _a;\n if (!this.canvas)\n return;\n const hasImage = !!this.originalImage;\n const masks = hasImage ? this.canvas.getObjects().filter(isMaskObject) : [];\n const hasMasks = masks.length > 0;\n const activeObject = this.canvas.getActiveObject();\n const hasSelectedMask = !!(activeObject && isMaskObject(activeObject));\n const isDefaultTransform = this.currentScale === 1 && this.currentRotation === 0;\n const canUndo = this.historyManager.canUndo();\n const canRedo = this.historyManager.canRedo();\n const isInCropMode = this.cropSession !== null;\n const isInMosaicMode = this.mosaicSession !== null;\n const isBusy = this.operationGuard.isBusy() || this.animQueue.isBusy();\n const isMosaicApplying = ((_a = this.mosaicSession) === null || _a === void 0 ? void 0 : _a.isApplying) === true;\n if (isInCropMode) {\n CROP_MODE_CONTROL_KEYS.forEach((key) => {\n this.setControlEnabled(key, !isBusy && CROP_MODE_ENABLED_KEYS.includes(key));\n });\n return;\n }\n if (isInMosaicMode) {\n MOSAIC_MODE_CONTROL_KEYS.forEach((key) => {\n this.setControlEnabled(key, !isBusy && !isMosaicApplying && MOSAIC_MODE_ENABLED_KEYS.includes(key));\n });\n this.setControlEnabled('imageInput', false);\n return;\n }\n this.setControlEnabled('scalePercentageInput', hasImage && !isBusy);\n this.setControlEnabled('rotateLeftDegreesInput', hasImage && !isBusy);\n this.setControlEnabled('rotateRightDegreesInput', hasImage && !isBusy);\n this.setControlEnabled('zoomInButton', hasImage && !isBusy && this.currentScale < this.options.maxScale);\n this.setControlEnabled('zoomOutButton', hasImage && !isBusy && this.currentScale > this.options.minScale);\n this.setControlEnabled('rotateLeftButton', hasImage && !isBusy);\n this.setControlEnabled('rotateRightButton', hasImage && !isBusy);\n this.setControlEnabled('createMaskButton', hasImage && !isBusy);\n this.setControlEnabled('removeSelectedMaskButton', hasSelectedMask && !isBusy);\n this.setControlEnabled('removeAllMasksButton', hasMasks && !isBusy);\n this.setControlEnabled('mergeMasksButton', hasImage && hasMasks && !isBusy);\n this.setControlEnabled('downloadImageButton', hasImage && !isBusy);\n this.setControlEnabled('resetImageTransformButton', hasImage && !isDefaultTransform && !isBusy);\n this.setControlEnabled('undoButton', hasImage && !isBusy && canUndo);\n this.setControlEnabled('redoButton', hasImage && !isBusy && canRedo);\n this.setControlEnabled('enterCropModeButton', hasImage && !isBusy);\n this.setControlEnabled('enterMosaicModeButton', hasImage && !isBusy);\n this.setControlEnabled('exitMosaicModeButton', false);\n this.setControlEnabled('mosaicBrushSizeInput', !this.isDisposed);\n this.setControlEnabled('mosaicBlockSizeInput', !this.isDisposed);\n this.setControlEnabled('imageInput', !isBusy);\n this.setControlEnabled('applyCropButton', false);\n this.setControlEnabled('cancelCropButton', false);\n }\n setControlEnabled(key, isEnabled) {\n var _a;\n const id = this.elements[key];\n if (!id)\n return;\n const controlElement = document.getElementById(id);\n if (!controlElement)\n return;\n this.recordElementOriginalState(key, controlElement);\n if ('disabled' in controlElement) {\n controlElement.disabled = !isEnabled;\n return;\n }\n if (!isEnabled) {\n controlElement.setAttribute('aria-disabled', 'true');\n controlElement.style.pointerEvents = 'none';\n }\n else {\n const originalAria = this.elementOriginalAriaDisabledMap.get(key);\n if (originalAria === null || originalAria === undefined) {\n controlElement.removeAttribute('aria-disabled');\n }\n else {\n controlElement.setAttribute('aria-disabled', originalAria);\n }\n controlElement.style.pointerEvents =\n (_a = this.elementOriginalPointerEventsMap.get(key)) !== null && _a !== void 0 ? _a : '';\n }\n }\n recordElementOriginalState(key, element) {\n if (!this.elementOriginalAriaDisabledMap.has(key)) {\n this.elementOriginalAriaDisabledMap.set(key, element.getAttribute('aria-disabled'));\n }\n if (!this.elementOriginalPointerEventsMap.has(key)) {\n this.elementOriginalPointerEventsMap.set(key, element.style.pointerEvents || '');\n }\n if ('disabled' in element && !this.elementOriginalDisabledMap.has(key)) {\n this.elementOriginalDisabledMap.set(key, !!element.disabled);\n }\n }\n restoreElementOriginalStates() {\n var _a, _b;\n for (const key of Object.keys(this.elements)) {\n const id = this.elements[key];\n if (!id)\n continue;\n const element = document.getElementById(id);\n if (!element)\n continue;\n if ('disabled' in element && this.elementOriginalDisabledMap.has(key)) {\n element.disabled =\n (_a = this.elementOriginalDisabledMap.get(key)) !== null && _a !== void 0 ? _a : false;\n }\n if (this.elementOriginalAriaDisabledMap.has(key)) {\n const originalAria = this.elementOriginalAriaDisabledMap.get(key);\n if (originalAria === null || originalAria === undefined) {\n element.removeAttribute('aria-disabled');\n }\n else {\n element.setAttribute('aria-disabled', originalAria);\n }\n }\n if (this.elementOriginalPointerEventsMap.has(key)) {\n element.style.pointerEvents = (_b = this.elementOriginalPointerEventsMap.get(key)) !== null && _b !== void 0 ? _b : '';\n }\n }\n this.elementOriginalDisabledMap.clear();\n this.elementOriginalAriaDisabledMap.clear();\n this.elementOriginalPointerEventsMap.clear();\n }\n updatePlaceholderStatus() {\n setPlaceholderVisibleImpl(this.placeholderElement, this.containerElement, this.options.showPlaceholder ? !this.originalImage : false);\n }\n dispose() {\n var _a;\n if (this.isDisposed)\n return;\n const context = this.buildCallbackContext('dispose', false);\n const previousImage = this.originalImage;\n this.isDisposed = true;\n this.operationGuard.markDisposed();\n this.animQueue.clear();\n (_a = this.domBindings) === null || _a === void 0 ? void 0 : _a.removeAll();\n this.restoreElementOriginalStates();\n if (this.cropSession && this.canvas) {\n try {\n const context = this.buildCropControllerContext();\n cancelCropImpl(context);\n }\n catch {\n }\n this.cropSession = null;\n }\n if (this.mosaicSession && this.canvas) {\n try {\n exitMosaicModeImpl(this.buildMosaicControllerContext());\n }\n catch {\n }\n this.mosaicSession = null;\n }\n if (this.canvas) {\n try {\n void Promise.resolve(this.canvas.dispose()).catch(() => {\n });\n }\n catch {\n }\n this.canvas = null;\n this.canvasElement = null;\n this.isImageLoadedToCanvas = false;\n }\n this.originalImage = null;\n this.currentImageMimeType = null;\n this.lastMask = null;\n this.maskCounter = 0;\n this.currentScale = 1;\n this.currentRotation = 0;\n this.baseImageScale = 1;\n this.lastSnapshot = null;\n this.transformController = null;\n this.viewportCache.clear();\n if (previousImage) {\n this.emitOptionCallback('onImageCleared', [previousImage, context]);\n }\n this.emitImageChanged(context);\n this.emitBusyChangeIfChanged(context);\n this.emitOptionCallback('onEditorDisposed', [context]);\n }\n}\n//# sourceMappingURL=image-editor.js.map"],"names":["isFiniteNumber","clampExportQuality","isPositiveFinite","getCanvasDocument","setPlaceholderVisibleImpl","loadImageImpl","loadFromStateImpl","saveStateImpl","createMaskImpl","removeSelectedMaskImpl","removeAllMasksImpl","mergeMasksImpl","downloadImageImpl","exportImageBase64Impl","exportImageFileImpl","enterMosaicModeImpl","exitMosaicModeImpl","enterCropModeImpl","cancelCropImpl","applyCropImpl"],"mappings":"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"}