{"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/editor-object-kind.js","../esm/core/state-serializer.js","../esm/history/history-manager.js","../esm/fabric/fabric-adapter.js","../esm/annotation/annotation-lock.js","../esm/annotation/annotation-style.js","../esm/annotation/annotation-manager.js","../esm/core/layer-order.js","../esm/utils/canvas-region.js","../esm/utils/number.js","../esm/utils/pointer.js","../esm/annotation/text-controller.js","../esm/annotation/draw-controller.js","../esm/core/errors.js","../esm/mask/mask-style.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/utils/image-element-loader.js","../esm/export/overlay-merge-service.js","../esm/export/export-service.js","../esm/utils/file.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/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/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    mergeMasksByDefault: true,\n    mergeAnnotationsByDefault: 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    textAnnotationName: 'text',\n    drawAnnotationName: 'draw',\n    groupSelection: false,\n    showPlaceholder: true,\n    initialImageBase64: null,\n    defaultDownloadFileName: 'edited_image',\n    onImageLoadStart: null,\n    onImageLoaded: null,\n    onImageCleared: null,\n    onImageChanged: null,\n    onBusyChange: null,\n    onEditorDisposed: null,\n    onMasksChanged: null,\n    onAnnotationsChanged: 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    aspectRatio: 'free',\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});\nexport const DEFAULT_TEXT_ANNOTATION_CONFIG = Object.freeze({\n    text: 'Text',\n    left: undefined,\n    top: undefined,\n    width: 200,\n    fontSize: 32,\n    fontFamily: 'sans-serif',\n    fontWeight: 'normal',\n    fill: '#ff0000',\n    backgroundColor: 'rgba(255,255,255,0)',\n    textAlign: 'left',\n    angle: 0,\n    selectable: true,\n    evented: true,\n    editable: true,\n    enterEditing: true,\n    annotationHidden: false,\n    annotationLocked: false,\n    styles: Object.freeze({}),\n});\nexport const DEFAULT_DRAW_CONFIG = Object.freeze({\n    brushSize: 8,\n    color: '#ff0000',\n    opacity: 1,\n    lineCap: 'round',\n    lineJoin: 'round',\n    selectable: true,\n    evented: true,\n    annotationHidden: false,\n    annotationLocked: false,\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    'mergeMasksByDefault',\n    'mergeAnnotationsByDefault',\n    'defaultMaskWidth',\n    'defaultMaskHeight',\n    'defaultMaskConfig',\n    'maskRotatable',\n    'maskLabelOnSelect',\n    'maskLabelOffset',\n    'maskName',\n    'textAnnotationName',\n    'drawAnnotationName',\n    'groupSelection',\n    'showPlaceholder',\n    'initialImageBase64',\n    'defaultDownloadFileName',\n    'onImageLoadStart',\n    'onImageLoaded',\n    'onImageCleared',\n    'onImageChanged',\n    'onBusyChange',\n    'onEditorDisposed',\n    'onMasksChanged',\n    'onAnnotationsChanged',\n    'onSelectionChange',\n    'onError',\n    'onWarning',\n    'label',\n    'crop',\n    'defaultMosaicConfig',\n    'defaultTextConfig',\n    'defaultDrawConfig',\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 cloneResolvedTextAnnotationConfig(config) {\n    return {\n        ...config,\n        styles: { ...config.styles },\n    };\n}\nexport function cloneResolvedDrawConfig(config) {\n    return { ...config };\n}\nfunction normalizeTextAlign(value, fallback) {\n    return value === 'left' || value === 'center' || value === 'right' || value === 'justify'\n        ? value\n        : fallback;\n}\nfunction normalizePositiveNumber(value, fallback) {\n    return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : fallback;\n}\nfunction normalizeBoolean(value, fallback) {\n    return typeof value === 'boolean' ? value : fallback;\n}\nfunction normalizeString(value, fallback) {\n    return typeof value === 'string' ? value : fallback;\n}\nfunction normalizeTextLeftTop(value) {\n    return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\nfunction normalizeTextboxStyles(value) {\n    if (!isConfigObject(value))\n        return {};\n    return { ...value };\n}\nexport function mergeTextAnnotationConfigPatch(current, patch, fallback = current) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const next = cloneResolvedTextAnnotationConfig(current);\n    if (hasOwn(raw, 'text'))\n        next.text = normalizeString(raw.text, fallback.text);\n    if (hasOwn(raw, 'left'))\n        next.left = normalizeTextLeftTop(raw.left);\n    if (hasOwn(raw, 'top'))\n        next.top = normalizeTextLeftTop(raw.top);\n    if (hasOwn(raw, 'width'))\n        next.width = normalizePositiveNumber(raw.width, fallback.width);\n    if (hasOwn(raw, 'fontSize')) {\n        next.fontSize = normalizePositiveNumber(raw.fontSize, fallback.fontSize);\n    }\n    if (hasOwn(raw, 'fontFamily')) {\n        next.fontFamily = normalizeString(raw.fontFamily, fallback.fontFamily);\n    }\n    if (hasOwn(raw, 'fontWeight')) {\n        next.fontWeight =\n            typeof raw.fontWeight === 'string' || typeof raw.fontWeight === 'number'\n                ? raw.fontWeight\n                : fallback.fontWeight;\n    }\n    if (hasOwn(raw, 'fill'))\n        next.fill = normalizeString(raw.fill, fallback.fill);\n    if (hasOwn(raw, 'backgroundColor')) {\n        next.backgroundColor = normalizeString(raw.backgroundColor, fallback.backgroundColor);\n    }\n    if (hasOwn(raw, 'textAlign'))\n        next.textAlign = normalizeTextAlign(raw.textAlign, fallback.textAlign);\n    if (hasOwn(raw, 'angle'))\n        next.angle = normalizeFiniteNumber(raw.angle, fallback.angle);\n    if (hasOwn(raw, 'selectable'))\n        next.selectable = normalizeBoolean(raw.selectable, fallback.selectable);\n    if (hasOwn(raw, 'evented'))\n        next.evented = normalizeBoolean(raw.evented, fallback.evented);\n    if (hasOwn(raw, 'editable'))\n        next.editable = normalizeBoolean(raw.editable, fallback.editable);\n    if (hasOwn(raw, 'enterEditing')) {\n        next.enterEditing = normalizeBoolean(raw.enterEditing, fallback.enterEditing);\n    }\n    if (hasOwn(raw, 'annotationHidden')) {\n        next.annotationHidden = normalizeBoolean(raw.annotationHidden, fallback.annotationHidden);\n    }\n    if (hasOwn(raw, 'annotationLocked')) {\n        next.annotationLocked = normalizeBoolean(raw.annotationLocked, fallback.annotationLocked);\n    }\n    if (hasOwn(raw, 'styles')) {\n        next.styles = {\n            ...next.styles,\n            ...normalizeTextboxStyles(raw.styles),\n        };\n    }\n    return next;\n}\nexport function normalizeTextAnnotationConfig(input, fallback) {\n    if (!isConfigObject(input))\n        return cloneResolvedTextAnnotationConfig(fallback);\n    return mergeTextAnnotationConfigPatch(fallback, input);\n}\nfunction normalizeLineCap(value, fallback) {\n    return value === 'butt' || value === 'round' || value === 'square' ? value : fallback;\n}\nfunction normalizeLineJoin(value, fallback) {\n    return value === 'bevel' || value === 'round' || value === 'miter' ? value : fallback;\n}\nfunction normalizeOpacity(value, fallback) {\n    if (typeof value !== 'number' || !Number.isFinite(value))\n        return fallback;\n    return Math.max(0, Math.min(1, value));\n}\nexport function mergeDrawConfigPatch(current, patch, fallback = current) {\n    const raw = isConfigObject(patch) ? patch : {};\n    const next = cloneResolvedDrawConfig(current);\n    if (hasOwn(raw, 'brushSize')) {\n        next.brushSize = normalizePositiveNumber(raw.brushSize, fallback.brushSize);\n    }\n    if (hasOwn(raw, 'color'))\n        next.color = normalizeString(raw.color, fallback.color);\n    if (hasOwn(raw, 'opacity'))\n        next.opacity = normalizeOpacity(raw.opacity, fallback.opacity);\n    if (hasOwn(raw, 'lineCap'))\n        next.lineCap = normalizeLineCap(raw.lineCap, fallback.lineCap);\n    if (hasOwn(raw, 'lineJoin'))\n        next.lineJoin = normalizeLineJoin(raw.lineJoin, fallback.lineJoin);\n    if (hasOwn(raw, 'selectable'))\n        next.selectable = normalizeBoolean(raw.selectable, fallback.selectable);\n    if (hasOwn(raw, 'evented'))\n        next.evented = normalizeBoolean(raw.evented, fallback.evented);\n    if (hasOwn(raw, 'annotationHidden')) {\n        next.annotationHidden = normalizeBoolean(raw.annotationHidden, fallback.annotationHidden);\n    }\n    if (hasOwn(raw, 'annotationLocked')) {\n        next.annotationLocked = normalizeBoolean(raw.annotationLocked, fallback.annotationLocked);\n    }\n    return next;\n}\nexport function normalizeDrawConfig(input, fallback) {\n    if (!isConfigObject(input))\n        return cloneResolvedDrawConfig(fallback);\n    return mergeDrawConfigPatch(fallback, input);\n}\nexport function areResolvedTextAnnotationConfigsEqual(left, right) {\n    return JSON.stringify(left) === JSON.stringify(right);\n}\nexport function areResolvedDrawConfigsEqual(left, right) {\n    return (left.brushSize === right.brushSize &&\n        left.color === right.color &&\n        left.opacity === right.opacity &&\n        left.lineCap === right.lineCap &&\n        left.lineJoin === right.lineJoin &&\n        left.selectable === right.selectable &&\n        left.evented === right.evented &&\n        left.annotationHidden === right.annotationHidden &&\n        left.annotationLocked === right.annotationLocked);\n}\nexport function getInvalidTextAnnotationConfigFields(input) {\n    const raw = isConfigObject(input) ? input : {};\n    const invalid = [];\n    if (hasOwn(raw, 'text') && typeof raw.text !== 'string')\n        invalid.push('text');\n    if (hasOwn(raw, 'width') && !isFiniteNumber(raw.width))\n        invalid.push('width');\n    if (hasOwn(raw, 'fontSize') && !isFiniteNumber(raw.fontSize))\n        invalid.push('fontSize');\n    if (hasOwn(raw, 'fontFamily') && typeof raw.fontFamily !== 'string')\n        invalid.push('fontFamily');\n    if (hasOwn(raw, 'fill') && typeof raw.fill !== 'string') {\n        invalid.push('fill');\n    }\n    return invalid;\n}\nexport function getInvalidDrawConfigFields(input) {\n    const raw = isConfigObject(input) ? input : {};\n    const invalid = [];\n    if (hasOwn(raw, 'brushSize') && !isFiniteNumber(raw.brushSize))\n        invalid.push('brushSize');\n    if (hasOwn(raw, 'color') && typeof raw.color !== 'string')\n        invalid.push('color');\n    if (hasOwn(raw, 'opacity') && !isFiniteNumber(raw.opacity))\n        invalid.push('opacity');\n    return invalid;\n}\nexport function resolveOptions(input) {\n    var _a, _b, _c, _d, _e;\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' ||\n            key === 'crop' ||\n            key === 'defaultMosaicConfig' ||\n            key === 'defaultTextConfig' ||\n            key === 'defaultDrawConfig') {\n            continue;\n        }\n        if (key === 'onImageLoadStart' ||\n            key === 'onImageLoaded' ||\n            key === 'onImageCleared' ||\n            key === 'onImageChanged' ||\n            key === 'onBusyChange' ||\n            key === 'onEditorDisposed' ||\n            key === 'onMasksChanged' ||\n            key === 'onAnnotationsChanged' ||\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.onAnnotationsChanged = normalizeCallback(raw.onAnnotationsChanged);\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        aspectRatio: (_a = userCrop.aspectRatio) !== null && _a !== void 0 ? _a : DEFAULT_CROP.aspectRatio,\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: (_b = userCrop.hideMasksDuringCrop) !== null && _b !== void 0 ? _b : DEFAULT_CROP.hideMasksDuringCrop,\n        preserveMasksAfterCrop: (_c = userCrop.preserveMasksAfterCrop) !== null && _c !== void 0 ? _c : DEFAULT_CROP.preserveMasksAfterCrop,\n        allowRotationOfCropRect: (_d = userCrop.allowRotationOfCropRect) !== null && _d !== void 0 ? _d : DEFAULT_CROP.allowRotationOfCropRect,\n        exportFileType: (_e = userCrop.exportFileType) !== null && _e !== void 0 ? _e : 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    const defaultTextConfig = normalizeTextAnnotationConfig(raw.defaultTextConfig, DEFAULT_TEXT_ANNOTATION_CONFIG);\n    Object.freeze(defaultTextConfig.styles);\n    Object.freeze(defaultTextConfig);\n    const defaultDrawConfig = normalizeDrawConfig(raw.defaultDrawConfig, DEFAULT_DRAW_CONFIG);\n    Object.freeze(defaultDrawConfig);\n    return Object.freeze({\n        ...resolved,\n        label,\n        crop,\n        defaultMosaicConfig,\n        defaultTextConfig,\n        defaultDrawConfig,\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 isBaseImageObject(object) {\n    return (!!object &&\n        typeof object === 'object' &&\n        object.editorObjectKind === 'baseImage');\n}\nexport function isMaskObject(object) {\n    const candidate = object;\n    return (!!candidate &&\n        candidate.editorObjectKind === 'mask' &&\n        typeof candidate.maskId === 'number' &&\n        typeof candidate.maskUid === 'string' &&\n        typeof candidate.maskName === 'string');\n}\nexport function isAnnotationObject(object) {\n    const candidate = object;\n    return (!!candidate &&\n        candidate.editorObjectKind === 'annotation' &&\n        typeof candidate.annotationId === 'number' &&\n        typeof candidate.annotationType === 'string' &&\n        typeof candidate.annotationName === 'string');\n}\nexport function isTextAnnotationObject(object) {\n    return isAnnotationObject(object) && object.annotationType === 'text';\n}\nexport function isDrawAnnotationObject(object) {\n    return isAnnotationObject(object) && object.annotationType === 'draw';\n}\nexport function isSessionObject(object) {\n    const candidate = object;\n    return (!!candidate &&\n        candidate.editorObjectKind === 'session' &&\n        typeof candidate.sessionObjectType === 'string');\n}\nexport function isEditableOverlayObject(object) {\n    return isMaskObject(object) || isAnnotationObject(object);\n}\n//# sourceMappingURL=public-types.js.map","export function markBaseImageObject(image) {\n    const baseImage = image;\n    baseImage.editorObjectKind = 'baseImage';\n    return baseImage;\n}\nexport function markMaskObject(object, meta) {\n    const mask = object;\n    mask.editorObjectKind = 'mask';\n    mask.maskId = meta.maskId;\n    mask.maskUid = meta.maskUid;\n    mask.maskName = meta.maskName;\n    mask.originalAlpha = meta.originalAlpha;\n    if ('originalStroke' in meta)\n        mask.originalStroke = meta.originalStroke;\n    if (typeof meta.originalStrokeWidth === 'number') {\n        mask.originalStrokeWidth = meta.originalStrokeWidth;\n    }\n    return mask;\n}\nexport function markAnnotationObject(object, meta) {\n    var _a, _b;\n    const annotation = object;\n    annotation.editorObjectKind = 'annotation';\n    annotation.annotationId = meta.annotationId;\n    annotation.annotationType = meta.annotationType;\n    annotation.annotationName = meta.annotationName;\n    annotation.annotationHidden = (_a = meta.annotationHidden) !== null && _a !== void 0 ? _a : false;\n    annotation.annotationLocked = (_b = meta.annotationLocked) !== null && _b !== void 0 ? _b : false;\n    return annotation;\n}\nexport function markSessionObject(object, sessionObjectType) {\n    const sessionObject = object;\n    sessionObject.editorObjectKind = 'session';\n    sessionObject.sessionObjectType = sessionObjectType;\n    return sessionObject;\n}\n//# sourceMappingURL=editor-object-kind.js.map","import { isAnnotationObject, isBaseImageObject, isMaskObject } from './public-types.js';\nimport { markAnnotationObject, markBaseImageObject, markMaskObject } from './editor-object-kind.js';\nexport const SNAPSHOT_CUSTOM_KEYS = [\n    'editorObjectKind',\n    'sessionObjectType',\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    'flipX',\n    'flipY',\n    'isMosaicPreview',\n    'annotationId',\n    'annotationType',\n    'annotationName',\n    'annotationHidden',\n    'annotationLocked',\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.editorObjectKind === 'string') {\n            jsonObject.editorObjectKind = liveObject.editorObjectKind;\n        }\n        if (typeof liveObject.sessionObjectType === 'string') {\n            jsonObject.sessionObjectType = liveObject.sessionObjectType;\n        }\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 (typeof liveObject.flipX === 'boolean') {\n            jsonObject.flipX = liveObject.flipX;\n        }\n        if (typeof liveObject.flipY === 'boolean') {\n            jsonObject.flipY = liveObject.flipY;\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        if (typeof liveObject.annotationId === 'number') {\n            jsonObject.annotationId = liveObject.annotationId;\n        }\n        if (typeof liveObject.annotationType === 'string') {\n            jsonObject.annotationType = liveObject.annotationType;\n        }\n        if (typeof liveObject.annotationName === 'string') {\n            jsonObject.annotationName = liveObject.annotationName;\n        }\n        if (typeof liveObject.annotationHidden === 'boolean') {\n            jsonObject.annotationHidden = liveObject.annotationHidden;\n        }\n        if (typeof liveObject.annotationLocked === 'boolean') {\n            jsonObject.annotationLocked = liveObject.annotationLocked;\n        }\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    const activeAnnotationId = activeObject && isAnnotationObject(activeObject)\n        ? activeObject.annotationId\n        : typeof input.activeAnnotationId === 'number'\n            ? input.activeAnnotationId\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.editorObjectKind !== 'session' &&\n            o.isCropRect !== true &&\n            o.maskLabel !== true &&\n            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        activeObjectKind: activeMaskId !== null ? 'mask' : activeAnnotationId !== null ? 'annotation' : null,\n    };\n    if (activeMaskId !== null)\n        jsonObj._editorState.activeMaskId = activeMaskId;\n    if (activeAnnotationId !== null) {\n        jsonObj._editorState.activeAnnotationId = activeAnnotationId;\n    }\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    restoreEditorObjectPropsFromJson(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 &&\n        json._editorState &&\n        typeof json._editorState.activeAnnotationId === 'number') {\n        editorState.activeAnnotationId = json._editorState.activeAnnotationId;\n    }\n    if (editorState && json._editorState && 'activeObjectKind' in json._editorState) {\n        const kind = json._editorState.activeObjectKind;\n        editorState.activeObjectKind =\n            kind === 'mask' || kind === 'annotation' || kind === null ? kind : null;\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 maxAnnotationId = objects\n        .filter(isAnnotationObject)\n        .reduce((max, annotationObject) => Math.max(max, annotationObject.annotationId), 0);\n    const masks = objects.filter(isMaskObject);\n    const annotations = objects.filter(isAnnotationObject);\n    const originalImage = (_b = objects.find(isBaseImageObject)) !== null && _b !== void 0 ? _b : null;\n    return {\n        editorState,\n        maxMaskId,\n        maxAnnotationId,\n        originalImage,\n        objects,\n        masks,\n        annotations,\n        jsonString,\n    };\n}\nfunction restoreEditorObjectPropsFromJson(canvasObjs, jsonObjs) {\n    var _a, _b, _c, _d;\n    jsonObjs.forEach((jObj, index) => {\n        const canvasObj = canvasObjs[index];\n        if (!canvasObj)\n            return;\n        if (jObj.editorObjectKind === 'baseImage') {\n            markBaseImageObject(canvasObj);\n            return;\n        }\n        if (jObj.editorObjectKind === 'annotation' &&\n            typeof jObj.annotationId === 'number' &&\n            typeof jObj.annotationType === 'string' &&\n            typeof jObj.annotationName === 'string') {\n            markAnnotationObject(canvasObj, {\n                annotationId: jObj.annotationId,\n                annotationType: jObj.annotationType === 'draw' ? 'draw' : 'text',\n                annotationName: jObj.annotationName,\n                annotationHidden: typeof jObj.annotationHidden === 'boolean' ? jObj.annotationHidden : false,\n                annotationLocked: typeof jObj.annotationLocked === 'boolean' ? jObj.annotationLocked : false,\n            });\n            return;\n        }\n        if (jObj.editorObjectKind === 'session' && typeof jObj.sessionObjectType === 'string') {\n            canvasObj.editorObjectKind = 'session';\n            canvasObj.sessionObjectType = jObj.sessionObjectType;\n        }\n    });\n    const consumedCanvasIndexes = new Set();\n    for (const jObj of jsonObjs) {\n        if (jObj.editorObjectKind !== 'mask' || 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        const originalStroke = 'originalStroke' in jObj\n            ? jObj.originalStroke\n            : undefined;\n        markMaskObject(maskObject, {\n            maskId: jObj.maskId,\n            maskUid: typeof jObj.maskUid === 'string' ? jObj.maskUid : `mask-${jObj.maskId}`,\n            maskName: typeof jObj.maskName === 'string' ? jObj.maskName : '',\n            originalAlpha: typeof jObj.originalAlpha === 'number'\n                ? jObj.originalAlpha\n                : ((_d = maskObject.opacity) !== null && _d !== void 0 ? _d : 0.5),\n            originalStroke,\n            originalStrokeWidth: typeof jObj.originalStrokeWidth === 'number' ? jObj.originalStrokeWidth : undefined,\n        });\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    async execute(command) {\n        await 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","export function isAnnotationLocked(annotation) {\n    return annotation.annotationLocked === true;\n}\nexport function isAnnotationUnlocked(annotation) {\n    return !isAnnotationLocked(annotation);\n}\n//# sourceMappingURL=annotation-lock.js.map","import { isTextAnnotationObject, } from '../core/public-types.js';\nimport { isAnnotationLocked } from './annotation-lock.js';\nfunction setObjectProps(object, props) {\n    try {\n        object.set(props);\n    }\n    catch {\n        Object.assign(object, props);\n    }\n}\nfunction syncTextEditability(annotation, editable) {\n    const textObject = annotation;\n    textObject.editable = editable;\n}\nexport function syncAnnotationRuntimeState(annotation) {\n    var _a;\n    const hidden = annotation.annotationHidden === true;\n    const locked = isAnnotationLocked(annotation);\n    setObjectProps(annotation, {\n        visible: !hidden,\n        selectable: locked ? false : true,\n        evented: locked ? false : true,\n        hasControls: !locked,\n        lockMovementX: locked,\n        lockMovementY: locked,\n        lockScalingX: locked,\n        lockScalingY: locked,\n        lockRotation: locked,\n    });\n    if (!locked) {\n        setObjectProps(annotation, {\n            selectable: true,\n            evented: true,\n            hasControls: true,\n            lockMovementX: false,\n            lockMovementY: false,\n            lockScalingX: false,\n            lockScalingY: false,\n            lockRotation: false,\n        });\n    }\n    if (isTextAnnotationObject(annotation)) {\n        syncTextEditability(annotation, !locked);\n    }\n    (_a = annotation.setCoords) === null || _a === void 0 ? void 0 : _a.call(annotation);\n}\nexport function syncAnnotationRuntimeStates(annotations) {\n    annotations.forEach(syncAnnotationRuntimeState);\n}\n//# sourceMappingURL=annotation-style.js.map","import { isAnnotationObject, isDrawAnnotationObject, isTextAnnotationObject, } from '../core/public-types.js';\nimport { syncAnnotationRuntimeState } from './annotation-style.js';\nimport { isAnnotationLocked, isAnnotationUnlocked } from './annotation-lock.js';\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 getActiveSelectionObjects(canvas) {\n    const active = canvas.getActiveObject();\n    if (!active)\n        return [];\n    if (!isActiveSelectionObject(active))\n        return [active];\n    const getObjects = active.getObjects;\n    return typeof getObjects === 'function' ? getObjects.call(active) : [];\n}\nexport function getAnnotations(canvas) {\n    return canvas.getObjects().filter(isAnnotationObject).slice();\n}\nexport function getSelectedAnnotations(canvas) {\n    return getActiveSelectionObjects(canvas).filter(isAnnotationObject);\n}\nfunction snapshotAnnotation(annotation) {\n    return JSON.stringify({\n        text: annotation.text,\n        fontSize: annotation.fontSize,\n        fontFamily: annotation.fontFamily,\n        fontWeight: annotation.fontWeight,\n        fill: annotation.fill,\n        backgroundColor: annotation.backgroundColor,\n        textAlign: annotation.textAlign,\n        width: annotation.width,\n        stroke: annotation.stroke,\n        strokeWidth: annotation.strokeWidth,\n        opacity: annotation.opacity,\n        visible: annotation.visible,\n        selectable: annotation.selectable,\n        evented: annotation.evented,\n        annotationHidden: annotation.annotationHidden,\n        annotationLocked: annotation.annotationLocked,\n    });\n}\nfunction setAnnotationProps(annotation, props) {\n    try {\n        annotation.set(props);\n    }\n    catch {\n        Object.assign(annotation, props);\n    }\n}\nfunction updateTextAnnotation(annotation, config) {\n    const props = {};\n    const raw = config;\n    if (typeof raw.text === 'string')\n        props.text = raw.text;\n    if (typeof raw.fontSize === 'number' && Number.isFinite(raw.fontSize) && raw.fontSize > 0) {\n        props.fontSize = raw.fontSize;\n    }\n    if (typeof raw.fontFamily === 'string')\n        props.fontFamily = raw.fontFamily;\n    if (typeof raw.fontWeight === 'string' || typeof raw.fontWeight === 'number') {\n        props.fontWeight = raw.fontWeight;\n    }\n    if (typeof raw.fill === 'string')\n        props.fill = raw.fill;\n    if (typeof raw.backgroundColor === 'string')\n        props.backgroundColor = raw.backgroundColor;\n    if (raw.textAlign === 'left' ||\n        raw.textAlign === 'center' ||\n        raw.textAlign === 'right' ||\n        raw.textAlign === 'justify') {\n        props.textAlign = raw.textAlign;\n    }\n    if (typeof raw.width === 'number' && Number.isFinite(raw.width) && raw.width > 0) {\n        props.width = raw.width;\n    }\n    if (Object.keys(props).length > 0)\n        setAnnotationProps(annotation, props);\n}\nfunction updateDrawAnnotation(annotation, config) {\n    const props = {};\n    const raw = config;\n    if (typeof raw.stroke === 'string')\n        props.stroke = raw.stroke;\n    if (typeof raw.strokeWidth === 'number' &&\n        Number.isFinite(raw.strokeWidth) &&\n        raw.strokeWidth > 0) {\n        props.strokeWidth = raw.strokeWidth;\n    }\n    if (typeof raw.opacity === 'number' && Number.isFinite(raw.opacity)) {\n        props.opacity = Math.max(0, Math.min(1, raw.opacity));\n    }\n    if (Object.keys(props).length > 0)\n        setAnnotationProps(annotation, props);\n}\nexport function updateAnnotationObject(annotation, config) {\n    const before = snapshotAnnotation(annotation);\n    const raw = config;\n    if (typeof raw.annotationHidden === 'boolean') {\n        annotation.annotationHidden = raw.annotationHidden;\n    }\n    if (typeof raw.annotationLocked === 'boolean') {\n        annotation.annotationLocked = raw.annotationLocked;\n    }\n    const lockedAfter = isAnnotationLocked(annotation);\n    if (!lockedAfter) {\n        if (typeof raw.selectable === 'boolean')\n            annotation.selectable = raw.selectable;\n        if (typeof raw.evented === 'boolean')\n            annotation.evented = raw.evented;\n        if (isTextAnnotationObject(annotation))\n            updateTextAnnotation(annotation, config);\n        if (isDrawAnnotationObject(annotation))\n            updateDrawAnnotation(annotation, config);\n    }\n    syncAnnotationRuntimeState(annotation);\n    return snapshotAnnotation(annotation) !== before;\n}\nexport function updateAnnotation(context, annotationId, config) {\n    const target = getAnnotations(context.canvas).find((annotation) => annotation.annotationId === annotationId);\n    if (!target)\n        return false;\n    const changed = updateAnnotationObject(target, config);\n    if (!changed)\n        return false;\n    context.canvas.requestRenderAll();\n    context.saveCanvasState();\n    context.updateUi();\n    return true;\n}\nexport function updateSelectedAnnotation(context, config) {\n    const selectedAnnotations = getSelectedAnnotations(context.canvas);\n    if (selectedAnnotations.length === 0)\n        return false;\n    const changed = selectedAnnotations\n        .map((annotation) => updateAnnotationObject(annotation, config))\n        .some(Boolean);\n    if (!changed)\n        return false;\n    context.canvas.requestRenderAll();\n    context.saveCanvasState();\n    context.updateUi();\n    return true;\n}\nexport function removeAnnotationObjects(context, objects, options = {}) {\n    const force = options.force === true;\n    const removable = objects.filter((annotation) => force || isAnnotationUnlocked(annotation));\n    if (removable.length === 0)\n        return 0;\n    for (const annotation of removable) {\n        context.canvas.remove(annotation);\n    }\n    context.canvas.discardActiveObject();\n    context.canvas.renderAll();\n    if (options.saveHistory !== false)\n        context.saveCanvasState();\n    context.updateUi();\n    return removable.length;\n}\nexport function removeSelectedAnnotation(context) {\n    return removeAnnotationObjects(context, getSelectedAnnotations(context.canvas));\n}\nexport function removeAllAnnotations(context, options = {}) {\n    return removeAnnotationObjects(context, getAnnotations(context.canvas), options);\n}\nfunction getAnnotationListDocument(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 renderAnnotationList(context) {\n    const listId = context.getListElementId();\n    if (!listId)\n        return;\n    const ownerDocument = getAnnotationListDocument(context);\n    const listEl = ownerDocument.getElementById(listId);\n    if (!listEl || !context.canvas)\n        return;\n    listEl.innerHTML = '';\n    const canvas = context.canvas;\n    getAnnotations(canvas).forEach((annotation) => {\n        const item = ownerDocument.createElement('li');\n        item.className = 'list-group-item annotation-item';\n        item.textContent = annotation.annotationName;\n        item.dataset.annotationId = String(annotation.annotationId);\n        item.onclick = () => {\n            const id = Number(item.dataset.annotationId);\n            if (!Number.isFinite(id))\n                return;\n            const target = getAnnotations(canvas).find((candidate) => candidate.annotationId === id);\n            if (!target)\n                return;\n            canvas.setActiveObject(target);\n            context.onAnnotationSelected(target);\n        };\n        listEl.appendChild(item);\n    });\n}\nexport function updateAnnotationListSelection(context, selectedAnnotation) {\n    const listId = context.getListElementId();\n    if (!listId)\n        return;\n    const listEl = getAnnotationListDocument(context).getElementById(listId);\n    if (!listEl)\n        return;\n    const selectedId = selectedAnnotation ? String(selectedAnnotation.annotationId) : null;\n    listEl.querySelectorAll('.annotation-item').forEach((item) => {\n        item.classList.toggle('active', selectedId !== null && item.dataset.annotationId === selectedId);\n    });\n}\n//# sourceMappingURL=annotation-manager.js.map","import { isBaseImageObject, isEditableOverlayObject, isSessionObject, } from './public-types.js';\nfunction isLegacySessionObject(object) {\n    const candidate = object;\n    return (candidate.isCropRect === true ||\n        candidate.maskLabel === true ||\n        candidate.isMosaicPreview === true);\n}\nfunction moveObjectTo(canvas, object, index) {\n    const canvasWithLayerApi = canvas;\n    if (typeof canvasWithLayerApi.moveObjectTo === 'function') {\n        canvasWithLayerApi.moveObjectTo(object, index);\n        return;\n    }\n    try {\n        canvas.remove(object);\n        canvas.insertAt(index, object);\n    }\n    catch {\n        canvas.add(object);\n    }\n}\nfunction ensureOnCanvas(canvas, object) {\n    if (!canvas.getObjects().includes(object)) {\n        canvas.add(object);\n    }\n}\nfunction withoutObject(canvas, object) {\n    return canvas.getObjects().filter((candidate) => candidate !== object);\n}\nfunction findFirstSessionIndex(objects) {\n    return objects.findIndex((object) => isSessionObject(object) || isLegacySessionObject(object));\n}\nfunction getOrderedGroups(canvas) {\n    const baseImages = [];\n    const overlays = [];\n    const sessions = [];\n    const others = [];\n    for (const object of canvas.getObjects()) {\n        if (isBaseImageObject(object)) {\n            baseImages.push(object);\n        }\n        else if (isEditableOverlayObject(object)) {\n            overlays.push(object);\n        }\n        else if (isSessionObject(object) || isLegacySessionObject(object)) {\n            sessions.push(object);\n        }\n        else {\n            others.push(object);\n        }\n    }\n    return { baseImages, overlays, sessions, others };\n}\nexport function normalizeLayerOrder(canvas) {\n    const groups = getOrderedGroups(canvas);\n    const ordered = [\n        ...groups.baseImages,\n        ...groups.others,\n        ...groups.overlays,\n        ...groups.sessions,\n    ];\n    ordered.forEach((object, index) => {\n        moveObjectTo(canvas, object, index);\n    });\n}\nexport function placeBaseImageObject(canvas, image) {\n    ensureOnCanvas(canvas, image);\n    const targetIndex = withoutObject(canvas, image).filter(isBaseImageObject).length;\n    moveObjectTo(canvas, image, targetIndex);\n}\nexport function placeMaskObject(canvas, mask) {\n    ensureOnCanvas(canvas, mask);\n    const objects = withoutObject(canvas, mask);\n    const firstSessionIndex = findFirstSessionIndex(objects);\n    moveObjectTo(canvas, mask, firstSessionIndex === -1 ? objects.length : firstSessionIndex);\n}\nexport function placeAnnotationObject(canvas, annotation) {\n    ensureOnCanvas(canvas, annotation);\n    const objects = withoutObject(canvas, annotation);\n    const firstSessionIndex = findFirstSessionIndex(objects);\n    moveObjectTo(canvas, annotation, firstSessionIndex === -1 ? objects.length : firstSessionIndex);\n}\nexport function placeSessionObject(canvas, sessionObject) {\n    ensureOnCanvas(canvas, sessionObject);\n    moveObjectTo(canvas, sessionObject, withoutObject(canvas, sessionObject).length);\n}\nexport function getEditableOverlayRange(canvas) {\n    const objects = canvas.getObjects();\n    const overlayIndexes = objects\n        .map((object, index) => ({ object, index }))\n        .filter(({ object }) => isEditableOverlayObject(object));\n    if (overlayIndexes.length === 0)\n        return { start: -1, end: -1, overlays: [] };\n    return {\n        start: overlayIndexes[0].index,\n        end: overlayIndexes[overlayIndexes.length - 1].index,\n        overlays: overlayIndexes.map(({ object }) => object),\n    };\n}\n//# sourceMappingURL=layer-order.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","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","export function 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}\nexport function getPointerFromFabricEvent(canvas, event) {\n    const fabricEvent = event && typeof event === 'object'\n        ? event\n        : null;\n    if (!fabricEvent)\n        return null;\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}\n//# sourceMappingURL=pointer.js.map","import { markAnnotationObject } from '../core/editor-object-kind.js';\nimport { placeAnnotationObject } from '../core/layer-order.js';\nimport { isEditableOverlayObject, isTextAnnotationObject, } from '../core/public-types.js';\nimport { mergeTextAnnotationConfigPatch } from '../core/default-options.js';\nimport { getObjectBBox } from '../utils/canvas-region.js';\nimport { resolveNumeric } from '../utils/number.js';\nimport { getPointerFromFabricEvent } from '../utils/pointer.js';\nimport { markSessionObject } from '../core/editor-object-kind.js';\nimport { syncAnnotationRuntimeState } from './annotation-style.js';\nimport { isAnnotationUnlocked } from './annotation-lock.js';\nfunction resolveDefaultTextPosition(context) {\n    const image = context.getOriginalImage();\n    if (image) {\n        const bounds = getObjectBBox(image);\n        return { left: Math.round(bounds.left + 10), top: Math.round(bounds.top + 10) };\n    }\n    return { left: 10, top: 10 };\n}\nfunction resolveTextCreationConfig(context, config) {\n    var _a, _b;\n    const base = mergeTextAnnotationConfigPatch(context.getTextConfig(), config);\n    const fallback = resolveDefaultTextPosition(context);\n    const leftInput = (_a = config.left) !== null && _a !== void 0 ? _a : base.left;\n    const topInput = (_b = config.top) !== null && _b !== void 0 ? _b : base.top;\n    return {\n        ...base,\n        left: resolveNumeric(leftInput, 'x', fallback.left, context.canvas, context.options),\n        top: resolveNumeric(topInput, 'y', fallback.top, context.canvas, context.options),\n    };\n}\nfunction nextAnnotationMeta(context, config) {\n    const annotationId = context.getAnnotationCounter() + 1;\n    context.setAnnotationCounter(annotationId);\n    return {\n        annotationId,\n        annotationName: `${context.options.textAnnotationName}${annotationId}`,\n        annotationHidden: config.annotationHidden,\n        annotationLocked: config.annotationLocked,\n    };\n}\nexport function attachTextEditingHandlers(context, annotation) {\n    const textObject = annotation;\n    if (textObject.imageEditorTextEditingHandlers) {\n        try {\n            textObject.off('editing:entered', textObject.imageEditorTextEditingHandlers.entered);\n            textObject.off('editing:exited', textObject.imageEditorTextEditingHandlers.exited);\n        }\n        catch {\n        }\n    }\n    const entered = () => {\n        var _a;\n        textObject.imageEditorTextEditingInitialText = String((_a = textObject.text) !== null && _a !== void 0 ? _a : '');\n        textObject.imageEditorTextEditingCancel = false;\n    };\n    const exited = () => {\n        var _a;\n        const initial = textObject.imageEditorTextEditingInitialText;\n        const finalText = String((_a = textObject.text) !== null && _a !== void 0 ? _a : '');\n        const cancel = textObject.imageEditorTextEditingCancel === true;\n        if (cancel && initial !== undefined) {\n            textObject.set({ text: initial });\n        }\n        delete textObject.imageEditorTextEditingInitialText;\n        delete textObject.imageEditorTextEditingCancel;\n        if (!cancel && initial !== undefined && initial !== finalText) {\n            context.saveCanvasState();\n            const callbackContext = context.buildCallbackContext('createTextAnnotation');\n            context.emitAnnotationsChanged(callbackContext);\n            context.emitImageChanged(callbackContext);\n        }\n    };\n    textObject.on('editing:entered', entered);\n    textObject.on('editing:exited', exited);\n    textObject.imageEditorTextEditingHandlers = { entered, exited };\n}\nfunction selectAllText(annotation) {\n    var _a;\n    const textObject = annotation;\n    const textLength = String((_a = textObject.text) !== null && _a !== void 0 ? _a : '').length;\n    if (textLength <= 0)\n        return;\n    if (typeof textObject.selectAll === 'function') {\n        textObject.selectAll();\n        return;\n    }\n    if (typeof textObject.setSelectionStart === 'function' &&\n        typeof textObject.setSelectionEnd === 'function') {\n        textObject.setSelectionStart(0);\n        textObject.setSelectionEnd(textLength);\n        return;\n    }\n    textObject.selectionStart = 0;\n    textObject.selectionEnd = textLength;\n}\nexport function createTextAnnotation(context, config = {}) {\n    var _a, _b;\n    if (!context.isImageLoaded())\n        return null;\n    const resolved = resolveTextCreationConfig(context, config);\n    const textbox = new context.fabric.Textbox(resolved.text, {\n        left: resolved.left,\n        top: resolved.top,\n        width: resolved.width,\n        fontSize: resolved.fontSize,\n        fontFamily: resolved.fontFamily,\n        fontWeight: resolved.fontWeight,\n        fill: resolved.fill,\n        backgroundColor: resolved.backgroundColor,\n        textAlign: resolved.textAlign,\n        angle: resolved.angle,\n        selectable: resolved.selectable,\n        evented: resolved.evented,\n        editable: resolved.editable,\n        originX: 'left',\n        originY: 'top',\n        ...resolved.styles,\n    });\n    const meta = nextAnnotationMeta(context, resolved);\n    const annotation = markAnnotationObject(textbox, {\n        annotationId: meta.annotationId,\n        annotationType: 'text',\n        annotationName: meta.annotationName,\n        annotationHidden: meta.annotationHidden,\n        annotationLocked: meta.annotationLocked,\n    });\n    syncAnnotationRuntimeState(annotation);\n    attachTextEditingHandlers(context, annotation);\n    placeAnnotationObject(context.canvas, annotation);\n    if (resolved.selectable !== false && isAnnotationUnlocked(annotation)) {\n        context.canvas.setActiveObject(annotation);\n    }\n    context.canvas.renderAll();\n    context.updateAnnotationList();\n    context.saveCanvasState();\n    const callbackContext = context.buildCallbackContext('createTextAnnotation');\n    context.emitAnnotationsChanged(callbackContext);\n    context.emitImageChanged(callbackContext);\n    if (resolved.enterEditing && isAnnotationUnlocked(annotation)) {\n        (_b = (_a = annotation).enterEditing) === null || _b === void 0 ? void 0 : _b.call(_a);\n        selectAllText(annotation);\n    }\n    return annotation;\n}\nfunction handleTextModePointer(context, event) {\n    var _a, _b;\n    const fabricEvent = event;\n    const target = fabricEvent.target;\n    if (target) {\n        if (isTextAnnotationObject(target) && isAnnotationUnlocked(target)) {\n            context.canvas.setActiveObject(target);\n            (_b = (_a = target).enterEditing) === null || _b === void 0 ? void 0 : _b.call(_a);\n        }\n        else if (isEditableOverlayObject(target)) {\n            context.canvas.setActiveObject(target);\n        }\n        return;\n    }\n    const pointer = getPointerFromFabricEvent(context.canvas, event);\n    if (!pointer)\n        return;\n    createTextAnnotation(context, {\n        left: pointer.x,\n        top: pointer.y,\n    });\n}\nexport function enterTextMode(context) {\n    if (context.getTextSession())\n        return;\n    if (!context.isImageLoaded())\n        return;\n    const { canvas } = context;\n    const previousCanvasSelection = !!canvas.selection;\n    const previousDefaultCursor = canvas.defaultCursor;\n    canvas.selection = true;\n    canvas.defaultCursor = 'text';\n    const callback = (event) => handleTextModePointer(context, event);\n    canvas.on('mouse:down', callback);\n    const session = {\n        mode: 'text',\n        previousCanvasSelection,\n        previousDefaultCursor,\n        handlers: [{ eventName: 'mouse:down', callback }],\n        dispose: () => {\n            try {\n                canvas.off('mouse:down', callback);\n            }\n            catch {\n            }\n            canvas.selection = previousCanvasSelection;\n            canvas.defaultCursor = previousDefaultCursor !== null && previousDefaultCursor !== void 0 ? previousDefaultCursor : 'default';\n        },\n    };\n    const preview = new context.fabric.Rect({\n        left: -1,\n        top: -1,\n        width: 1,\n        height: 1,\n        selectable: false,\n        evented: false,\n        visible: false,\n        excludeFromExport: true,\n    });\n    markSessionObject(preview, 'textPreview');\n    context.setTextSession(session);\n    context.updateUi();\n}\nexport function exitTextMode(context) {\n    const session = context.getTextSession();\n    if (!session)\n        return;\n    session.dispose();\n    context.setTextSession(null);\n    context.canvas.requestRenderAll();\n    context.updateUi();\n}\nexport function finalizeActiveTextEditing(context, options) {\n    var _a;\n    const active = context.canvas.getActiveObject();\n    if (!active || !isTextAnnotationObject(active))\n        return;\n    const textObject = active;\n    if (textObject.isEditing !== true)\n        return;\n    textObject.imageEditorTextEditingCancel = !options.commit;\n    (_a = textObject.exitEditing) === null || _a === void 0 ? void 0 : _a.call(textObject);\n    context.canvas.requestRenderAll();\n}\nexport function attachTextEditingHandlersToAnnotations(context, annotations) {\n    annotations.filter(isTextAnnotationObject).forEach((annotation) => {\n        attachTextEditingHandlers(context, annotation);\n    });\n}\n//# sourceMappingURL=text-controller.js.map","import { markAnnotationObject } from '../core/editor-object-kind.js';\nimport { placeAnnotationObject } from '../core/layer-order.js';\nimport { syncAnnotationRuntimeState } from './annotation-style.js';\nfunction colorWithOpacity(color, opacity) {\n    const alpha = Math.max(0, Math.min(1, opacity));\n    if (alpha >= 1)\n        return color;\n    if (/^#([0-9a-f]{6})$/i.test(color)) {\n        const hex = color.slice(1);\n        const r = Number.parseInt(hex.slice(0, 2), 16);\n        const g = Number.parseInt(hex.slice(2, 4), 16);\n        const b = Number.parseInt(hex.slice(4, 6), 16);\n        return `rgba(${r},${g},${b},${alpha})`;\n    }\n    return color;\n}\nfunction configureBrush(context) {\n    const config = context.getDrawConfig();\n    const canvasWithBrush = context.canvas;\n    canvasWithBrush.freeDrawingBrush = new context.fabric.PencilBrush(context.canvas);\n    canvasWithBrush.freeDrawingBrush.width = config.brushSize;\n    canvasWithBrush.freeDrawingBrush.color = colorWithOpacity(config.color, config.opacity);\n    canvasWithBrush.freeDrawingBrush.strokeLineCap = config.lineCap;\n    canvasWithBrush.freeDrawingBrush.strokeLineJoin = config.lineJoin;\n}\nfunction markPathAsDrawAnnotation(context, path) {\n    const config = context.getDrawConfig();\n    const annotationId = context.getAnnotationCounter() + 1;\n    context.setAnnotationCounter(annotationId);\n    path.set({\n        selectable: config.selectable,\n        evented: config.evented,\n        opacity: config.opacity,\n        stroke: config.color,\n        strokeWidth: config.brushSize,\n    });\n    const annotation = markAnnotationObject(path, {\n        annotationId,\n        annotationType: 'draw',\n        annotationName: `${context.options.drawAnnotationName}${annotationId}`,\n        annotationHidden: config.annotationHidden,\n        annotationLocked: config.annotationLocked,\n    });\n    syncAnnotationRuntimeState(annotation);\n    return annotation;\n}\nfunction handlePathCreated(context, event) {\n    const path = event.path;\n    if (!path)\n        return;\n    const annotation = markPathAsDrawAnnotation(context, path);\n    placeAnnotationObject(context.canvas, annotation);\n    context.canvas.setActiveObject(annotation);\n    context.canvas.renderAll();\n    context.updateAnnotationList();\n    context.saveCanvasState();\n    const callbackContext = context.buildCallbackContext('enterDrawMode');\n    context.emitAnnotationsChanged(callbackContext);\n    context.emitImageChanged(callbackContext);\n}\nexport function enterDrawMode(context) {\n    if (context.getDrawSession())\n        return;\n    if (!context.isImageLoaded())\n        return;\n    const { canvas } = context;\n    const canvasWithDrawing = canvas;\n    const previousDrawingMode = !!canvasWithDrawing.isDrawingMode;\n    const previousBrush = canvasWithDrawing.freeDrawingBrush;\n    const previousCanvasSelection = !!canvas.selection;\n    const previousDefaultCursor = canvas.defaultCursor;\n    canvas.selection = false;\n    canvas.defaultCursor = 'crosshair';\n    canvasWithDrawing.isDrawingMode = true;\n    configureBrush(context);\n    const callback = (event) => handlePathCreated(context, event);\n    canvas.on('path:created', callback);\n    const session = {\n        mode: 'draw',\n        previousDrawingMode,\n        previousBrush,\n        previousCanvasSelection,\n        previousDefaultCursor,\n        handlers: [{ eventName: 'path:created', callback }],\n        dispose: () => {\n            try {\n                canvas.off('path:created', callback);\n            }\n            catch {\n            }\n            canvasWithDrawing.isDrawingMode = previousDrawingMode;\n            canvasWithDrawing.freeDrawingBrush = previousBrush;\n            canvas.selection = previousCanvasSelection;\n            canvas.defaultCursor = previousDefaultCursor !== null && previousDefaultCursor !== void 0 ? previousDefaultCursor : 'default';\n        },\n    };\n    context.setDrawSession(session);\n    context.updateUi();\n}\nexport function exitDrawMode(context) {\n    const session = context.getDrawSession();\n    if (!session)\n        return;\n    session.dispose();\n    context.setDrawSession(null);\n    context.canvas.requestRenderAll();\n    context.updateUi();\n}\nexport function updateDrawBrush(context) {\n    if (!context.getDrawSession())\n        return;\n    configureBrush(context);\n}\n//# sourceMappingURL=draw-controller.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 MergeAnnotationsError extends Error {\n    constructor(message = 'Failed to merge annotations into the image.', originalError = null) {\n        super(message);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'MergeAnnotationsError'\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, MergeAnnotationsError);\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","import { CropApplyError } from '../core/errors.js';\nimport { markSessionObject } from '../core/editor-object-kind.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}\nconst CROP_ASPECT_RATIO_PRESETS = Object.freeze({\n    free: null,\n    '1:1': 1,\n    '3:4': 3 / 4,\n    '4:3': 4 / 3,\n    '3:2': 3 / 2,\n    '2:3': 2 / 3,\n    '9:16': 9 / 16,\n    '16:9': 16 / 9,\n});\nexport function normalizeCropAspectRatio(input) {\n    var _a;\n    if (input === null || input === undefined)\n        return null;\n    if (typeof input === 'number') {\n        return Number.isFinite(input) && input > 0 ? input : null;\n    }\n    if (typeof input === 'string') {\n        const trimmed = input.trim();\n        if (Object.prototype.hasOwnProperty.call(CROP_ASPECT_RATIO_PRESETS, trimmed)) {\n            return (_a = CROP_ASPECT_RATIO_PRESETS[trimmed]) !== null && _a !== void 0 ? _a : null;\n        }\n        const parts = trimmed.split(':');\n        if (parts.length !== 2)\n            return null;\n        const width = Number(parts[0]);\n        const height = Number(parts[1]);\n        return Number.isFinite(width) && width > 0 && Number.isFinite(height) && height > 0\n            ? width / height\n            : null;\n    }\n    if (typeof input === 'object') {\n        const width = Number(input.width);\n        const height = Number(input.height);\n        return Number.isFinite(width) && width > 0 && Number.isFinite(height) && height > 0\n            ? width / height\n            : null;\n    }\n    return null;\n}\nfunction fitAspectRatioInside(maxWidth, maxHeight, aspectRatio) {\n    const safeMaxWidth = Math.max(1, maxWidth);\n    const safeMaxHeight = Math.max(1, maxHeight);\n    let width = safeMaxWidth;\n    let height = width / aspectRatio;\n    if (height > safeMaxHeight) {\n        height = safeMaxHeight;\n        width = height * aspectRatio;\n    }\n    return {\n        width: Math.max(1, width),\n        height: Math.max(1, height),\n    };\n}\nfunction minimumAspectRatioSizeThatFits(minWidth, minHeight, maxWidth, maxHeight, aspectRatio) {\n    let width = Math.max(1, minWidth);\n    let height = width / aspectRatio;\n    if (height < minHeight) {\n        height = Math.max(1, minHeight);\n        width = height * aspectRatio;\n    }\n    return width <= maxWidth && height <= maxHeight ? { width, height } : null;\n}\nfunction chooseAspectRatioResizeBasis(canvas, cropRect, scaleX, scaleY) {\n    var _a, _b, _c;\n    const corner = String((_c = (_a = cropRect.__corner) !== null && _a !== void 0 ? _a : (_b = canvas._currentTransform) === null || _b === void 0 ? void 0 : _b.corner) !== null && _c !== void 0 ? _c : '').toLowerCase();\n    if (corner === 'mt' || corner === 'mb')\n        return 'height';\n    if (corner === 'ml' || corner === 'mr')\n        return 'width';\n    return Math.abs(scaleY - 1) > Math.abs(scaleX - 1) ? 'height' : 'width';\n}\nfunction constrainAspectRatioSize(requestedWidth, requestedHeight, basis, aspectRatio, minWidth, minHeight, maxWidth, maxHeight) {\n    var _a;\n    const maxSize = fitAspectRatioInside(maxWidth, maxHeight, aspectRatio);\n    const minSize = (_a = minimumAspectRatioSizeThatFits(minWidth, minHeight, maxSize.width, maxSize.height, aspectRatio)) !== null && _a !== void 0 ? _a : maxSize;\n    let width = basis === 'height' ? requestedHeight * aspectRatio : requestedWidth;\n    let height = basis === 'height' ? requestedHeight : requestedWidth / aspectRatio;\n    if (width > maxSize.width || height > maxSize.height) {\n        ({ width, height } = maxSize);\n    }\n    if (width < minSize.width || height < minSize.height) {\n        ({ width, height } = minSize);\n    }\n    return { width, height };\n}\nfunction resolvePaddedCropArea(boundsLeft, boundsTop, maxCropWidth, maxCropHeight, padding) {\n    const insetX = padding * 2 < maxCropWidth ? padding : 0;\n    const insetY = padding * 2 < maxCropHeight ? padding : 0;\n    return {\n        left: boundsLeft + insetX,\n        top: boundsTop + insetY,\n        width: Math.max(1, maxCropWidth - insetX * 2),\n        height: Math.max(1, maxCropHeight - insetY * 2),\n    };\n}\nfunction resolveCropBounds(context) {\n    const originalImage = context.getOriginalImage();\n    if (!originalImage)\n        return null;\n    originalImage.setCoords();\n    const { options } = context;\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 configuredMinWidth = Math.max(1, Number(options.crop.minWidth) || 1);\n    const configuredMinHeight = Math.max(1, Number(options.crop.minHeight) || 1);\n    return {\n        boundsLeft,\n        boundsTop,\n        maxCropWidth,\n        maxCropHeight,\n        minCropWidth: Math.min(configuredMinWidth, maxCropWidth),\n        minCropHeight: Math.min(configuredMinHeight, maxCropHeight),\n        padding,\n        imageBounds,\n    };\n}\nfunction clampCropRectIntoBounds(cropRect, bounds) {\n    const width = Math.min(bounds.maxCropWidth, Math.max(bounds.minCropWidth, (Number(cropRect.width) || 1) * (Number(cropRect.scaleX) || 1)));\n    const height = Math.min(bounds.maxCropHeight, Math.max(bounds.minCropHeight, (Number(cropRect.height) || 1) * (Number(cropRect.scaleY) || 1)));\n    const left = Math.min(bounds.boundsLeft + bounds.maxCropWidth - width, Math.max(bounds.boundsLeft, Number(cropRect.left) || bounds.boundsLeft));\n    const top = Math.min(bounds.boundsTop + bounds.maxCropHeight - height, Math.max(bounds.boundsTop, Number(cropRect.top) || bounds.boundsTop));\n    cropRect.set({ left, top, width, height, scaleX: 1, scaleY: 1 });\n}\nfunction resizeCropRectToAspectRatio(context, cropRect, aspectRatio) {\n    const bounds = resolveCropBounds(context);\n    if (!bounds)\n        return;\n    if (aspectRatio === null) {\n        clampCropRectIntoBounds(cropRect, bounds);\n        cropRect.setCoords();\n        return;\n    }\n    const available = resolvePaddedCropArea(bounds.boundsLeft, bounds.boundsTop, bounds.maxCropWidth, bounds.maxCropHeight, bounds.padding);\n    const fitted = fitAspectRatioInside(available.width, available.height, aspectRatio);\n    cropRect.set({\n        left: available.left + (available.width - fitted.width) / 2,\n        top: available.top + (available.height - fitted.height) / 2,\n        width: fitted.width,\n        height: fitted.height,\n        scaleX: 1,\n        scaleY: 1,\n    });\n    cropRect.setCoords();\n}\nfunction updateCropRectControlVisibility(cropRect, aspectRatio, allowRotationOfCropRect) {\n    const lockedRatio = aspectRatio !== null;\n    cropRect.setControlsVisibility({\n        tl: true,\n        tr: true,\n        br: true,\n        bl: true,\n        mt: !lockedRatio,\n        mb: !lockedRatio,\n        ml: !lockedRatio,\n        mr: !lockedRatio,\n        mtr: allowRotationOfCropRect,\n    });\n    cropRect.setCoords();\n}\nexport function enterCropMode(context, cropModeOptions = {}) {\n    var _a;\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 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 aspectRatio = normalizeCropAspectRatio((_a = cropModeOptions.aspectRatio) !== null && _a !== void 0 ? _a : options.crop.aspectRatio);\n    let rectLeft;\n    let rectTop;\n    let rectWidth;\n    let rectHeight;\n    if (aspectRatio === null) {\n        rectLeft = Math.min(boundsLeft + maxCropWidth - 1, Math.max(boundsLeft, Math.floor(imageBounds.left + padding)));\n        rectTop = Math.min(boundsTop + maxCropHeight - 1, Math.max(boundsTop, Math.floor(imageBounds.top + padding)));\n        rectWidth = minCropWidth;\n        rectHeight = minCropHeight;\n    }\n    else {\n        const available = resolvePaddedCropArea(boundsLeft, boundsTop, maxCropWidth, maxCropHeight, padding);\n        const fitted = fitAspectRatioInside(available.width, available.height, aspectRatio);\n        rectWidth = fitted.width;\n        rectHeight = fitted.height;\n        rectLeft = available.left + (available.width - rectWidth) / 2;\n        rectTop = available.top + (available.height - rectHeight) / 2;\n    }\n    const cropRect = new context.fabric.Rect({\n        left: rectLeft,\n        top: rectTop,\n        width: rectWidth,\n        height: rectHeight,\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    updateCropRectControlVisibility(cropRect, aspectRatio, allowRotation);\n    canvas.add(cropRect);\n    markSessionObject(cropRect, '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            let nextScaleX;\n            let nextScaleY;\n            const activeSession = context.getCropSession();\n            const activeAspectRatio = activeSession ? activeSession.aspectRatio : aspectRatio;\n            if (activeAspectRatio === null) {\n                nextScaleX = Math.min(maxCropWidth / cropWidth, Math.max(minCropWidth / cropWidth, Number(cropRect.scaleX) || 1));\n                nextScaleY = Math.min(maxCropHeight / cropHeight, Math.max(minCropHeight / cropHeight, Number(cropRect.scaleY) || 1));\n            }\n            else {\n                const rawScaleX = Math.max(0.0001, Number(cropRect.scaleX) || 1);\n                const rawScaleY = Math.max(0.0001, Number(cropRect.scaleY) || 1);\n                const basis = chooseAspectRatioResizeBasis(canvas, cropRect, rawScaleX, rawScaleY);\n                const constrained = constrainAspectRatioSize(cropWidth * rawScaleX, cropHeight * rawScaleY, basis, activeAspectRatio, minCropWidth, minCropHeight, maxCropWidth, maxCropHeight);\n                nextScaleX = constrained.width / cropWidth;\n                nextScaleY = constrained.height / cropHeight;\n            }\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        aspectRatio,\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 setCropAspectRatio(context, aspectRatioInput) {\n    const session = context.getCropSession();\n    if (!(session === null || session === void 0 ? void 0 : session.cropRect))\n        return;\n    const aspectRatio = normalizeCropAspectRatio(aspectRatioInput);\n    session.aspectRatio = aspectRatio;\n    resizeCropRectToAspectRatio(context, session.cropRect, aspectRatio);\n    updateCropRectControlVisibility(session.cropRect, aspectRatio, !!context.options.crop.allowRotationOfCropRect);\n    context.canvas.setActiveObject(session.cropRect);\n    context.canvas.requestRenderAll();\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 { markBaseImageObject, markSessionObject } from '../core/editor-object-kind.js';\nimport { mimeTypeFor, tryNormalizeImageFormat } from '../export/export-format.js';\nimport { Command } from '../history/history-manager.js';\nimport { detectSourceMimeType } from '../image/image-resampler.js';\nimport { getPointerFromFabricEvent } from '../utils/pointer.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 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    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: config.previewStrokeDashArray\n            ? [...config.previewStrokeDashArray]\n            : undefined,\n        selectable: false,\n        evented: false,\n        excludeFromExport: true,\n        objectCaching: false,\n        visible: false,\n    });\n    markSessionObject(circle, 'mosaicPreviewCircle');\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    markSessionObject(image, 'mosaicPreviewImage');\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 releaseMosaicRasterCache(session) {\n    const cache = session.rasterCache;\n    if (!cache)\n        return;\n    try {\n        cache.offscreenCanvas.width = 0;\n        cache.offscreenCanvas.height = 0;\n    }\n    catch {\n    }\n    session.rasterCache = 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(markBaseImageObject(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    releaseMosaicRasterCache(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    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: config.previewStrokeDashArray\n            ? [...config.previewStrokeDashArray]\n            : 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","export function startImageElementLoad(dataUrl, options) {\n    const imageElement = new Image();\n    if (options.crossOrigin !== undefined) {\n        imageElement.crossOrigin = options.crossOrigin;\n    }\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            try {\n                imageElement.src = '';\n            }\n            catch {\n            }\n        }\n    };\n    const handleLoad = () => {\n        var _a, _b;\n        const validationError = (_b = (_a = options.validate) === null || _a === void 0 ? void 0 : _a.call(options, imageElement)) !== null && _b !== void 0 ? _b : null;\n        if (validationError) {\n            cleanup(true);\n            rejectImage(validationError);\n            return;\n        }\n        cleanup(false);\n        resolveImage(imageElement);\n    };\n    const handleError = (event) => {\n        cleanup(true);\n        rejectImage(options.createError(event));\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}\n//# sourceMappingURL=image-element-loader.js.map","import { MergeAnnotationsError, MergeMasksError } from '../core/errors.js';\nimport { normalizeLayerOrder } from '../core/layer-order.js';\nimport { Command } from '../history/history-manager.js';\nfunction createMergeError(operation, error) {\n    if (operation === 'mergeAnnotations') {\n        if (error instanceof MergeAnnotationsError)\n            return error;\n        const message = error instanceof Error\n            ? `mergeAnnotations failed: ${error.message}`\n            : 'mergeAnnotations failed';\n        return new MergeAnnotationsError(message, error);\n    }\n    if (error instanceof MergeMasksError)\n        return error;\n    const message = error instanceof Error ? `mergeMasks failed: ${error.message}` : 'mergeMasks failed';\n    return new MergeMasksError(message, error);\n}\nfunction detachObjects(canvas, objects) {\n    for (const object of objects) {\n        if (!canvas.getObjects().includes(object))\n            continue;\n        canvas.remove(object);\n    }\n    canvas.discardActiveObject();\n    canvas.renderAll();\n}\nexport async function flattenOverlayGroupToBaseImage(context, options) {\n    if (!context.isImageLoaded())\n        return;\n    if (options.getTargets().length === 0)\n        return;\n    const beforeSnapshot = context.captureSnapshot();\n    const preservedObjects = options.getPreservedObjects();\n    const preScrollTop = context.containerElement ? context.containerElement.scrollTop : null;\n    const preScrollLeft = context.containerElement ? context.containerElement.scrollLeft : null;\n    try {\n        detachObjects(context.canvas, preservedObjects);\n        const exportedDataUrl = await context.exportImageBase64(options.exportOptions);\n        if (!exportedDataUrl) {\n            throw createMergeError(options.operation, `${options.operation}: exportImageBase64 returned an empty data URL.`);\n        }\n        options.removeTargetsNoHistory();\n        await context.loadImage(exportedDataUrl, { preserveScroll: true });\n        await options.restorePreservedObjects(preservedObjects);\n        normalizeLayerOrder(context.canvas);\n        context.canvas.renderAll();\n        context.updateInputs();\n        context.updateUi();\n        if (context.containerElement) {\n            try {\n                if (preScrollTop !== null)\n                    context.containerElement.scrollTop = preScrollTop;\n                if (preScrollLeft !== null)\n                    context.containerElement.scrollLeft = preScrollLeft;\n            }\n            catch (scrollError) {\n                console.warn(`[ImageEditor] ${options.operation}: scroll restore failed`, scrollError);\n            }\n        }\n        const afterSnapshot = context.captureSnapshot();\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] ${options.operation}: rollback failed`, rollbackError);\n        }\n        throw createMergeError(options.operation, error);\n    }\n}\n//# sourceMappingURL=overlay-merge-service.js.map","import { isAnnotationObject, isMaskObject, isSessionObject } from '../core/public-types.js';\nimport { reportError } from '../core/callback-reporter.js';\nimport { ExportError, ExportNotReadyError } from '../core/errors.js';\nimport { withMaskStyleBackup } from '../mask/mask-style.js';\nimport { getClampedCanvasRegion, getObjectBBox, getPartialExportEdges, hasMeaningfulCanvasRegion, } from '../utils/canvas-region.js';\nimport { startImageElementLoad } from '../utils/image-element-loader.js';\nimport { resolveExportFormat } from './export-format.js';\nimport { flattenOverlayGroupToBaseImage, } from './overlay-merge-service.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        mergeMasks: typeof providedOptions.mergeMasks === 'boolean'\n            ? providedOptions.mergeMasks\n            : context.options.mergeMasksByDefault,\n        mergeAnnotations: typeof providedOptions.mergeAnnotations === 'boolean'\n            ? providedOptions.mergeAnnotations\n            : context.options.mergeAnnotationsByDefault,\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, mergeMasks, callback) {\n    if (!mergeMasks) {\n        return withObjectsHidden(context.canvas, isMaskObject, callback);\n    }\n    return withMaskStyleBackup({ canvas: context.canvas, options: context.options }, applyExportBakeInStyle, callback);\n}\nasync function withObjectsHidden(canvas, predicate, callback) {\n    const backups = getCanvasObjects(canvas)\n        .filter(predicate)\n        .map((object) => ({\n        object,\n        visible: object.visible,\n    }));\n    for (const backup of backups) {\n        try {\n            if (typeof backup.object.set === 'function') {\n                backup.object.set({ visible: false });\n            }\n            else {\n                backup.object.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.object.set === 'function') {\n                    backup.object.set({ visible: backup.visible });\n                }\n                else {\n                    backup.object.visible = backup.visible;\n                }\n            }\n            catch {\n            }\n        }\n        requestRender(canvas);\n    }\n}\nasync function withSessionObjectsHidden(context, callback) {\n    return withObjectsHidden(context.canvas, (object) => isSessionObject(object) ||\n        object.isCropRect === true ||\n        object.maskLabel === true ||\n        object.isMosaicPreview === true, callback);\n}\nasync function withAnnotationsExportState(context, mergeAnnotations, callback) {\n    if (!mergeAnnotations) {\n        return withObjectsHidden(context.canvas, isAnnotationObject, callback);\n    }\n    return withObjectsHidden(context.canvas, (object) => isAnnotationObject(object) && object.annotationHidden === true, callback);\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 startImageElementLoad(dataUrl, {\n        crossOrigin: 'anonymous',\n        createError: () => new Error('Failed to decode export data URL'),\n    }).promise;\n}\nasync function sealPartialTransparentEdges(dataUrl, edges, target, ownerDocument) {\n    if (!hasPartialEdges(edges))\n        return dataUrl;\n    const imageElement = await loadImageElement(dataUrl);\n    const { width, height } = getImageDimensions(imageElement);\n    const offscreenCanvas = ownerDocument.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, ownerDocument) {\n    return resolveCanvasFillStyle(backgroundColor, ownerDocument);\n}\nfunction resolveCanvasFillStyle(backgroundColor, ownerDocument, 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(ownerDocument);\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(ownerDocument) {\n    try {\n        return ownerDocument.createElement('canvas').getContext('2d');\n    }\n    catch {\n        return null;\n    }\n}\nfunction getCanvasDocument(canvas) {\n    var _a, _b, _c, _d;\n    const canvasLike = canvas;\n    const ownerDocument = (_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;\n    if (ownerDocument)\n        return ownerDocument;\n    if (typeof document !== 'undefined')\n        return document;\n    throw new Error('Document is unavailable for export canvas creation.');\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, ownerDocument) {\n    const imageElement = await loadImageElement(dataUrl);\n    const { width, height } = getImageDimensions(imageElement);\n    const offscreenCanvas = ownerDocument.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, ownerDocument);\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, canvas) {\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 ownerDocument = getCanvasDocument(canvas);\n    const offscreenCanvas = ownerDocument.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, ownerDocument);\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}\nfunction extensionForFormat(format) {\n    return format === 'jpeg' ? 'jpg' : format;\n}\nfunction resolveFileName(baseName, format) {\n    const fallback = 'edited_image';\n    const trimmed = String(baseName || fallback).trim() || fallback;\n    const ext = extensionForFormat(format.format);\n    if (/\\.(jpe?g|png|webp)$/i.test(trimmed)) {\n        return trimmed.replace(/\\.(jpe?g|png|webp)$/i, `.${ext}`);\n    }\n    return `${trimmed}.${ext}`;\n}\nasync function renderExportDataUrl(context, resolved) {\n    const activeObject = captureActiveObject(context.canvas);\n    const labelBackups = captureMaskLabelBackups(context.canvas);\n    try {\n        context.canvas.discardActiveObject();\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 withSessionObjectsHidden(context, async () => withMaskExportState(context, resolved.mergeMasks, async () => withAnnotationsExportState(context, resolved.mergeAnnotations, 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            if (hasPartialEdges(partialEdges)) {\n                dataUrl = await sealPartialTransparentEdges(dataUrl, partialEdges, sealedFormat, getCanvasDocument(context.canvas));\n            }\n            if (resolved.format.format === 'jpeg') {\n                dataUrl = await convertDataUrlToOpaqueJpeg(dataUrl, context.options.backgroundColor, resolved.format.quality, getCanvasDocument(context.canvas));\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 exportImageBase64(context, options) {\n    if (!context.isImageLoaded()) {\n        warnNoImageLoaded('exportImageBase64');\n        return '';\n    }\n    const resolved = resolveExportOptions(context, options);\n    return renderExportDataUrl(context, resolved);\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 resolved = resolveExportOptions(context, providedOptions);\n    const rawDataUrl = await renderExportDataUrl(context, resolved);\n    const finalDataUrl = await reencodeDataUrlAs(rawDataUrl, resolved.format, context.options.backgroundColor, context.canvas);\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    const fileName = resolveFileName((_a = providedOptions.fileName) !== null && _a !== void 0 ? _a : context.options.defaultDownloadFileName, resolved.format);\n    return new File([bytes], fileName, { type: resolved.format.mimeType });\n}\nexport async function downloadImage(context, options) {\n    if (!context.isImageLoaded()) {\n        warnNoImageLoaded('downloadImage');\n        return;\n    }\n    if (options !== undefined && options !== null && typeof options !== 'object') {\n        throw new TypeError('[ImageEditor] downloadImage(options) expects an ImageExportOptions object.');\n    }\n    try {\n        const file = await exportImageFile(context, options);\n        triggerFileDownload(context, file);\n    }\n    catch (error) {\n        reportError(context.options, error, 'downloadImage failed.');\n        console.error('[ImageEditor] downloadImage failed', error);\n        throw error;\n    }\n}\nfunction triggerFileDownload(context, file) {\n    const ownerDocument = getCanvasDocument(context.canvas);\n    const objectUrl = URL.createObjectURL(file);\n    const link = ownerDocument.createElement('a');\n    link.download = file.name;\n    link.href = objectUrl;\n    const body = ownerDocument.body;\n    body.appendChild(link);\n    try {\n        link.click();\n    }\n    finally {\n        body.removeChild(link);\n        if (typeof globalThis.setTimeout === 'function') {\n            globalThis.setTimeout(() => URL.revokeObjectURL(objectUrl), 0);\n        }\n        else {\n            URL.revokeObjectURL(objectUrl);\n        }\n    }\n}\nexport async function mergeMasks(context) {\n    await flattenOverlayGroupToBaseImage(context, {\n        operation: 'mergeMasks',\n        exportOptions: {\n            exportArea: 'image',\n            mergeMasks: true,\n            mergeAnnotations: false,\n            multiplier: context.options.exportMultiplier,\n            fileType: 'png',\n        },\n        getTargets: () => context.canvas.getObjects().filter(isMaskObject),\n        getPreservedObjects: () => context.getAnnotations(),\n        removeTargetsNoHistory: () => {\n            context.removeAllMasksNoHistory();\n        },\n        restorePreservedObjects: (objects) => context.restoreAnnotations(objects),\n    });\n}\nexport async function mergeAnnotations(context) {\n    await flattenOverlayGroupToBaseImage(context, {\n        operation: 'mergeAnnotations',\n        exportOptions: {\n            exportArea: 'image',\n            mergeMasks: false,\n            mergeAnnotations: true,\n            multiplier: context.options.exportMultiplier,\n            fileType: 'png',\n        },\n        getTargets: () => context.canvas.getObjects().filter(isAnnotationObject),\n        getPreservedObjects: () => context.getMasks(),\n        removeTargetsNoHistory: () => {\n            context.removeAllAnnotationsNoHistory();\n        },\n        restorePreservedObjects: (objects) => context.restoreMasks(objects),\n    });\n}\n//# sourceMappingURL=export-service.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 isSupportedImageDataUrl(value) {\n    if (typeof value !== 'string')\n        return false;\n    if (!value.startsWith('data:image/'))\n        return false;\n    const match = /^data:(image\\/[^;,]+)(?:[;,])/.exec(value);\n    if (!match)\n        return false;\n    return SUPPORTED_IMAGE_MIME_TYPES.has(match[1].toLowerCase());\n}\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","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 { markBaseImageObject } from '../core/editor-object-kind.js';\nimport { ImageDecodeError } from '../core/errors.js';\nimport { saveState, SNAPSHOT_CUSTOM_KEYS } from '../core/state-serializer.js';\nimport { isSupportedImageDataUrl } from '../utils/file.js';\nimport { startImageElementLoad } from '../utils/image-element-loader.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 (!isSupportedImageDataUrl(imageBase64))\n        return;\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        annotationCounter: context.getAnnotationCounter(),\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        const baseImage = markBaseImageObject(fabricImage);\n        baseImage.set({\n            originX: 'left',\n            originY: 'top',\n            selectable: false,\n            evented: false,\n        });\n        const layout = computeLayout(context, baseImage);\n        applyCanvasDimensions(context.canvas, layout.canvasWidth, layout.canvasHeight, context.containerElement);\n        baseImage.set({ left: layout.imageLeft, top: layout.imageTop });\n        baseImage.scale(layout.imageScale);\n        context.canvas.add(baseImage);\n        context.canvas.sendObjectToBack(baseImage);\n        context.setOriginalImage(baseImage);\n        context.setBaseImageScale(layout.baseImageScale);\n        context.setCurrentScale(1);\n        context.setCurrentRotation(0);\n        context.setMaskCounter(0);\n        context.setAnnotationCounter(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    return startImageElementLoad(dataUrl, {\n        validate: (imageElement) => hasNaturalImageDimensions(imageElement)\n            ? null\n            : new ImageDecodeError('Failed to decode image data URL: image has no natural dimensions.', null),\n        createError: (event) => new ImageDecodeError('Failed to decode image data URL.', event),\n    });\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.setAnnotationCounter(bundle.annotationCounter);\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 flipHorizontal() {\n        await this.flipImage('flipX');\n    }\n    async flipVertical() {\n        await this.flipImage('flipY');\n    }\n    async flipImage(property) {\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        try {\n            const centre = imageObject.getCenterPoint();\n            imageObject.set({ originX: 'center', originY: 'center' });\n            imageObject.setPositionByOrigin(centre, 'center', 'center');\n            imageObject.set({ [property]: !imageObject[property] });\n            imageObject.setCoords();\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] ${property === 'flipX' ? 'flipHorizontal' : 'flipVertical'} failed`, error);\n            return;\n        }\n        if (this.context.guard.isDisposed())\n            return;\n        if (this.context.afterTransformSnap)\n            this.context.afterTransformSnap();\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            const imageObject = this.context.getOriginalImage();\n            if (imageObject && !this.context.guard.isDisposed()) {\n                imageObject.set({ flipX: false, flipY: false });\n                imageObject.setCoords();\n                if (this.context.afterTransformSnap)\n                    this.context.afterTransformSnap();\n            }\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","import { isMaskObject } from '../core/public-types.js';\nimport { markMaskObject } from '../core/editor-object-kind.js';\nimport { placeMaskObject } from '../core/layer-order.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    const nextId = context.getMaskCounter() + 1;\n    context.setMaskCounter(nextId);\n    markMaskObject(maskObject, {\n        maskId: nextId,\n        maskUid: createMaskUid(nextId),\n        maskName: `${options.maskName}${nextId}`,\n        originalAlpha: resolvedConfig.alpha,\n        originalStroke: maskObject.stroke,\n        originalStrokeWidth: maskObject.strokeWidth,\n    });\n    attachMaskHoverHandlers(maskObject);\n    context.setLastMask(maskObject);\n    placeMaskObject(canvas, 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}\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}\nfunction getSelectedMaskObjects(canvas) {\n    const active = canvas.getActiveObject();\n    if (!active)\n        return [];\n    if (!isActiveSelectionObject(active))\n        return isMaskObject(active) ? [active] : [];\n    const getObjects = active.getObjects;\n    const objects = typeof getObjects === 'function' ? getObjects.call(active) : [];\n    return objects.filter(isMaskObject);\n}\nexport function removeSelectedMask(context) {\n    const selectedMasks = getSelectedMaskObjects(context.canvas);\n    if (selectedMasks.length === 0)\n        return;\n    for (const mask of selectedMasks) {\n        context.removeLabelForMask(mask);\n        detachMaskHoverHandlers(mask);\n        context.canvas.remove(mask);\n    }\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';\nimport { markSessionObject } from '../core/editor-object-kind.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    markSessionObject(labelTextObject, 'maskLabel');\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","import { AnimationQueue } from './animation/animation-queue.js';\nimport { reportError, reportWarning } from './core/callback-reporter.js';\nimport { areResolvedMosaicConfigsEqual, areResolvedDrawConfigsEqual, areResolvedTextAnnotationConfigsEqual, cloneResolvedMosaicConfig, cloneResolvedDrawConfig, cloneResolvedTextAnnotationConfig, getInvalidDrawConfigFields, getInvalidMosaicConfigFields, getInvalidTextAnnotationConfigFields, isLayoutMode, mergeDrawConfigPatch, mergeMosaicConfigPatch, mergeTextAnnotationConfigPatch, 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 { isAnnotationObject, isDrawAnnotationObject, isEditableOverlayObject, isMaskObject, isTextAnnotationObject, } from './core/public-types.js';\nimport { getAnnotations as getAnnotationsImpl, removeAllAnnotations as removeAllAnnotationsImpl, removeAnnotationObjects, removeSelectedAnnotation as removeSelectedAnnotationImpl, renderAnnotationList, updateAnnotation as updateAnnotationImpl, updateAnnotationListSelection, updateSelectedAnnotation as updateSelectedAnnotationImpl, } from './annotation/annotation-manager.js';\nimport { attachTextEditingHandlersToAnnotations, createTextAnnotation as createTextAnnotationImpl, enterTextMode as enterTextModeImpl, exitTextMode as exitTextModeImpl, finalizeActiveTextEditing, } from './annotation/text-controller.js';\nimport { enterDrawMode as enterDrawModeImpl, exitDrawMode as exitDrawModeImpl, updateDrawBrush, } from './annotation/draw-controller.js';\nimport { isAnnotationLocked, isAnnotationUnlocked } from './annotation/annotation-lock.js';\nimport { syncAnnotationRuntimeStates } from './annotation/annotation-style.js';\nimport { normalizeLayerOrder, getEditableOverlayRange } from './core/layer-order.js';\nimport { applyCrop as applyCropImpl, cancelCrop as cancelCropImpl, enterCropMode as enterCropModeImpl, setCropAspectRatio as setCropAspectRatioImpl, } 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, mergeAnnotations as mergeAnnotationsImpl, 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, isSupportedImageDataUrl, 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    'flipHorizontalButton',\n    'flipVerticalButton',\n    'createMaskButton',\n    'removeSelectedMaskButton',\n    'removeAllMasksButton',\n    'mergeMasksButton',\n    'mergeAnnotationsButton',\n    'enterTextModeButton',\n    'exitTextModeButton',\n    'textColorInput',\n    'textFontSizeInput',\n    'enterDrawModeButton',\n    'exitDrawModeButton',\n    'drawColorInput',\n    'drawBrushSizeInput',\n    'removeSelectedAnnotationButton',\n    'removeAllAnnotationsButton',\n    'deleteSelectedObjectButton',\n    'bringSelectedObjectForwardButton',\n    'sendSelectedObjectBackwardButton',\n    'bringSelectedObjectToFrontButton',\n    'sendSelectedObjectToBackButton',\n    'downloadImageButton',\n    'zoomInButton',\n    'zoomOutButton',\n    'resetImageTransformButton',\n    'undoButton',\n    'redoButton',\n    'imageInput',\n    'enterCropModeButton',\n    'cropAspectRatioSelect',\n    'applyCropButton',\n    'cancelCropButton',\n    'enterMosaicModeButton',\n    'exitMosaicModeButton',\n    'mosaicBrushSizeInput',\n    'mosaicBlockSizeInput',\n];\nconst CROP_MODE_ENABLED_KEYS = [\n    'cropAspectRatioSelect',\n    'applyCropButton',\n    'cancelCropButton',\n];\nconst CROP_SESSION_ALLOWED_OPERATIONS = new Set(['setCropAspectRatio', 'applyCrop', 'cancelCrop']);\nconst TEXT_MODE_ENABLED_KEYS = [\n    'exitTextModeButton',\n    'textColorInput',\n    'textFontSizeInput',\n];\nconst DRAW_MODE_ENABLED_KEYS = [\n    'exitDrawModeButton',\n    'drawColorInput',\n    'drawBrushSizeInput',\n];\nconst MOSAIC_MODE_CONTROL_KEYS = [\n    'scalePercentageInput',\n    'rotateLeftDegreesInput',\n    'rotateRightDegreesInput',\n    'rotateLeftButton',\n    'rotateRightButton',\n    'flipHorizontalButton',\n    'flipVerticalButton',\n    'createMaskButton',\n    'removeSelectedMaskButton',\n    'removeAllMasksButton',\n    'mergeMasksButton',\n    'mergeAnnotationsButton',\n    'enterTextModeButton',\n    'exitTextModeButton',\n    'textColorInput',\n    'textFontSizeInput',\n    'enterDrawModeButton',\n    'exitDrawModeButton',\n    'drawColorInput',\n    'drawBrushSizeInput',\n    'removeSelectedAnnotationButton',\n    'removeAllAnnotationsButton',\n    'deleteSelectedObjectButton',\n    'bringSelectedObjectForwardButton',\n    'sendSelectedObjectBackwardButton',\n    'bringSelectedObjectToFrontButton',\n    'sendSelectedObjectToBackButton',\n    'downloadImageButton',\n    'zoomInButton',\n    'zoomOutButton',\n    'resetImageTransformButton',\n    'undoButton',\n    'redoButton',\n    'imageInput',\n    'enterCropModeButton',\n    'cropAspectRatioSelect',\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    'flipHorizontal',\n    'flipVertical',\n    'resetImageTransform',\n    'createMask',\n    'removeSelectedMask',\n    'removeAllMasks',\n    'mergeMasks',\n    'createTextAnnotation',\n    'enterTextMode',\n    'exitTextMode',\n    'setTextConfig',\n    'resetTextConfig',\n    'setTextColor',\n    'setTextFontSize',\n    'enterDrawMode',\n    'exitDrawMode',\n    'setDrawConfig',\n    'resetDrawConfig',\n    'setDrawColor',\n    'setDrawBrushSize',\n    'updateSelectedAnnotation',\n    'updateAnnotation',\n    'removeSelectedAnnotation',\n    'removeAllAnnotations',\n    'deleteSelectedObject',\n    'mergeAnnotations',\n    'bringSelectedObjectForward',\n    'sendSelectedObjectBackward',\n    'bringSelectedObjectToFront',\n    'sendSelectedObjectToBack',\n    'enterCropMode',\n    'setCropAspectRatio',\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]);\nconst TOOL_MODE_ALLOWED_OPERATIONS = {\n    crop: CROP_SESSION_ALLOWED_OPERATIONS,\n    mosaic: MOSAIC_SESSION_ALLOWED_OPERATIONS,\n    text: new Set([\n        'exitTextMode',\n        'createTextAnnotation',\n        'setTextConfig',\n        'resetTextConfig',\n        'setTextColor',\n        'setTextFontSize',\n        'saveState',\n    ]),\n    draw: new Set([\n        'exitDrawMode',\n        'setDrawConfig',\n        'resetDrawConfig',\n        'setDrawColor',\n        'setDrawBrushSize',\n        'saveState',\n    ]),\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, \"defaultTextConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentTextConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"defaultDrawConfig\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"currentDrawConfig\", {\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, \"annotationCounter\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 0\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, \"textSession\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"drawSession\", {\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, \"keyboardDocument\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: null\n        });\n        Object.defineProperty(this, \"keyboardHandler\", {\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        this.defaultTextConfig = this.options.defaultTextConfig;\n        this.currentTextConfig = cloneResolvedTextAnnotationConfig(this.defaultTextConfig);\n        this.defaultDrawConfig = this.options.defaultDrawConfig;\n        this.currentDrawConfig = cloneResolvedDrawConfig(this.defaultDrawConfig);\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            flipHorizontalButton: 'flipHorizontalButton',\n            flipVerticalButton: 'flipVerticalButton',\n            createMaskButton: 'createMaskButton',\n            removeSelectedMaskButton: 'removeSelectedMaskButton',\n            removeAllMasksButton: 'removeAllMasksButton',\n            mergeMasksButton: 'mergeMasksButton',\n            annotationList: 'annotationList',\n            enterTextModeButton: 'enterTextModeButton',\n            exitTextModeButton: 'exitTextModeButton',\n            textColorInput: 'textColorInput',\n            textFontSizeInput: 'textFontSizeInput',\n            enterDrawModeButton: 'enterDrawModeButton',\n            exitDrawModeButton: 'exitDrawModeButton',\n            drawColorInput: 'drawColorInput',\n            drawBrushSizeInput: 'drawBrushSizeInput',\n            removeSelectedAnnotationButton: 'removeSelectedAnnotationButton',\n            removeAllAnnotationsButton: 'removeAllAnnotationsButton',\n            deleteSelectedObjectButton: 'deleteSelectedObjectButton',\n            mergeAnnotationsButton: 'mergeAnnotationsButton',\n            bringSelectedObjectForwardButton: 'bringSelectedObjectForwardButton',\n            sendSelectedObjectBackwardButton: 'sendSelectedObjectBackwardButton',\n            bringSelectedObjectToFrontButton: 'bringSelectedObjectToFrontButton',\n            sendSelectedObjectToBackButton: 'sendSelectedObjectToBackButton',\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            cropAspectRatioSelect: 'cropAspectRatioSelect',\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.initCanvas();\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.transformController = new TransformController(this.buildTransformContext());\n        this.bindDomEvents();\n        this.updateInputs();\n        this.updateMaskList();\n        this.updateAnnotationList();\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)\n                this.handleObjectMovingScalingRotating(e.target);\n        };\n        const onObjectModified = (e) => {\n            if (e.target)\n                this.handleObjectModified(e.target);\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    getLiveCanvasOrThrow(operationName) {\n        if (this.isDisposed || !this.canvas) {\n            throw new Error(`[ImageEditor] Cannot run \"${operationName}\" after dispose.`);\n        }\n        return this.canvas;\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('flipHorizontalButton', 'click', () => {\n            void this.flipHorizontal();\n        });\n        this.bindElementIfExists('flipVerticalButton', 'click', () => {\n            void this.flipVertical();\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('mergeAnnotationsButton', 'click', () => {\n            void this.mergeAnnotations();\n        });\n        this.bindElementIfExists('enterTextModeButton', 'click', () => {\n            this.enterTextMode();\n        });\n        this.bindElementIfExists('exitTextModeButton', 'click', () => {\n            this.exitTextMode();\n        });\n        this.bindElementIfExists('enterDrawModeButton', 'click', () => {\n            this.enterDrawMode();\n        });\n        this.bindElementIfExists('exitDrawModeButton', 'click', () => {\n            this.exitDrawMode();\n        });\n        this.bindElementIfExists('removeSelectedAnnotationButton', 'click', () => {\n            this.removeSelectedAnnotation();\n        });\n        this.bindElementIfExists('removeAllAnnotationsButton', 'click', () => {\n            this.removeAllAnnotations();\n        });\n        this.bindElementIfExists('deleteSelectedObjectButton', 'click', () => {\n            this.deleteSelectedObject();\n        });\n        this.bindElementIfExists('bringSelectedObjectForwardButton', 'click', () => {\n            this.bringSelectedObjectForward();\n        });\n        this.bindElementIfExists('sendSelectedObjectBackwardButton', 'click', () => {\n            this.sendSelectedObjectBackward();\n        });\n        this.bindElementIfExists('bringSelectedObjectToFrontButton', 'click', () => {\n            this.bringSelectedObjectToFront();\n        });\n        this.bindElementIfExists('sendSelectedObjectToBackButton', 'click', () => {\n            this.sendSelectedObjectToBack();\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({ aspectRatio: this.getSelectedCropAspectRatio() });\n        });\n        this.bindElementIfExists('cropAspectRatioSelect', 'change', () => {\n            if (this.cropSession)\n                this.setCropAspectRatio(this.getSelectedCropAspectRatio());\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        const bindStringInput = (key, applyValue) => {\n            const handler = (event) => {\n                applyValue(event.target.value);\n            };\n            this.bindElementIfExists(key, 'input', handler);\n            this.bindElementIfExists(key, 'change', handler);\n        };\n        const bindNumberInput = (key, applyValue) => {\n            const handler = (event) => {\n                applyValue(parseFloat(event.target.value));\n            };\n            this.bindElementIfExists(key, 'input', handler);\n            this.bindElementIfExists(key, 'change', handler);\n        };\n        bindStringInput('textColorInput', (value) => this.applyTextColorInput(value));\n        bindNumberInput('textFontSizeInput', (value) => this.applyTextFontSizeInput(value));\n        bindStringInput('drawColorInput', (value) => this.applyDrawColorInput(value));\n        bindNumberInput('drawBrushSizeInput', (value) => this.applyDrawBrushSizeInput(value));\n        this.bindKeyboardEvents();\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    bindKeyboardEvents() {\n        var _a, _b;\n        const ownerDocument = (_b = (_a = this.canvasElement) === null || _a === void 0 ? void 0 : _a.ownerDocument) !== null && _b !== void 0 ? _b : document;\n        if (this.keyboardHandler && this.keyboardDocument) {\n            this.keyboardDocument.removeEventListener('keydown', this.keyboardHandler);\n        }\n        this.keyboardDocument = ownerDocument;\n        this.keyboardHandler = (event) => this.handleKeyboardEvent(event);\n        ownerDocument.addEventListener('keydown', this.keyboardHandler);\n    }\n    isNativeTextInputActive() {\n        var _a;\n        const activeElement = (_a = this.keyboardDocument) === null || _a === void 0 ? void 0 : _a.activeElement;\n        if (!activeElement)\n            return false;\n        const tagName = activeElement.tagName.toLowerCase();\n        return (tagName === 'input' ||\n            tagName === 'textarea' ||\n            tagName === 'select' ||\n            activeElement.isContentEditable === true);\n    }\n    isFabricTextEditingActive() {\n        var _a;\n        const activeObject = (_a = this.canvas) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n        return !!(activeObject &&\n            isTextAnnotationObject(activeObject) &&\n            activeObject.isEditing === true);\n    }\n    handleKeyboardEvent(event) {\n        if (this.isDisposed)\n            return;\n        if (event.key === 'Delete' || event.key === 'Backspace') {\n            if (this.isNativeTextInputActive() || this.isFabricTextEditingActive())\n                return;\n            this.deleteSelectedObject();\n            return;\n        }\n        if (event.key !== 'Escape')\n            return;\n        if (this.isFabricTextEditingActive() && this.canvas) {\n            finalizeActiveTextEditing(this.buildTextControllerContext(), { commit: false });\n            event.preventDefault();\n            return;\n        }\n        if (this.textSession) {\n            this.exitTextMode();\n        }\n        else if (this.drawSession) {\n            this.exitDrawMode();\n        }\n        else if (this.mosaicSession) {\n            this.exitMosaicMode();\n        }\n        else if (this.cropSession) {\n            this.cancelCrop();\n        }\n    }\n    finalizeActiveTextEditingIfNeeded() {\n        if (!this.canvas || !this.isFabricTextEditingActive())\n            return;\n        finalizeActiveTextEditing(this.buildTextControllerContext(), { commit: true });\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 (!isSupportedImageDataUrl(base64))\n            return;\n        if (!this.canRunIdleOperation('loadImage', options))\n            return;\n        this.finalizeActiveTextEditingIfNeeded();\n        const callbackContext = this.getOperationContext('loadImage', options);\n        const previousImage = this.originalImage;\n        const hadMasks = this.getMasks().length > 0;\n        const hadAnnotations = this.getAnnotations().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            getAnnotationCounter: () => this.annotationCounter,\n            setAnnotationCounter: (v) => {\n                this.annotationCounter = 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.updateAnnotationList();\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        if (hadAnnotations) {\n            this.emitAnnotationsChanged(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        const activeToolMode = this.getActiveToolMode();\n        if (activeToolMode &&\n            !this.operationGuard.isOwnOperation(token) &&\n            !TOOL_MODE_ALLOWED_OPERATIONS[activeToolMode].has(operationName)) {\n            throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while ${activeToolMode} 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    getSelectedCropAspectRatio() {\n        const inputId = this.elements.cropAspectRatioSelect;\n        const inputEl = inputId\n            ? document.getElementById(inputId)\n            : null;\n        const value = inputEl && 'value' in inputEl ? String(inputEl.value).trim() : '';\n        return (value || 'free');\n    }\n    isExpectedIdleGuardError(error, operationName) {\n        return (error instanceof Error &&\n            error.message.startsWith(`[ImageEditor] Cannot run \"${operationName}\" `));\n    }\n    assertCanQueueAnimation(operationName, options) {\n        const token = this.getInternalOperationToken(options);\n        this.operationGuard.assertCanQueueAnimation(operationName, token);\n        const activeToolMode = this.getActiveToolMode();\n        if (activeToolMode &&\n            !this.operationGuard.isOwnOperation(token) &&\n            !TOOL_MODE_ALLOWED_OPERATIONS[activeToolMode].has(operationName)) {\n            throw new Error(`[ImageEditor] Cannot run \"${operationName}\" while ${activeToolMode} mode is active.`);\n        }\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.isToolModeActive();\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    getAnnotations() {\n        if (!this.canvas)\n            return [];\n        return getAnnotationsImpl(this.canvas);\n    }\n    getMaskCollectionSignature() {\n        return this.getMasks()\n            .map((mask) => `${mask.maskId}:${mask.maskName}`)\n            .join('|');\n    }\n    getAnnotationCollectionSignature() {\n        return this.getAnnotations()\n            .map((annotation) => `${annotation.annotationId}:${annotation.annotationName}`)\n            .join('|');\n    }\n    getActiveToolMode() {\n        if (this.cropSession)\n            return 'crop';\n        if (this.mosaicSession)\n            return 'mosaic';\n        if (this.textSession)\n            return 'text';\n        if (this.drawSession)\n            return 'draw';\n        return null;\n    }\n    isToolModeActive() {\n        return this.getActiveToolMode() !== null;\n    }\n    getEditorState() {\n        var _a, _b;\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            annotationCount: this.getAnnotations().length,\n            currentScale: this.currentScale,\n            currentRotation: this.currentRotation,\n            isFlippedHorizontally: !!((_a = this.originalImage) === null || _a === void 0 ? void 0 : _a.flipX),\n            isFlippedVertically: !!((_b = this.originalImage) === null || _b === void 0 ? void 0 : _b.flipY),\n            isBusy: this.isBusy(),\n            activeToolMode: this.getActiveToolMode(),\n            isCropMode: this.cropSession !== null,\n            isMosaicMode: this.mosaicSession !== null,\n            isTextMode: this.textSession !== null,\n            isDrawMode: this.drawSession !== 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    emitAnnotationsChanged(context) {\n        this.emitOptionCallback('onAnnotationsChanged', [this.getAnnotations(), 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, _b;\n        const selectedMasks = selected.filter(isMaskObject);\n        const selectedAnnotations = selected.filter(isAnnotationObject);\n        const selectedObjectKind = selectedMasks.length === 1 && selectedAnnotations.length === 0\n            ? 'mask'\n            : selectedAnnotations.length === 1 && selectedMasks.length === 0\n                ? 'annotation'\n                : null;\n        return {\n            selectedMask: (_a = selectedMasks[0]) !== null && _a !== void 0 ? _a : null,\n            selectedMasks,\n            selectedAnnotation: (_b = selectedAnnotations[0]) !== null && _b !== void 0 ? _b : null,\n            selectedAnnotations,\n            selectedObjectKind,\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, _c;\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        (_c = this.canvas) === null || _c === void 0 ? void 0 : _c.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    getScrollbarStableViewportCanvasSize(viewport) {\n        return {\n            width: Math.max(1, viewport.width - 1),\n            height: Math.max(1, viewport.height - 1),\n        };\n    }\n    updateCanvasSizeToImageBounds(options = {}) {\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        const shouldStabilizeContainedViewport = options.stabilizeContainedViewport !== false;\n        const imageFitsViewport = boundingRect.width <= viewport.width + LAYOUT_EPSILON &&\n            boundingRect.height <= viewport.height + LAYOUT_EPSILON;\n        if (this.currentLayoutMode === 'fit' || this.currentLayoutMode === 'cover') {\n            if (imageFitsViewport) {\n                const canvasSize = shouldStabilizeContainedViewport\n                    ? this.getScrollbarStableViewportCanvasSize(viewport)\n                    : viewport;\n                this.setCanvasSizePx(canvasSize.width, canvasSize.height);\n                return;\n            }\n            const canvasSize = computeScrollableCanvasSize(boundingRect.width, boundingRect.height, viewport, scrollbarSize);\n            this.setCanvasSizePx(canvasSize.width, canvasSize.height);\n            return;\n        }\n        if (imageFitsViewport) {\n            const canvasSize = shouldStabilizeContainedViewport\n                ? this.getScrollbarStableViewportCanvasSize(viewport)\n                : viewport;\n            this.setCanvasSizePx(canvasSize.width, canvasSize.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.getLiveCanvasOrThrow('buildTransformContext'),\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    flipHorizontal() {\n        if (this.isDisposed || !this.transformController)\n            return Promise.resolve();\n        try {\n            this.assertCanQueueAnimation('flipHorizontal');\n        }\n        catch (error) {\n            return Promise.reject(error);\n        }\n        const controller = this.transformController;\n        const context = this.buildCallbackContext('flipHorizontal', false);\n        const job = this.animQueue.add(async () => {\n            if (this.isDisposed)\n                return;\n            this.updateUi();\n            try {\n                await controller.flipHorizontal();\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    flipVertical() {\n        if (this.isDisposed || !this.transformController)\n            return Promise.resolve();\n        try {\n            this.assertCanQueueAnimation('flipVertical');\n        }\n        catch (error) {\n            return Promise.reject(error);\n        }\n        const controller = this.transformController;\n        const context = this.buildCallbackContext('flipVertical', false);\n        const job = this.animQueue.add(async () => {\n            if (this.isDisposed)\n                return;\n            this.updateUi();\n            try {\n                await controller.flipVertical();\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        const previousAnnotationSignature = this.getAnnotationCollectionSignature();\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            this.annotationCounter = restoredState.maxAnnotationId;\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({ stabilizeContainedViewport: false });\n                this.alignObjectBoundingBoxToCanvasTopLeft(this.originalImage);\n            }\n            if (this.originalImage) {\n                this.settleFitCoverScrollbarsAfterStateRestore();\n            }\n            const restoredMasks = restoredState.masks;\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            syncAnnotationRuntimeStates(restoredState.annotations);\n            attachTextEditingHandlersToAnnotations(this.buildTextControllerContext(), restoredState.annotations);\n            this.lastSnapshot = this.captureSnapshotInternal();\n            this.canvas.renderAll();\n            this.updateInputs();\n            this.updateMaskList();\n            this.updateAnnotationList();\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            if (previousAnnotationSignature !== this.getAnnotationCollectionSignature()) {\n                this.emitAnnotationsChanged(context);\n            }\n            this.emitImageChanged(context);\n            const canvas = this.getLiveCanvasOrThrow('loadFromState');\n            const activeMaskId = editorState === null || editorState === void 0 ? void 0 : editorState.activeMaskId;\n            const activeAnnotationId = editorState === null || editorState === void 0 ? void 0 : editorState.activeAnnotationId;\n            if ((editorState === null || editorState === void 0 ? void 0 : editorState.activeObjectKind) === 'mask' && typeof activeMaskId === 'number') {\n                const activeMask = restoredMasks.find((maskObject) => maskObject.maskId === activeMaskId);\n                if (activeMask) {\n                    this.withSelectionChangeContext(context, () => {\n                        canvas.setActiveObject(activeMask);\n                        this.handleSelectionChanged([activeMask]);\n                    });\n                }\n            }\n            else if ((editorState === null || editorState === void 0 ? void 0 : editorState.activeObjectKind) === 'annotation' &&\n                typeof activeAnnotationId === 'number') {\n                const activeAnnotation = restoredState.annotations.find((annotation) => annotation.annotationId === activeAnnotationId);\n                if (activeAnnotation) {\n                    this.withSelectionChangeContext(context, () => {\n                        canvas.setActiveObject(activeAnnotation);\n                        this.handleSelectionChanged([activeAnnotation]);\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, _c;\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        const activeAnnotation = this.getActiveAnnotationForSnapshot();\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                activeAnnotationId: (_b = activeAnnotation === null || activeAnnotation === void 0 ? void 0 : activeAnnotation.annotationId) !== null && _b !== void 0 ? _b : null,\n                currentScale: this.currentScale,\n                currentRotation: this.currentRotation,\n                baseImageScale: this.baseImageScale,\n                currentImageMimeType: this.currentImageMimeType,\n            });\n            const before = (_c = this.lastSnapshot) !== null && _c !== void 0 ? _c : 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.restoreActiveObjectAfterSnapshot(activeObj, activeMask, activeAnnotation);\n            this.updateUi();\n        }\n    }\n    restoreActiveObjectAfterSnapshot(activeObj, activeMask, activeAnnotation) {\n        if (!this.canvas)\n            return;\n        const maskToRestore = activeObj && isMaskObject(activeObj) ? activeObj : activeMask;\n        const annotationToRestore = activeObj && isAnnotationObject(activeObj) ? activeObj : activeAnnotation;\n        if (maskToRestore && this.canvas.getObjects().includes(maskToRestore)) {\n            this.canvas.setActiveObject(maskToRestore);\n            this.showLabelForMask(maskToRestore);\n            this.updateMaskListSelection(maskToRestore);\n            return;\n        }\n        if (annotationToRestore && this.canvas.getObjects().includes(annotationToRestore)) {\n            this.canvas.setActiveObject(annotationToRestore);\n            this.updateAnnotationListSelection(annotationToRestore);\n        }\n    }\n    undo() {\n        if (this.isDisposed)\n            return Promise.resolve();\n        if (!this.canRunIdleOperation('undo'))\n            return Promise.resolve();\n        this.finalizeActiveTextEditingIfNeeded();\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        this.finalizeActiveTextEditingIfNeeded();\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.getLiveCanvasOrThrow('createMask'),\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.getLiveCanvasOrThrow('removeMask'),\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    handleObjectMovingScalingRotating(target) {\n        if (isMaskObject(target)) {\n            this.syncMaskLabel(target);\n        }\n    }\n    handleObjectModified(target) {\n        if (isMaskObject(target)) {\n            this.syncMaskLabel(target);\n            const context = this.buildCallbackContext('saveState', false);\n            this.saveState();\n            this.emitMasksChanged(context);\n            this.emitImageChanged(context);\n            return;\n        }\n        if (isAnnotationObject(target)) {\n            if (isAnnotationLocked(target))\n                return;\n            const context = this.buildCallbackContext('updateAnnotation', false);\n            this.saveState();\n            this.emitAnnotationsChanged(context);\n            this.emitImageChanged(context);\n        }\n    }\n    handleSelectionChanged(selected) {\n        var _a, _b, _c, _d;\n        if (!this.canvas)\n            return;\n        const selectedMask = (_a = selected.find(isMaskObject)) !== null && _a !== void 0 ? _a : null;\n        const selectedAnnotation = (_b = selected.find(isAnnotationObject)) !== null && _b !== void 0 ? _b : 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.updateAnnotationListSelection(selectedAnnotation);\n        this.canvas.requestRenderAll();\n        this.updateUi();\n        const context = (_c = this.nextSelectionChangeContext) !== null && _c !== void 0 ? _c : this.buildCallbackContext((_d = this.activeStateRestoreOperation) !== null && _d !== void 0 ? _d : '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    enterTextMode() {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('enterTextMode'))\n            return;\n        if (this.isToolModeActive())\n            return;\n        enterTextModeImpl(this.buildTextControllerContext());\n        const callbackContext = this.buildCallbackContext('enterTextMode', false);\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    exitTextMode() {\n        if (!this.canvas || !this.textSession)\n            return;\n        if (!this.canRunIdleOperation('exitTextMode'))\n            return;\n        exitTextModeImpl(this.buildTextControllerContext());\n        const callbackContext = this.buildCallbackContext('exitTextMode', false);\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    isTextMode() {\n        return this.textSession !== null;\n    }\n    createTextAnnotation(config = {}) {\n        if (!this.canvas)\n            return null;\n        if (!this.canRunIdleOperation('createTextAnnotation'))\n            return null;\n        return createTextAnnotationImpl(this.buildTextControllerContext(), config);\n    }\n    enterDrawMode() {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('enterDrawMode'))\n            return;\n        if (this.isToolModeActive())\n            return;\n        enterDrawModeImpl(this.buildDrawControllerContext());\n        const callbackContext = this.buildCallbackContext('enterDrawMode', false);\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    exitDrawMode() {\n        if (!this.canvas || !this.drawSession)\n            return;\n        if (!this.canRunIdleOperation('exitDrawMode'))\n            return;\n        exitDrawModeImpl(this.buildDrawControllerContext());\n        const callbackContext = this.buildCallbackContext('exitDrawMode', false);\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    isDrawMode() {\n        return this.drawSession !== null;\n    }\n    getTextConfig() {\n        return cloneResolvedTextAnnotationConfig(this.currentTextConfig);\n    }\n    setTextConfig(config) {\n        this.applyTextConfigPatch(config, 'setTextConfig');\n    }\n    resetTextConfig() {\n        this.applyTextConfigPatch(this.defaultTextConfig, 'resetTextConfig');\n    }\n    setTextColor(color) {\n        this.applyTextConfigPatch({ fill: color }, 'setTextColor');\n    }\n    setTextFontSize(size) {\n        this.applyTextConfigPatch({ fontSize: size }, 'setTextFontSize');\n    }\n    getDrawConfig() {\n        return cloneResolvedDrawConfig(this.currentDrawConfig);\n    }\n    setDrawConfig(config) {\n        this.applyDrawConfigPatch(config, 'setDrawConfig');\n    }\n    resetDrawConfig() {\n        this.applyDrawConfigPatch(this.defaultDrawConfig, 'resetDrawConfig');\n    }\n    setDrawColor(color) {\n        this.applyDrawConfigPatch({ color }, 'setDrawColor');\n    }\n    setDrawBrushSize(size) {\n        this.applyDrawConfigPatch({ brushSize: size }, 'setDrawBrushSize');\n    }\n    removeSelectedAnnotation() {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('removeSelectedAnnotation'))\n            return;\n        const before = this.getAnnotations().length;\n        const callbackContext = this.buildCallbackContext('removeSelectedAnnotation', false);\n        this.withSelectionChangeContext(callbackContext, () => {\n            removeSelectedAnnotationImpl(this.buildAnnotationManagerContext());\n        });\n        this.updateAnnotationList();\n        this.updateUi();\n        if (this.getAnnotations().length !== before) {\n            this.emitAnnotationsChanged(callbackContext);\n            this.emitImageChanged(callbackContext);\n        }\n    }\n    removeAllAnnotations(options = {}) {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('removeAllAnnotations', options))\n            return;\n        const before = this.getAnnotations().length;\n        const callbackContext = this.buildCallbackContext('removeAllAnnotations', false);\n        this.withSelectionChangeContext(callbackContext, () => {\n            removeAllAnnotationsImpl(this.buildAnnotationManagerContext(), options);\n        });\n        this.updateAnnotationList();\n        this.updateUi();\n        if (this.getAnnotations().length !== before) {\n            this.emitAnnotationsChanged(callbackContext);\n            this.emitImageChanged(callbackContext);\n        }\n    }\n    updateAnnotation(annotationId, config) {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('updateAnnotation'))\n            return;\n        const callbackContext = this.buildCallbackContext('updateAnnotation', false);\n        const changed = updateAnnotationImpl(this.buildAnnotationManagerContext(), annotationId, config);\n        if (changed) {\n            this.updateAnnotationList();\n            this.emitAnnotationsChanged(callbackContext);\n            this.emitImageChanged(callbackContext);\n        }\n    }\n    updateSelectedAnnotation(config) {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('updateSelectedAnnotation'))\n            return;\n        const callbackContext = this.buildCallbackContext('updateSelectedAnnotation', false);\n        const changed = updateSelectedAnnotationImpl(this.buildAnnotationManagerContext(), config);\n        if (changed) {\n            this.updateAnnotationList();\n            this.emitAnnotationsChanged(callbackContext);\n            this.emitImageChanged(callbackContext);\n        }\n    }\n    deleteSelectedObject() {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('deleteSelectedObject'))\n            return;\n        this.finalizeActiveTextEditingIfNeeded();\n        const selectedObjects = this.getSelectedCanvasObjects();\n        const selectedMasks = selectedObjects.filter(isMaskObject);\n        const selectedAnnotations = selectedObjects.filter((object) => isAnnotationObject(object) && isAnnotationUnlocked(object));\n        if (selectedMasks.length === 0 && selectedAnnotations.length === 0)\n            return;\n        const canvas = this.getLiveCanvasOrThrow('deleteSelectedObject');\n        const callbackContext = this.buildCallbackContext('deleteSelectedObject', false);\n        this.withSelectionChangeContext(callbackContext, () => {\n            for (const mask of selectedMasks) {\n                this.removeLabelForMask(mask);\n                canvas.remove(mask);\n            }\n            removeAnnotationObjects(this.buildAnnotationManagerContext(), selectedAnnotations, {\n                saveHistory: false,\n                force: true,\n            });\n            canvas.discardActiveObject();\n            canvas.renderAll();\n            this.saveState();\n        });\n        this.updateMaskList();\n        this.updateAnnotationList();\n        this.updateUi();\n        if (selectedMasks.length > 0)\n            this.emitMasksChanged(callbackContext);\n        if (selectedAnnotations.length > 0)\n            this.emitAnnotationsChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    bringSelectedObjectForward() {\n        this.moveSelectedEditableObject('bringSelectedObjectForward');\n    }\n    sendSelectedObjectBackward() {\n        this.moveSelectedEditableObject('sendSelectedObjectBackward');\n    }\n    bringSelectedObjectToFront() {\n        this.moveSelectedEditableObject('bringSelectedObjectToFront');\n    }\n    sendSelectedObjectToBack() {\n        this.moveSelectedEditableObject('sendSelectedObjectToBack');\n    }\n    buildAnnotationManagerContext() {\n        return {\n            canvas: this.getLiveCanvasOrThrow('annotationManager'),\n            saveCanvasState: () => this.saveState(),\n            updateUi: () => this.updateUi(),\n        };\n    }\n    buildAnnotationListContext() {\n        return {\n            canvas: this.canvas,\n            getListElementId: () => this.elements.annotationList,\n            onAnnotationSelected: (annotation) => this.handleSelectionChanged([annotation]),\n        };\n    }\n    updateAnnotationList() {\n        renderAnnotationList(this.buildAnnotationListContext());\n    }\n    updateAnnotationListSelection(selectedAnnotation) {\n        updateAnnotationListSelection(this.buildAnnotationListContext(), selectedAnnotation);\n    }\n    buildTextControllerContext() {\n        return {\n            fabric: this.fabricModule,\n            canvas: this.getLiveCanvasOrThrow('textController'),\n            options: this.options,\n            getOriginalImage: () => this.originalImage,\n            getTextConfig: () => this.currentTextConfig,\n            isImageLoaded: () => this.isImageLoaded(),\n            getAnnotationCounter: () => this.annotationCounter,\n            setAnnotationCounter: (value) => {\n                this.annotationCounter = value;\n            },\n            getTextSession: () => this.textSession,\n            setTextSession: (session) => {\n                this.textSession = session;\n            },\n            saveCanvasState: () => this.saveState(),\n            updateAnnotationList: () => this.updateAnnotationList(),\n            updateUi: () => this.updateUi(),\n            emitAnnotationsChanged: (context) => this.emitAnnotationsChanged(context),\n            emitImageChanged: (context) => this.emitImageChanged(context),\n            buildCallbackContext: (operation) => this.buildCallbackContext(operation, false),\n        };\n    }\n    buildDrawControllerContext() {\n        return {\n            fabric: this.fabricModule,\n            canvas: this.getLiveCanvasOrThrow('drawController'),\n            options: this.options,\n            getDrawConfig: () => this.currentDrawConfig,\n            isImageLoaded: () => this.isImageLoaded(),\n            getAnnotationCounter: () => this.annotationCounter,\n            setAnnotationCounter: (value) => {\n                this.annotationCounter = value;\n            },\n            getDrawSession: () => this.drawSession,\n            setDrawSession: (session) => {\n                this.drawSession = session;\n            },\n            saveCanvasState: () => this.saveState(),\n            updateAnnotationList: () => this.updateAnnotationList(),\n            updateUi: () => this.updateUi(),\n            emitAnnotationsChanged: (context) => this.emitAnnotationsChanged(context),\n            emitImageChanged: (context) => this.emitImageChanged(context),\n            buildCallbackContext: (operation) => this.buildCallbackContext(operation, false),\n        };\n    }\n    applyTextConfigPatch(config, operation) {\n        if (!this.canRunIdleOperation(operation))\n            return;\n        const invalidFields = getInvalidTextAnnotationConfigFields(config);\n        if (invalidFields.length > 0) {\n            reportWarning(this.options, null, `${operation} ignored invalid Text config fields: ${invalidFields.join(', ')}.`);\n        }\n        const next = mergeTextAnnotationConfigPatch(this.currentTextConfig, config, this.defaultTextConfig);\n        if (areResolvedTextAnnotationConfigsEqual(this.currentTextConfig, next))\n            return;\n        this.currentTextConfig = next;\n        this.updateInputs();\n        this.updateUi();\n        this.emitImageChanged(this.buildCallbackContext(operation, false));\n    }\n    applyDrawConfigPatch(config, operation) {\n        if (!this.canRunIdleOperation(operation))\n            return;\n        const invalidFields = getInvalidDrawConfigFields(config);\n        if (invalidFields.length > 0) {\n            reportWarning(this.options, null, `${operation} ignored invalid Draw config fields: ${invalidFields.join(', ')}.`);\n        }\n        const next = mergeDrawConfigPatch(this.currentDrawConfig, config, this.defaultDrawConfig);\n        if (areResolvedDrawConfigsEqual(this.currentDrawConfig, next))\n            return;\n        this.currentDrawConfig = next;\n        updateDrawBrush(this.buildDrawControllerContext());\n        this.updateInputs();\n        this.updateUi();\n        this.emitImageChanged(this.buildCallbackContext(operation, false));\n    }\n    applyTextColorInput(color) {\n        var _a;\n        if (this.isTextMode()) {\n            this.setTextColor(color);\n            return;\n        }\n        const selected = (_a = this.canvas) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n        if (selected && isTextAnnotationObject(selected)) {\n            this.updateSelectedAnnotation({ fill: color });\n            return;\n        }\n        this.setTextColor(color);\n    }\n    applyTextFontSizeInput(size) {\n        var _a;\n        if (this.isTextMode()) {\n            this.setTextFontSize(size);\n            return;\n        }\n        const selected = (_a = this.canvas) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n        if (selected && isTextAnnotationObject(selected)) {\n            this.updateSelectedAnnotation({ fontSize: size });\n            return;\n        }\n        this.setTextFontSize(size);\n    }\n    applyDrawColorInput(color) {\n        var _a;\n        if (this.isDrawMode()) {\n            this.setDrawColor(color);\n            return;\n        }\n        const selected = (_a = this.canvas) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n        if (selected && isDrawAnnotationObject(selected)) {\n            this.updateSelectedAnnotation({ stroke: color });\n            return;\n        }\n        this.setDrawColor(color);\n    }\n    applyDrawBrushSizeInput(size) {\n        var _a;\n        if (this.isDrawMode()) {\n            this.setDrawBrushSize(size);\n            return;\n        }\n        const selected = (_a = this.canvas) === null || _a === void 0 ? void 0 : _a.getActiveObject();\n        if (selected && isDrawAnnotationObject(selected)) {\n            this.updateSelectedAnnotation({ strokeWidth: size });\n            return;\n        }\n        this.setDrawBrushSize(size);\n    }\n    getSelectedCanvasObjects() {\n        var _a, _b, _c;\n        if (!this.canvas)\n            return [];\n        const activeObject = this.canvas.getActiveObject();\n        if (!activeObject)\n            return [];\n        const type = typeof activeObject.type === 'string' ? activeObject.type.toLowerCase() : '';\n        const isActiveSelection = type === 'activeselection' ||\n            ((_c = (_b = (_a = activeObject).isType) === null || _b === void 0 ? void 0 : _b.call(_a, 'ActiveSelection')) !== null && _c !== void 0 ? _c : false);\n        if (!isActiveSelection)\n            return [activeObject];\n        const getObjects = activeObject\n            .getObjects;\n        return typeof getObjects === 'function' ? getObjects.call(activeObject) : [];\n    }\n    moveSelectedEditableObject(operation) {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation(operation))\n            return;\n        const selected = this.getSelectedCanvasObjects().filter(isEditableOverlayObject);\n        if (selected.length !== 1) {\n            if (selected.length > 1) {\n                reportWarning(this.options, null, `${operation} skipped: ActiveSelection layer moves are not supported.`);\n            }\n            return;\n        }\n        const object = selected[0];\n        const range = getEditableOverlayRange(this.canvas);\n        const overlays = range.overlays;\n        const currentOverlayIndex = overlays.indexOf(object);\n        if (currentOverlayIndex < 0)\n            return;\n        let nextOverlayIndex = currentOverlayIndex;\n        if (operation === 'bringSelectedObjectForward') {\n            nextOverlayIndex = Math.min(overlays.length - 1, currentOverlayIndex + 1);\n        }\n        else if (operation === 'sendSelectedObjectBackward') {\n            nextOverlayIndex = Math.max(0, currentOverlayIndex - 1);\n        }\n        else if (operation === 'bringSelectedObjectToFront') {\n            nextOverlayIndex = overlays.length - 1;\n        }\n        else if (operation === 'sendSelectedObjectToBack') {\n            nextOverlayIndex = 0;\n        }\n        if (nextOverlayIndex === currentOverlayIndex)\n            return;\n        const reordered = overlays.slice();\n        reordered.splice(currentOverlayIndex, 1);\n        reordered.splice(nextOverlayIndex, 0, object);\n        reordered.forEach((overlay, index) => {\n            var _a, _b;\n            (_b = (_a = this.canvas).moveObjectTo) === null || _b === void 0 ? void 0 : _b.call(_a, overlay, range.start + index);\n        });\n        normalizeLayerOrder(this.canvas);\n        this.canvas.setActiveObject(object);\n        this.canvas.renderAll();\n        this.saveState();\n        this.updateMaskList();\n        this.updateAnnotationList();\n        this.updateUi();\n        const context = this.buildCallbackContext(operation, false);\n        if (isMaskObject(object))\n            this.emitMasksChanged(context);\n        if (isAnnotationObject(object))\n            this.emitAnnotationsChanged(context);\n        this.emitImageChanged(context);\n    }\n    async mergeMasks() {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('mergeMasks'))\n            return;\n        this.finalizeActiveTextEditingIfNeeded();\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.updateAnnotationList();\n            this.emitMasksChanged(callbackContext);\n            if (this.getAnnotations().length > 0) {\n                this.emitAnnotationsChanged(callbackContext);\n            }\n            this.emitImageChanged(callbackContext);\n        }\n        finally {\n            this.operationGuard.endBusyOperation(operationToken);\n            this.emitBusyChangeIfChanged(callbackContext);\n            this.updateUi();\n        }\n    }\n    async downloadImage(options) {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('downloadImage'))\n            return;\n        this.finalizeActiveTextEditingIfNeeded();\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            await downloadImageImpl(exportContext, options);\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        this.finalizeActiveTextEditingIfNeeded();\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        this.finalizeActiveTextEditingIfNeeded();\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.getLiveCanvasOrThrow('export'),\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            captureSnapshot: () => this.captureSnapshotInternal(),\n            loadFromState: (snapshot) => this.loadFromStateInternal(snapshot, this.withInternalOperationOptions(operationToken, this.withAnimationQueueBypass())),\n            exportImageBase64: (options) => exportImageBase64Impl(this.buildExportServiceContext(), options),\n            updateUi: () => this.updateUi(),\n            updateInputs: () => this.updateInputs(),\n            removeAllMasksNoHistory: () => {\n                const context = this.buildRemoveMaskContext();\n                removeAllMasksImpl(context, { saveHistory: false });\n            },\n            getAnnotations: () => this.getAnnotations(),\n            restoreAnnotations: (objects) => {\n                const canvas = this.getLiveCanvasOrThrow('restoreAnnotations');\n                objects.forEach((annotation) => {\n                    canvas.add(annotation);\n                });\n                syncAnnotationRuntimeStates(objects);\n                attachTextEditingHandlersToAnnotations(this.buildTextControllerContext(), objects);\n                this.annotationCounter = Math.max(this.annotationCounter, ...objects.map((annotation) => annotation.annotationId), 0);\n                this.updateAnnotationList();\n            },\n        };\n    }\n    buildMergeAnnotationsContext(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            captureSnapshot: () => this.captureSnapshotInternal(),\n            loadFromState: (snapshot) => this.loadFromStateInternal(snapshot, this.withInternalOperationOptions(operationToken, this.withAnimationQueueBypass())),\n            exportImageBase64: (options) => exportImageBase64Impl(this.buildExportServiceContext(), options),\n            updateUi: () => this.updateUi(),\n            updateInputs: () => this.updateInputs(),\n            removeAllAnnotationsNoHistory: () => {\n                removeAllAnnotationsImpl(this.buildAnnotationManagerContext(), {\n                    saveHistory: false,\n                    force: true,\n                });\n            },\n            getMasks: () => this.getMasks(),\n            restoreMasks: (objects) => {\n                const canvas = this.getLiveCanvasOrThrow('restoreMasks');\n                objects.forEach((mask) => {\n                    canvas.add(mask);\n                    reattachMaskHoverHandlers(mask);\n                });\n                this.lastMask = objects.reduce((lastMask, mask) => !lastMask || mask.maskId > lastMask.maskId ? mask : lastMask, null);\n                this.maskCounter = Math.max(this.maskCounter, ...objects.map((mask) => mask.maskId), 0);\n                this.updateMaskList();\n            },\n        };\n    }\n    captureSnapshotInternal() {\n        var _a, _b;\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        const activeAnnotation = this.getActiveAnnotationForSnapshot();\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            activeAnnotationId: (_b = activeAnnotation === null || activeAnnotation === void 0 ? void 0 : activeAnnotation.annotationId) !== null && _b !== void 0 ? _b : 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    getActiveAnnotationForSnapshot() {\n        if (!this.canvas)\n            return null;\n        const activeObject = this.canvas.getActiveObject();\n        return activeObject && isAnnotationObject(activeObject) ? activeObject : 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.getLiveCanvasOrThrow('mosaicController'),\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(options = {}) {\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, options);\n        this.updateUi();\n        const callbackContext = this.buildCallbackContext('enterCropMode', false);\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.emitImageChanged(callbackContext);\n    }\n    setCropAspectRatio(aspectRatio) {\n        if (!this.canvas || !this.cropSession)\n            return;\n        if (!this.canRunIdleOperation('setCropAspectRatio'))\n            return;\n        const cropControllerContext = this.buildCropControllerContext();\n        setCropAspectRatioImpl(cropControllerContext, aspectRatio);\n        this.updateUi();\n        const callbackContext = this.buildCallbackContext('setCropAspectRatio', false);\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.getLiveCanvasOrThrow('cropController'),\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    syncInputValue(inputElement, value) {\n        if (!inputElement)\n            return;\n        const ownerDocument = inputElement.ownerDocument;\n        if (ownerDocument.activeElement === inputElement && !inputElement.readOnly)\n            return;\n        if (inputElement.value !== value)\n            inputElement.value = value;\n    }\n    updateInputs() {\n        const scaleId = this.elements.scalePercentageInput;\n        if (scaleId) {\n            const scaleInputElement = document.getElementById(scaleId);\n            this.syncInputValue(scaleInputElement, String(Math.round(this.currentScale * 100)));\n        }\n        const mosaicConfig = this.getMosaicConfig();\n        const mosaicBrushSizeInputId = this.elements.mosaicBrushSizeInput;\n        if (mosaicBrushSizeInputId) {\n            const brushInput = document.getElementById(mosaicBrushSizeInputId);\n            this.syncInputValue(brushInput, String(mosaicConfig.brushSize));\n        }\n        const mosaicBlockSizeInputId = this.elements.mosaicBlockSizeInput;\n        if (mosaicBlockSizeInputId) {\n            const blockInput = document.getElementById(mosaicBlockSizeInputId);\n            this.syncInputValue(blockInput, String(mosaicConfig.blockSize));\n        }\n        const textConfig = this.getTextConfig();\n        const textColorInputId = this.elements.textColorInput;\n        if (textColorInputId) {\n            const textColorInput = document.getElementById(textColorInputId);\n            this.syncInputValue(textColorInput, textConfig.fill);\n        }\n        const textFontSizeInputId = this.elements.textFontSizeInput;\n        if (textFontSizeInputId) {\n            const fontInput = document.getElementById(textFontSizeInputId);\n            this.syncInputValue(fontInput, String(textConfig.fontSize));\n        }\n        const drawConfig = this.getDrawConfig();\n        const drawColorInputId = this.elements.drawColorInput;\n        if (drawColorInputId) {\n            const drawColorInput = document.getElementById(drawColorInputId);\n            this.syncInputValue(drawColorInput, drawConfig.color);\n        }\n        const drawBrushSizeInputId = this.elements.drawBrushSizeInput;\n        if (drawBrushSizeInputId) {\n            const brushInput = document.getElementById(drawBrushSizeInputId);\n            this.syncInputValue(brushInput, String(drawConfig.brushSize));\n        }\n    }\n    async mergeAnnotations() {\n        if (!this.canvas)\n            return;\n        if (!this.canRunIdleOperation('mergeAnnotations'))\n            return;\n        this.finalizeActiveTextEditingIfNeeded();\n        const hasAnnotations = this.canvas.getObjects().some(isAnnotationObject);\n        if (!hasAnnotations)\n            return;\n        const callbackContext = this.buildCallbackContext('mergeAnnotations', false);\n        const operationToken = this.operationGuard.beginBusyOperation('mergeAnnotations');\n        this.emitBusyChangeIfChanged(callbackContext);\n        this.updateUi();\n        try {\n            await mergeAnnotationsImpl(this.buildMergeAnnotationsContext(operationToken));\n            this.updateInputs();\n            this.updateMaskList();\n            this.updateAnnotationList();\n            this.emitAnnotationsChanged(callbackContext);\n            if (this.getMasks().length > 0)\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    updateUi() {\n        var _a, _b, _c;\n        if (!this.canvas)\n            return;\n        const hasImage = !!this.originalImage;\n        const masks = hasImage ? this.canvas.getObjects().filter(isMaskObject) : [];\n        const annotations = hasImage ? this.canvas.getObjects().filter(isAnnotationObject) : [];\n        const hasMasks = masks.length > 0;\n        const hasAnnotations = annotations.length > 0;\n        const activeObject = this.canvas.getActiveObject();\n        const hasSelectedMask = !!(activeObject && isMaskObject(activeObject));\n        const hasSelectedAnnotation = !!(activeObject && isAnnotationObject(activeObject));\n        const hasSelectedEditableObject = !!activeObject && isEditableOverlayObject(activeObject);\n        const isDefaultTransform = this.currentScale === 1 &&\n            this.currentRotation === 0 &&\n            !((_a = this.originalImage) === null || _a === void 0 ? void 0 : _a.flipX) &&\n            !((_b = this.originalImage) === null || _b === void 0 ? void 0 : _b.flipY);\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 isInTextMode = this.textSession !== null;\n        const isInDrawMode = this.drawSession !== null;\n        const isBusy = this.operationGuard.isBusy() || this.animQueue.isBusy();\n        const isMosaicApplying = ((_c = this.mosaicSession) === null || _c === void 0 ? void 0 : _c.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 (isInTextMode) {\n            CROP_MODE_CONTROL_KEYS.forEach((key) => {\n                this.setControlEnabled(key, !isBusy && TEXT_MODE_ENABLED_KEYS.includes(key));\n            });\n            return;\n        }\n        if (isInDrawMode) {\n            CROP_MODE_CONTROL_KEYS.forEach((key) => {\n                this.setControlEnabled(key, !isBusy && DRAW_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('flipHorizontalButton', hasImage && !isBusy);\n        this.setControlEnabled('flipVerticalButton', 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('removeSelectedAnnotationButton', hasSelectedAnnotation && !isBusy);\n        this.setControlEnabled('removeAllAnnotationsButton', hasAnnotations && !isBusy);\n        this.setControlEnabled('deleteSelectedObjectButton', hasSelectedEditableObject && !isBusy);\n        this.setControlEnabled('mergeAnnotationsButton', hasImage && hasAnnotations && !isBusy);\n        this.setControlEnabled('bringSelectedObjectForwardButton', hasSelectedEditableObject && !isBusy);\n        this.setControlEnabled('sendSelectedObjectBackwardButton', hasSelectedEditableObject && !isBusy);\n        this.setControlEnabled('bringSelectedObjectToFrontButton', hasSelectedEditableObject && !isBusy);\n        this.setControlEnabled('sendSelectedObjectToBackButton', hasSelectedEditableObject && !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('cropAspectRatioSelect', hasImage && !isBusy);\n        this.setControlEnabled('enterMosaicModeButton', hasImage && !isBusy);\n        this.setControlEnabled('enterTextModeButton', hasImage && !isBusy);\n        this.setControlEnabled('enterDrawModeButton', hasImage && !isBusy);\n        this.setControlEnabled('exitMosaicModeButton', false);\n        this.setControlEnabled('exitTextModeButton', false);\n        this.setControlEnabled('exitDrawModeButton', false);\n        this.setControlEnabled('mosaicBrushSizeInput', !this.isDisposed);\n        this.setControlEnabled('mosaicBlockSizeInput', !this.isDisposed);\n        this.setControlEnabled('textColorInput', !this.isDisposed);\n        this.setControlEnabled('textFontSizeInput', !this.isDisposed);\n        this.setControlEnabled('drawColorInput', !this.isDisposed);\n        this.setControlEnabled('drawBrushSizeInput', !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            const formControl = controlElement;\n            const nextDisabled = !isEnabled;\n            if (formControl.disabled !== nextDisabled)\n                formControl.disabled = nextDisabled;\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        if (this.keyboardHandler && this.keyboardDocument) {\n            try {\n                this.keyboardDocument.removeEventListener('keydown', this.keyboardHandler);\n            }\n            catch {\n            }\n        }\n        this.keyboardHandler = null;\n        this.keyboardDocument = null;\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.textSession && this.canvas) {\n            try {\n                exitTextModeImpl(this.buildTextControllerContext());\n            }\n            catch {\n            }\n            this.textSession = null;\n        }\n        if (this.drawSession && this.canvas) {\n            try {\n                exitDrawModeImpl(this.buildDrawControllerContext());\n            }\n            catch {\n            }\n            this.drawSession = 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.annotationCounter = 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","isActiveSelectionObject","clampExportQuality","isPositiveFinite","getCanvasDocument","setPlaceholderVisibleImpl","loadImageImpl","getAnnotationsImpl","loadFromStateImpl","saveStateImpl","createMaskImpl","removeSelectedMaskImpl","removeAllMasksImpl","enterTextModeImpl","exitTextModeImpl","createTextAnnotationImpl","enterDrawModeImpl","exitDrawModeImpl","removeSelectedAnnotationImpl","removeAllAnnotationsImpl","updateAnnotationImpl","updateSelectedAnnotationImpl","mergeMasksImpl","downloadImageImpl","exportImageBase64Impl","exportImageFileImpl","enterMosaicModeImpl","exitMosaicModeImpl","enterCropModeImpl","setCropAspectRatioImpl","cancelCropImpl","applyCropImpl","mergeAnnotationsImpl"],"mappings":"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"}