vuedit-image-editor 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +222 -0
- package/dist/style.css +1 -0
- package/dist/types/components/VueditImageEditor.vue.d.ts +91 -0
- package/dist/types/components/VueditImageEditorModal.vue.d.ts +71 -0
- package/dist/types/components/canvas/FabricCanvas.vue.d.ts +5 -0
- package/dist/types/components/panels/CropPanel.vue.d.ts +32 -0
- package/dist/types/components/panels/DrawPanel.vue.d.ts +24 -0
- package/dist/types/components/panels/FilterPanel.vue.d.ts +28 -0
- package/dist/types/components/panels/ResizePanel.vue.d.ts +35 -0
- package/dist/types/components/panels/RotateFlipPanel.vue.d.ts +31 -0
- package/dist/types/components/panels/ShapePanel.vue.d.ts +26 -0
- package/dist/types/components/panels/TextPanel.vue.d.ts +26 -0
- package/dist/types/components/shared/ColorPicker.vue.d.ts +21 -0
- package/dist/types/components/shared/ConfirmBar.vue.d.ts +23 -0
- package/dist/types/components/shared/RangeSlider.vue.d.ts +27 -0
- package/dist/types/components/toolbar/EditorToolbar.vue.d.ts +26 -0
- package/dist/types/components/toolbar/ToolButton.vue.d.ts +30 -0
- package/dist/types/composables/useCrop.d.ts +18 -0
- package/dist/types/composables/useDraw.d.ts +12 -0
- package/dist/types/composables/useEditorState.d.ts +7 -0
- package/dist/types/composables/useFabricCanvas.d.ts +16 -0
- package/dist/types/composables/useFilters.d.ts +18 -0
- package/dist/types/composables/useHistory.d.ts +11 -0
- package/dist/types/composables/useResize.d.ts +16 -0
- package/dist/types/composables/useRotateFlip.d.ts +12 -0
- package/dist/types/composables/useShapes.d.ts +12 -0
- package/dist/types/composables/useText.d.ts +16 -0
- package/dist/types/composables/useZoom.d.ts +11 -0
- package/dist/types/i18n/ar.d.ts +54 -0
- package/dist/types/i18n/en.d.ts +55 -0
- package/dist/types/i18n/index.d.ts +7 -0
- package/dist/types/icons/CropIcon.vue.d.ts +2 -0
- package/dist/types/icons/DrawIcon.vue.d.ts +2 -0
- package/dist/types/icons/FilterIcon.vue.d.ts +2 -0
- package/dist/types/icons/FlipHIcon.vue.d.ts +2 -0
- package/dist/types/icons/FlipVIcon.vue.d.ts +2 -0
- package/dist/types/icons/RedoIcon.vue.d.ts +2 -0
- package/dist/types/icons/ResizeIcon.vue.d.ts +2 -0
- package/dist/types/icons/RotateIcon.vue.d.ts +2 -0
- package/dist/types/icons/RotateLeftIcon.vue.d.ts +2 -0
- package/dist/types/icons/RotateRightIcon.vue.d.ts +2 -0
- package/dist/types/icons/ShapeIcon.vue.d.ts +2 -0
- package/dist/types/icons/TextIcon.vue.d.ts +2 -0
- package/dist/types/icons/UndoIcon.vue.d.ts +2 -0
- package/dist/types/icons/ZoomInIcon.vue.d.ts +2 -0
- package/dist/types/icons/ZoomOutIcon.vue.d.ts +2 -0
- package/dist/types/icons/index.d.ts +15 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/types/index.d.ts +43 -0
- package/dist/vuedit-image-editor.es.js +8909 -3338
- package/dist/vuedit-image-editor.es.js.map +1 -1
- package/dist/vuedit-image-editor.umd.js +504 -35
- package/dist/vuedit-image-editor.umd.js.map +1 -1
- package/package.json +50 -31
- package/LICENSE +0 -21
- package/dist/index.d.ts +0 -665
- package/dist/vuedit-image-editor.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vuedit-image-editor.es.js","sources":["../src/types/image-state.ts","../src/core/History.ts","../src/core/ImageReader.ts","../src/engine/useEditorEngine.ts","../src/core/ColorMatrix.ts","../src/core/ImageProcessor.ts","../src/locale/en.ts","../src/locale/ar.ts","../src/components/ui/IconButton.vue","../src/components/EditorToolbar.vue","../src/core/CanvasRenderer.ts","../src/components/EditorCanvas.vue","../src/components/EditorTabs.vue","../src/components/EditorControlPanel.vue","../src/components/ui/Slider.vue","../src/components/ui/Dropdown.vue","../src/plugins/crop/presets.ts","../src/plugins/crop/CropControls.vue","../src/plugins/crop/CropOverlay.vue","../src/plugins/crop/index.ts","../src/plugins/finetune/effects.ts","../src/plugins/finetune/FinetuneControls.vue","../src/plugins/finetune/index.ts","../src/plugins/filter/filterPresets.ts","../src/plugins/filter/FilterControls.vue","../src/plugins/filter/index.ts","../src/plugins/sticker/defaultStickers.ts","../src/plugins/sticker/selectedSticker.ts","../src/plugins/sticker/StickerControls.vue","../src/plugins/sticker/StickerOverlay.vue","../src/plugins/sticker/index.ts","../src/plugins/frame/frameStyles.ts","../src/plugins/frame/FrameControls.vue","../src/plugins/frame/index.ts","../src/plugins/fill/FillControls.vue","../src/plugins/fill/index.ts","../src/plugins/resize/ResizeControls.vue","../src/plugins/resize/index.ts","../src/components/EditorShell.vue","../src/components/EditorModal.vue","../src/core/StatePersistence.ts","../src/index.ts"],"sourcesContent":["export interface CropState {\n /** Normalized 0-1 X position of crop region */\n x: number\n /** Normalized 0-1 Y position of crop region */\n y: number\n /** Normalized 0-1 width of crop region */\n width: number\n /** Normalized 0-1 height of crop region */\n height: number\n /** Locked aspect ratio (width/height), null = free */\n aspectRatio: number | null\n /** Rotation in radians (combined quadrant + fine-tune) */\n rotation: number\n /** Flip horizontally */\n flipX: boolean\n /** Flip vertically */\n flipY: boolean\n}\n\nexport interface FinetuneState {\n brightness: number // -0.25 to 0.25, base 0\n contrast: number // -0.25 to 0.25, base 0\n saturation: number // -0.25 to 0.25, base 0\n exposure: number // -0.25 to 0.25, base 0\n temperature: number // -0.25 to 0.25, base 0\n gamma: number // 0.2 to 5.0, base 1\n clarity: number // -0.25 to 0.25, base 0\n vignette: number // -1 to 1, base 0\n}\n\nexport interface FilterState {\n /** Filter preset ID, null = no filter */\n id: string | null\n /** Filter intensity 0 to 1 */\n intensity: number\n /** Optional 5x4 color matrix (20 elements) */\n matrix?: number[]\n}\n\nexport interface StickerInstance {\n id: string\n /** URL, data URI, or emoji character */\n src: string\n /** Normalized 0-1 position */\n x: number\n y: number\n /** Normalized 0-1 size */\n width: number\n height: number\n /** Rotation in radians */\n rotation: number\n flipX: boolean\n flipY: boolean\n opacity: number\n}\n\nexport interface FrameState {\n /** Frame style ID, null = no frame */\n style: string | null\n /** Frame thickness as percentage of image size */\n size: number\n /** RGBA color, each 0-1 */\n color: [number, number, number, number]\n /** Corner radius */\n radius: number\n}\n\nexport interface ResizeState {\n width?: number\n height?: number\n fit: 'contain' | 'cover' | 'force'\n upscale: boolean\n}\n\nexport interface ImageState {\n crop: CropState\n finetune: FinetuneState\n filter: FilterState\n stickers: StickerInstance[]\n frame: FrameState\n resize: ResizeState\n backgroundColor: [number, number, number, number]\n}\n\nexport function createDefaultImageState(): ImageState {\n return {\n crop: {\n x: 0,\n y: 0,\n width: 1,\n height: 1,\n aspectRatio: null,\n rotation: 0,\n flipX: false,\n flipY: false,\n },\n finetune: {\n brightness: 0,\n contrast: 0,\n saturation: 0,\n exposure: 0,\n temperature: 0,\n gamma: 1,\n clarity: 0,\n vignette: 0,\n },\n filter: {\n id: null,\n intensity: 1,\n },\n stickers: [],\n frame: {\n style: null,\n size: 0.025,\n color: [1, 1, 1, 1],\n radius: 0,\n },\n resize: {\n fit: 'contain',\n upscale: false,\n },\n backgroundColor: [0, 0, 0, 1],\n }\n}\n","import type { ImageState } from '../types'\n\nfunction deepClone(state: ImageState): ImageState {\n return JSON.parse(JSON.stringify(state))\n}\n\nexport class History {\n private states: ImageState[] = []\n private pointer = -1\n private maxSize: number\n\n constructor(maxSize = 50) {\n this.maxSize = maxSize\n }\n\n /** Push a new state snapshot. Truncates any future (redo) states. */\n push(state: ImageState): void {\n // Truncate future states\n this.states = this.states.slice(0, this.pointer + 1)\n // Deep clone to preserve snapshot\n this.states.push(deepClone(state))\n // Enforce max size\n if (this.states.length > this.maxSize) {\n this.states.shift()\n }\n this.pointer = this.states.length - 1\n }\n\n /** Undo: return the previous state, or null if at the beginning. */\n undo(): ImageState | null {\n if (this.pointer <= 0) return null\n this.pointer--\n return deepClone(this.states[this.pointer])\n }\n\n /** Redo: return the next state, or null if at the end. */\n redo(): ImageState | null {\n if (this.pointer >= this.states.length - 1) return null\n this.pointer++\n return deepClone(this.states[this.pointer])\n }\n\n /** Reset history with a single initial state. */\n reset(state: ImageState): void {\n this.states = [deepClone(state)]\n this.pointer = 0\n }\n\n get canUndo(): boolean {\n return this.pointer > 0\n }\n\n get canRedo(): boolean {\n return this.pointer < this.states.length - 1\n }\n\n get currentIndex(): number {\n return this.pointer\n }\n\n get length(): number {\n return this.states.length\n }\n}\n","/**\n * Load images from various sources into an HTMLImageElement.\n * Handles URL strings, File objects, Blobs, and EXIF orientation.\n */\n\nexport async function loadImage(src: string | File | Blob): Promise<HTMLImageElement> {\n const url = await toObjectUrl(src)\n\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.crossOrigin = 'anonymous'\n\n img.onload = () => {\n // Revoke object URL if we created one (for File/Blob)\n if (typeof src !== 'string') {\n URL.revokeObjectURL(url)\n }\n resolve(img)\n }\n\n img.onerror = () => {\n if (typeof src !== 'string') {\n URL.revokeObjectURL(url)\n }\n reject(new Error(`Failed to load image: ${typeof src === 'string' ? src : 'Blob/File'}`))\n }\n\n img.src = url\n })\n}\n\nasync function toObjectUrl(src: string | File | Blob): Promise<string> {\n if (typeof src === 'string') {\n return src\n }\n return URL.createObjectURL(src)\n}\n\n/**\n * Read EXIF orientation from a File/Blob.\n * Returns orientation value 1-8, or 1 if not found.\n *\n * Modern browsers (Chrome 81+, Firefox 77+, Safari 13.1+) auto-correct\n * EXIF orientation when drawing to canvas, so this is mainly for\n * detecting if we need to handle older browsers.\n */\nexport async function readExifOrientation(file: File | Blob): Promise<number> {\n try {\n const buffer = await file.slice(0, 65536).arrayBuffer()\n const view = new DataView(buffer)\n\n // Check JPEG SOI marker\n if (view.getUint16(0) !== 0xFFD8) return 1\n\n let offset = 2\n while (offset < view.byteLength - 2) {\n const marker = view.getUint16(offset)\n offset += 2\n\n // APP1 marker (EXIF)\n if (marker === 0xFFE1) {\n const length = view.getUint16(offset)\n\n // Check \"Exif\\0\\0\" header\n if (\n view.getUint32(offset + 2) === 0x45786966 &&\n view.getUint16(offset + 6) === 0x0000\n ) {\n const tiffOffset = offset + 8\n const littleEndian = view.getUint16(tiffOffset) === 0x4949\n\n const ifdOffset = view.getUint32(tiffOffset + 4, littleEndian)\n const numEntries = view.getUint16(tiffOffset + ifdOffset, littleEndian)\n\n for (let i = 0; i < numEntries; i++) {\n const entryOffset = tiffOffset + ifdOffset + 2 + i * 12\n if (entryOffset + 12 > view.byteLength) break\n\n const tag = view.getUint16(entryOffset, littleEndian)\n if (tag === 0x0112) {\n // Orientation tag\n return view.getUint16(entryOffset + 8, littleEndian)\n }\n }\n }\n\n offset += length\n } else if ((marker & 0xFF00) === 0xFF00) {\n // Other marker — skip\n offset += view.getUint16(offset)\n } else {\n break\n }\n }\n } catch {\n // Ignore EXIF read errors\n }\n\n return 1\n}\n\n/**\n * Get the natural dimensions of an image, accounting for EXIF orientation.\n * For orientations 5-8, width and height are swapped.\n */\nexport function getOrientedDimensions(\n img: HTMLImageElement,\n orientation: number,\n): { width: number; height: number } {\n const { naturalWidth: w, naturalHeight: h } = img\n if (orientation >= 5 && orientation <= 8) {\n return { width: h, height: w }\n }\n return { width: w, height: h }\n}\n","import { reactive, readonly, provide, inject, ref, shallowRef, computed, toRaw, markRaw, type DeepReadonly, type InjectionKey, type Ref, type ShallowRef } from 'vue'\nimport type { ImageState, EditorPlugin, EditorOptions, ProcessResult } from '../types'\nimport { createDefaultImageState } from '../types'\nimport { History } from '../core/History'\nimport { loadImage } from '../core/ImageReader'\n\nconst EDITOR_KEY = Symbol('vuedit-image-editor')\nexport const LOCALE_KEY = Symbol('vuedit-locale') as InjectionKey<(key: string) => string>\n\nexport interface EditorEngine {\n /** Reactive editor state */\n state: ImageState\n /** Read-only reactive state for consumers */\n readonlyState: DeepReadonly<ImageState>\n /** Source image element */\n sourceImage: Ref<HTMLImageElement | null>\n /** Whether the source image is loading */\n loading: Ref<boolean>\n /** Error message if loading fails */\n error: Ref<string | null>\n /** Registered plugins */\n plugins: Ref<EditorPlugin[]>\n /** Currently active plugin ID */\n activePluginId: Ref<string | null>\n /** Currently active plugin */\n activePlugin: Ref<EditorPlugin | null>\n /** Whether any edits have been made */\n hasEdits: Ref<boolean>\n /** History */\n canUndo: Ref<boolean>\n canRedo: Ref<boolean>\n /** Zoom level (1 = fit to container) */\n zoom: Ref<number>\n /** Editor options */\n options: EditorOptions\n\n /** Load the source image */\n load: (src: string | File | Blob) => Promise<void>\n /** Register a plugin */\n registerPlugin: (plugin: EditorPlugin) => void\n /** Unregister a plugin by ID */\n unregisterPlugin: (id: string) => void\n /** Set active plugin by ID */\n setActivePlugin: (id: string) => void\n /** Update state and push to history */\n updateState: (updater: (state: ImageState) => void) => void\n /** Undo last change */\n undo: () => void\n /** Redo last undone change */\n redo: () => void\n /** Revert to initial state */\n revert: () => void\n /** Set zoom level */\n setZoom: (level: number) => void\n /** Request a re-render of the canvas */\n requestRender: () => void\n /** Render callback — set by EditorCanvas */\n onRender: Ref<(() => void) | null>\n /** Temporary viewport pan during crop drag (pixels) */\n cropDragPan: Ref<{ x: number; y: number }>\n}\n\n/** Deep-clone a reactive state into a plain object */\nfunction cloneState(state: ImageState): ImageState {\n return JSON.parse(JSON.stringify(toRaw(state)))\n}\n\nexport function createEditorEngine(options: EditorOptions): EditorEngine {\n const state = reactive<ImageState>(\n options.initialState\n ? { ...createDefaultImageState(), ...JSON.parse(JSON.stringify(options.initialState)) }\n : createDefaultImageState(),\n )\n\n const initialState = cloneState(state)\n const history = new History(50)\n history.reset(cloneState(state))\n\n const sourceImage = ref<HTMLImageElement | null>(null)\n const loading = ref(false)\n const error = ref<string | null>(null)\n let loadGeneration = 0\n const plugins = shallowRef<EditorPlugin[]>([])\n const activePluginId = ref<string | null>(null)\n const zoom = ref(1)\n const onRender = ref<(() => void) | null>(null)\n const cropDragPan = ref({ x: 0, y: 0 })\n // Reactive counter to trigger recomputation of history-dependent computed properties\n const historyVersion = ref(0)\n\n const activePlugin = computed(() => {\n if (!activePluginId.value) return null\n return plugins.value.find((p) => p.id === activePluginId.value) || null\n })\n\n const canUndo = computed(() => { historyVersion.value; return history.canUndo })\n const canRedo = computed(() => { historyVersion.value; return history.canRedo })\n const hasEdits = computed(() => { historyVersion.value; return history.currentIndex > 0 })\n\n async function load(src: string | File | Blob) {\n const gen = ++loadGeneration\n loading.value = true\n error.value = null\n try {\n const img = await loadImage(src)\n // Guard against stale load — a newer load() call supersedes this one\n if (gen !== loadGeneration) return\n sourceImage.value = img\n requestRender()\n } catch (e) {\n if (gen !== loadGeneration) return\n error.value = e instanceof Error ? e.message : 'Failed to load image'\n } finally {\n if (gen === loadGeneration) {\n loading.value = false\n }\n }\n }\n\n function registerPlugin(plugin: EditorPlugin) {\n if (!plugin.id || !plugin.controls) {\n console.warn('[VueditImageEditor] Plugin missing required fields (id, controls):', plugin)\n return\n }\n if (plugins.value.some((p) => p.id === plugin.id)) return\n // Mark raw to prevent Vue from making component refs deeply reactive\n plugins.value = [...plugins.value, markRaw(plugin)]\n // Auto-activate first plugin\n if (!activePluginId.value) {\n activePluginId.value = plugin.id\n }\n }\n\n function unregisterPlugin(id: string) {\n plugins.value = plugins.value.filter((p) => p.id !== id)\n if (activePluginId.value === id) {\n activePluginId.value = plugins.value[0]?.id || null\n }\n }\n\n function setActivePlugin(id: string) {\n const prev = activePlugin.value\n if (prev?.onDeactivate) prev.onDeactivate()\n\n activePluginId.value = id\n\n const next = plugins.value.find((p) => p.id === id)\n if (next?.onActivate) next.onActivate()\n requestRender()\n }\n\n function updateState(updater: (state: ImageState) => void) {\n updater(state)\n history.push(cloneState(state))\n historyVersion.value++\n requestRender()\n }\n\n function undo() {\n const prev = history.undo()\n if (prev) {\n Object.assign(state, prev)\n historyVersion.value++\n requestRender()\n }\n }\n\n function redo() {\n const next = history.redo()\n if (next) {\n Object.assign(state, next)\n historyVersion.value++\n requestRender()\n }\n }\n\n function revert() {\n // Notify active plugin of state reset\n const current = activePlugin.value\n if (current?.onDeactivate) current.onDeactivate()\n\n Object.assign(state, JSON.parse(JSON.stringify(initialState)))\n history.reset(cloneState(state))\n historyVersion.value++\n\n if (current?.onActivate) current.onActivate()\n requestRender()\n }\n\n function setZoom(level: number) {\n zoom.value = Math.max(0.1, Math.min(10, level))\n requestRender()\n }\n\n function requestRender() {\n if (onRender.value) {\n onRender.value()\n }\n }\n\n return {\n state,\n readonlyState: readonly(state),\n sourceImage,\n loading,\n error,\n plugins,\n activePluginId,\n activePlugin,\n hasEdits,\n canUndo,\n canRedo,\n zoom,\n options,\n load,\n registerPlugin,\n unregisterPlugin,\n setActivePlugin,\n updateState,\n undo,\n redo,\n revert,\n setZoom,\n requestRender,\n onRender,\n cropDragPan,\n }\n}\n\nexport function provideEditor(engine: EditorEngine): void {\n provide(EDITOR_KEY, engine)\n}\n\nexport function useEditor(): EditorEngine {\n const engine = inject<EditorEngine>(EDITOR_KEY)\n if (!engine) {\n throw new Error('[VueditImageEditor] useEditor() called outside of editor context. Make sure to use it inside <EditorShell> or <ImageEditorModal>.')\n }\n return engine\n}\n","/**\n * 5x4 Color Matrix operations for image adjustments and filters.\n *\n * A 5x4 matrix transforms RGBA pixel values:\n * [R'] [m0 m1 m2 m3 m4 ] [R]\n * [G'] = [m5 m6 m7 m8 m9 ] [G]\n * [B'] [m10 m11 m12 m13 m14] [B]\n * [A'] [m15 m16 m17 m18 m19] [A]\n * [1] (bias row, m4/m9/m14/m19 are offsets)\n */\n\n/** Identity matrix — no transformation */\nexport const IDENTITY_MATRIX: number[] = [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0,\n]\n\n/** Multiply two 5x4 matrices (treating them as 5x5 with implicit last row [0,0,0,0,1]) */\nexport function multiplyMatrices(a: number[], b: number[]): number[] {\n const result = new Array(20).fill(0)\n\n for (let row = 0; row < 4; row++) {\n for (let col = 0; col < 5; col++) {\n let sum = 0\n for (let k = 0; k < 4; k++) {\n sum += a[row * 5 + k] * b[k * 5 + col]\n }\n // Add bias column contribution\n if (col === 4) {\n sum += a[row * 5 + 4]\n }\n result[row * 5 + col] = sum\n }\n }\n\n return result\n}\n\n/** Compose multiple matrices into one (left to right application order) */\nexport function composeMatrices(...matrices: number[][]): number[] {\n if (matrices.length === 0) return [...IDENTITY_MATRIX]\n let result = matrices[0]\n for (let i = 1; i < matrices.length; i++) {\n result = multiplyMatrices(matrices[i], result)\n }\n return result\n}\n\n/** Brightness adjustment matrix. v: -0.25 to 0.25 */\nexport function brightnessMatrix(v: number): number[] {\n return [\n 1, 0, 0, 0, v,\n 0, 1, 0, 0, v,\n 0, 0, 1, 0, v,\n 0, 0, 0, 1, 0,\n ]\n}\n\n/** Contrast adjustment matrix. v: -0.25 to 0.25 */\nexport function contrastMatrix(v: number): number[] {\n const f = v + 1\n const o = -0.5 * f + 0.5\n return [\n f, 0, 0, 0, o,\n 0, f, 0, 0, o,\n 0, 0, f, 0, o,\n 0, 0, 0, 1, 0,\n ]\n}\n\n/** Saturation adjustment matrix. v: -0.25 to 0.25 */\nexport function saturationMatrix(v: number): number[] {\n const s = v + 1\n const invS = 1 - s\n const r = 0.2126 * invS\n const g = 0.7152 * invS\n const b = 0.0722 * invS\n return [\n r + s, g, b, 0, 0,\n r, g + s, b, 0, 0,\n r, g, b + s, 0, 0,\n 0, 0, 0, 1, 0,\n ]\n}\n\n/** Exposure adjustment matrix. v: -0.25 to 0.25 */\nexport function exposureMatrix(v: number): number[] {\n const f = Math.pow(2, v)\n return [\n f, 0, 0, 0, 0,\n 0, f, 0, 0, 0,\n 0, 0, f, 0, 0,\n 0, 0, 0, 1, 0,\n ]\n}\n\n/** Temperature adjustment matrix. v: -0.25 to 0.25 (positive = warmer, negative = cooler) */\nexport function temperatureMatrix(v: number): number[] {\n return [\n 1 + v, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1 - v, 0, 0,\n 0, 0, 0, 1, 0,\n ]\n}\n\n/**\n * Apply a 5x4 color matrix to ImageData in-place.\n * Offsets (m4, m9, m14, m19) are in 0-1 range and scaled to 0-255 internally.\n */\nexport function applyColorMatrix(imageData: ImageData, matrix: number[]): void {\n const d = imageData.data\n const len = d.length\n\n const m0 = matrix[0], m1 = matrix[1], m2 = matrix[2], m3 = matrix[3], m4 = matrix[4] * 255\n const m5 = matrix[5], m6 = matrix[6], m7 = matrix[7], m8 = matrix[8], m9 = matrix[9] * 255\n const m10 = matrix[10], m11 = matrix[11], m12 = matrix[12], m13 = matrix[13], m14 = matrix[14] * 255\n const m15 = matrix[15], m16 = matrix[16], m17 = matrix[17], m18 = matrix[18], m19 = matrix[19] * 255\n\n for (let i = 0; i < len; i += 4) {\n const r = d[i]\n const g = d[i + 1]\n const b = d[i + 2]\n const a = d[i + 3]\n\n d[i] = clamp(r * m0 + g * m1 + b * m2 + a * m3 + m4)\n d[i + 1] = clamp(r * m5 + g * m6 + b * m7 + a * m8 + m9)\n d[i + 2] = clamp(r * m10 + g * m11 + b * m12 + a * m13 + m14)\n d[i + 3] = clamp(r * m15 + g * m16 + b * m17 + a * m18 + m19)\n }\n}\n\n/**\n * Apply gamma correction to ImageData in-place.\n * gamma: 0.2 to 5.0, base 1.0 (1 = no change)\n */\nexport function applyGamma(imageData: ImageData, gamma: number): void {\n if (gamma === 1) return\n const d = imageData.data\n const invGamma = 1 / gamma\n // Build lookup table for performance\n const lut = new Uint8Array(256)\n for (let i = 0; i < 256; i++) {\n lut[i] = clamp(Math.pow(i / 255, invGamma) * 255)\n }\n for (let i = 0; i < d.length; i += 4) {\n d[i] = lut[d[i]]\n d[i + 1] = lut[d[i + 1]]\n d[i + 2] = lut[d[i + 2]]\n }\n}\n\n/**\n * Apply vignette effect to ImageData in-place.\n * strength: -1 to 1 (negative = lighten edges, positive = darken edges)\n */\nexport function applyVignette(\n imageData: ImageData,\n strength: number,\n width: number,\n height: number,\n): void {\n if (strength === 0) return\n const d = imageData.data\n const cx = width / 2\n const cy = height / 2\n const maxDist = Math.sqrt(cx * cx + cy * cy)\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const i = (y * width + x) * 4\n const dx = x - cx\n const dy = y - cy\n const dist = Math.sqrt(dx * dx + dy * dy) / maxDist\n // Smooth falloff: squared distance for natural vignette\n const factor = 1 - strength * dist * dist\n d[i] = clamp(d[i] * factor)\n d[i + 1] = clamp(d[i + 1] * factor)\n d[i + 2] = clamp(d[i + 2] * factor)\n }\n }\n}\n\n/**\n * Apply clarity (local contrast / unsharp mask) to ImageData in-place.\n * strength: -0.25 to 0.25, base 0. Positive sharpens, negative softens.\n * Uses a 3x3 Laplacian kernel blended with the original.\n */\nexport function applyClarity(imageData: ImageData, strength: number): void {\n if (strength === 0) return\n\n const { data, width, height } = imageData\n const amount = strength * 4 // Scale to useful range\n\n // Copy original data\n const orig = new Uint8ClampedArray(data)\n\n for (let y = 1; y < height - 1; y++) {\n for (let x = 1; x < width - 1; x++) {\n const i = (y * width + x) * 4\n for (let c = 0; c < 3; c++) {\n // 3x3 Laplacian: center * 4 - neighbors\n const center = orig[i + c]\n const laplacian =\n center * 4 -\n orig[((y - 1) * width + x) * 4 + c] -\n orig[((y + 1) * width + x) * 4 + c] -\n orig[(y * width + (x - 1)) * 4 + c] -\n orig[(y * width + (x + 1)) * 4 + c]\n\n // Blend: original + amount * laplacian\n const v = center + amount * laplacian\n data[i + c] = v < 0 ? 0 : v > 255 ? 255 : (v + 0.5) | 0\n }\n }\n }\n}\n\nfunction clamp(v: number): number {\n return v < 0 ? 0 : v > 255 ? 255 : (v + 0.5) | 0\n}\n","import type { ImageState, ProcessResult } from '../types'\nimport {\n applyColorMatrix,\n applyGamma,\n applyVignette,\n applyClarity,\n composeMatrices,\n brightnessMatrix,\n contrastMatrix,\n saturationMatrix,\n exposureMatrix,\n temperatureMatrix,\n IDENTITY_MATRIX,\n} from './ColorMatrix'\n\nexport interface ProcessOptions {\n mimeType?: string\n quality?: number\n maxCanvasPixels?: number\n}\n\nconst DEFAULT_MAX_PIXELS = 16_777_216 // 4096 * 4096\n\nexport class ImageProcessor {\n /**\n * Process image at FULL RESOLUTION.\n * Applies all transformations and exports as Blob.\n */\n async process(\n source: HTMLImageElement,\n state: ImageState,\n options: ProcessOptions = {},\n ): Promise<ProcessResult> {\n const {\n mimeType = 'image/jpeg',\n quality = 0.92,\n maxCanvasPixels = DEFAULT_MAX_PIXELS,\n } = options\n\n const crop = state.crop\n const finetune = state.finetune\n\n // 1. Calculate crop dimensions at full resolution\n let cropX = Math.round(crop.x * source.naturalWidth)\n let cropY = Math.round(crop.y * source.naturalHeight)\n let cropW = Math.round(crop.width * source.naturalWidth)\n let cropH = Math.round(crop.height * source.naturalHeight)\n\n // Clamp to image bounds\n cropX = Math.max(0, Math.min(cropX, source.naturalWidth))\n cropY = Math.max(0, Math.min(cropY, source.naturalHeight))\n cropW = Math.min(cropW, source.naturalWidth - cropX)\n cropH = Math.min(cropH, source.naturalHeight - cropY)\n\n // 2. Determine output dimensions\n let outputW = cropW\n let outputH = cropH\n\n // Apply resize if specified\n if (state.resize.width || state.resize.height) {\n const resizeW = state.resize.width\n const resizeH = state.resize.height\n const fit = state.resize.fit\n\n if (resizeW && resizeH) {\n if (fit === 'force') {\n outputW = resizeW\n outputH = resizeH\n } else if (fit === 'cover') {\n const scale = Math.max(resizeW / cropW, resizeH / cropH)\n outputW = Math.round(cropW * scale)\n outputH = Math.round(cropH * scale)\n } else {\n // contain\n const scale = Math.min(resizeW / cropW, resizeH / cropH)\n outputW = Math.round(cropW * scale)\n outputH = Math.round(cropH * scale)\n }\n } else if (resizeW) {\n const scale = resizeW / cropW\n outputW = resizeW\n outputH = Math.round(cropH * scale)\n } else if (resizeH) {\n const scale = resizeH / cropH\n outputW = Math.round(cropW * scale)\n outputH = resizeH\n }\n\n // Upscale check\n if (!state.resize.upscale) {\n outputW = Math.min(outputW, cropW)\n outputH = Math.min(outputH, cropH)\n }\n }\n\n // 3. Cap to max canvas pixels\n const totalPixels = outputW * outputH\n if (totalPixels > maxCanvasPixels) {\n const scale = Math.sqrt(maxCanvasPixels / totalPixels)\n outputW = Math.floor(outputW * scale)\n outputH = Math.floor(outputH * scale)\n }\n\n // Ensure minimum 1px\n outputW = Math.max(1, outputW)\n outputH = Math.max(1, outputH)\n\n // 4. Calculate rotated bounding box to prevent clipping\n const absRotation = Math.abs(crop.rotation)\n let canvasW = outputW\n let canvasH = outputH\n if (absRotation > 0.001) {\n const cos = Math.abs(Math.cos(crop.rotation))\n const sin = Math.abs(Math.sin(crop.rotation))\n canvasW = Math.ceil(outputW * cos + outputH * sin)\n canvasH = Math.ceil(outputW * sin + outputH * cos)\n }\n\n // Create output canvas sized to contain rotated content\n const canvas = document.createElement('canvas')\n canvas.width = canvasW\n canvas.height = canvasH\n const ctx = canvas.getContext('2d')!\n\n // 4b. Draw background color (if not fully transparent)\n const bg = state.backgroundColor\n if (bg[3] > 0) {\n ctx.fillStyle = `rgba(${Math.round(bg[0] * 255)}, ${Math.round(bg[1] * 255)}, ${Math.round(bg[2] * 255)}, ${bg[3]})`\n ctx.fillRect(0, 0, canvasW, canvasH)\n }\n\n // 5. Apply crop + rotation + flip\n ctx.save()\n ctx.translate(canvasW / 2, canvasH / 2)\n ctx.rotate(crop.rotation)\n ctx.scale(crop.flipX ? -1 : 1, crop.flipY ? -1 : 1)\n\n // Draw cropped region centered\n ctx.drawImage(\n source,\n cropX, cropY, cropW, cropH,\n -outputW / 2, -outputH / 2, outputW, outputH,\n )\n ctx.restore()\n\n // 6. Apply color adjustments\n const matrices: number[][] = []\n\n if (finetune.brightness !== 0) matrices.push(brightnessMatrix(finetune.brightness))\n if (finetune.contrast !== 0) matrices.push(contrastMatrix(finetune.contrast))\n if (finetune.saturation !== 0) matrices.push(saturationMatrix(finetune.saturation))\n if (finetune.exposure !== 0) matrices.push(exposureMatrix(finetune.exposure))\n if (finetune.temperature !== 0) matrices.push(temperatureMatrix(finetune.temperature))\n\n // Compose with filter matrix if present\n if (state.filter.matrix) {\n if (state.filter.intensity < 1) {\n // Interpolate between identity and filter matrix\n const m = state.filter.matrix\n const t = state.filter.intensity\n const interpolated = IDENTITY_MATRIX.map((v, i) => v * (1 - t) + m[i] * t)\n matrices.push(interpolated)\n } else {\n matrices.push(state.filter.matrix)\n }\n }\n\n if (matrices.length > 0) {\n const combined = composeMatrices(...matrices)\n const imageData = ctx.getImageData(0, 0, canvasW, canvasH)\n applyColorMatrix(imageData, combined)\n\n // Apply gamma\n if (finetune.gamma !== 1) {\n applyGamma(imageData, finetune.gamma)\n }\n\n // Apply clarity\n if (finetune.clarity !== 0) {\n applyClarity(imageData, finetune.clarity)\n }\n\n // Apply vignette\n if (finetune.vignette !== 0) {\n applyVignette(imageData, finetune.vignette, canvasW, canvasH)\n }\n\n ctx.putImageData(imageData, 0, 0)\n } else {\n // Still apply gamma, clarity, and vignette if needed\n if (finetune.gamma !== 1 || finetune.clarity !== 0 || finetune.vignette !== 0) {\n const imageData = ctx.getImageData(0, 0, canvasW, canvasH)\n if (finetune.gamma !== 1) applyGamma(imageData, finetune.gamma)\n if (finetune.clarity !== 0) applyClarity(imageData, finetune.clarity)\n if (finetune.vignette !== 0) applyVignette(imageData, finetune.vignette, canvasW, canvasH)\n ctx.putImageData(imageData, 0, 0)\n }\n }\n\n // 7. Draw frame (if any)\n if (state.frame.style) {\n drawFrame(ctx, state.frame.style, state.frame.size, state.frame.color, state.frame.radius, canvasW, canvasH)\n }\n\n // 8. Draw stickers at full resolution\n for (const sticker of state.stickers) {\n await drawSticker(ctx, sticker, canvasW, canvasH)\n }\n\n // 9. Encode to Blob\n const blob = await new Promise<Blob>((resolve, reject) => {\n canvas.toBlob(\n (b) => (b ? resolve(b) : reject(new Error('Failed to encode image'))),\n mimeType,\n quality,\n )\n })\n\n return {\n blob,\n imageState: JSON.parse(JSON.stringify(state)) as ImageState,\n }\n }\n}\n\nfunction drawFrame(\n ctx: CanvasRenderingContext2D,\n style: string,\n size: number,\n color: [number, number, number, number],\n radius: number,\n w: number,\n h: number,\n): void {\n const frameW = Math.round(Math.max(w, h) * size)\n const r = Math.round(radius)\n const colorStr = `rgba(${Math.round(color[0] * 255)}, ${Math.round(color[1] * 255)}, ${Math.round(color[2] * 255)}, ${color[3]})`\n\n ctx.strokeStyle = colorStr\n ctx.fillStyle = colorStr\n\n switch (style) {\n case 'solidSharp':\n ctx.lineWidth = frameW\n ctx.strokeRect(frameW / 2, frameW / 2, w - frameW, h - frameW)\n break\n case 'solidRound':\n ctx.lineWidth = frameW\n roundRect(ctx, frameW / 2, frameW / 2, w - frameW, h - frameW, r + frameW / 2)\n ctx.stroke()\n break\n case 'lineSingle': {\n const inset = frameW * 2\n ctx.lineWidth = 1\n ctx.strokeRect(inset, inset, w - inset * 2, h - inset * 2)\n break\n }\n case 'lineMultiple': {\n ctx.lineWidth = 1\n for (let i = 1; i <= 3; i++) {\n const inset = frameW * i\n ctx.strokeRect(inset, inset, w - inset * 2, h - inset * 2)\n }\n break\n }\n case 'hook': {\n const hookLen = Math.min(w, h) * 0.1\n ctx.lineWidth = frameW * 0.5\n const m = frameW\n // Top-left\n ctx.beginPath(); ctx.moveTo(m, m + hookLen); ctx.lineTo(m, m); ctx.lineTo(m + hookLen, m); ctx.stroke()\n // Top-right\n ctx.beginPath(); ctx.moveTo(w - m - hookLen, m); ctx.lineTo(w - m, m); ctx.lineTo(w - m, m + hookLen); ctx.stroke()\n // Bottom-left\n ctx.beginPath(); ctx.moveTo(m, h - m - hookLen); ctx.lineTo(m, h - m); ctx.lineTo(m + hookLen, h - m); ctx.stroke()\n // Bottom-right\n ctx.beginPath(); ctx.moveTo(w - m - hookLen, h - m); ctx.lineTo(w - m, h - m); ctx.lineTo(w - m, h - m - hookLen); ctx.stroke()\n break\n }\n case 'polaroid': {\n const topFrame = frameW\n const bottomFrame = frameW * 4\n ctx.fillRect(0, 0, w, topFrame)\n ctx.fillRect(0, 0, topFrame, h)\n ctx.fillRect(w - topFrame, 0, topFrame, h)\n ctx.fillRect(0, h - bottomFrame, w, bottomFrame)\n break\n }\n default:\n // edgeSeparate, edgeCross, edgeOverlap — simplified\n ctx.lineWidth = frameW * 0.5\n ctx.strokeRect(frameW, frameW, w - frameW * 2, h - frameW * 2)\n break\n }\n}\n\nfunction roundRect(\n ctx: CanvasRenderingContext2D,\n x: number, y: number,\n w: number, h: number,\n r: number,\n): void {\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.lineTo(x + w - r, y)\n ctx.arcTo(x + w, y, x + w, y + r, r)\n ctx.lineTo(x + w, y + h - r)\n ctx.arcTo(x + w, y + h, x + w - r, y + h, r)\n ctx.lineTo(x + r, y + h)\n ctx.arcTo(x, y + h, x, y + h - r, r)\n ctx.lineTo(x, y + r)\n ctx.arcTo(x, y, x + r, y, r)\n ctx.closePath()\n}\n\nasync function drawSticker(\n ctx: CanvasRenderingContext2D,\n sticker: { src: string; x: number; y: number; width: number; height: number; rotation: number; flipX: boolean; flipY: boolean; opacity: number },\n canvasW: number,\n canvasH: number,\n): Promise<void> {\n const x = sticker.x * canvasW\n const y = sticker.y * canvasH\n const w = sticker.width * canvasW\n const h = sticker.height * canvasH\n\n ctx.save()\n ctx.globalAlpha = sticker.opacity\n ctx.translate(x + w / 2, y + h / 2)\n ctx.rotate(sticker.rotation)\n ctx.scale(sticker.flipX ? -1 : 1, sticker.flipY ? -1 : 1)\n\n // Check if emoji (non-URL)\n if (!sticker.src.startsWith('http') && !sticker.src.startsWith('data:') && !sticker.src.startsWith('blob:') && !sticker.src.startsWith('/') && !sticker.src.startsWith('.')) {\n // Draw emoji\n const fontSize = Math.min(w, h) * 0.8\n ctx.font = `${fontSize}px sans-serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ctx.fillText(sticker.src, 0, 0)\n } else {\n // Load and draw image sticker\n try {\n const img = new Image()\n img.crossOrigin = 'anonymous'\n await new Promise<void>((resolve, reject) => {\n img.onload = () => resolve()\n img.onerror = () => reject()\n img.src = sticker.src\n })\n ctx.drawImage(img, -w / 2, -h / 2, w, h)\n } catch {\n // Skip failed stickers\n }\n }\n\n ctx.restore()\n}\n\n","export const en = {\n // Toolbar\n undo: 'Undo',\n redo: 'Redo',\n revert: 'Revert',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n zoomToFit: 'Zoom to Fit',\n done: 'Done',\n cancel: 'Cancel',\n export: 'Export',\n close: 'Close',\n\n // Plugin tabs\n crop: 'Crop',\n filter: 'Filter',\n finetune: 'Finetune',\n sticker: 'Sticker',\n frame: 'Frame',\n resize: 'Resize',\n\n // Crop controls\n aspectRatio: 'Aspect Ratio',\n custom: 'Custom',\n square: 'Square',\n landscape: 'Landscape',\n portrait: 'Portrait',\n rotation: 'Rotation',\n rotateLeft: 'Rotate Left',\n rotateRight: 'Rotate Right',\n flipHorizontal: 'Flip Horizontal',\n flipVertical: 'Flip Vertical',\n\n // Finetune labels\n brightness: 'Brightness',\n contrast: 'Contrast',\n saturation: 'Saturation',\n exposure: 'Exposure',\n temperature: 'Temperature',\n gamma: 'Gamma',\n clarity: 'Clarity',\n vignette: 'Vignette',\n\n // Filter labels\n original: 'Original',\n intensity: 'Intensity',\n chrome: 'Chrome',\n fade: 'Fade',\n pastel: 'Pastel',\n cold: 'Cold',\n warm: 'Warm',\n mono: 'Mono',\n noir: 'Noir',\n wash: 'Wash',\n stark: 'Stark',\n sepia: 'Sepia',\n rust: 'Rust',\n blues: 'Blues',\n color: 'Color',\n\n // Frame style labels\n solidSharp: 'Solid Sharp',\n solidRound: 'Solid Round',\n lineSingle: 'Line Single',\n lineMultiple: 'Line Multiple',\n hook: 'Hook',\n polaroid: 'Polaroid',\n edgeSeparate: 'Edge Separate',\n edgeCross: 'Edge Cross',\n edgeOverlap: 'Edge Overlap',\n\n // Fill labels\n fill: 'Fill',\n transparent: 'Transparent',\n\n // Sticker labels\n emoji: 'Emoji',\n shapes: 'Shapes',\n\n // Frame labels\n none: 'None',\n frameSize: 'Frame Size',\n frameColor: 'Frame Color',\n\n // Resize labels\n imageOutputSize: 'Image output size',\n width: 'Width',\n height: 'Height',\n lockAspectRatio: 'Lock Aspect Ratio',\n resizeHint: 'Resize applies when exporting the image',\n\n // Loading/error\n loading: 'Loading image...',\n loadError: 'Failed to load image',\n processing: 'Processing...',\n\n // Crop overlay\n cropApply: 'Apply',\n\n // Confirmation\n unsavedChanges: 'You have unsaved changes. Are you sure you want to close?',\n confirm: 'Confirm',\n}\n\nexport type LocaleStrings = typeof en\n","import type { LocaleStrings } from './en'\n\nexport const ar: LocaleStrings = {\n // Toolbar\n undo: 'تراجع',\n redo: 'إعادة',\n revert: 'استعادة',\n zoomIn: 'تكبير',\n zoomOut: 'تصغير',\n zoomToFit: 'ملاءمة العرض',\n done: 'تم',\n cancel: 'إلغاء',\n export: 'تصدير',\n close: 'إغلاق',\n\n // Plugin tabs\n crop: 'قص',\n filter: 'فلتر',\n finetune: 'ضبط دقيق',\n sticker: 'ملصق',\n frame: 'إطار',\n resize: 'تغيير الحجم',\n\n // Crop controls\n aspectRatio: 'نسبة العرض إلى الارتفاع',\n custom: 'مخصص',\n square: 'مربع',\n landscape: 'أفقي',\n portrait: 'عمودي',\n rotation: 'دوران',\n rotateLeft: 'تدوير لليسار',\n rotateRight: 'تدوير لليمين',\n flipHorizontal: 'قلب أفقي',\n flipVertical: 'قلب عمودي',\n\n // Finetune labels\n brightness: 'السطوع',\n contrast: 'التباين',\n saturation: 'التشبع',\n exposure: 'التعريض',\n temperature: 'درجة الحرارة',\n gamma: 'جاما',\n clarity: 'الوضوح',\n vignette: 'تظليل الأطراف',\n\n // Filter labels\n original: 'الأصلي',\n intensity: 'الكثافة',\n chrome: 'كروم',\n fade: 'باهت',\n pastel: 'باستيل',\n cold: 'بارد',\n warm: 'دافئ',\n mono: 'أحادي',\n noir: 'نوار',\n wash: 'مغسول',\n stark: 'حاد',\n sepia: 'بني داكن',\n rust: 'صدأ',\n blues: 'أزرق',\n color: 'ملون',\n\n // Frame style labels\n solidSharp: 'صلب حاد',\n solidRound: 'صلب مستدير',\n lineSingle: 'خط واحد',\n lineMultiple: 'خطوط متعددة',\n hook: 'خطاف',\n polaroid: 'بولارويد',\n edgeSeparate: 'حواف منفصلة',\n edgeCross: 'حواف متقاطعة',\n edgeOverlap: 'حواف متداخلة',\n\n // Fill labels\n fill: 'تعبئة',\n transparent: 'شفاف',\n\n // Sticker labels\n emoji: 'رموز تعبيرية',\n shapes: 'أشكال',\n\n // Frame labels\n none: 'بدون',\n frameSize: 'حجم الإطار',\n frameColor: 'لون الإطار',\n\n // Resize labels\n imageOutputSize: 'حجم الصورة الناتجة',\n width: 'العرض',\n height: 'الارتفاع',\n lockAspectRatio: 'قفل نسبة العرض إلى الارتفاع',\n resizeHint: 'يتم تطبيق التغيير عند تصدير الصورة',\n\n // Loading/error\n loading: 'جاري تحميل الصورة...',\n loadError: 'فشل تحميل الصورة',\n processing: 'جاري المعالجة...',\n\n // Crop overlay\n cropApply: 'تطبيق',\n\n // Confirmation\n unsavedChanges: 'لديك تغييرات غير محفوظة. هل أنت متأكد أنك تريد الإغلاق؟',\n confirm: 'تأكيد',\n}\n","<template>\n <button\n :class=\"[\n 'vie-icon-btn',\n { 'vie-icon-btn--accent': variant === 'accent' }\n ]\"\n :disabled=\"disabled\"\n :title=\"title\"\n @click=\"$emit('click', $event)\"\n >\n <span v-if=\"$slots.default\" class=\"vie-icon-btn__icon\">\n <slot />\n </span>\n <span v-if=\"label\" class=\"vie-icon-btn__label\">{{ label }}</span>\n </button>\n</template>\n\n<script setup lang=\"ts\">\ndefineProps<{\n title?: string\n label?: string\n disabled?: boolean\n variant?: 'default' | 'accent'\n}>()\n\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n</script>\n","<template>\n <div class=\"vie-toolbar\">\n <!-- Left: History controls -->\n <div class=\"vie-toolbar-group\">\n <IconButton\n :title=\"t('undo')\"\n :disabled=\"!engine.canUndo.value\"\n @click=\"engine.undo()\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 10h10a5 5 0 0 1 0 10H9\" />\n <path d=\"M3 10l4-4\" />\n <path d=\"M3 10l4 4\" />\n </svg>\n </IconButton>\n\n <IconButton\n :title=\"t('redo')\"\n :disabled=\"!engine.canRedo.value\"\n @click=\"engine.redo()\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M21 10H11a5 5 0 0 0 0 10h4\" />\n <path d=\"M21 10l-4-4\" />\n <path d=\"M21 10l-4 4\" />\n </svg>\n </IconButton>\n\n <IconButton\n :title=\"t('revert')\"\n :disabled=\"!engine.hasEdits.value\"\n @click=\"engine.revert()\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n </IconButton>\n </div>\n\n <!-- Center: Zoom controls -->\n <div class=\"vie-toolbar-group\">\n <IconButton\n :title=\"t('zoomOut')\"\n @click=\"engine.setZoom(engine.zoom.value - 0.1)\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"M8 11h6\" />\n </svg>\n </IconButton>\n\n <button\n class=\"vie-zoom-label\"\n :title=\"t('zoomToFit')\"\n @click=\"engine.setZoom(1)\"\n >\n {{ Math.round(engine.zoom.value * 100) }}%\n </button>\n\n <IconButton\n :title=\"t('zoomIn')\"\n @click=\"engine.setZoom(engine.zoom.value + 0.1)\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"M8 11h6\" />\n <path d=\"M11 8v6\" />\n </svg>\n </IconButton>\n </div>\n\n <!-- Right: Done button -->\n <div class=\"vie-toolbar-group\">\n <IconButton\n variant=\"accent\"\n :label=\"processing ? t('processing') : t('done')\"\n :disabled=\"processing\"\n @click=\"$emit('done')\"\n >\n <span v-if=\"processing\" class=\"vie-spinner\" style=\"width:16px;height:16px;border-width:2px;\" />\n <svg v-else viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </IconButton>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject } from 'vue'\nimport { useEditor, LOCALE_KEY } from '../engine/useEditorEngine'\nimport IconButton from './ui/IconButton.vue'\nimport type { LocaleStrings } from '../locale/en'\n\ndefineProps<{\n processing?: boolean\n}>()\n\nconst t = inject(LOCALE_KEY, (key: string) => key)\nconst engine = useEditor()\n\ndefineEmits<{\n done: []\n}>()\n</script>\n","import type { ImageState, FinetuneState, FilterState, CropState, StickerInstance } from '../types'\nimport {\n applyColorMatrix,\n applyGamma,\n applyVignette,\n applyClarity,\n composeMatrices,\n brightnessMatrix,\n contrastMatrix,\n saturationMatrix,\n exposureMatrix,\n temperatureMatrix,\n IDENTITY_MATRIX,\n} from './ColorMatrix'\n\nexport interface ViewportTransform {\n zoom: number\n panX: number\n panY: number\n}\n\nexport class CanvasRenderer {\n private canvas: HTMLCanvasElement\n private ctx: CanvasRenderingContext2D\n private sourceImage: HTMLImageElement | null = null\n private animFrameId: number | null = null\n private needsRender = true\n\n /** Viewport transform */\n viewport: ViewportTransform = { zoom: 1, panX: 0, panY: 0 }\n\n /** Active plugin ID — used to determine whether to show cropped preview */\n activePluginId: string | null = null\n\n /**\n * The full image display rect in CSS pixels.\n * Used by the crop overlay to position handles on top of the image.\n */\n private fullImageRect = { x: 0, y: 0, width: 0, height: 0 }\n\n /** Cached offscreen canvas for color-adjusted preview */\n private previewCanvas: HTMLCanvasElement | null = null\n private previewCtx: CanvasRenderingContext2D | null = null\n private previewCacheKey = ''\n\n /** Max preview dimension for color processing performance */\n private readonly previewMaxSize = 1024\n\n /** Cache for image-based sticker elements */\n private stickerImageCache = new Map<string, HTMLImageElement>()\n\n constructor(canvas: HTMLCanvasElement) {\n this.canvas = canvas\n const ctx = canvas.getContext('2d')\n if (!ctx) throw new Error('Failed to get 2D rendering context')\n this.ctx = ctx\n }\n\n setSource(image: HTMLImageElement | null): void {\n this.sourceImage = image\n // Invalidate preview cache when source changes\n this.previewCacheKey = ''\n this.previewCanvas = null\n this.previewCtx = null\n this.needsRender = true\n }\n\n /** Resize canvas to match container (handles DPR) */\n resize(width: number, height: number): void {\n const dpr = window.devicePixelRatio || 1\n this.canvas.width = width * dpr\n this.canvas.height = height * dpr\n this.canvas.style.width = `${width}px`\n this.canvas.style.height = `${height}px`\n this.ctx.setTransform(dpr, 0, 0, dpr, 0, 0)\n this.needsRender = true\n }\n\n /** Request a render on the next animation frame */\n requestRender(): void {\n this.needsRender = true\n this.scheduleRender()\n }\n\n /** Callback called after each render with context for plugin drawing */\n afterRender: ((ctx: CanvasRenderingContext2D, state: ImageState, imageRect: { x: number; y: number; width: number; height: number }) => void) | null = null\n\n /** Cached getState function for render loop */\n private getState: (() => ImageState) | null = null\n\n /** Start the render loop */\n startRenderLoop(getState: () => ImageState): void {\n this.getState = getState\n this.scheduleRender()\n }\n\n /** Schedule a single render frame (only when needed) */\n private scheduleRender(): void {\n if (this.animFrameId !== null) return\n this.animFrameId = requestAnimationFrame(() => {\n this.animFrameId = null\n if (this.needsRender && this.getState) {\n this.render(this.getState())\n this.needsRender = false\n }\n })\n }\n\n /** Stop the render loop */\n stopRenderLoop(): void {\n if (this.animFrameId !== null) {\n cancelAnimationFrame(this.animFrameId)\n this.animFrameId = null\n }\n }\n\n /**\n * Build a cache key from the finetune + filter state.\n * Only regenerates the preview canvas when these values change.\n */\n private buildEffectsCacheKey(finetune: FinetuneState, filter: FilterState): string {\n return `${finetune.brightness},${finetune.contrast},${finetune.saturation},${finetune.exposure},${finetune.temperature},${finetune.gamma},${finetune.clarity},${finetune.vignette},${filter.id},${filter.intensity},${filter.matrix ? 'M' : 'N'}`\n }\n\n /**\n * Check if any color effects are active.\n */\n private hasColorEffects(finetune: FinetuneState, filter: FilterState): boolean {\n return (\n finetune.brightness !== 0 ||\n finetune.contrast !== 0 ||\n finetune.saturation !== 0 ||\n finetune.exposure !== 0 ||\n finetune.temperature !== 0 ||\n finetune.gamma !== 1 ||\n finetune.clarity !== 0 ||\n finetune.vignette !== 0 ||\n filter.matrix != null\n )\n }\n\n /**\n * Get a color-adjusted preview image.\n * Returns the source image if no effects are active,\n * otherwise returns a cached offscreen canvas with effects applied.\n */\n private getPreviewSource(state: ImageState): HTMLImageElement | HTMLCanvasElement {\n const img = this.sourceImage!\n const { finetune, filter } = state\n\n if (!this.hasColorEffects(finetune, filter)) {\n return img\n }\n\n const cacheKey = this.buildEffectsCacheKey(finetune, filter)\n if (cacheKey === this.previewCacheKey && this.previewCanvas) {\n return this.previewCanvas\n }\n\n // Calculate preview size (cap to previewMaxSize)\n const ratio = Math.min(\n this.previewMaxSize / img.naturalWidth,\n this.previewMaxSize / img.naturalHeight,\n 1,\n )\n const pw = Math.round(img.naturalWidth * ratio)\n const ph = Math.round(img.naturalHeight * ratio)\n\n // Create or resize preview canvas\n if (!this.previewCanvas || this.previewCanvas.width !== pw || this.previewCanvas.height !== ph) {\n this.previewCanvas = document.createElement('canvas')\n this.previewCanvas.width = pw\n this.previewCanvas.height = ph\n this.previewCtx = this.previewCanvas.getContext('2d')!\n }\n\n const pCtx = this.previewCtx!\n\n // Draw source at preview size\n pCtx.drawImage(img, 0, 0, pw, ph)\n\n // Build color matrix\n const matrices: number[][] = []\n if (finetune.brightness !== 0) matrices.push(brightnessMatrix(finetune.brightness))\n if (finetune.contrast !== 0) matrices.push(contrastMatrix(finetune.contrast))\n if (finetune.saturation !== 0) matrices.push(saturationMatrix(finetune.saturation))\n if (finetune.exposure !== 0) matrices.push(exposureMatrix(finetune.exposure))\n if (finetune.temperature !== 0) matrices.push(temperatureMatrix(finetune.temperature))\n\n // Add filter matrix\n if (filter.matrix) {\n if (filter.intensity < 1) {\n const m = filter.matrix\n const t = filter.intensity\n matrices.push(IDENTITY_MATRIX.map((v, i) => v * (1 - t) + m[i] * t))\n } else {\n matrices.push(filter.matrix)\n }\n }\n\n const imageData = pCtx.getImageData(0, 0, pw, ph)\n\n if (matrices.length > 0) {\n applyColorMatrix(imageData, composeMatrices(...matrices))\n }\n\n if (finetune.gamma !== 1) {\n applyGamma(imageData, finetune.gamma)\n }\n\n if (finetune.clarity !== 0) {\n applyClarity(imageData, finetune.clarity)\n }\n\n if (finetune.vignette !== 0) {\n applyVignette(imageData, finetune.vignette, pw, ph)\n }\n\n pCtx.putImageData(imageData, 0, 0)\n\n this.previewCacheKey = cacheKey\n return this.previewCanvas\n }\n\n /** Check if crop is not at full-image defaults */\n private isCropActive(crop: CropState): boolean {\n return crop.x > 0.001 || crop.y > 0.001 || crop.width < 0.999 || crop.height < 0.999\n }\n\n /**\n * Main render method.\n * Draws the image with color adjustments fitted to the canvas.\n * On crop tab: renders full image (CropOverlay handles crop visualization).\n * On other tabs: renders only the cropped region fitted to canvas.\n */\n render(state: ImageState): void {\n const ctx = this.ctx\n const canvas = this.canvas\n const dpr = window.devicePixelRatio || 1\n const cw = canvas.width / dpr\n const ch = canvas.height / dpr\n\n // Clear with editor background\n ctx.clearRect(0, 0, cw, ch)\n\n if (!this.sourceImage) return\n\n const img = this.sourceImage\n const crop = state.crop\n const padding = 40\n const availW = cw - padding * 2\n const availH = ch - padding * 2\n\n // Decide whether to show cropped preview (non-crop tabs with active crop)\n const showCropped = this.activePluginId !== 'crop' && this.isCropActive(crop)\n\n // Get color-adjusted preview source (cached)\n const previewSrc = this.getPreviewSource(state)\n\n if (showCropped) {\n this.renderCroppedView(ctx, state, previewSrc, cw, ch, availW, availH)\n } else {\n this.renderFullView(ctx, state, previewSrc, img, cw, ch, availW, availH)\n }\n\n // Call plugin render hooks (after restore so plugins draw in screen space)\n if (this.afterRender) {\n this.afterRender(ctx, state, this.fullImageRect)\n }\n }\n\n /**\n * Render full image view (used on the crop tab).\n */\n private renderFullView(\n ctx: CanvasRenderingContext2D,\n state: ImageState,\n previewSrc: HTMLImageElement | HTMLCanvasElement,\n img: HTMLImageElement,\n cw: number, ch: number,\n availW: number, availH: number,\n ): void {\n const crop = state.crop\n\n const scale = Math.min(availW / img.naturalWidth, availH / img.naturalHeight)\n const displayW = img.naturalWidth * scale\n const displayH = img.naturalHeight * scale\n const imgX = (cw - displayW) / 2\n const imgY = (ch - displayH) / 2\n\n this.fullImageRect = { x: imgX, y: imgY, width: displayW, height: displayH }\n\n ctx.save()\n\n // Apply viewport zoom and pan\n const vp = this.viewport\n ctx.translate(cw / 2 + vp.panX, ch / 2 + vp.panY)\n ctx.scale(vp.zoom, vp.zoom)\n ctx.translate(-cw / 2, -ch / 2)\n\n // Apply rotation and flip around image center\n const cx = imgX + displayW / 2\n const cy = imgY + displayH / 2\n ctx.translate(cx, cy)\n ctx.rotate(crop.rotation)\n ctx.scale(crop.flipX ? -1 : 1, crop.flipY ? -1 : 1)\n ctx.translate(-cx, -cy)\n\n // Draw background color behind image (if not fully transparent)\n const bg = state.backgroundColor\n if (bg[3] > 0) {\n ctx.fillStyle = `rgba(${Math.round(bg[0] * 255)}, ${Math.round(bg[1] * 255)}, ${Math.round(bg[2] * 255)}, ${bg[3]})`\n ctx.fillRect(imgX, imgY, displayW, displayH)\n }\n\n // Draw the full color-adjusted image\n ctx.drawImage(previewSrc, imgX, imgY, displayW, displayH)\n\n // Draw frame preview (if active)\n if (state.frame.style) {\n this.renderFramePreview(ctx, state, imgX, imgY, displayW, displayH)\n }\n\n // Draw stickers\n if (state.stickers.length > 0) {\n this.renderStickers(ctx, state.stickers, imgX, imgY, displayW, displayH)\n }\n\n ctx.restore()\n }\n\n /**\n * Render cropped view (used on non-crop tabs).\n * Shows only the crop region fitted to the canvas.\n */\n private renderCroppedView(\n ctx: CanvasRenderingContext2D,\n state: ImageState,\n previewSrc: HTMLImageElement | HTMLCanvasElement,\n cw: number, ch: number,\n availW: number, availH: number,\n ): void {\n const img = this.sourceImage!\n const crop = state.crop\n\n // Calculate the crop region's natural pixel dimensions\n const cropNatW = img.naturalWidth * crop.width\n const cropNatH = img.naturalHeight * crop.height\n\n // Fit the CROP REGION to canvas (not the full image)\n const baseScale = Math.min(availW / cropNatW, availH / cropNatH)\n\n // Live resize preview: when resize dimensions are set and we're on the resize tab,\n // scale the displayed image proportionally to reflect the target output size\n let resizeRatio = 1\n if (this.activePluginId === 'resize' && (state.resize.width || state.resize.height)) {\n const targetW = state.resize.width || Math.round(cropNatW * (state.resize.height! / cropNatH))\n const targetH = state.resize.height || Math.round(cropNatH * (state.resize.width! / cropNatW))\n resizeRatio = Math.min(targetW / cropNatW, targetH / cropNatH)\n if (!state.resize.upscale && resizeRatio > 1) {\n resizeRatio = 1\n }\n // Cap the visible ratio so image doesn't overflow viewport\n // (for upscale, max out at the base fit)\n if (resizeRatio > 1) {\n resizeRatio = Math.min(resizeRatio, availW / (cropNatW * baseScale), availH / (cropNatH * baseScale))\n }\n }\n\n const scale = baseScale * resizeRatio\n const displayW = cropNatW * scale\n const displayH = cropNatH * scale\n const imgX = (cw - displayW) / 2\n const imgY = (ch - displayH) / 2\n\n this.fullImageRect = { x: imgX, y: imgY, width: displayW, height: displayH }\n\n // Source rect from preview source (handles both Image and Canvas)\n const srcTotalW = previewSrc instanceof HTMLImageElement ? previewSrc.naturalWidth : previewSrc.width\n const srcTotalH = previewSrc instanceof HTMLImageElement ? previewSrc.naturalHeight : previewSrc.height\n\n ctx.save()\n\n // Apply viewport zoom and pan\n const vp = this.viewport\n ctx.translate(cw / 2 + vp.panX, ch / 2 + vp.panY)\n ctx.scale(vp.zoom, vp.zoom)\n ctx.translate(-cw / 2, -ch / 2)\n\n // Apply rotation and flip around the crop region center\n const cx = imgX + displayW / 2\n const cy = imgY + displayH / 2\n ctx.translate(cx, cy)\n ctx.rotate(crop.rotation)\n ctx.scale(crop.flipX ? -1 : 1, crop.flipY ? -1 : 1)\n ctx.translate(-cx, -cy)\n\n // Draw background color behind crop region\n const bg = state.backgroundColor\n if (bg[3] > 0) {\n ctx.fillStyle = `rgba(${Math.round(bg[0] * 255)}, ${Math.round(bg[1] * 255)}, ${Math.round(bg[2] * 255)}, ${bg[3]})`\n ctx.fillRect(imgX, imgY, displayW, displayH)\n }\n\n // Draw ONLY the crop region from the preview source\n ctx.drawImage(\n previewSrc,\n crop.x * srcTotalW, crop.y * srcTotalH, // source x, y\n crop.width * srcTotalW, crop.height * srcTotalH, // source w, h\n imgX, imgY, displayW, displayH, // dest x, y, w, h\n )\n\n // Draw frame preview around the crop region\n if (state.frame.style) {\n this.renderFramePreview(ctx, state, imgX, imgY, displayW, displayH)\n }\n\n // Draw stickers with positions adjusted relative to crop\n if (state.stickers.length > 0) {\n this.renderStickersInCrop(ctx, state.stickers, crop, imgX, imgY, displayW, displayH)\n }\n\n ctx.restore()\n\n // Draw resize dimensions label (outside the transform so it's always readable)\n if (this.activePluginId === 'resize' && (state.resize.width || state.resize.height)) {\n const outW = state.resize.width || Math.round(cropNatW * (state.resize.height! / cropNatH))\n const outH = state.resize.height || Math.round(cropNatH * (state.resize.width! / cropNatW))\n const label = `${outW} × ${outH} px`\n ctx.save()\n ctx.font = '12px -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif'\n ctx.textAlign = 'center'\n ctx.textBaseline = 'top'\n const labelX = cw / 2\n const labelY = imgY + displayH + 8\n // Background pill\n const metrics = ctx.measureText(label)\n const pillW = metrics.width + 16\n const pillH = 22\n ctx.fillStyle = 'rgba(0, 0, 0, 0.6)'\n ctx.beginPath()\n ctx.roundRect(labelX - pillW / 2, labelY, pillW, pillH, 4)\n ctx.fill()\n // Text\n ctx.fillStyle = '#fff'\n ctx.fillText(label, labelX, labelY + 4)\n ctx.restore()\n }\n }\n\n /**\n * Render frame preview overlay on the canvas.\n */\n private renderFramePreview(\n ctx: CanvasRenderingContext2D,\n state: ImageState,\n imgX: number,\n imgY: number,\n w: number,\n h: number,\n ): void {\n const frame = state.frame\n const frameW = Math.round(Math.max(w, h) * frame.size)\n const color = frame.color\n const colorStr = `rgba(${Math.round(color[0] * 255)}, ${Math.round(color[1] * 255)}, ${Math.round(color[2] * 255)}, ${color[3]})`\n const r = Math.round(frame.radius)\n\n ctx.strokeStyle = colorStr\n ctx.fillStyle = colorStr\n\n switch (frame.style) {\n case 'solidSharp':\n ctx.lineWidth = frameW\n ctx.strokeRect(imgX + frameW / 2, imgY + frameW / 2, w - frameW, h - frameW)\n break\n case 'solidRound':\n ctx.lineWidth = frameW\n ctx.beginPath()\n ctx.roundRect(imgX + frameW / 2, imgY + frameW / 2, w - frameW, h - frameW, r + frameW / 2)\n ctx.stroke()\n break\n case 'lineSingle': {\n const inset = frameW * 2\n ctx.lineWidth = 1\n ctx.strokeRect(imgX + inset, imgY + inset, w - inset * 2, h - inset * 2)\n break\n }\n case 'lineMultiple':\n ctx.lineWidth = 1\n for (let i = 1; i <= 3; i++) {\n const inset = frameW * i\n ctx.strokeRect(imgX + inset, imgY + inset, w - inset * 2, h - inset * 2)\n }\n break\n case 'hook': {\n const hookLen = Math.min(w, h) * 0.1\n ctx.lineWidth = frameW * 0.5\n const m = frameW\n ctx.beginPath(); ctx.moveTo(imgX + m, imgY + m + hookLen); ctx.lineTo(imgX + m, imgY + m); ctx.lineTo(imgX + m + hookLen, imgY + m); ctx.stroke()\n ctx.beginPath(); ctx.moveTo(imgX + w - m - hookLen, imgY + m); ctx.lineTo(imgX + w - m, imgY + m); ctx.lineTo(imgX + w - m, imgY + m + hookLen); ctx.stroke()\n ctx.beginPath(); ctx.moveTo(imgX + m, imgY + h - m - hookLen); ctx.lineTo(imgX + m, imgY + h - m); ctx.lineTo(imgX + m + hookLen, imgY + h - m); ctx.stroke()\n ctx.beginPath(); ctx.moveTo(imgX + w - m - hookLen, imgY + h - m); ctx.lineTo(imgX + w - m, imgY + h - m); ctx.lineTo(imgX + w - m, imgY + h - m - hookLen); ctx.stroke()\n break\n }\n case 'polaroid': {\n const topFrame = frameW\n const bottomFrame = frameW * 4\n ctx.fillRect(imgX, imgY, w, topFrame)\n ctx.fillRect(imgX, imgY, topFrame, h)\n ctx.fillRect(imgX + w - topFrame, imgY, topFrame, h)\n ctx.fillRect(imgX, imgY + h - bottomFrame, w, bottomFrame)\n break\n }\n default:\n ctx.lineWidth = frameW * 0.5\n ctx.strokeRect(imgX + frameW, imgY + frameW, w - frameW * 2, h - frameW * 2)\n break\n }\n }\n\n /**\n * Get the full image display rect in CSS pixels.\n * The CropOverlay uses this to position crop handles correctly.\n */\n getImageRect(): { x: number; y: number; width: number; height: number } {\n return { ...this.fullImageRect }\n }\n\n /**\n * Render stickers on the canvas viewport.\n */\n private renderStickers(\n ctx: CanvasRenderingContext2D,\n stickers: StickerInstance[],\n imgX: number,\n imgY: number,\n displayW: number,\n displayH: number,\n ): void {\n for (const sticker of stickers) {\n const x = imgX + sticker.x * displayW\n const y = imgY + sticker.y * displayH\n const w = sticker.width * displayW\n const h = sticker.height * displayH\n\n ctx.save()\n ctx.globalAlpha = sticker.opacity\n ctx.translate(x + w / 2, y + h / 2)\n ctx.rotate(sticker.rotation)\n ctx.scale(sticker.flipX ? -1 : 1, sticker.flipY ? -1 : 1)\n\n const isEmoji =\n !sticker.src.startsWith('http') &&\n !sticker.src.startsWith('data:') &&\n !sticker.src.startsWith('blob:') &&\n !sticker.src.startsWith('/') &&\n !sticker.src.startsWith('.')\n\n if (isEmoji) {\n const fontSize = Math.max(8, Math.min(w, h) * 0.8)\n ctx.font = `${fontSize}px sans-serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ctx.fillText(sticker.src, 0, 0)\n } else {\n let img = this.stickerImageCache.get(sticker.src)\n if (!img) {\n // Cap cache size (LRU eviction: remove oldest entry)\n if (this.stickerImageCache.size >= 50) {\n const firstKey = this.stickerImageCache.keys().next().value\n if (firstKey !== undefined) this.stickerImageCache.delete(firstKey)\n }\n img = new Image()\n img.crossOrigin = 'anonymous'\n img.src = sticker.src\n this.stickerImageCache.set(sticker.src, img)\n img.onload = () => {\n this.requestRender()\n }\n img.onerror = () => {\n // Remove failed entries so they can be retried\n this.stickerImageCache.delete(sticker.src)\n }\n }\n if (img.complete && img.naturalWidth > 0) {\n ctx.drawImage(img, -w / 2, -h / 2, w, h)\n }\n }\n\n ctx.restore()\n }\n }\n\n /**\n * Render stickers with positions remapped relative to the crop region.\n */\n private renderStickersInCrop(\n ctx: CanvasRenderingContext2D,\n stickers: StickerInstance[],\n crop: CropState,\n imgX: number,\n imgY: number,\n displayW: number,\n displayH: number,\n ): void {\n // Safety: skip if crop dimensions are zero/negative (avoids division by zero)\n if (crop.width <= 0 || crop.height <= 0) return\n\n for (const sticker of stickers) {\n // Remap sticker positions from full-image-normalized to crop-relative\n const adjX = (sticker.x - crop.x) / crop.width\n const adjY = (sticker.y - crop.y) / crop.height\n const adjW = sticker.width / crop.width\n const adjH = sticker.height / crop.height\n\n // Skip stickers fully outside the crop bounds\n if (adjX + adjW < 0 || adjX > 1 || adjY + adjH < 0 || adjY > 1) continue\n\n const x = imgX + adjX * displayW\n const y = imgY + adjY * displayH\n const w = adjW * displayW\n const h = adjH * displayH\n\n ctx.save()\n ctx.globalAlpha = sticker.opacity\n ctx.translate(x + w / 2, y + h / 2)\n ctx.rotate(sticker.rotation)\n ctx.scale(sticker.flipX ? -1 : 1, sticker.flipY ? -1 : 1)\n\n const isEmoji =\n !sticker.src.startsWith('http') &&\n !sticker.src.startsWith('data:') &&\n !sticker.src.startsWith('blob:') &&\n !sticker.src.startsWith('/') &&\n !sticker.src.startsWith('.')\n\n if (isEmoji) {\n const fontSize = Math.max(8, Math.min(w, h) * 0.8)\n ctx.font = `${fontSize}px sans-serif`\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ctx.fillText(sticker.src, 0, 0)\n } else {\n let img = this.stickerImageCache.get(sticker.src)\n if (!img) {\n if (this.stickerImageCache.size >= 50) {\n const firstKey = this.stickerImageCache.keys().next().value\n if (firstKey !== undefined) this.stickerImageCache.delete(firstKey)\n }\n img = new Image()\n img.crossOrigin = 'anonymous'\n img.src = sticker.src\n this.stickerImageCache.set(sticker.src, img)\n img.onload = () => { this.requestRender() }\n img.onerror = () => { this.stickerImageCache.delete(sticker.src) }\n }\n if (img.complete && img.naturalWidth > 0) {\n ctx.drawImage(img, -w / 2, -h / 2, w, h)\n }\n }\n\n ctx.restore()\n }\n }\n\n destroy(): void {\n this.stopRenderLoop()\n this.sourceImage = null\n this.previewCanvas = null\n this.previewCtx = null\n this.stickerImageCache.clear()\n }\n}\n","<template>\n <div class=\"vie-canvas-wrapper\" ref=\"wrapperRef\" @wheel.prevent=\"onWheel\"\n @mousedown=\"onPanStart\"\n @touchstart.passive=\"onTouchStart\" @touchmove.prevent=\"onTouchMove\" @touchend.passive=\"onTouchEnd\"\n :class=\"{ 'vie-canvas-wrapper--grab': canPan, 'vie-canvas-wrapper--grabbing': isPanning }\">\n <canvas ref=\"canvasRef\" class=\"vie-canvas\" />\n\n <!-- Plugin overlay layer -->\n <div\n v-if=\"engine.activePlugin.value?.overlay\"\n class=\"vie-canvas-overlay vie-canvas-overlay--interactive\"\n >\n <component\n :is=\"engine.activePlugin.value.overlay\"\n :canvas-rect=\"canvasRect\"\n :wrapper-size=\"wrapperSize\"\n />\n </div>\n\n <!-- Loading state -->\n <div v-if=\"engine.loading.value\" class=\"vie-canvas-loading\">\n <span class=\"vie-spinner\" />\n <span>{{ t('loading') }}</span>\n </div>\n\n <!-- Error state -->\n <div v-if=\"engine.error.value\" class=\"vie-canvas-loading\" style=\"color: var(--vie-danger);\">\n {{ t('loadError') }}\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount, watch, inject } from 'vue'\nimport { CanvasRenderer } from '../core/CanvasRenderer'\nimport { useEditor, LOCALE_KEY } from '../engine/useEditorEngine'\nimport type { LocaleStrings } from '../locale/en'\n\nconst t = inject(LOCALE_KEY, (key: string) => key)\nconst engine = useEditor()\n\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst canvasRef = ref<HTMLCanvasElement | null>(null)\nconst canvasRect = ref({ x: 0, y: 0, width: 0, height: 0 })\nconst wrapperSize = ref({ width: 0, height: 0 })\n\nlet renderer: CanvasRenderer | null = null\nlet resizeObserver: ResizeObserver | null = null\nlet dprMediaQuery: MediaQueryList | null = null\nlet dprChangeHandler: (() => void) | null = null\n\nfunction updateCanvasRect() {\n if (renderer) {\n canvasRect.value = renderer.getImageRect()\n }\n}\n\nonMounted(() => {\n if (!canvasRef.value || !wrapperRef.value) return\n\n renderer = new CanvasRenderer(canvasRef.value)\n\n // Set up resize observer\n resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect\n if (width > 0 && height > 0) {\n wrapperSize.value = { width, height }\n renderer?.resize(width, height)\n renderer?.requestRender()\n // Update rect after resize\n requestAnimationFrame(updateCanvasRect)\n }\n }\n })\n resizeObserver.observe(wrapperRef.value)\n\n // Watch for DPR changes (e.g., moving window between displays)\n function setupDprWatch() {\n dprMediaQuery?.removeEventListener('change', dprChangeHandler!)\n const dpr = window.devicePixelRatio || 1\n dprMediaQuery = window.matchMedia(`(resolution: ${dpr}dppx)`)\n dprChangeHandler = () => {\n // DPR changed — re-resize canvas and re-render\n const { width, height } = wrapperSize.value\n if (width > 0 && height > 0) {\n renderer?.resize(width, height)\n renderer?.requestRender()\n }\n // Re-setup to watch for next DPR change\n setupDprWatch()\n }\n dprMediaQuery.addEventListener('change', dprChangeHandler)\n }\n setupDprWatch()\n\n // Initial size\n const rect = wrapperRef.value.getBoundingClientRect()\n wrapperSize.value = { width: rect.width, height: rect.height }\n renderer.resize(rect.width, rect.height)\n\n // Start render loop\n renderer.startRenderLoop(() => engine.state)\n\n // Wire up plugin render hooks\n renderer.afterRender = (ctx, state, imageRect) => {\n const plugin = engine.activePlugin.value\n if (plugin?.onRender) {\n plugin.onRender({ ctx, state, imageRect })\n }\n }\n\n // Wire up render requests — also update canvasRect after render\n engine.onRender.value = () => {\n renderer?.requestRender()\n requestAnimationFrame(updateCanvasRect)\n }\n\n // Sync active plugin ID so renderer knows when to show cropped preview\n renderer.activePluginId = engine.activePluginId.value\n\n // Initialize smooth zoom/pan state\n zoomTarget = engine.zoom.value\n zoomCurrent = engine.zoom.value\n panTargetX = 0\n panTargetY = 0\n panCurrentX = 0\n panCurrentY = 0\n\n // Load source image\n if (engine.options.src) {\n engine.load(engine.options.src)\n }\n})\n\n// Update renderer when source image changes\nwatch(() => engine.sourceImage.value, (img) => {\n if (renderer && img) {\n renderer.setSource(img)\n renderer.requestRender()\n // Wait for render then update rect\n requestAnimationFrame(() => requestAnimationFrame(updateCanvasRect))\n }\n})\n\n// Update zoom — sync animation state for external changes (toolbar buttons)\nwatch(() => engine.zoom.value, (zoom) => {\n if (renderer) {\n renderer.viewport.zoom = zoom\n renderer.requestRender()\n requestAnimationFrame(updateCanvasRect)\n }\n if (!zoomAnimating) {\n zoomTarget = zoom\n zoomCurrent = zoom\n // Reset pan when zoom returns to fit (1.0)\n if (zoom <= 1.005) {\n panTargetX = 0\n panTargetY = 0\n panCurrentX = 0\n panCurrentY = 0\n syncPan()\n }\n }\n})\n\n// Sync active plugin ID to renderer for cropped preview\nwatch(() => engine.activePluginId.value, (id) => {\n if (renderer) {\n renderer.activePluginId = id\n renderer.requestRender()\n requestAnimationFrame(updateCanvasRect)\n }\n})\n\n// Sync crop drag pan to renderer viewport (additive with zoom pan)\nwatch(() => engine.cropDragPan.value, (pan) => {\n if (renderer) {\n renderer.viewport.panX = panCurrentX + pan.x\n renderer.viewport.panY = panCurrentY + pan.y\n renderer.requestRender()\n }\n}, { deep: true })\n\n// Smooth animated zoom + pan state\nlet zoomTarget = 1\nlet zoomCurrent = 1\nlet zoomAnimating = false\nlet panTargetX = 0\nlet panTargetY = 0\nlet panCurrentX = 0\nlet panCurrentY = 0\n\nfunction syncPan() {\n if (renderer) {\n renderer.viewport.panX = panCurrentX\n renderer.viewport.panY = panCurrentY\n renderer.requestRender()\n requestAnimationFrame(updateCanvasRect)\n }\n}\n\nfunction onWheel(e: WheelEvent) {\n const factor = e.deltaY > 0 ? 0.95 : 1.05\n const newZoomTarget = Math.max(0.1, Math.min(10, zoomTarget * factor))\n\n // Zoom-to-cursor: adjust pan so the point under cursor stays fixed\n const rect = wrapperRef.value!.getBoundingClientRect()\n const cx = e.clientX - rect.left - rect.width / 2\n const cy = e.clientY - rect.top - rect.height / 2\n const ratio = newZoomTarget / zoomTarget\n panTargetX = cx - (cx - panTargetX) * ratio\n panTargetY = cy - (cy - panTargetY) * ratio\n\n zoomTarget = newZoomTarget\n\n // Reset pan when zoom returns to fit (1.0)\n if (zoomTarget <= 1.005) {\n panTargetX = 0\n panTargetY = 0\n }\n\n if (!zoomAnimating) {\n zoomAnimating = true\n animateZoom()\n }\n}\n\nfunction animateZoom() {\n const zDiff = zoomTarget - zoomCurrent\n const pxDiff = panTargetX - panCurrentX\n const pyDiff = panTargetY - panCurrentY\n\n const settled =\n Math.abs(zDiff) < 0.001 &&\n Math.abs(pxDiff) < 0.5 &&\n Math.abs(pyDiff) < 0.5\n\n if (settled) {\n zoomCurrent = zoomTarget\n panCurrentX = panTargetX\n panCurrentY = panTargetY\n engine.setZoom(zoomCurrent)\n syncPan()\n zoomAnimating = false\n return\n }\n\n const ease = 0.15\n zoomCurrent += zDiff * ease\n panCurrentX += pxDiff * ease\n panCurrentY += pyDiff * ease\n engine.setZoom(zoomCurrent)\n syncPan()\n requestAnimationFrame(animateZoom)\n}\n\n// Pan when zoomed (drag to pan)\nconst isPanning = ref(false)\nconst canPan = computed(() => engine.zoom.value > 1.005 && engine.activePluginId.value !== 'crop')\n\nfunction onPanStart(e: MouseEvent) {\n if (e.button !== 0 || !canPan.value) return\n // Only pan from wrapper or canvas, not from plugin overlays\n if (e.target !== wrapperRef.value && e.target !== canvasRef.value) return\n\n e.preventDefault()\n isPanning.value = true\n const startX = e.clientX\n const startY = e.clientY\n const startPanX = panTargetX\n const startPanY = panTargetY\n\n const onPanMove = (ev: MouseEvent) => {\n panTargetX = startPanX + (ev.clientX - startX)\n panTargetY = startPanY + (ev.clientY - startY)\n panCurrentX = panTargetX\n panCurrentY = panTargetY\n syncPan()\n }\n\n const onPanEnd = () => {\n isPanning.value = false\n window.removeEventListener('mousemove', onPanMove)\n window.removeEventListener('mouseup', onPanEnd)\n }\n\n window.addEventListener('mousemove', onPanMove)\n window.addEventListener('mouseup', onPanEnd)\n}\n\n// Pinch-to-zoom touch gestures\nlet lastPinchDist = 0\nlet lastPinchZoom = 1\n\nfunction getTouchDistance(t1: Touch, t2: Touch): number {\n const dx = t1.clientX - t2.clientX\n const dy = t1.clientY - t2.clientY\n return Math.sqrt(dx * dx + dy * dy)\n}\n\nfunction onTouchStart(e: TouchEvent) {\n if (e.touches.length === 2) {\n lastPinchDist = getTouchDistance(e.touches[0], e.touches[1])\n lastPinchZoom = engine.zoom.value\n }\n}\n\nfunction onTouchMove(e: TouchEvent) {\n if (e.touches.length === 2) {\n const dist = getTouchDistance(e.touches[0], e.touches[1])\n if (lastPinchDist > 0) {\n const scale = dist / lastPinchDist\n engine.setZoom(lastPinchZoom * scale)\n }\n }\n}\n\nfunction onTouchEnd(_e: TouchEvent) {\n lastPinchDist = 0\n}\n\nonBeforeUnmount(() => {\n resizeObserver?.disconnect()\n dprMediaQuery?.removeEventListener('change', dprChangeHandler!)\n dprMediaQuery = null\n renderer?.destroy()\n renderer = null\n engine.onRender.value = null\n})\n\ndefineExpose({\n getRenderer: () => renderer,\n})\n</script>\n","<template>\n <div class=\"vie-tab-bar\" role=\"tablist\">\n <button\n v-for=\"plugin in engine.plugins.value\"\n :key=\"plugin.id\"\n role=\"tab\"\n :aria-selected=\"plugin.id === engine.activePluginId.value\"\n :class=\"[\n 'vie-tab',\n { 'vie-tab--active': plugin.id === engine.activePluginId.value }\n ]\"\n @click=\"engine.setActivePlugin(plugin.id)\"\n >\n <span class=\"vie-tab__icon\" v-if=\"typeof plugin.icon === 'string'\" ref=\"iconRefs\" />\n <component v-else :is=\"plugin.icon\" class=\"vie-tab__icon\" />\n <span class=\"vie-tab__label\">{{ t(plugin.labelKey as keyof LocaleStrings) }}</span>\n </button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, onMounted, onUpdated, ref } from 'vue'\nimport { useEditor, LOCALE_KEY } from '../engine/useEditorEngine'\nimport type { LocaleStrings } from '../locale/en'\n\nconst t = inject(LOCALE_KEY, (key: string) => key)\nconst engine = useEditor()\n\nconst iconRefs = ref<HTMLElement[]>([])\n\n/** Allowed SVG elements and attributes for icon sanitization */\nconst ALLOWED_TAGS = new Set([\n 'svg', 'path', 'circle', 'rect', 'line', 'polyline', 'polygon',\n 'ellipse', 'g', 'defs', 'clippath', 'mask', 'use', 'text', 'tspan',\n])\nconst ALLOWED_ATTRS = new Set([\n 'viewbox', 'width', 'height', 'fill', 'stroke', 'stroke-width',\n 'stroke-linecap', 'stroke-linejoin', 'd', 'cx', 'cy', 'r', 'rx', 'ry',\n 'x', 'y', 'x1', 'y1', 'x2', 'y2', 'points', 'transform', 'opacity',\n 'class', 'id', 'clip-path', 'clip-rule', 'fill-rule', 'fill-opacity',\n 'stroke-opacity', 'stroke-dasharray', 'stroke-dashoffset',\n])\n\nfunction sanitizeSvgString(html: string): string {\n const parser = new DOMParser()\n const doc = parser.parseFromString(html, 'image/svg+xml')\n const svg = doc.documentElement\n\n function clean(el: Element): void {\n // Remove disallowed elements\n const children = Array.from(el.children)\n for (const child of children) {\n if (!ALLOWED_TAGS.has(child.tagName.toLowerCase())) {\n child.remove()\n } else {\n // Remove disallowed attributes (especially event handlers)\n for (const attr of Array.from(child.attributes)) {\n if (!ALLOWED_ATTRS.has(attr.name.toLowerCase())) {\n child.removeAttribute(attr.name)\n }\n }\n clean(child)\n }\n }\n }\n\n clean(svg)\n return svg.outerHTML\n}\n\nfunction renderIcons() {\n const plugins = engine.plugins.value.filter((p) => typeof p.icon === 'string')\n iconRefs.value.forEach((el, idx) => {\n if (el && plugins[idx]) {\n el.innerHTML = sanitizeSvgString(plugins[idx].icon as string)\n }\n })\n}\n\nonMounted(renderIcons)\nonUpdated(renderIcons)\n</script>\n","<template>\n <div class=\"vie-control-panel\" v-if=\"engine.activePlugin.value?.controls\">\n <Transition name=\"vie-panel\" mode=\"out-in\">\n <component :is=\"engine.activePlugin.value.controls\" :key=\"engine.activePluginId.value\" />\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useEditor } from '../engine/useEditorEngine'\n\nconst engine = useEditor()\n</script>\n\n<style>\n.vie-panel-enter-active,\n.vie-panel-leave-active {\n transition: opacity 120ms ease;\n}\n.vie-panel-enter-from,\n.vie-panel-leave-to {\n opacity: 0;\n}\n</style>\n","<template>\n <div class=\"vie-slider\" :class=\"{ 'vie-slider--dragging': dragging }\">\n <span v-if=\"label\" class=\"vie-slider__label\" :id=\"labelId\">{{ label }}</span>\n <div\n ref=\"trackRef\"\n class=\"vie-slider__track-wrapper\"\n role=\"slider\"\n tabindex=\"0\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-valuenow=\"modelValue\"\n :aria-labelledby=\"label ? labelId : undefined\"\n @pointerdown=\"onPointerDown\"\n @dblclick=\"onDoubleClick\"\n @keydown=\"onKeydown\"\n >\n <div class=\"vie-slider__track\">\n <!-- Base mark (center/default indicator) -->\n <div\n class=\"vie-slider__base-mark\"\n :style=\"{ left: normalizedBase * 100 + '%' }\"\n />\n <!-- Tick marks -->\n <div\n v-for=\"(tick, i) in normalizedTicks\"\n :key=\"i\"\n class=\"vie-slider__tick\"\n :style=\"{ left: tick * 100 + '%' }\"\n />\n <div\n class=\"vie-slider__fill\"\n :style=\"fillStyle\"\n />\n <div\n class=\"vie-slider__thumb\"\n :style=\"{ left: thumbPosition + '%' }\"\n >\n <span class=\"vie-slider__thumb-dot\" />\n <span v-if=\"dragging\" class=\"vie-slider__tooltip\">{{ displayValue }}</span>\n </div>\n </div>\n </div>\n <span class=\"vie-slider__value\">{{ displayValue }}</span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\n\nconst labelId = `vie-slider-${Math.random().toString(36).slice(2, 9)}`\n\nconst props = withDefaults(defineProps<{\n modelValue: number\n min?: number\n max?: number\n step?: number\n base?: number\n label?: string\n /** Format: 'percent' shows as %, 'number' shows raw value */\n format?: 'percent' | 'number'\n /** Tick mark positions (in value space, not normalized) */\n ticks?: number[]\n}>(), {\n min: 0,\n max: 1,\n step: 0.01,\n base: 0,\n format: 'percent',\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: number]\n}>()\n\nconst trackRef = ref<HTMLElement | null>(null)\nconst dragging = ref(false)\n\nconst normalizedValue = computed(() => {\n return (props.modelValue - props.min) / (props.max - props.min)\n})\n\nconst normalizedBase = computed(() => {\n return (props.base - props.min) / (props.max - props.min)\n})\n\nconst normalizedTicks = computed(() => {\n if (!props.ticks) return []\n return props.ticks.map((t) => (t - props.min) / (props.max - props.min))\n})\n\nconst thumbPosition = computed(() => Math.max(0, Math.min(100, normalizedValue.value * 100)))\n\nconst fillStyle = computed(() => {\n const start = Math.max(0, Math.min(1, Math.min(normalizedBase.value, normalizedValue.value)))\n const end = Math.max(0, Math.min(1, Math.max(normalizedBase.value, normalizedValue.value)))\n return {\n left: start * 100 + '%',\n width: (end - start) * 100 + '%',\n }\n})\n\nconst displayValue = computed(() => {\n if (props.format === 'percent') {\n return Math.round(props.modelValue * 100) + '%'\n }\n return props.modelValue.toFixed(2)\n})\n\nfunction valueFromEvent(e: PointerEvent): number {\n if (!trackRef.value) return props.modelValue\n const rect = trackRef.value.getBoundingClientRect()\n // Support RTL\n const isRtl = getComputedStyle(trackRef.value).direction === 'rtl'\n let ratio: number\n if (isRtl) {\n ratio = (rect.right - e.clientX) / rect.width\n } else {\n ratio = (e.clientX - rect.left) / rect.width\n }\n ratio = Math.max(0, Math.min(1, ratio))\n let value = props.min + ratio * (props.max - props.min)\n // Snap to step\n value = Math.round(value / props.step) * props.step\n return Math.max(props.min, Math.min(props.max, value))\n}\n\nfunction onPointerDown(e: PointerEvent) {\n if (e.button !== 0) return\n dragging.value = true\n emit('update:modelValue', valueFromEvent(e))\n\n const onMove = (ev: PointerEvent) => {\n emit('update:modelValue', valueFromEvent(ev))\n }\n\n const onUp = () => {\n dragging.value = false\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n }\n\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n}\n\nfunction onDoubleClick() {\n emit('update:modelValue', props.base)\n}\n\nfunction onKeydown(e: KeyboardEvent) {\n let newVal = props.modelValue\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newVal = Math.min(props.max, props.modelValue + props.step)\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n newVal = Math.max(props.min, props.modelValue - props.step)\n break\n case 'Home':\n newVal = props.min\n break\n case 'End':\n newVal = props.max\n break\n default:\n return\n }\n e.preventDefault()\n emit('update:modelValue', Math.round(newVal / props.step) * props.step)\n}\n</script>\n","<template>\n <div class=\"vie-dropdown\" ref=\"dropdownRef\">\n <button\n class=\"vie-dropdown__trigger\"\n role=\"combobox\"\n :aria-expanded=\"open\"\n aria-haspopup=\"listbox\"\n @click=\"open = !open\"\n >\n <span>{{ selectedLabel }}</span>\n <svg class=\"vie-dropdown__chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </button>\n\n <Transition name=\"vie-dropdown\">\n <div v-if=\"open\" class=\"vie-dropdown__menu\" role=\"listbox\">\n <button\n v-for=\"option in options\"\n :key=\"option.value\"\n role=\"option\"\n :aria-selected=\"option.value === modelValue\"\n :class=\"[\n 'vie-dropdown__item',\n { 'vie-dropdown__item--active': option.value === modelValue }\n ]\"\n @click=\"select(option.value)\"\n >\n {{ option.label }}\n </button>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onBeforeUnmount } from 'vue'\n\nexport interface DropdownOption {\n label: string\n value: string | number | undefined\n}\n\nconst props = defineProps<{\n modelValue: string | number | undefined\n options: DropdownOption[]\n}>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | number | undefined]\n}>()\n\nconst open = ref(false)\nconst dropdownRef = ref<HTMLElement | null>(null)\n\nconst selectedLabel = computed(() => {\n const found = props.options.find((o) => o.value === props.modelValue)\n return found ? found.label : ''\n})\n\nfunction select(value: string | number | undefined) {\n emit('update:modelValue', value)\n open.value = false\n}\n\nfunction onClickOutside(e: MouseEvent) {\n if (dropdownRef.value && !dropdownRef.value.contains(e.target as Node)) {\n open.value = false\n }\n}\n\n// Only attach click listener when dropdown is open\nwatch(open, (isOpen) => {\n if (isOpen) {\n document.addEventListener('click', onClickOutside)\n } else {\n document.removeEventListener('click', onClickOutside)\n }\n})\n\nonBeforeUnmount(() => {\n document.removeEventListener('click', onClickOutside)\n})\n</script>\n\n<style>\n.vie-dropdown-enter-active,\n.vie-dropdown-leave-active {\n transition: opacity 100ms ease, transform 100ms ease;\n}\n.vie-dropdown-enter-from,\n.vie-dropdown-leave-to {\n opacity: 0;\n transform: translateY(4px);\n}\n</style>\n","export interface CropPreset {\n labelKey: string\n value: number | null\n}\n\nexport const cropPresets: CropPreset[] = [\n { labelKey: 'custom', value: null },\n { labelKey: 'square', value: 1 },\n { labelKey: 'landscape', value: 4 / 3 },\n { labelKey: 'landscape', value: 16 / 9 },\n { labelKey: 'portrait', value: 3 / 4 },\n { labelKey: 'portrait', value: 9 / 16 },\n]\n\n/** Get a display label for a preset */\nexport function presetLabel(preset: CropPreset, t: (key: string) => string): string {\n if (preset.value === null) return t('custom')\n if (preset.value === 1) return t('square') + ' 1:1'\n\n // Determine ratio label\n const ratioMap: Record<number, string> = {\n [4 / 3]: '4:3',\n [16 / 9]: '16:9',\n [3 / 4]: '3:4',\n [9 / 16]: '9:16',\n }\n\n const ratioStr = ratioMap[preset.value] || `${preset.value.toFixed(2)}`\n const dirKey = preset.value > 1 ? 'landscape' : 'portrait'\n return `${t(dirKey)} ${ratioStr}`\n}\n","<template>\n <div class=\"vie-crop-controls\">\n <!-- Aspect Ratio Dropdown -->\n <div class=\"vie-crop-controls__section\">\n <Dropdown\n :model-value=\"currentPresetValue\"\n :options=\"presetOptions\"\n @update:model-value=\"onPresetChange\"\n />\n </div>\n\n <div class=\"vie-crop-controls__divider\" />\n\n <!-- Rotation buttons -->\n <div class=\"vie-crop-controls__section\">\n <IconButton :title=\"t('rotateLeft')\" @click=\"rotateLeft\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M2.5 2v6h6\" />\n <path d=\"M2.5 8C5 4 9 2 13 2a9 9 0 1 1-6 15.7\" />\n </svg>\n </IconButton>\n\n <IconButton :title=\"t('rotateRight')\" @click=\"rotateRight\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M21.5 2v6h-6\" />\n <path d=\"M21.5 8C19 4 15 2 11 2a9 9 0 1 0 6 15.7\" />\n </svg>\n </IconButton>\n </div>\n\n <div class=\"vie-crop-controls__divider\" />\n\n <!-- Flip buttons -->\n <div class=\"vie-crop-controls__section\">\n <IconButton :title=\"t('flipHorizontal')\" @click=\"toggleFlipX\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M12 3v18\" />\n <path d=\"M16 7l4 5-4 5\" />\n <path d=\"M8 7L4 12l4 5\" />\n </svg>\n </IconButton>\n\n <IconButton :title=\"t('flipVertical')\" @click=\"toggleFlipY\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M3 12h18\" />\n <path d=\"M7 8L12 4l5 4\" />\n <path d=\"M7 16l5 4 5-4\" />\n </svg>\n </IconButton>\n </div>\n\n <div class=\"vie-crop-controls__divider\" />\n\n <!-- Rotation slider -->\n <div class=\"vie-crop-controls__rotation\">\n <Slider\n :label=\"t('rotation')\"\n :model-value=\"rotationDeg\"\n :min=\"-45\"\n :max=\"45\"\n :step=\"0.5\"\n :base=\"0\"\n format=\"number\"\n :ticks=\"[-45, -30, -15, 0, 15, 30, 45]\"\n @update:model-value=\"onRotationChange\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, ref, watch } from 'vue'\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\nimport Slider from '../../components/ui/Slider.vue'\nimport Dropdown from '../../components/ui/Dropdown.vue'\nimport IconButton from '../../components/ui/IconButton.vue'\nimport { cropPresets, presetLabel } from './presets'\nimport type { LocaleStrings } from '../../locale/en'\n\nconst t = inject(LOCALE_KEY, (key: string) => key)\nconst engine = useEditor()\n\n// Set centered square crop when image loads and crop is at defaults\nlet initialCropApplied = false\n\nwatch(() => engine.sourceImage.value, (img) => {\n if (!img || initialCropApplied) return\n\n const crop = engine.state.crop\n // Only apply if crop is at full-image defaults (untouched)\n const isDefault =\n crop.x === 0 && crop.y === 0 && crop.width === 1 && crop.height === 1 &&\n crop.aspectRatio === null && crop.rotation === 0 && !crop.flipX && !crop.flipY\n\n if (!isDefault) return\n initialCropApplied = true\n\n const aspect = img.naturalWidth / img.naturalHeight\n if (aspect >= 1) {\n // Landscape: square limited by height\n const sw = 1 / aspect\n engine.updateState((s) => {\n s.crop.x = (1 - sw) / 2\n s.crop.y = 0\n s.crop.width = sw\n s.crop.height = 1\n s.crop.aspectRatio = 1\n })\n } else {\n // Portrait: square limited by width\n const sh = aspect\n engine.updateState((s) => {\n s.crop.x = 0\n s.crop.y = (1 - sh) / 2\n s.crop.width = 1\n s.crop.height = sh\n s.crop.aspectRatio = 1\n })\n }\n}, { immediate: true })\n\n// Aspect ratio presets\nconst presetOptions = computed(() =>\n cropPresets.map((p) => ({\n label: presetLabel(p, t as (key: string) => string),\n value: p.value == null ? 'custom' : p.value,\n })),\n)\n\nconst currentPresetValue = computed(() => {\n const ar = engine.state.crop.aspectRatio\n return ar === null ? 'custom' : ar\n})\n\nfunction onPresetChange(val: string | number | undefined) {\n const newAspectRatio = val === 'custom' ? null : Number(val)\n\n engine.updateState((s) => {\n s.crop.aspectRatio = newAspectRatio\n\n // If aspect ratio is set, adjust crop region to match\n if (newAspectRatio !== null) {\n const currentW = s.crop.width\n const currentH = s.crop.height\n const currentRatio = currentW / currentH\n\n if (currentRatio > newAspectRatio) {\n // Too wide — narrow it\n const newW = currentH * newAspectRatio\n s.crop.x += (currentW - newW) / 2\n s.crop.width = newW\n } else {\n // Too tall — shorten it\n const newH = currentW / newAspectRatio\n s.crop.y += (currentH - newH) / 2\n s.crop.height = newH\n }\n }\n })\n}\n\n// Rotation — quadrant (90° steps) + fine-tune offset (±45°)\nconst quadrant = ref(0) // 0=0°, 1=90°, 2=180°, 3=270°\n\n// Decompose initial state into quadrant + fine-tune\nconst initialRotation = engine.state.crop.rotation\nconst initialQuadrant = Math.round(initialRotation / (Math.PI / 2))\nquadrant.value = ((initialQuadrant % 4) + 4) % 4\n\nfunction getFineTuneRad(): number {\n return engine.state.crop.rotation - quadrant.value * (Math.PI / 2)\n}\n\nconst rotationDeg = computed(() => {\n return (getFineTuneRad() * 180) / Math.PI\n})\n\nfunction onRotationChange(deg: number) {\n engine.updateState((s) => {\n s.crop.rotation = quadrant.value * (Math.PI / 2) + (deg * Math.PI) / 180\n })\n}\n\nfunction rotateLeft() {\n const fineTune = getFineTuneRad()\n quadrant.value = ((quadrant.value - 1) % 4 + 4) % 4\n engine.updateState((s) => {\n s.crop.rotation = quadrant.value * (Math.PI / 2) + fineTune\n })\n}\n\nfunction rotateRight() {\n const fineTune = getFineTuneRad()\n quadrant.value = (quadrant.value + 1) % 4\n engine.updateState((s) => {\n s.crop.rotation = quadrant.value * (Math.PI / 2) + fineTune\n })\n}\n\n// Flip\nfunction toggleFlipX() {\n engine.updateState((s) => {\n s.crop.flipX = !s.crop.flipX\n })\n}\n\nfunction toggleFlipY() {\n engine.updateState((s) => {\n s.crop.flipY = !s.crop.flipY\n })\n}\n</script>\n","<template>\n <svg\n class=\"vie-crop-overlay\"\n :class=\"{ 'vie-crop-overlay--dragging': dragHandle }\"\n role=\"application\"\n aria-label=\"Crop region\"\n :viewBox=\"`0 0 ${svgWidth} ${svgHeight}`\"\n :width=\"svgWidth\"\n :height=\"svgHeight\"\n style=\"touch-action: none;\"\n @pointerdown=\"onPointerDown\"\n >\n <!-- Dimmed mask: full area minus crop region -->\n <defs>\n <mask :id=\"maskId\">\n <rect x=\"0\" y=\"0\" :width=\"svgWidth\" :height=\"svgHeight\" fill=\"white\" />\n <rect\n :x=\"cropRect.x\" :y=\"cropRect.y\"\n :width=\"Math.max(0, cropRect.width)\" :height=\"Math.max(0, cropRect.height)\"\n fill=\"black\"\n />\n </mask>\n </defs>\n\n <rect\n x=\"0\" y=\"0\"\n :width=\"svgWidth\" :height=\"svgHeight\"\n class=\"vie-crop-mask\"\n :mask=\"`url(#${maskId})`\"\n />\n\n <!-- Crop region border -->\n <rect\n :x=\"cropRect.x\" :y=\"cropRect.y\"\n :width=\"Math.max(0, cropRect.width)\" :height=\"Math.max(0, cropRect.height)\"\n class=\"vie-crop-border\"\n />\n\n <!-- Rule of thirds grid -->\n <g v-if=\"cropRect.width > 10 && cropRect.height > 10\" class=\"vie-crop-grid\">\n <line\n v-for=\"i in 2\" :key=\"'h' + i\"\n :x1=\"cropRect.x\"\n :y1=\"cropRect.y + cropRect.height * (i / 3)\"\n :x2=\"cropRect.x + cropRect.width\"\n :y2=\"cropRect.y + cropRect.height * (i / 3)\"\n />\n <line\n v-for=\"i in 2\" :key=\"'v' + i\"\n :x1=\"cropRect.x + cropRect.width * (i / 3)\"\n :y1=\"cropRect.y\"\n :x2=\"cropRect.x + cropRect.width * (i / 3)\"\n :y2=\"cropRect.y + cropRect.height\"\n />\n </g>\n\n <!-- Move area (inside crop) -->\n <rect\n :x=\"cropRect.x + handleSize\"\n :y=\"cropRect.y + handleSize\"\n :width=\"Math.max(0, cropRect.width - handleSize * 2)\"\n :height=\"Math.max(0, cropRect.height - handleSize * 2)\"\n class=\"vie-crop-move\"\n data-handle=\"move\"\n />\n\n <!-- Corner handles -->\n <rect\n v-for=\"handle in cornerHandles\" :key=\"handle.id\"\n :x=\"handle.x\" :y=\"handle.y\"\n :width=\"handleSize\" :height=\"handleSize\"\n :class=\"['vie-crop-handle', `vie-crop-handle--${handle.id}`]\"\n :data-handle=\"handle.id\"\n rx=\"2\"\n />\n\n <!-- Edge handles -->\n <rect\n v-for=\"handle in edgeHandles\" :key=\"handle.id\"\n :x=\"handle.x\" :y=\"handle.y\"\n :width=\"handle.w\" :height=\"handle.h\"\n :class=\"['vie-crop-handle', `vie-crop-handle--${handle.id}`]\"\n :data-handle=\"handle.id\"\n rx=\"2\"\n />\n\n <!-- Confirm crop pill (bottom-center edge) -->\n <foreignObject\n v-if=\"showConfirmButton\"\n :x=\"cropRect.x + (cropRect.width - 100) / 2\"\n :y=\"cropRect.y + cropRect.height - 14\"\n width=\"100\"\n height=\"36\"\n style=\"pointer-events: none; overflow: visible;\"\n >\n <div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: flex; justify-content: center; pointer-events: none;\">\n <button\n class=\"vie-crop-confirm-pill\"\n @pointerdown.stop\n @click.stop=\"onConfirmCrop\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n <span>{{ t('cropApply') }}</span>\n </button>\n </div>\n </foreignObject>\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, inject, watch, onBeforeUnmount } from 'vue'\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\n\nconst maskId = `vie-crop-mask-${Math.random().toString(36).slice(2, 9)}`\n\nconst props = defineProps<{\n canvasRect: { x: number; y: number; width: number; height: number }\n wrapperSize: { width: number; height: number }\n}>()\n\nconst engine = useEditor()\nconst t = inject(LOCALE_KEY, (key: string) => key)\nconst handleSize = 12\nconst edgeHandleThickness = 8\nconst edgeHandleLength = 32\n\nconst svgWidth = computed(() => props.wrapperSize.width || 800)\nconst svgHeight = computed(() => props.wrapperSize.height || 600)\n\nconst cropRect = computed(() => {\n const cr = props.canvasRect\n const state = engine.state.crop\n return {\n x: cr.x + state.x * cr.width,\n y: cr.y + state.y * cr.height,\n width: state.width * cr.width,\n height: state.height * cr.height,\n }\n})\n\nconst cornerHandles = computed(() => {\n const r = cropRect.value\n const s = handleSize\n const hs = s / 2\n return [\n { id: 'nw', x: r.x - hs, y: r.y - hs },\n { id: 'ne', x: r.x + r.width - hs, y: r.y - hs },\n { id: 'sw', x: r.x - hs, y: r.y + r.height - hs },\n { id: 'se', x: r.x + r.width - hs, y: r.y + r.height - hs },\n ]\n})\n\nconst edgeHandles = computed(() => {\n const r = cropRect.value\n const len = Math.min(edgeHandleLength, r.width * 0.3, r.height * 0.3)\n const t = edgeHandleThickness\n return [\n { id: 'n', x: r.x + (r.width - len) / 2, y: r.y - t / 2, w: len, h: t },\n { id: 's', x: r.x + (r.width - len) / 2, y: r.y + r.height - t / 2, w: len, h: t },\n { id: 'w', x: r.x - t / 2, y: r.y + (r.height - len) / 2, w: t, h: len },\n { id: 'e', x: r.x + r.width - t / 2, y: r.y + (r.height - len) / 2, w: t, h: len },\n ]\n})\n\n// Drag state\nconst dragHandle = ref<string | null>(null)\nconst dragStart = ref({ x: 0, y: 0 })\nconst cropStart = ref({ x: 0, y: 0, width: 0, height: 0 })\n// Track whether user has actively resized the crop (handle drag, not just preset/auto)\nconst hasUserAdjustedCrop = ref(false)\n\n// Track active drag listeners for cleanup on unmount\nlet activeDragCleanup: (() => void) | null = null\n\nfunction onPointerDown(e: PointerEvent) {\n const target = e.target as SVGElement\n const handle = target.getAttribute('data-handle')\n if (!handle) return\n\n e.preventDefault()\n // Capture pointer so drags work even when cursor leaves the SVG\n const captureEl = (target.ownerSVGElement || target) as Element\n captureEl.setPointerCapture(e.pointerId)\n\n dragHandle.value = handle\n dragStart.value = { x: e.clientX, y: e.clientY }\n cropStart.value = { ...engine.state.crop }\n\n const onMove = (ev: PointerEvent) => {\n if (!dragHandle.value) return\n\n const cr = props.canvasRect\n if (cr.width === 0 || cr.height === 0) return\n\n const dx = (ev.clientX - dragStart.value.x) / cr.width\n const dy = (ev.clientY - dragStart.value.y) / cr.height\n\n const cs = cropStart.value\n const crop = engine.state.crop\n const aspectRatio = crop.aspectRatio\n\n switch (dragHandle.value) {\n case 'move': {\n // Pan the canvas image instead of moving the crop box\n const rawDx = ev.clientX - dragStart.value.x\n const rawDy = ev.clientY - dragStart.value.y\n // Compute clamped target crop position to limit pan within bounds\n const newCropX = clamp01(cs.x - rawDx / cr.width, 0, 1 - crop.width)\n const newCropY = clamp01(cs.y - rawDy / cr.height, 0, 1 - crop.height)\n // Set viewport pan (image shift in pixels) — crop rect stays fixed\n const panX = (cs.x - newCropX) * cr.width\n const panY = (cs.y - newCropY) * cr.height\n engine.cropDragPan.value = { x: panX, y: panY }\n break\n }\n case 'nw': {\n let newX = clamp01(cs.x + dx)\n let newY = clamp01(cs.y + dy)\n let newW = cs.x + cs.width - newX\n let newH = cs.y + cs.height - newY\n\n if (aspectRatio) {\n newH = newW / aspectRatio\n newY = cs.y + cs.height - newH\n if (newY < 0) { newY = 0; newH = cs.y + cs.height; newW = newH * aspectRatio; newX = cs.x + cs.width - newW }\n }\n\n if (newW > 0.02 && newH > 0.02 && newX >= 0 && newY >= 0) {\n crop.x = newX\n crop.y = newY\n crop.width = newW\n crop.height = newH\n }\n break\n }\n case 'ne': {\n let newW = clamp01(cs.width + dx, 0.02, 1 - cs.x)\n let newY = cs.y + dy\n let newH = cs.y + cs.height - newY\n\n if (aspectRatio) {\n newH = newW / aspectRatio\n newY = cs.y + cs.height - newH\n if (newY < 0) { newY = 0; newH = cs.y + cs.height; newW = newH * aspectRatio }\n }\n\n if (newW > 0.02 && newH > 0.02 && newY >= 0 && cs.x + newW <= 1) {\n crop.y = newY\n crop.width = newW\n crop.height = newH\n }\n break\n }\n case 'sw': {\n let newX = clamp01(cs.x + dx)\n let newW = cs.x + cs.width - newX\n let newH = clamp01(cs.height + dy, 0.02, 1 - cs.y)\n\n if (aspectRatio) {\n newW = newH * aspectRatio\n newX = cs.x + cs.width - newW\n if (newX < 0) { newX = 0; newW = cs.x + cs.width; newH = newW / aspectRatio }\n }\n\n if (newW > 0.02 && newH > 0.02 && newX >= 0 && cs.y + newH <= 1) {\n crop.x = newX\n crop.width = newW\n crop.height = newH\n }\n break\n }\n case 'se': {\n let newW = clamp01(cs.width + dx, 0.02, 1 - cs.x)\n let newH = clamp01(cs.height + dy, 0.02, 1 - cs.y)\n\n if (aspectRatio) {\n newH = newW / aspectRatio\n if (cs.y + newH > 1) { newH = 1 - cs.y; newW = newH * aspectRatio }\n }\n\n if (newW > 0.02 && newH > 0.02 && cs.x + newW <= 1 && cs.y + newH <= 1) {\n crop.width = newW\n crop.height = newH\n }\n break\n }\n case 'n': {\n let newY = clamp01(cs.y + dy)\n let newH = cs.y + cs.height - newY\n\n if (aspectRatio) {\n const newW = newH * aspectRatio\n const deltaW = newW - cs.width\n const adjX = clamp01(cs.x - deltaW / 2, 0, 1 - newW)\n if (newW > 0.02 && adjX >= 0 && adjX + newW <= 1) {\n crop.x = adjX\n crop.width = newW\n }\n }\n\n if (newH > 0.02 && newY >= 0) {\n crop.y = newY\n crop.height = newH\n }\n break\n }\n case 's': {\n let newH = clamp01(cs.height + dy, 0.02, 1 - cs.y)\n\n if (aspectRatio) {\n const newW = newH * aspectRatio\n const deltaW = newW - cs.width\n const adjX = clamp01(cs.x - deltaW / 2, 0, 1 - newW)\n if (newW > 0.02 && adjX >= 0 && adjX + newW <= 1) {\n crop.x = adjX\n crop.width = newW\n }\n }\n\n if (newH > 0.02 && cs.y + newH <= 1) {\n crop.height = newH\n }\n break\n }\n case 'w': {\n let newX = clamp01(cs.x + dx)\n let newW = cs.x + cs.width - newX\n\n if (aspectRatio) {\n const newH = newW / aspectRatio\n const deltaH = newH - cs.height\n const adjY = clamp01(cs.y - deltaH / 2, 0, 1 - newH)\n if (newH > 0.02 && adjY >= 0 && adjY + newH <= 1) {\n crop.y = adjY\n crop.height = newH\n }\n }\n\n if (newW > 0.02 && newX >= 0) {\n crop.x = newX\n crop.width = newW\n }\n break\n }\n case 'e': {\n let newW = clamp01(cs.width + dx, 0.02, 1 - cs.x)\n\n if (aspectRatio) {\n const newH = newW / aspectRatio\n const deltaH = newH - cs.height\n const adjY = clamp01(cs.y - deltaH / 2, 0, 1 - newH)\n if (newH > 0.02 && adjY >= 0 && adjY + newH <= 1) {\n crop.y = adjY\n crop.height = newH\n }\n }\n\n if (newW > 0.02 && cs.x + newW <= 1) {\n crop.width = newW\n }\n break\n }\n }\n\n engine.requestRender()\n }\n\n const cleanup = () => {\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n activeDragCleanup = null\n }\n\n const onUp = (ev: PointerEvent) => {\n if (dragHandle.value === 'move') {\n // Finalize: convert viewport pan to crop coordinates, reset pan\n const rawDx = ev.clientX - dragStart.value.x\n const rawDy = ev.clientY - dragStart.value.y\n const cr = props.canvasRect\n const cs = cropStart.value\n const crop = engine.state.crop\n crop.x = clamp01(cs.x - rawDx / cr.width, 0, 1 - crop.width)\n crop.y = clamp01(cs.y - rawDy / cr.height, 0, 1 - crop.height)\n engine.cropDragPan.value = { x: 0, y: 0 }\n }\n if (dragHandle.value) {\n // Mark that user has actively adjusted the crop via handle resize\n if (dragHandle.value !== 'move') {\n hasUserAdjustedCrop.value = true\n }\n // Push current state to history on drag end\n engine.updateState(() => {})\n }\n dragHandle.value = null\n // Release pointer capture on the same element that captured it\n try { captureEl.releasePointerCapture(ev.pointerId) } catch {}\n cleanup()\n }\n\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n activeDragCleanup = cleanup\n}\n\nonBeforeUnmount(() => {\n // Clean up any active drag listeners if component unmounts mid-drag\n activeDragCleanup?.()\n // Reset viewport pan in case component unmounts mid-drag\n engine.cropDragPan.value = { x: 0, y: 0 }\n})\n\n// Show confirm button only after user actively resized the crop, not during drag\nconst showConfirmButton = computed(() => {\n const crop = engine.state.crop\n return (\n hasUserAdjustedCrop.value &&\n !dragHandle.value &&\n cropRect.value.width > 60 &&\n cropRect.value.height > 60 &&\n (crop.x > 0.001 || crop.y > 0.001 || crop.width < 0.999 || crop.height < 0.999)\n )\n})\n\n// Reset user-adjusted flag when aspect ratio preset changes or crop resets to full image\nwatch(() => engine.state.crop.aspectRatio, () => {\n hasUserAdjustedCrop.value = false\n})\n\nfunction onConfirmCrop() {\n const plugins = engine.plugins.value\n const currentIdx = plugins.findIndex((p) => p.id === engine.activePluginId.value)\n if (currentIdx >= 0 && currentIdx < plugins.length - 1) {\n engine.setActivePlugin(plugins[currentIdx + 1].id)\n }\n}\n\nfunction clamp01(v: number, min = 0, max = 1): number {\n return Math.max(min, Math.min(max, v))\n}\n</script>\n","import type { EditorPlugin } from '../../types'\nimport CropControls from './CropControls.vue'\nimport CropOverlay from './CropOverlay.vue'\n\nconst cropIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M6 2v4\" />\n <path d=\"M6 6h12a2 2 0 0 1 2 2v8\" />\n <path d=\"M18 22v-4\" />\n <path d=\"M18 18H6a2 2 0 0 1-2-2V8\" />\n</svg>`\n\nexport function CropPlugin(): EditorPlugin {\n return {\n id: 'crop',\n icon: cropIcon,\n labelKey: 'crop',\n controls: CropControls,\n overlay: CropOverlay,\n }\n}\n","import type { FinetuneState } from '../../types'\nimport type { LocaleStrings } from '../../locale/en'\n\nexport interface FinetuneEffect {\n key: keyof FinetuneState\n labelKey: keyof LocaleStrings\n min: number\n max: number\n base: number\n step: number\n}\n\nexport const finetuneEffects: FinetuneEffect[] = [\n { key: 'brightness', labelKey: 'brightness', min: -0.25, max: 0.25, base: 0, step: 0.01 },\n { key: 'contrast', labelKey: 'contrast', min: -0.25, max: 0.25, base: 0, step: 0.01 },\n { key: 'saturation', labelKey: 'saturation', min: -0.25, max: 0.25, base: 0, step: 0.01 },\n { key: 'exposure', labelKey: 'exposure', min: -0.25, max: 0.25, base: 0, step: 0.01 },\n { key: 'temperature', labelKey: 'temperature', min: -0.25, max: 0.25, base: 0, step: 0.01 },\n { key: 'gamma', labelKey: 'gamma', min: 0.2, max: 5.0, base: 1, step: 0.05 },\n { key: 'clarity', labelKey: 'clarity', min: -0.25, max: 0.25, base: 0, step: 0.01 },\n { key: 'vignette', labelKey: 'vignette', min: -1, max: 1, base: 0, step: 0.05 },\n]\n","<template>\n <div class=\"vie-finetune-controls\">\n <Slider\n v-for=\"effect in finetuneEffects\"\n :key=\"effect.key\"\n :modelValue=\"engine.state.finetune[effect.key]\"\n :min=\"effect.min\"\n :max=\"effect.max\"\n :step=\"effect.step\"\n :base=\"effect.base\"\n :label=\"t(effect.labelKey)\"\n :format=\"effect.key === 'gamma' ? 'number' : 'percent'\"\n @update:modelValue=\"onUpdate(effect.key, $event)\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject } from 'vue'\nimport type { FinetuneState } from '../../types'\nimport type { LocaleStrings } from '../../locale/en'\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\nimport Slider from '../../components/ui/Slider.vue'\nimport { finetuneEffects } from './effects'\n\nconst engine = useEditor()\nconst t = inject(LOCALE_KEY, (key: string) => key)\n\nfunction onUpdate(key: keyof FinetuneState, value: number) {\n engine.updateState((s) => {\n s.finetune[key] = value\n })\n}\n</script>\n","import type { EditorPlugin } from '../../types'\nimport FinetuneControls from './FinetuneControls.vue'\n\nconst finetuneIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"4\" y1=\"21\" x2=\"4\" y2=\"14\" />\n <line x1=\"4\" y1=\"10\" x2=\"4\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"3\" />\n <line x1=\"20\" y1=\"21\" x2=\"20\" y2=\"16\" />\n <line x1=\"20\" y1=\"12\" x2=\"20\" y2=\"3\" />\n <line x1=\"1\" y1=\"14\" x2=\"7\" y2=\"14\" />\n <line x1=\"9\" y1=\"8\" x2=\"15\" y2=\"8\" />\n <line x1=\"17\" y1=\"16\" x2=\"23\" y2=\"16\" />\n</svg>`\n\nexport function FinetunePlugin(): EditorPlugin {\n return {\n id: 'finetune',\n icon: finetuneIcon,\n labelKey: 'finetune',\n controls: FinetuneControls,\n }\n}\n","export interface FilterPreset {\n id: string\n labelKey: string\n matrix: number[]\n}\n\nexport const filterPresets: FilterPreset[] = [\n {\n id: 'chrome',\n labelKey: 'chrome',\n matrix: [\n 1.2, 0.1, 0.1, 0, -0.05,\n 0.05, 1.1, 0.05, 0, -0.02,\n 0.05, 0.1, 1.2, 0, -0.05,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'fade',\n labelKey: 'fade',\n matrix: [\n 1, 0.02, 0.04, 0, 0.06,\n 0.02, 0.96, 0.04, 0, 0.06,\n 0.04, 0.04, 0.92, 0, 0.08,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'pastel',\n labelKey: 'pastel',\n matrix: [\n 0.9, 0.1, 0.05, 0, 0.08,\n 0.05, 0.9, 0.1, 0, 0.08,\n 0.1, 0.05, 0.85, 0, 0.1,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'cold',\n labelKey: 'cold',\n matrix: [\n 0.9, 0, 0.1, 0, -0.02,\n 0, 0.95, 0.1, 0, 0,\n 0, 0.1, 1.1, 0, 0.03,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'warm',\n labelKey: 'warm',\n matrix: [\n 1.1, 0.1, 0, 0, 0.03,\n 0, 1.0, 0.05, 0, 0.01,\n 0, 0, 0.9, 0, -0.02,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'monoDefault',\n labelKey: 'mono',\n matrix: [\n 0.2126, 0.7152, 0.0722, 0, 0,\n 0.2126, 0.7152, 0.0722, 0, 0,\n 0.2126, 0.7152, 0.0722, 0, 0,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'monoNoir',\n labelKey: 'noir',\n matrix: [\n 0.3, 0.8, 0.1, 0, -0.08,\n 0.3, 0.8, 0.1, 0, -0.08,\n 0.3, 0.8, 0.1, 0, -0.08,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'monoWash',\n labelKey: 'wash',\n matrix: [\n 0.2126, 0.7152, 0.0722, 0, 0.06,\n 0.2126, 0.7152, 0.0722, 0, 0.06,\n 0.2126, 0.7152, 0.0722, 0, 0.06,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'monoStark',\n labelKey: 'stark',\n matrix: [\n 0.35, 1.0, 0.15, 0, -0.15,\n 0.35, 1.0, 0.15, 0, -0.15,\n 0.35, 1.0, 0.15, 0, -0.15,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'sepiaDefault',\n labelKey: 'sepia',\n matrix: [\n 0.393, 0.769, 0.189, 0, 0,\n 0.349, 0.686, 0.168, 0, 0,\n 0.272, 0.534, 0.131, 0, 0,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'sepiaRust',\n labelKey: 'rust',\n matrix: [\n 0.45, 0.75, 0.15, 0, 0.04,\n 0.3, 0.6, 0.15, 0, -0.01,\n 0.2, 0.4, 0.15, 0, -0.04,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'sepiaBlues',\n labelKey: 'blues',\n matrix: [\n 0.2126, 0.7152, 0.0722, 0, -0.04,\n 0.2126, 0.7152, 0.0722, 0, 0,\n 0.2126, 0.7152, 0.0722, 0, 0.08,\n 0, 0, 0, 1, 0,\n ],\n },\n {\n id: 'sepiaColor',\n labelKey: 'color',\n matrix: [\n 0.4, 0.6, 0.1, 0, 0.02,\n 0.25, 0.7, 0.15, 0, 0.01,\n 0.2, 0.5, 0.4, 0, 0.01,\n 0, 0, 0, 1, 0,\n ],\n },\n]\n","<template>\n <div class=\"vie-filter-controls\">\n <div class=\"vie-filter-strip\">\n <button\n class=\"vie-filter-thumb\"\n :class=\"{ 'vie-filter-thumb--active': !engine.state.filter.id }\"\n @click=\"selectFilter(null)\"\n >\n <canvas ref=\"originalThumbRef\" width=\"96\" height=\"96\" class=\"vie-filter-thumb__canvas\" />\n <span class=\"vie-filter-thumb__label\">{{ t('original') }}</span>\n </button>\n <button\n v-for=\"preset in filterPresets\"\n :key=\"preset.id\"\n class=\"vie-filter-thumb\"\n :class=\"{ 'vie-filter-thumb--active': engine.state.filter.id === preset.id }\"\n @click=\"selectFilter(preset)\"\n >\n <canvas :ref=\"(el) => setThumbRef(preset.id, el as HTMLCanvasElement)\" width=\"96\" height=\"96\" class=\"vie-filter-thumb__canvas\" />\n <span class=\"vie-filter-thumb__label\">{{ t(preset.labelKey as keyof LocaleStrings) || preset.labelKey }}</span>\n </button>\n </div>\n <Slider\n v-if=\"engine.state.filter.id\"\n :modelValue=\"engine.state.filter.intensity\"\n :min=\"0\"\n :max=\"1\"\n :step=\"0.01\"\n :base=\"1\"\n :label=\"t('intensity')\"\n format=\"percent\"\n @update:modelValue=\"onIntensityChange\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, inject, onMounted, onUnmounted, watch } from 'vue'\nimport type { LocaleStrings } from '../../locale/en'\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\nimport { applyColorMatrix, IDENTITY_MATRIX } from '../../core/ColorMatrix'\nimport Slider from '../../components/ui/Slider.vue'\nimport { filterPresets, type FilterPreset } from './filterPresets'\n\nconst engine = useEditor()\nconst t = inject(LOCALE_KEY, (key: string) => key)\n\nconst originalThumbRef = ref<HTMLCanvasElement | null>(null)\nconst thumbRefs = new Map<string, HTMLCanvasElement>()\nconst generatedThumbs = new Set<string>()\nlet observer: IntersectionObserver | null = null\n\nfunction setThumbRef(id: string, el: HTMLCanvasElement | null) {\n if (el) {\n thumbRefs.set(id, el)\n observer?.observe(el)\n }\n}\n\nfunction selectFilter(preset: FilterPreset | null) {\n engine.updateState((s) => {\n if (!preset) {\n s.filter.id = null\n s.filter.matrix = undefined\n } else {\n s.filter.id = preset.id\n s.filter.matrix = [...preset.matrix]\n }\n })\n}\n\nfunction onIntensityChange(value: number) {\n engine.updateState((s) => {\n s.filter.intensity = value\n })\n}\n\nfunction generateThumb(canvas: HTMLCanvasElement, preset: FilterPreset) {\n const img = engine.sourceImage.value\n if (!img) return\n const size = 96\n const ctx = canvas.getContext('2d')!\n ctx.drawImage(img, 0, 0, size, size)\n const imageData = ctx.getImageData(0, 0, size, size)\n applyColorMatrix(imageData, preset.matrix)\n ctx.putImageData(imageData, 0, 0)\n generatedThumbs.add(preset.id)\n}\n\nfunction generateOriginalThumb() {\n const img = engine.sourceImage.value\n if (!img || !originalThumbRef.value) return\n const ctx = originalThumbRef.value.getContext('2d')!\n ctx.drawImage(img, 0, 0, 96, 96)\n}\n\nfunction setupObserver() {\n observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue\n const canvas = entry.target as HTMLCanvasElement\n const preset = filterPresets.find((p) => thumbRefs.get(p.id) === canvas)\n if (preset && !generatedThumbs.has(preset.id)) {\n generateThumb(canvas, preset)\n }\n }\n }, { threshold: 0.1 })\n\n // Observe already-registered canvases\n for (const canvas of thumbRefs.values()) {\n observer.observe(canvas)\n }\n}\n\nfunction resetThumbnails() {\n generatedThumbs.clear()\n generateOriginalThumb()\n // Re-generate visible thumbnails\n for (const preset of filterPresets) {\n const canvas = thumbRefs.get(preset.id)\n if (canvas) observer?.unobserve(canvas)\n }\n // Re-observe to trigger generation of visible ones\n for (const canvas of thumbRefs.values()) {\n observer?.observe(canvas)\n }\n}\n\nwatch(() => engine.sourceImage.value, () => {\n setTimeout(resetThumbnails, 50)\n})\n\nonMounted(() => {\n setupObserver()\n setTimeout(() => {\n generateOriginalThumb()\n }, 50)\n})\n\nonUnmounted(() => {\n observer?.disconnect()\n observer = null\n})\n</script>\n","import type { EditorPlugin } from '../../types'\nimport FilterControls from './FilterControls.vue'\n\nconst filterIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z\" />\n <path d=\"M12 20a8 8 0 1 0 0-16\" fill=\"currentColor\" opacity=\"0.3\" />\n <path d=\"M12 4v16\" />\n</svg>`\n\nexport function FilterPlugin(): EditorPlugin {\n return {\n id: 'filter',\n icon: filterIcon,\n labelKey: 'filter',\n controls: FilterControls,\n }\n}\n","export interface StickerCategory {\n id: string\n labelKey: string\n stickers: string[]\n}\n\nexport const defaultStickerCategories: StickerCategory[] = [\n {\n id: 'emoji',\n labelKey: 'emoji',\n stickers: [\n '😀', '😂', '❤️', '🎉', '👍', '⭐', '🔥', '💯',\n '🎨', '📸', '🎵', '🌟', '✅', '❌', '⚡', '🎯',\n '💡', '🏆', '🎲', '🎪', '🌈', '🦋', '🍀', '💎',\n ],\n },\n {\n id: 'shapes',\n labelKey: 'shapes',\n stickers: [\n '⬛', '⬜', '🔴', '🔵', '🟢', '🟡', '🟠', '🟣',\n '▶️', '◀️', '🔺', '🔻', '💠', '🔶', '🔷', '♦️',\n ],\n },\n]\n","import { ref, type Ref } from 'vue'\r\n\r\n/** Per-engine selected sticker ID — uses WeakMap to scope per engine instance */\r\nconst stateMap = new WeakMap<object, Ref<string | null>>()\r\n\r\nexport function getSelectedStickerId(engineState: object): Ref<string | null> {\r\n let r = stateMap.get(engineState)\r\n if (!r) {\r\n r = ref<string | null>(null)\r\n stateMap.set(engineState, r)\r\n }\r\n return r\r\n}\r\n","<template>\n <div class=\"vie-sticker-controls\">\n <div class=\"vie-sticker-tabs\">\n <button\n v-for=\"cat in defaultStickerCategories\"\n :key=\"cat.id\"\n class=\"vie-sticker-tab\"\n :class=\"{ 'vie-sticker-tab--active': activeCategory === cat.id }\"\n @click=\"activeCategory = cat.id\"\n >\n {{ t(cat.labelKey as keyof LocaleStrings) || cat.labelKey }}\n </button>\n <button\n v-if=\"selectedStickerId\"\n class=\"vie-sticker-tab vie-sticker-tab--delete\"\n @click=\"deleteSelected\"\n >\n {{ t('delete' as keyof LocaleStrings) || 'Delete' }}\n </button>\n </div>\n <div class=\"vie-sticker-grid\">\n <button\n v-for=\"sticker in currentStickers\"\n :key=\"sticker\"\n class=\"vie-sticker-item\"\n @click=\"addSticker(sticker)\"\n >\n {{ sticker }}\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, inject } from 'vue'\nimport type { LocaleStrings } from '../../locale/en'\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\nimport { defaultStickerCategories } from './defaultStickers'\nimport { getSelectedStickerId } from './selectedSticker'\n\nconst engine = useEditor()\nconst t = inject(LOCALE_KEY, (key: string) => key)\nconst selectedStickerId = getSelectedStickerId(engine.state)\n\nconst activeCategory = ref(defaultStickerCategories[0]?.id || 'emoji')\n\nconst currentStickers = computed(() => {\n const cat = defaultStickerCategories.find((c) => c.id === activeCategory.value)\n return cat?.stickers || []\n})\n\nfunction addSticker(src: string) {\n const id = `sticker-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`\n const offset = (engine.state.stickers.length % 5) * 0.03\n engine.updateState((s) => {\n s.stickers.push({\n id,\n src,\n x: 0.35 + offset,\n y: 0.35 + offset,\n width: 0.15,\n height: 0.15,\n rotation: 0,\n flipX: false,\n flipY: false,\n opacity: 1,\n })\n })\n selectedStickerId.value = id\n}\n\nfunction deleteSelected() {\n if (!selectedStickerId.value) return\n const id = selectedStickerId.value\n engine.updateState((s) => {\n const idx = s.stickers.findIndex((st) => st.id === id)\n if (idx >= 0) s.stickers.splice(idx, 1)\n })\n selectedStickerId.value = null\n}\n</script>\n","<template>\r\n <svg\r\n ref=\"svgRef\"\r\n class=\"vie-sticker-overlay\"\r\n :viewBox=\"`0 0 ${wrapperSize.width} ${wrapperSize.height}`\"\r\n :width=\"wrapperSize.width\"\r\n :height=\"wrapperSize.height\"\r\n @pointerdown=\"onPointerDown\"\r\n @keydown=\"onKeyDown\"\r\n tabindex=\"0\"\r\n >\r\n <!-- Transparent hit areas for each sticker -->\r\n <rect\r\n v-for=\"s in displayStickers\"\r\n :key=\"s.id\"\r\n :x=\"s.x\" :y=\"s.y\" :width=\"s.w\" :height=\"s.h\"\r\n fill=\"transparent\"\r\n class=\"vie-sticker-hitarea\"\r\n :data-sticker-id=\"s.id\"\r\n />\r\n\r\n <!-- Selection UI for selected sticker -->\r\n <template v-if=\"sel\">\r\n <!-- Selection border -->\r\n <rect\r\n :x=\"sel.x\" :y=\"sel.y\"\r\n :width=\"sel.w\" :height=\"sel.h\"\r\n class=\"vie-sticker-selection\"\r\n />\r\n\r\n <!-- Corner resize handles -->\r\n <rect\r\n v-for=\"h in cornerHandles\"\r\n :key=\"h.id\"\r\n :x=\"h.x\" :y=\"h.y\"\r\n :width=\"handleSize\" :height=\"handleSize\"\r\n class=\"vie-sticker-handle\"\r\n :data-handle=\"h.id\"\r\n />\r\n\r\n <!-- Rotation connector line -->\r\n <line\r\n :x1=\"sel.x + sel.w / 2\"\r\n :y1=\"sel.y - rotateLineLen\"\r\n :x2=\"sel.x + sel.w / 2\"\r\n :y2=\"sel.y\"\r\n class=\"vie-sticker-rotate-line\"\r\n />\r\n\r\n <!-- Rotation handle -->\r\n <circle\r\n :cx=\"sel.x + sel.w / 2\"\r\n :cy=\"sel.y - rotateLineLen - rotateHandleR\"\r\n :r=\"rotateHandleR\"\r\n class=\"vie-sticker-rotate-handle\"\r\n data-handle=\"rotate\"\r\n />\r\n </template>\r\n </svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, onBeforeUnmount } from 'vue'\r\nimport { useEditor } from '../../engine/useEditorEngine'\r\nimport { getSelectedStickerId } from './selectedSticker'\r\n\r\nconst props = defineProps<{\r\n canvasRect: { x: number; y: number; width: number; height: number }\r\n wrapperSize: { width: number; height: number }\r\n}>()\r\n\r\nconst engine = useEditor()\r\nconst svgRef = ref<SVGSVGElement | null>(null)\r\nconst selectedId = getSelectedStickerId(engine.state)\r\n\r\nonBeforeUnmount(() => {\r\n if (dragType.value) {\r\n engine.updateState(() => {})\r\n dragType.value = null\r\n dragHandleId.value = null\r\n }\r\n window.removeEventListener('pointermove', onPointerMove)\r\n window.removeEventListener('pointerup', onPointerUp)\r\n})\r\n\r\nconst handleSize = 10\r\nconst rotateLineLen = 20\r\nconst rotateHandleR = 6\r\n\r\n// Convert normalized sticker coords to display coords\r\nconst displayStickers = computed(() => {\r\n const cr = props.canvasRect\r\n return engine.state.stickers.map((s) => ({\r\n id: s.id,\r\n x: cr.x + s.x * cr.width,\r\n y: cr.y + s.y * cr.height,\r\n w: s.width * cr.width,\r\n h: s.height * cr.height,\r\n }))\r\n})\r\n\r\n// Selected sticker in display coords\r\nconst sel = computed(() => {\r\n if (!selectedId.value) return null\r\n return displayStickers.value.find((s) => s.id === selectedId.value) || null\r\n})\r\n\r\n// Corner handles for selected sticker\r\nconst cornerHandles = computed(() => {\r\n if (!sel.value) return []\r\n const s = sel.value\r\n const hs = handleSize\r\n const half = hs / 2\r\n return [\r\n { id: 'nw', x: s.x - half, y: s.y - half },\r\n { id: 'ne', x: s.x + s.w - half, y: s.y - half },\r\n { id: 'sw', x: s.x - half, y: s.y + s.h - half },\r\n { id: 'se', x: s.x + s.w - half, y: s.y + s.h - half },\r\n ]\r\n})\r\n\r\n// Drag state\r\nconst dragType = ref<'move' | 'resize' | 'rotate' | null>(null)\r\nconst dragHandleId = ref<string | null>(null)\r\nconst dragStartClient = ref({ x: 0, y: 0 })\r\nconst dragStartSticker = ref({ x: 0, y: 0, width: 0, height: 0, rotation: 0 })\r\n\r\nfunction onPointerDown(e: PointerEvent) {\r\n const target = e.target as SVGElement\r\n\r\n // Check rotation handle\r\n const handle = target.getAttribute('data-handle')\r\n if (handle === 'rotate' && selectedId.value) {\r\n e.preventDefault()\r\n startDrag(e, 'rotate', handle)\r\n return\r\n }\r\n\r\n // Check resize handle\r\n if (handle && ['nw', 'ne', 'sw', 'se'].includes(handle) && selectedId.value) {\r\n e.preventDefault()\r\n startDrag(e, 'resize', handle)\r\n return\r\n }\r\n\r\n // Check sticker hit area\r\n const stickerId = target.getAttribute('data-sticker-id')\r\n if (stickerId) {\r\n e.preventDefault()\r\n selectedId.value = stickerId\r\n startDrag(e, 'move', null)\r\n svgRef.value?.focus()\r\n return\r\n }\r\n\r\n // Click on empty area — deselect\r\n selectedId.value = null\r\n}\r\n\r\nfunction startDrag(e: PointerEvent, type: 'move' | 'resize' | 'rotate', handleId: string | null) {\r\n dragType.value = type\r\n dragHandleId.value = handleId\r\n dragStartClient.value = { x: e.clientX, y: e.clientY }\r\n\r\n const sticker = engine.state.stickers.find((s) => s.id === selectedId.value)\r\n if (sticker) {\r\n dragStartSticker.value = {\r\n x: sticker.x,\r\n y: sticker.y,\r\n width: sticker.width,\r\n height: sticker.height,\r\n rotation: sticker.rotation,\r\n }\r\n }\r\n\r\n window.addEventListener('pointermove', onPointerMove)\r\n window.addEventListener('pointerup', onPointerUp)\r\n}\r\n\r\nfunction onPointerMove(e: PointerEvent) {\r\n if (!dragType.value || !selectedId.value) return\r\n\r\n const cr = props.canvasRect\r\n if (cr.width === 0 || cr.height === 0) return\r\n\r\n const dx = (e.clientX - dragStartClient.value.x) / cr.width\r\n const dy = (e.clientY - dragStartClient.value.y) / cr.height\r\n const ds = dragStartSticker.value\r\n\r\n const sticker = engine.state.stickers.find((s) => s.id === selectedId.value)\r\n if (!sticker) return\r\n\r\n switch (dragType.value) {\r\n case 'move': {\r\n sticker.x = clamp(ds.x + dx, 0, 1 - sticker.width)\r\n sticker.y = clamp(ds.y + dy, 0, 1 - sticker.height)\r\n break\r\n }\r\n case 'resize': {\r\n const minSize = 0.03\r\n switch (dragHandleId.value) {\r\n case 'se': {\r\n sticker.width = clamp(ds.width + dx, minSize, 1 - ds.x)\r\n sticker.height = clamp(ds.height + dy, minSize, 1 - ds.y)\r\n break\r\n }\r\n case 'ne': {\r\n const newW = clamp(ds.width + dx, minSize, 1 - ds.x)\r\n const newH = clamp(ds.height - dy, minSize, ds.y + ds.height)\r\n const newY = ds.y + ds.height - newH\r\n sticker.width = newW\r\n sticker.height = newH\r\n sticker.y = newY\r\n break\r\n }\r\n case 'sw': {\r\n const newW = clamp(ds.width - dx, minSize, ds.x + ds.width)\r\n const newH = clamp(ds.height + dy, minSize, 1 - ds.y)\r\n const newX = ds.x + ds.width - newW\r\n sticker.width = newW\r\n sticker.height = newH\r\n sticker.x = newX\r\n break\r\n }\r\n case 'nw': {\r\n const newW = clamp(ds.width - dx, minSize, ds.x + ds.width)\r\n const newH = clamp(ds.height - dy, minSize, ds.y + ds.height)\r\n const newX = ds.x + ds.width - newW\r\n const newY = ds.y + ds.height - newH\r\n sticker.width = newW\r\n sticker.height = newH\r\n sticker.x = newX\r\n sticker.y = newY\r\n break\r\n }\r\n }\r\n break\r\n }\r\n case 'rotate': {\r\n // Compute angle from sticker center to pointer\r\n const sCenterX = cr.x + sticker.x * cr.width + sticker.width * cr.width / 2\r\n const sCenterY = cr.y + sticker.y * cr.height + sticker.height * cr.height / 2\r\n const angle = Math.atan2(e.clientX - sCenterX, -(e.clientY - sCenterY))\r\n sticker.rotation = angle\r\n break\r\n }\r\n }\r\n\r\n engine.requestRender()\r\n}\r\n\r\nfunction onPointerUp() {\r\n if (dragType.value) {\r\n // Push state to history\r\n engine.updateState(() => {})\r\n }\r\n dragType.value = null\r\n dragHandleId.value = null\r\n window.removeEventListener('pointermove', onPointerMove)\r\n window.removeEventListener('pointerup', onPointerUp)\r\n}\r\n\r\nfunction onKeyDown(e: KeyboardEvent) {\r\n if ((e.key === 'Delete' || e.key === 'Backspace') && selectedId.value) {\r\n e.preventDefault()\r\n const id = selectedId.value\r\n engine.updateState((s) => {\r\n const idx = s.stickers.findIndex((st) => st.id === id)\r\n if (idx >= 0) s.stickers.splice(idx, 1)\r\n })\r\n selectedId.value = null\r\n }\r\n}\r\n\r\nfunction clamp(v: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, v))\r\n}\r\n</script>\r\n","import type { EditorPlugin } from '../../types'\nimport StickerControls from './StickerControls.vue'\nimport StickerOverlay from './StickerOverlay.vue'\n\nconst stickerIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M8 14s1.5 2 4 2 4-2 4-2\" />\n <line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\" />\n <line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\" />\n</svg>`\n\nexport function StickerPlugin(): EditorPlugin {\n return {\n id: 'sticker',\n icon: stickerIcon,\n labelKey: 'sticker',\n controls: StickerControls,\n overlay: StickerOverlay,\n }\n}\n","import type { LocaleStrings } from '../../locale/en'\n\nexport interface FrameStyleDef {\n id: string\n labelKey: keyof LocaleStrings\n}\n\nexport const frameStyles: FrameStyleDef[] = [\n { id: 'solidSharp', labelKey: 'solidSharp' },\n { id: 'solidRound', labelKey: 'solidRound' },\n { id: 'lineSingle', labelKey: 'lineSingle' },\n { id: 'lineMultiple', labelKey: 'lineMultiple' },\n { id: 'hook', labelKey: 'hook' },\n { id: 'polaroid', labelKey: 'polaroid' },\n { id: 'edgeSeparate', labelKey: 'edgeSeparate' },\n { id: 'edgeCross', labelKey: 'edgeCross' },\n { id: 'edgeOverlap', labelKey: 'edgeOverlap' },\n]\n\nexport const defaultFrameColors: [number, number, number, number][] = [\n [1, 1, 1, 1], // White\n [0, 0, 0, 1], // Black\n [0.85, 0.75, 0.6, 1], // Cream\n [0.6, 0.4, 0.2, 1], // Brown\n [0.2, 0.4, 0.6, 1], // Navy\n [0.8, 0.2, 0.2, 1], // Red\n]\n","<template>\n <div class=\"vie-frame-controls\">\n <div class=\"vie-frame-strip\">\n <button\n class=\"vie-frame-style\"\n :class=\"{ 'vie-frame-style--active': !engine.state.frame.style }\"\n @click=\"selectStyle(null)\"\n >\n <span class=\"vie-frame-style__label\">{{ t('none') }}</span>\n </button>\n <button\n v-for=\"style in frameStyles\"\n :key=\"style.id\"\n class=\"vie-frame-style\"\n :class=\"{ 'vie-frame-style--active': engine.state.frame.style === style.id }\"\n @click=\"selectStyle(style.id)\"\n >\n <span class=\"vie-frame-style__label\">{{ t(style.labelKey) }}</span>\n </button>\n </div>\n\n <template v-if=\"engine.state.frame.style\">\n <Slider\n :modelValue=\"engine.state.frame.size\"\n :min=\"0.005\"\n :max=\"0.15\"\n :step=\"0.005\"\n :base=\"0.025\"\n :label=\"t('frameSize')\"\n format=\"percent\"\n @update:modelValue=\"onSizeChange\"\n />\n <div class=\"vie-frame-colors\">\n <span class=\"vie-frame-colors__label\">{{ t('frameColor') }}</span>\n <div class=\"vie-frame-colors__swatches\">\n <button\n v-for=\"(color, i) in defaultFrameColors\"\n :key=\"i\"\n class=\"vie-frame-color-swatch\"\n :class=\"{ 'vie-frame-color-swatch--active': isActiveColor(color) }\"\n :style=\"{ backgroundColor: rgbaToCSS(color) }\"\n @click=\"selectColor(color)\"\n />\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject } from 'vue'\nimport type { LocaleStrings } from '../../locale/en'\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\nimport Slider from '../../components/ui/Slider.vue'\nimport { frameStyles, defaultFrameColors } from './frameStyles'\n\nconst engine = useEditor()\nconst t = inject(LOCALE_KEY, (key: string) => key)\n\nfunction selectStyle(id: string | null) {\n engine.updateState((s) => {\n s.frame.style = id\n })\n}\n\nfunction onSizeChange(value: number) {\n engine.updateState((s) => {\n s.frame.size = value\n })\n}\n\nfunction selectColor(color: [number, number, number, number]) {\n engine.updateState((s) => {\n s.frame.color = [...color]\n })\n}\n\nfunction isActiveColor(color: [number, number, number, number]): boolean {\n const c = engine.state.frame.color\n return c[0] === color[0] && c[1] === color[1] && c[2] === color[2] && c[3] === color[3]\n}\n\nfunction rgbaToCSS(c: [number, number, number, number]): string {\n return `rgba(${Math.round(c[0] * 255)}, ${Math.round(c[1] * 255)}, ${Math.round(c[2] * 255)}, ${c[3]})`\n}\n</script>\n","import type { EditorPlugin } from '../../types'\nimport FrameControls from './FrameControls.vue'\n\nconst frameIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" />\n</svg>`\n\nexport function FramePlugin(): EditorPlugin {\n return {\n id: 'frame',\n icon: frameIcon,\n labelKey: 'frame',\n controls: FrameControls,\n }\n}\n","<template>\r\n <div class=\"vie-fill-controls\">\r\n <div class=\"vie-fill-strip\">\r\n <button\r\n v-for=\"(color, i) in fillColors\"\r\n :key=\"i\"\r\n class=\"vie-fill-swatch\"\r\n :class=\"{\r\n 'vie-fill-swatch--active': isActiveColor(color),\r\n 'vie-fill-swatch--transparent': color[3] === 0,\r\n }\"\r\n :style=\"color[3] > 0 ? { backgroundColor: rgbaToCSS(color) } : undefined\"\r\n :title=\"i === 0 ? t('transparent') : undefined\"\r\n @click=\"selectColor(color)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { inject } from 'vue'\r\nimport type { LocaleStrings } from '../../locale/en'\r\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\r\n\r\nconst engine = useEditor()\r\nconst t = inject(LOCALE_KEY, (key: string) => key)\r\n\r\ntype RGBA = [number, number, number, number]\r\n\r\nconst fillColors: RGBA[] = [\r\n [0, 0, 0, 0], // Transparent\r\n [1, 1, 1, 1], // White\r\n [0.8, 0.8, 0.8, 1], // Light gray\r\n [0.2, 0.2, 0.2, 1], // Dark gray\r\n [0, 0, 0, 1], // Black\r\n [0.1, 0.14, 0.49, 1], // Dark navy\r\n [0.13, 0.59, 0.95, 1], // Blue\r\n [0, 0.74, 0.83, 1], // Cyan\r\n [0, 0.59, 0.53, 1], // Teal\r\n [0.3, 0.69, 0.31, 1], // Green\r\n [0.55, 0.76, 0.29, 1], // Light green\r\n [1, 0.92, 0.23, 1], // Yellow\r\n [1, 0.6, 0, 1], // Orange\r\n [1, 0.34, 0.13, 1], // Deep orange\r\n [0.96, 0.26, 0.21, 1], // Red\r\n [0.91, 0.12, 0.39, 1], // Pink\r\n [0.61, 0.15, 0.69, 1], // Purple\r\n]\r\n\r\nfunction selectColor(color: RGBA) {\r\n engine.updateState((s) => {\r\n s.backgroundColor = [...color]\r\n })\r\n}\r\n\r\nfunction isActiveColor(color: RGBA): boolean {\r\n const c = engine.state.backgroundColor\r\n return c[0] === color[0] && c[1] === color[1] && c[2] === color[2] && c[3] === color[3]\r\n}\r\n\r\nfunction rgbaToCSS(c: RGBA): string {\r\n return `rgba(${Math.round(c[0] * 255)}, ${Math.round(c[1] * 255)}, ${Math.round(c[2] * 255)}, ${c[3]})`\r\n}\r\n</script>\r\n","import type { EditorPlugin } from '../../types'\r\nimport FillControls from './FillControls.vue'\r\n\r\nconst fillIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\" />\r\n</svg>`\r\n\r\nexport function FillPlugin(): EditorPlugin {\r\n return {\r\n id: 'fill',\r\n icon: fillIcon,\r\n labelKey: 'fill',\r\n controls: FillControls,\r\n }\r\n}\r\n","<template>\n <div class=\"vie-resize-controls\">\n <p class=\"vie-resize-title\">{{ t('imageOutputSize') }}</p>\n <div class=\"vie-resize-dimensions\">\n <div class=\"vie-resize-input\">\n <label class=\"vie-resize-input__label\">{{ t('width') }}</label>\n <div class=\"vie-resize-input__field-wrapper\">\n <input\n type=\"number\"\n class=\"vie-resize-input__field\"\n :value=\"displayWidth\"\n min=\"1\"\n @input=\"onWidthChange(($event.target as HTMLInputElement).value)\"\n />\n <span class=\"vie-resize-input__unit\">px</span>\n </div>\n </div>\n <button\n class=\"vie-resize-lock\"\n :class=\"{ 'vie-resize-lock--active': lockAspect }\"\n @click=\"lockAspect = !lockAspect\"\n :title=\"t('lockAspectRatio')\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path v-if=\"lockAspect\" d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n <path v-else d=\"M7 11V7a5 5 0 0 1 9.9-1\" />\n </svg>\n </button>\n <div class=\"vie-resize-input\">\n <label class=\"vie-resize-input__label\">{{ t('height') }}</label>\n <div class=\"vie-resize-input__field-wrapper\">\n <input\n type=\"number\"\n class=\"vie-resize-input__field\"\n :value=\"displayHeight\"\n min=\"1\"\n @input=\"onHeightChange(($event.target as HTMLInputElement).value)\"\n />\n <span class=\"vie-resize-input__unit\">px</span>\n </div>\n </div>\n </div>\n <p class=\"vie-resize-hint\">{{ t('resizeHint') }}</p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, inject } from 'vue'\nimport type { LocaleStrings } from '../../locale/en'\nimport { useEditor, LOCALE_KEY } from '../../engine/useEditorEngine'\n\nconst engine = useEditor()\nconst t = inject(LOCALE_KEY, (key: string) => key)\n\nconst lockAspect = ref(true)\n\nconst sourceAspectRatio = computed(() => {\n const img = engine.sourceImage.value\n if (!img) return 1\n const crop = engine.state.crop\n return (img.naturalWidth * crop.width) / (img.naturalHeight * crop.height)\n})\n\nconst displayWidth = computed(() => {\n if (engine.state.resize.width) return engine.state.resize.width\n const img = engine.sourceImage.value\n if (!img) return 0\n return Math.round(img.naturalWidth * engine.state.crop.width)\n})\n\nconst displayHeight = computed(() => {\n if (engine.state.resize.height) return engine.state.resize.height\n const img = engine.sourceImage.value\n if (!img) return 0\n return Math.round(img.naturalHeight * engine.state.crop.height)\n})\n\nfunction onWidthChange(val: string) {\n const w = parseInt(val, 10)\n if (!w || w < 1) return\n engine.updateState((s) => {\n s.resize.width = w\n if (lockAspect.value) {\n s.resize.height = Math.round(w / sourceAspectRatio.value)\n }\n })\n}\n\nfunction onHeightChange(val: string) {\n const h = parseInt(val, 10)\n if (!h || h < 1) return\n engine.updateState((s) => {\n s.resize.height = h\n if (lockAspect.value) {\n s.resize.width = Math.round(h * sourceAspectRatio.value)\n }\n })\n}\n\n</script>\n","import type { EditorPlugin } from '../../types'\nimport ResizeControls from './ResizeControls.vue'\n\nconst resizeIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"15 3 21 3 21 9\" />\n <polyline points=\"9 21 3 21 3 15\" />\n <line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\" />\n <line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\" />\n</svg>`\n\nexport function ResizePlugin(): EditorPlugin {\n return {\n id: 'resize',\n icon: resizeIcon,\n labelKey: 'resize',\n controls: ResizeControls,\n }\n}\n","<template>\n <div\n ref=\"shellRef\"\n :class=\"[\n 'vie-editor',\n 'vie-shell',\n isHorizontal ? 'vie-shell--horizontal' : '',\n options.theme === 'dark' ? 'vie-theme-dark' : '',\n ]\"\n :dir=\"options.dir || 'ltr'\"\n @keydown=\"onKeydown\"\n tabindex=\"0\"\n >\n <template v-if=\"isHorizontal\">\n <!-- Horizontal layout: tabs on left, main content right -->\n <EditorTabs />\n <div class=\"vie-main\">\n <EditorToolbar @done=\"onDone\" :processing=\"processing\" />\n <EditorCanvas />\n <EditorControlPanel />\n </div>\n </template>\n <template v-else>\n <!-- Vertical layout (default): top to bottom -->\n <EditorToolbar @done=\"onDone\" :processing=\"processing\" />\n <EditorCanvas />\n <EditorControlPanel />\n <EditorTabs />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, provide, onMounted, onBeforeUnmount, watch } from 'vue'\nimport type { EditorOptions, ProcessResult } from '../types'\nimport { createEditorEngine, provideEditor, LOCALE_KEY, type EditorEngine } from '../engine/useEditorEngine'\nimport { ImageProcessor } from '../core/ImageProcessor'\nimport { en } from '../locale/en'\nimport { ar } from '../locale/ar'\nimport type { LocaleStrings } from '../locale/en'\nimport EditorToolbar from './EditorToolbar.vue'\nimport EditorCanvas from './EditorCanvas.vue'\nimport EditorTabs from './EditorTabs.vue'\nimport EditorControlPanel from './EditorControlPanel.vue'\n\nconst props = defineProps<{\n options: EditorOptions\n}>()\n\nconst emit = defineEmits<{\n process: [result: ProcessResult]\n close: []\n}>()\n\n// Create and provide engine\nconst engine: EditorEngine = createEditorEngine(props.options)\nprovideEditor(engine)\n\n// Provide reactive locale function — re-evaluates when options.locale changes\nconst locales: Record<string, LocaleStrings> = { en, ar }\n\nconst tFn = computed(() => {\n const locale = props.options.locale || 'en'\n return (key: keyof LocaleStrings): string => {\n return locales[locale]?.[key] || locales.en[key] || key\n }\n})\nprovide(LOCALE_KEY, (key: string) => tFn.value(key as keyof LocaleStrings))\n\n// Register plugins based on options\nimport { CropPlugin } from '../plugins/crop'\nimport { FinetunePlugin } from '../plugins/finetune'\nimport { FilterPlugin } from '../plugins/filter'\nimport { StickerPlugin } from '../plugins/sticker'\nimport { FramePlugin } from '../plugins/frame'\nimport { FillPlugin } from '../plugins/fill'\nimport { ResizePlugin } from '../plugins/resize'\n\nconst pluginMap: Record<string, () => void> = {\n crop: () => engine.registerPlugin(CropPlugin()),\n finetune: () => engine.registerPlugin(FinetunePlugin()),\n filter: () => engine.registerPlugin(FilterPlugin()),\n sticker: () => engine.registerPlugin(StickerPlugin()),\n frame: () => engine.registerPlugin(FramePlugin()),\n fill: () => engine.registerPlugin(FillPlugin()),\n resize: () => engine.registerPlugin(ResizePlugin()),\n}\n\nconst enabledPlugins = props.options.plugins || ['crop', 'finetune', 'filter', 'sticker', 'frame', 'resize']\nfor (const id of enabledPlugins) {\n if (pluginMap[id]) pluginMap[id]()\n}\n\n// Register custom (external) plugins\nif (props.options.customPlugins) {\n for (const plugin of props.options.customPlugins) {\n engine.registerPlugin(plugin)\n }\n}\n\n// Responsive layout detection\nconst shellRef = ref<HTMLElement | null>(null)\nconst isHorizontal = ref(false)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n if (!shellRef.value) return\n resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect\n isHorizontal.value = width > height && width > 700\n }\n })\n resizeObserver.observe(shellRef.value)\n\n // Focus for keyboard shortcuts\n shellRef.value.focus()\n})\n\nonBeforeUnmount(() => {\n resizeObserver?.disconnect()\n})\n\n// Keyboard shortcuts\nfunction onKeydown(e: KeyboardEvent) {\n if (e.ctrlKey || e.metaKey) {\n if (e.key === 'z' && !e.shiftKey) {\n e.preventDefault()\n engine.undo()\n } else if ((e.key === 'z' && e.shiftKey) || e.key === 'y') {\n e.preventDefault()\n engine.redo()\n }\n } else if (e.key === 'Escape') {\n emit('close')\n }\n}\n\n// Export / Done\nconst processing = ref(false)\n\nasync function onDone() {\n if (!engine.sourceImage.value || processing.value) return\n\n processing.value = true\n try {\n const processor = new ImageProcessor()\n const result = await processor.process(\n engine.sourceImage.value,\n engine.state,\n {\n mimeType: props.options.outputMimeType || 'image/jpeg',\n quality: props.options.outputQuality ?? 0.92,\n maxCanvasPixels: props.options.maxCanvasPixels,\n },\n )\n emit('process', result)\n } finally {\n processing.value = false\n }\n}\n</script>\n","<template>\n <Teleport to=\"body\">\n <Transition name=\"vie-modal\">\n <div\n class=\"vie-modal-backdrop\"\n role=\"dialog\"\n aria-modal=\"true\"\n @click.self=\"onBackdropClick\"\n @keydown.esc=\"onClose\"\n @keydown.tab=\"trapFocus\"\n ref=\"backdropRef\"\n >\n <div class=\"vie-modal-container\">\n <EditorShell\n :options=\"editorOptions\"\n @process=\"$emit('process', $event)\"\n @close=\"onClose\"\n />\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount, nextTick } from 'vue'\nimport type { EditorOptions, ProcessResult, ImageState } from '../types'\nimport EditorShell from './EditorShell.vue'\n\nconst props = withDefaults(defineProps<{\n src: string | File | Blob\n plugins?: string[]\n locale?: 'en' | 'ar'\n dir?: 'ltr' | 'rtl'\n theme?: 'dark' | 'light'\n outputMimeType?: 'image/jpeg' | 'image/png' | 'image/webp'\n outputQuality?: number\n maxCanvasPixels?: number\n initialState?: Partial<ImageState>\n}>(), {\n plugins: () => ['crop', 'finetune', 'filter', 'sticker', 'frame', 'resize'],\n locale: 'en',\n dir: 'ltr',\n theme: 'light',\n outputQuality: 0.92,\n})\n\nconst emit = defineEmits<{\n process: [result: ProcessResult]\n close: []\n}>()\n\nconst backdropRef = ref<HTMLElement | null>(null)\n\nconst editorOptions = computed<EditorOptions>(() => ({\n src: props.src,\n plugins: props.plugins,\n locale: props.locale,\n dir: props.dir,\n theme: props.theme,\n outputMimeType: props.outputMimeType,\n outputQuality: props.outputQuality,\n maxCanvasPixels: props.maxCanvasPixels,\n initialState: props.initialState,\n}))\n\nfunction onClose() {\n emit('close')\n}\n\nfunction onBackdropClick() {\n if (window.confirm('Close editor? Unsaved changes will be lost.')) {\n onClose()\n }\n}\n\n/** Focus trap: keep Tab/Shift+Tab within the modal */\nfunction trapFocus(e: KeyboardEvent) {\n const container = backdropRef.value\n if (!container) return\n\n const focusable = container.querySelectorAll<HTMLElement>(\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n if (focusable.length === 0) return\n\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault()\n last.focus()\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault()\n first.focus()\n }\n }\n}\n\n// Lock body scroll when modal is open\nlet originalOverflow = ''\n\nonMounted(async () => {\n originalOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n // Auto-focus the modal container after mount\n await nextTick()\n backdropRef.value?.querySelector<HTMLElement>('[tabindex=\"0\"]')?.focus()\n})\n\nonBeforeUnmount(() => {\n document.body.style.overflow = originalOverflow\n})\n</script>\n","import type { ImageState } from '../types'\r\nimport { createDefaultImageState } from '../types'\r\n\r\n/**\r\n * Serialize editor state to a JSON string.\r\n * Safe to store in localStorage, a database, or send over network.\r\n */\r\nexport function serializeState(state: ImageState): string {\r\n return JSON.stringify(state)\r\n}\r\n\r\n/**\r\n * Deserialize a JSON string back to an ImageState.\r\n * Validates the basic structure before returning.\r\n */\r\nexport function deserializeState(json: string): Partial<ImageState> {\r\n const parsed = JSON.parse(json)\r\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\r\n throw new Error('Invalid state: expected an object')\r\n }\r\n\r\n // Sanitize sticker URLs to prevent javascript: injection\r\n if (Array.isArray(parsed.stickers)) {\r\n for (const sticker of parsed.stickers) {\r\n if (typeof sticker.src === 'string') {\r\n const lower = sticker.src.toLowerCase().trim()\r\n if (lower.startsWith('javascript:') || lower.startsWith('vbscript:')) {\r\n sticker.src = ''\r\n }\r\n }\r\n }\r\n }\r\n\r\n return parsed as Partial<ImageState>\r\n}\r\n\r\n/**\r\n * Create a full ImageState from a partial state, filling in defaults.\r\n */\r\nexport function mergeWithDefaults(partial: Partial<ImageState>): ImageState {\r\n const defaults = createDefaultImageState()\r\n return {\r\n ...defaults,\r\n ...partial,\r\n crop: { ...defaults.crop, ...(partial.crop || {}) },\r\n finetune: { ...defaults.finetune, ...(partial.finetune || {}) },\r\n filter: { ...defaults.filter, ...(partial.filter || {}) },\r\n frame: { ...defaults.frame, ...(partial.frame || {}) },\r\n resize: { ...defaults.resize, ...(partial.resize || {}) },\r\n stickers: partial.stickers || defaults.stickers,\r\n backgroundColor: partial.backgroundColor || defaults.backgroundColor,\r\n }\r\n}\r\n","// Styles\nimport './styles/editor.css'\n\n// Public API\nexport { default as ImageEditorModal } from './components/EditorModal.vue'\nexport { default as ImageEditorShell } from './components/EditorShell.vue'\n\n// Composables\nexport { createEditorEngine, useEditor, LOCALE_KEY } from './engine/useEditorEngine'\nexport type { EditorEngine } from './engine/useEditorEngine'\n\n// Plugins\nexport { CropPlugin } from './plugins/crop'\nexport { FinetunePlugin } from './plugins/finetune'\nexport { FilterPlugin } from './plugins/filter'\nexport { StickerPlugin } from './plugins/sticker'\nexport { FramePlugin } from './plugins/frame'\nexport { FillPlugin } from './plugins/fill'\nexport { ResizePlugin } from './plugins/resize'\n\n// Plugin utilities\nexport { filterPresets } from './plugins/filter/filterPresets'\nexport { finetuneEffects } from './plugins/finetune/effects'\nexport { defaultStickerCategories } from './plugins/sticker/defaultStickers'\nexport { frameStyles } from './plugins/frame/frameStyles'\n\n// Core utilities\nexport { ImageProcessor } from './core/ImageProcessor'\nexport { CanvasRenderer } from './core/CanvasRenderer'\nexport { History } from './core/History'\nexport { loadImage } from './core/ImageReader'\nexport { serializeState, deserializeState, mergeWithDefaults } from './core/StatePersistence'\nexport {\n applyColorMatrix,\n applyGamma,\n applyVignette,\n applyClarity,\n brightnessMatrix,\n contrastMatrix,\n saturationMatrix,\n exposureMatrix,\n temperatureMatrix,\n composeMatrices,\n multiplyMatrices,\n IDENTITY_MATRIX,\n} from './core/ColorMatrix'\n\n// Types\nexport type {\n ImageState,\n CropState,\n FinetuneState,\n FilterState,\n StickerInstance,\n FrameState,\n ResizeState,\n EditorPlugin,\n PluginRenderContext,\n EditorOptions,\n ProcessResult,\n} from './types'\n\nexport { createDefaultImageState } from './types'\n\n// Locale\nexport { en } from './locale/en'\nexport { ar } from './locale/ar'\nexport type { LocaleStrings } from './locale/en'\n\n// Vue plugin install function\nimport type { App } from 'vue'\nimport ImageEditorModal from './components/EditorModal.vue'\n\nexport function install(app: App): void {\n app.component('ImageEditorModal', ImageEditorModal)\n}\n\nexport default { install }\n"],"names":["createDefaultImageState","deepClone","state","History","maxSize","loadImage","src","url","toObjectUrl","resolve","reject","img","EDITOR_KEY","LOCALE_KEY","cloneState","toRaw","createEditorEngine","options","reactive","initialState","history","sourceImage","ref","loading","error","loadGeneration","plugins","shallowRef","activePluginId","zoom","onRender","cropDragPan","historyVersion","activePlugin","computed","p","canUndo","canRedo","hasEdits","load","gen","requestRender","e","registerPlugin","plugin","markRaw","unregisterPlugin","id","_a","setActivePlugin","prev","next","updateState","updater","undo","redo","revert","current","setZoom","level","readonly","provideEditor","engine","provide","useEditor","inject","IDENTITY_MATRIX","multiplyMatrices","a","b","result","row","col","sum","k","composeMatrices","matrices","i","brightnessMatrix","v","contrastMatrix","f","o","saturationMatrix","s","invS","r","g","exposureMatrix","temperatureMatrix","applyColorMatrix","imageData","matrix","d","len","m0","m1","m2","m3","m4","m5","m6","m7","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","clamp","applyGamma","gamma","invGamma","lut","applyVignette","strength","width","height","cx","cy","maxDist","y","x","dx","dy","dist","factor","applyClarity","data","amount","orig","c","center","laplacian","DEFAULT_MAX_PIXELS","ImageProcessor","source","mimeType","quality","maxCanvasPixels","crop","finetune","cropX","cropY","cropW","cropH","outputW","outputH","resizeW","resizeH","fit","scale","totalPixels","absRotation","canvasW","canvasH","cos","sin","canvas","ctx","bg","m","t","interpolated","combined","drawFrame","sticker","drawSticker","style","size","color","radius","w","h","frameW","colorStr","roundRect","inset","hookLen","topFrame","bottomFrame","fontSize","en","ar","_createElementBlock","_normalizeClass","__props","_cache","$event","$emit","$slots","_openBlock","_hoisted_2","_renderSlot","_ctx","_hoisted_3","_toDisplayString","key","_hoisted_1","_createElementVNode","_createVNode","IconButton","_unref","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","CanvasRenderer","image","dpr","getState","filter","cacheKey","ratio","pw","ph","pCtx","cw","ch","padding","availW","availH","showCropped","previewSrc","displayW","displayH","imgX","imgY","vp","cropNatW","cropNatH","baseScale","resizeRatio","targetW","targetH","srcTotalW","srcTotalH","outW","outH","label","labelX","labelY","pillW","pillH","frame","stickers","firstKey","adjX","adjY","adjW","adjH","wrapperRef","canvasRef","canvasRect","wrapperSize","renderer","resizeObserver","dprMediaQuery","dprChangeHandler","updateCanvasRect","onMounted","entries","entry","setupDprWatch","rect","imageRect","zoomTarget","zoomCurrent","panTargetX","panTargetY","panCurrentX","panCurrentY","watch","zoomAnimating","syncPan","pan","onWheel","newZoomTarget","animateZoom","zDiff","pxDiff","pyDiff","ease","isPanning","canPan","onPanStart","startX","startY","startPanX","startPanY","onPanMove","ev","onPanEnd","lastPinchDist","lastPinchZoom","getTouchDistance","t1","t2","onTouchStart","onTouchMove","onTouchEnd","_e","onBeforeUnmount","__expose","_createBlock","_resolveDynamicComponent","iconRefs","ALLOWED_TAGS","ALLOWED_ATTRS","sanitizeSvgString","html","svg","clean","el","children","child","attr","renderIcons","idx","onUpdated","_Fragment","_Transition","labelId","props","emit","__emit","trackRef","dragging","normalizedValue","normalizedBase","normalizedTicks","thumbPosition","fillStyle","start","end","displayValue","valueFromEvent","isRtl","value","onPointerDown","onMove","onUp","onDoubleClick","onKeydown","newVal","_renderList","tick","open","dropdownRef","selectedLabel","found","select","onClickOutside","isOpen","option","cropPresets","presetLabel","preset","ratioStr","dirKey","initialCropApplied","aspect","sw","sh","presetOptions","currentPresetValue","onPresetChange","val","newAspectRatio","currentW","currentH","newW","newH","quadrant","initialRotation","initialQuadrant","getFineTuneRad","rotationDeg","onRotationChange","deg","rotateLeft","fineTune","rotateRight","toggleFlipX","toggleFlipY","Dropdown","Slider","handleSize","edgeHandleThickness","edgeHandleLength","maskId","svgWidth","svgHeight","cropRect","cr","cornerHandles","hs","edgeHandles","dragHandle","dragStart","cropStart","hasUserAdjustedCrop","activeDragCleanup","target","handle","captureEl","cs","aspectRatio","rawDx","rawDy","newCropX","clamp01","newCropY","panX","panY","newX","newY","deltaW","deltaH","cleanup","showConfirmButton","onConfirmCrop","currentIdx","min","max","_hoisted_13","cropIcon","CropPlugin","CropControls","CropOverlay","finetuneEffects","onUpdate","effect","finetuneIcon","FinetunePlugin","FinetuneControls","filterPresets","originalThumbRef","thumbRefs","generatedThumbs","observer","setThumbRef","selectFilter","onIntensityChange","generateThumb","generateOriginalThumb","setupObserver","resetThumbnails","onUnmounted","filterIcon","FilterPlugin","FilterControls","defaultStickerCategories","stateMap","getSelectedStickerId","engineState","selectedStickerId","activeCategory","currentStickers","cat","addSticker","offset","deleteSelected","st","rotateLineLen","rotateHandleR","svgRef","selectedId","dragType","dragHandleId","onPointerMove","onPointerUp","displayStickers","sel","half","dragStartClient","dragStartSticker","startDrag","stickerId","type","handleId","ds","sCenterX","sCenterY","angle","onKeyDown","stickerIcon","StickerPlugin","StickerControls","StickerOverlay","frameStyles","defaultFrameColors","selectStyle","onSizeChange","selectColor","isActiveColor","rgbaToCSS","_hoisted_8","_normalizeStyle","frameIcon","FramePlugin","FrameControls","fillColors","fillIcon","FillPlugin","FillControls","lockAspect","sourceAspectRatio","displayWidth","displayHeight","onWidthChange","onHeightChange","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_hoisted_16","resizeIcon","ResizePlugin","ResizeControls","locales","tFn","locale","pluginMap","enabledPlugins","shellRef","isHorizontal","processing","onDone","EditorTabs","EditorToolbar","EditorCanvas","EditorControlPanel","backdropRef","editorOptions","onClose","onBackdropClick","trapFocus","container","focusable","first","last","originalOverflow","nextTick","_b","_Teleport","EditorShell","serializeState","deserializeState","json","parsed","lower","mergeWithDefaults","partial","defaults","install","app","ImageEditorModal","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vuedit-image-editor.es.js","sources":["../src/i18n/en.ts","../src/i18n/ar.ts","../src/i18n/index.ts","../src/components/canvas/FabricCanvas.vue","../src/components/toolbar/ToolButton.vue","../src/icons/CropIcon.vue","../src/icons/RotateIcon.vue","../src/icons/FilterIcon.vue","../src/icons/TextIcon.vue","../src/icons/DrawIcon.vue","../src/icons/ShapeIcon.vue","../src/icons/ResizeIcon.vue","../src/icons/UndoIcon.vue","../src/icons/RedoIcon.vue","../src/icons/ZoomInIcon.vue","../src/icons/ZoomOutIcon.vue","../src/icons/FlipHIcon.vue","../src/icons/FlipVIcon.vue","../src/icons/RotateLeftIcon.vue","../src/icons/RotateRightIcon.vue","../src/components/toolbar/EditorToolbar.vue","../src/components/shared/ConfirmBar.vue","../src/components/panels/CropPanel.vue","../src/components/shared/RangeSlider.vue","../src/components/panels/RotateFlipPanel.vue","../src/components/panels/FilterPanel.vue","../src/components/shared/ColorPicker.vue","../src/components/panels/TextPanel.vue","../src/components/panels/DrawPanel.vue","../src/components/panels/ShapePanel.vue","../src/components/panels/ResizePanel.vue","../node_modules/fabric/dist/index.min.mjs","../src/composables/useFabricCanvas.ts","../src/composables/useHistory.ts","../src/composables/useEditorState.ts","../src/composables/useCrop.ts","../src/composables/useRotateFlip.ts","../src/composables/useFilters.ts","../src/composables/useText.ts","../src/composables/useDraw.ts","../src/composables/useShapes.ts","../src/composables/useResize.ts","../src/composables/useZoom.ts","../src/components/VueditImageEditor.vue","../src/components/VueditImageEditorModal.vue"],"sourcesContent":["const en = {\n crop: 'Crop',\n rotate: 'Rotate',\n filter: 'Filter',\n text: 'Text',\n draw: 'Draw',\n shape: 'Shape',\n resize: 'Resize',\n\n save: 'Save',\n cancel: 'Cancel',\n apply: 'Apply',\n reset: 'Reset',\n undo: 'Undo',\n redo: 'Redo',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n resetZoom: 'Reset Zoom',\n\n freeform: 'Freeform',\n original: 'Original',\n\n rotateLeft: 'Rotate Left',\n rotateRight: 'Rotate Right',\n flipHorizontal: 'Flip Horizontal',\n flipVertical: 'Flip Vertical',\n degrees: 'Degrees',\n\n brightness: 'Brightness',\n contrast: 'Contrast',\n saturation: 'Saturation',\n exposure: 'Exposure',\n blur: 'Blur',\n grayscale: 'Grayscale',\n sepia: 'Sepia',\n invert: 'Invert',\n\n addText: 'Add Text',\n fontFamily: 'Font',\n fontSize: 'Size',\n fontColor: 'Color',\n bold: 'Bold',\n italic: 'Italic',\n\n brushSize: 'Brush Size',\n brushColor: 'Color',\n opacity: 'Opacity',\n\n rectangle: 'Rectangle',\n circle: 'Circle',\n arrow: 'Arrow',\n line: 'Line',\n strokeColor: 'Stroke',\n fillColor: 'Fill',\n strokeWidth: 'Stroke Width',\n\n width: 'Width',\n height: 'Height',\n lockAspectRatio: 'Lock aspect ratio',\n pixels: 'px',\n} as const\n\nexport type TranslationKeys = keyof typeof en\n\nexport default en\n","const ar = {\n crop: 'قص',\n rotate: 'تدوير',\n filter: 'فلتر',\n text: 'نص',\n draw: 'رسم',\n shape: 'شكل',\n resize: 'تغيير الحجم',\n\n save: 'حفظ',\n cancel: 'إلغاء',\n apply: 'تطبيق',\n reset: 'إعادة تعيين',\n undo: 'تراجع',\n redo: 'إعادة',\n zoomIn: 'تكبير',\n zoomOut: 'تصغير',\n resetZoom: 'إعادة تعيين التكبير',\n\n freeform: 'حر',\n original: 'أصلي',\n\n rotateLeft: 'تدوير لليسار',\n rotateRight: 'تدوير لليمين',\n flipHorizontal: 'قلب أفقي',\n flipVertical: 'قلب عمودي',\n degrees: 'درجة',\n\n brightness: 'السطوع',\n contrast: 'التباين',\n saturation: 'التشبع',\n exposure: 'التعريض',\n blur: 'ضبابية',\n grayscale: 'رمادي',\n sepia: 'بني داكن',\n invert: 'عكس',\n\n addText: 'إضافة نص',\n fontFamily: 'الخط',\n fontSize: 'الحجم',\n fontColor: 'اللون',\n bold: 'غامق',\n italic: 'مائل',\n\n brushSize: 'حجم الفرشاة',\n brushColor: 'اللون',\n opacity: 'الشفافية',\n\n rectangle: 'مستطيل',\n circle: 'دائرة',\n arrow: 'سهم',\n line: 'خط',\n strokeColor: 'لون الحد',\n fillColor: 'لون التعبئة',\n strokeWidth: 'عرض الحد',\n\n width: 'العرض',\n height: 'الارتفاع',\n lockAspectRatio: 'قفل نسبة العرض للارتفاع',\n pixels: 'بكسل',\n} as const\n\nexport default ar\n","import en, { type TranslationKeys } from './en'\nimport ar from './ar'\n\nexport type VueditTranslations = Record<TranslationKeys, string>\n\nconst locales: Record<string, VueditTranslations> = { en, ar }\n\nexport function resolveTranslations(\n locale: string | VueditTranslations\n): (key: TranslationKeys) => string {\n const translations: VueditTranslations =\n typeof locale === 'string' ? locales[locale] || en : locale\n\n return (key: TranslationKeys) => translations[key] || en[key] || key\n}\n\nexport function mergeTranslations(\n base: Partial<VueditTranslations>,\n overrides: Partial<VueditTranslations>\n): VueditTranslations {\n return { ...en, ...base, ...overrides }\n}\n\nexport { en as defaultTranslations }\nexport type { TranslationKeys }\n","<script lang=\"ts\" setup>\nimport { ref, onMounted, onBeforeUnmount } from 'vue'\n\nconst canvasEl = ref<HTMLCanvasElement | null>(null)\nconst containerEl = ref<HTMLDivElement | null>(null)\n\ndefineExpose({\n canvasEl,\n containerEl,\n})\n</script>\n\n<template>\n <div ref=\"containerEl\" class=\"vuedit-canvas-area\">\n <canvas ref=\"canvasEl\" />\n </div>\n</template>\n","<script lang=\"ts\" setup>\ndefineProps<{\n label: string\n active?: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'click'): void\n}>()\n</script>\n\n<template>\n <button\n class=\"vuedit-tool-btn\"\n :class=\"{ 'vuedit-tool-btn--active': active }\"\n @click=\"emit('click')\"\n >\n <span class=\"vuedit-tool-btn__icon\">\n <slot />\n </span>\n <span class=\"vuedit-tool-btn__label\">{{ label }}</span>\n </button>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 2v14a2 2 0 0 0 2 2h14\"/><path d=\"M18 22V8a2 2 0 0 0-2-2H2\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\"/><path d=\"M21 3v5h-5\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"/><path d=\"M2 12h20\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"4 7 4 4 20 4 20 7\"/><line x1=\"9\" y1=\"20\" x2=\"15\" y2=\"20\"/><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 19l7-7 3 3-7 7-3-3z\"/><path d=\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\"/><path d=\"M2 2l7.586 7.586\"/><circle cx=\"11\" cy=\"11\" r=\"2\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 3 21 3 21 9\"/><polyline points=\"9 21 3 21 3 15\"/><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"/><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"1 4 1 10 7 10\"/><path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"23 4 23 10 17 10\"/><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"/><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h3\"/><path d=\"M16 3h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-3\"/><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\" stroke-dasharray=\"2 2\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v3\"/><path d=\"M21 16v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-3\"/><line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" stroke-dasharray=\"2 2\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"1 4 1 10 7 10\"/><path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"/></svg>\n</template>\n","<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"23 4 23 10 17 10\"/><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"/></svg>\n</template>\n","<script lang=\"ts\" setup>\nimport type { ToolType } from '@/types'\nimport type { TranslationKeys } from '@/i18n/en'\nimport ToolButton from './ToolButton.vue'\nimport {\n CropIcon,\n RotateIcon,\n FilterIcon,\n TextIcon,\n DrawIcon,\n ShapeIcon,\n ResizeIcon,\n} from '@/icons'\n\ndefineProps<{\n tools: ToolType[]\n activeTool: ToolType | null\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'selectTool', tool: ToolType): void\n}>()\n\nconst iconMap: Record<ToolType, any> = {\n crop: CropIcon,\n rotate: RotateIcon,\n filter: FilterIcon,\n text: TextIcon,\n draw: DrawIcon,\n shape: ShapeIcon,\n resize: ResizeIcon,\n}\n\nconst labelMap: Record<ToolType, TranslationKeys> = {\n crop: 'crop',\n rotate: 'rotate',\n filter: 'filter',\n text: 'text',\n draw: 'draw',\n shape: 'shape',\n resize: 'resize',\n}\n</script>\n\n<template>\n <div class=\"vuedit-toolbar\">\n <ToolButton\n v-for=\"tool in tools\"\n :key=\"tool\"\n :label=\"t(labelMap[tool])\"\n :active=\"activeTool === tool\"\n @click=\"emit('selectTool', tool)\"\n >\n <component :is=\"iconMap[tool]\" />\n </ToolButton>\n </div>\n</template>\n","<script lang=\"ts\" setup>\ndefineProps<{\n applyLabel?: string\n cancelLabel?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'apply'): void\n (e: 'cancel'): void\n}>()\n</script>\n\n<template>\n <div class=\"vuedit-confirm-bar\">\n <button class=\"vuedit-btn vuedit-btn--secondary\" @click=\"emit('cancel')\">\n {{ cancelLabel || 'Cancel' }}\n </button>\n <button class=\"vuedit-btn vuedit-btn--primary\" @click=\"emit('apply')\">\n {{ applyLabel || 'Apply' }}\n </button>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { CropAspectRatio } from '@/types'\nimport type { TranslationKeys } from '@/i18n/en'\nimport ConfirmBar from '../shared/ConfirmBar.vue'\n\ndefineProps<{\n aspectRatios: CropAspectRatio[]\n selectedRatio: CropAspectRatio | null\n isCropping: boolean\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'selectRatio', ratio: CropAspectRatio): void\n (e: 'apply'): void\n (e: 'cancel'): void\n}>()\n</script>\n\n<template>\n <div>\n <div class=\"vuedit-panel__title\">{{ t('crop') }}</div>\n <div class=\"vuedit-panel__section\">\n <div class=\"vuedit-aspect-ratios\">\n <button\n v-for=\"ratio in aspectRatios\"\n :key=\"ratio.label\"\n class=\"vuedit-aspect-chip\"\n :class=\"{ 'vuedit-aspect-chip--active': selectedRatio?.label === ratio.label }\"\n @click=\"emit('selectRatio', ratio)\"\n >\n {{ ratio.label }}\n </button>\n </div>\n </div>\n <ConfirmBar\n v-if=\"isCropping\"\n :apply-label=\"t('apply')\"\n :cancel-label=\"t('cancel')\"\n @apply=\"emit('apply')\"\n @cancel=\"emit('cancel')\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nconst props = defineProps<{\n label: string\n modelValue: number\n min?: number\n max?: number\n step?: number\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: number): void\n}>()\n\nfunction onInput(event: Event) {\n emit('update:modelValue', parseFloat((event.target as HTMLInputElement).value))\n}\n</script>\n\n<template>\n <div class=\"vuedit-range\">\n <div class=\"vuedit-range__header\">\n <span class=\"vuedit-range__label\">{{ label }}</span>\n <span class=\"vuedit-range__value\">{{ modelValue }}</span>\n </div>\n <input\n type=\"range\"\n :value=\"modelValue\"\n :min=\"min ?? -1\"\n :max=\"max ?? 1\"\n :step=\"step ?? 0.01\"\n @input=\"onInput\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { TranslationKeys } from '@/i18n/en'\nimport RangeSlider from '../shared/RangeSlider.vue'\nimport { RotateLeftIcon, RotateRightIcon, FlipHIcon, FlipVIcon } from '@/icons'\n\ndefineProps<{\n rotation: number\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'rotateLeft'): void\n (e: 'rotateRight'): void\n (e: 'flipH'): void\n (e: 'flipV'): void\n (e: 'setRotation', deg: number): void\n}>()\n</script>\n\n<template>\n <div>\n <div class=\"vuedit-panel__title\">{{ t('rotate') }}</div>\n\n <div class=\"vuedit-panel__section\">\n <div class=\"vuedit-toggle-group\">\n <button class=\"vuedit-toggle\" :title=\"t('rotateLeft')\" @click=\"emit('rotateLeft')\">\n <RotateLeftIcon style=\"width:16px;height:16px\" />\n </button>\n <button class=\"vuedit-toggle\" :title=\"t('rotateRight')\" @click=\"emit('rotateRight')\">\n <RotateRightIcon style=\"width:16px;height:16px\" />\n </button>\n <button class=\"vuedit-toggle\" :title=\"t('flipHorizontal')\" @click=\"emit('flipH')\">\n <FlipHIcon style=\"width:16px;height:16px\" />\n </button>\n <button class=\"vuedit-toggle\" :title=\"t('flipVertical')\" @click=\"emit('flipV')\">\n <FlipVIcon style=\"width:16px;height:16px\" />\n </button>\n </div>\n </div>\n\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('degrees')\"\n :model-value=\"rotation\"\n :min=\"-180\"\n :max=\"180\"\n :step=\"1\"\n @update:model-value=\"emit('setRotation', $event)\"\n />\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { FilterState } from '@/types'\nimport type { TranslationKeys } from '@/i18n/en'\nimport RangeSlider from '../shared/RangeSlider.vue'\n\ndefineProps<{\n state: FilterState\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update', key: keyof FilterState, value: number | boolean): void\n (e: 'reset'): void\n (e: 'commit'): void\n}>()\n</script>\n\n<template>\n <div>\n <div class=\"vuedit-panel__title\">{{ t('filter') }}</div>\n\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('brightness')\"\n :model-value=\"state.brightness\"\n :min=\"-1\" :max=\"1\" :step=\"0.01\"\n @update:model-value=\"emit('update', 'brightness', $event)\"\n />\n </div>\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('contrast')\"\n :model-value=\"state.contrast\"\n :min=\"-1\" :max=\"1\" :step=\"0.01\"\n @update:model-value=\"emit('update', 'contrast', $event)\"\n />\n </div>\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('saturation')\"\n :model-value=\"state.saturation\"\n :min=\"-1\" :max=\"1\" :step=\"0.01\"\n @update:model-value=\"emit('update', 'saturation', $event)\"\n />\n </div>\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('exposure')\"\n :model-value=\"state.exposure\"\n :min=\"-1\" :max=\"1\" :step=\"0.01\"\n @update:model-value=\"emit('update', 'exposure', $event)\"\n />\n </div>\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('blur')\"\n :model-value=\"state.blur\"\n :min=\"0\" :max=\"1\" :step=\"0.01\"\n @update:model-value=\"emit('update', 'blur', $event)\"\n />\n </div>\n\n <div class=\"vuedit-panel__section\">\n <div class=\"vuedit-toggle-group\">\n <button\n class=\"vuedit-toggle\"\n :class=\"{ 'vuedit-toggle--active': state.grayscale }\"\n @click=\"emit('update', 'grayscale', !state.grayscale)\"\n >{{ t('grayscale') }}</button>\n <button\n class=\"vuedit-toggle\"\n :class=\"{ 'vuedit-toggle--active': state.sepia }\"\n @click=\"emit('update', 'sepia', !state.sepia)\"\n >{{ t('sepia') }}</button>\n <button\n class=\"vuedit-toggle\"\n :class=\"{ 'vuedit-toggle--active': state.invert }\"\n @click=\"emit('update', 'invert', !state.invert)\"\n >{{ t('invert') }}</button>\n </div>\n </div>\n\n <div class=\"vuedit-confirm-bar\">\n <button class=\"vuedit-btn vuedit-btn--secondary\" @click=\"emit('reset')\">\n {{ t('reset') }}\n </button>\n <button class=\"vuedit-btn vuedit-btn--primary\" @click=\"emit('commit')\">\n {{ t('apply') }}\n </button>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nconst props = defineProps<{\n modelValue: string\n label?: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst presets = [\n '#ffffff', '#000000', '#ff0000', '#ff6600', '#ffcc00',\n '#33cc33', '#0099ff', '#6633cc', '#ff3399', '#999999',\n]\n</script>\n\n<template>\n <div class=\"vuedit-panel__section\">\n <label v-if=\"label\" class=\"vuedit-panel__label\">{{ label }}</label>\n <div class=\"vuedit-colors\">\n <button\n v-for=\"color in presets\"\n :key=\"color\"\n class=\"vuedit-color-swatch\"\n :class=\"{ 'vuedit-color-swatch--active': modelValue === color }\"\n :style=\"{ background: color }\"\n @click=\"emit('update:modelValue', color)\"\n />\n <input\n type=\"color\"\n :value=\"modelValue\"\n class=\"vuedit-color-swatch\"\n style=\"padding: 0; cursor: pointer;\"\n @input=\"emit('update:modelValue', ($event.target as HTMLInputElement).value)\"\n />\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { TextConfig } from '@/types'\nimport type { TranslationKeys } from '@/i18n/en'\nimport ColorPicker from '../shared/ColorPicker.vue'\n\ndefineProps<{\n config: TextConfig\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update', key: keyof TextConfig, value: string | number): void\n (e: 'addText'): void\n}>()\n\nconst fonts = [\n 'Arial',\n 'Helvetica',\n 'Times New Roman',\n 'Georgia',\n 'Courier New',\n 'Verdana',\n 'Impact',\n 'Comic Sans MS',\n]\n</script>\n\n<template>\n <div>\n <div class=\"vuedit-panel__title\">{{ t('text') }}</div>\n\n <div class=\"vuedit-panel__section\">\n <label class=\"vuedit-panel__label\">{{ t('fontFamily') }}</label>\n <select\n class=\"vuedit-select\"\n :value=\"config.fontFamily\"\n @change=\"emit('update', 'fontFamily', ($event.target as HTMLSelectElement).value)\"\n >\n <option v-for=\"font in fonts\" :key=\"font\" :value=\"font\">{{ font }}</option>\n </select>\n </div>\n\n <div class=\"vuedit-panel__section\">\n <label class=\"vuedit-panel__label\">{{ t('fontSize') }}</label>\n <input\n type=\"number\"\n class=\"vuedit-input\"\n :value=\"config.fontSize\"\n min=\"8\"\n max=\"200\"\n @input=\"emit('update', 'fontSize', parseInt(($event.target as HTMLInputElement).value) || 24)\"\n />\n </div>\n\n <ColorPicker\n :label=\"t('fontColor')\"\n :model-value=\"config.fill\"\n @update:model-value=\"emit('update', 'fill', $event)\"\n />\n\n <div class=\"vuedit-panel__section\">\n <div class=\"vuedit-toggle-group\">\n <button\n class=\"vuedit-toggle\"\n :class=\"{ 'vuedit-toggle--active': config.fontWeight === 'bold' }\"\n @click=\"emit('update', 'fontWeight', config.fontWeight === 'bold' ? 'normal' : 'bold')\"\n ><strong>B</strong></button>\n <button\n class=\"vuedit-toggle\"\n :class=\"{ 'vuedit-toggle--active': config.fontStyle === 'italic' }\"\n @click=\"emit('update', 'fontStyle', config.fontStyle === 'italic' ? 'normal' : 'italic')\"\n ><em>I</em></button>\n </div>\n </div>\n\n <div class=\"vuedit-panel__section\">\n <button class=\"vuedit-btn vuedit-btn--primary\" style=\"width:100%\" @click=\"emit('addText')\">\n {{ t('addText') }}\n </button>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { BrushConfig } from '@/types'\nimport type { TranslationKeys } from '@/i18n/en'\nimport RangeSlider from '../shared/RangeSlider.vue'\nimport ColorPicker from '../shared/ColorPicker.vue'\n\ndefineProps<{\n config: BrushConfig\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update', key: keyof BrushConfig, value: number | string): void\n}>()\n</script>\n\n<template>\n <div>\n <div class=\"vuedit-panel__title\">{{ t('draw') }}</div>\n\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('brushSize')\"\n :model-value=\"config.width\"\n :min=\"1\" :max=\"50\" :step=\"1\"\n @update:model-value=\"emit('update', 'width', $event)\"\n />\n </div>\n\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('opacity')\"\n :model-value=\"config.opacity\"\n :min=\"0\" :max=\"1\" :step=\"0.05\"\n @update:model-value=\"emit('update', 'opacity', $event)\"\n />\n </div>\n\n <ColorPicker\n :label=\"t('brushColor')\"\n :model-value=\"config.color\"\n @update:model-value=\"emit('update', 'color', $event)\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { ShapeConfig } from '@/types'\nimport type { TranslationKeys } from '@/i18n/en'\nimport RangeSlider from '../shared/RangeSlider.vue'\nimport ColorPicker from '../shared/ColorPicker.vue'\n\ndefineProps<{\n config: ShapeConfig\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update', key: keyof ShapeConfig, value: string | number): void\n (e: 'addShape'): void\n}>()\n\nconst shapes = [\n { type: 'rect' as const, label: 'rectangle' as const },\n { type: 'circle' as const, label: 'circle' as const },\n { type: 'line' as const, label: 'line' as const },\n { type: 'arrow' as const, label: 'arrow' as const },\n]\n</script>\n\n<template>\n <div>\n <div class=\"vuedit-panel__title\">{{ t('shape') }}</div>\n\n <div class=\"vuedit-panel__section\">\n <div class=\"vuedit-toggle-group\">\n <button\n v-for=\"s in shapes\"\n :key=\"s.type\"\n class=\"vuedit-toggle\"\n :class=\"{ 'vuedit-toggle--active': config.type === s.type }\"\n @click=\"emit('update', 'type', s.type)\"\n >{{ t(s.label) }}</button>\n </div>\n </div>\n\n <ColorPicker\n :label=\"t('strokeColor')\"\n :model-value=\"config.strokeColor\"\n @update:model-value=\"emit('update', 'strokeColor', $event)\"\n />\n\n <ColorPicker\n :label=\"t('fillColor')\"\n :model-value=\"config.fillColor\"\n @update:model-value=\"emit('update', 'fillColor', $event)\"\n />\n\n <div class=\"vuedit-panel__section\">\n <RangeSlider\n :label=\"t('strokeWidth')\"\n :model-value=\"config.strokeWidth\"\n :min=\"1\" :max=\"20\" :step=\"1\"\n @update:model-value=\"emit('update', 'strokeWidth', $event)\"\n />\n </div>\n\n <div class=\"vuedit-panel__section\">\n <button class=\"vuedit-btn vuedit-btn--primary\" style=\"width:100%\" @click=\"emit('addShape')\">\n {{ t('shape') }}\n </button>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { TranslationKeys } from '@/i18n/en'\nimport ConfirmBar from '../shared/ConfirmBar.vue'\n\ndefineProps<{\n width: number\n height: number\n lockRatio: boolean\n t: (key: TranslationKeys) => string\n}>()\n\nconst emit = defineEmits<{\n (e: 'setWidth', v: number): void\n (e: 'setHeight', v: number): void\n (e: 'toggleLock'): void\n (e: 'apply'): void\n (e: 'cancel'): void\n}>()\n</script>\n\n<template>\n <div>\n <div class=\"vuedit-panel__title\">{{ t('resize') }}</div>\n\n <div class=\"vuedit-panel__section\">\n <label class=\"vuedit-panel__label\">{{ t('width') }} ({{ t('pixels') }})</label>\n <input\n type=\"number\"\n class=\"vuedit-input\"\n :value=\"width\"\n min=\"1\"\n max=\"10000\"\n @input=\"emit('setWidth', parseInt(($event.target as HTMLInputElement).value) || 1)\"\n />\n </div>\n\n <div class=\"vuedit-panel__section\">\n <label class=\"vuedit-panel__label\">{{ t('height') }} ({{ t('pixels') }})</label>\n <input\n type=\"number\"\n class=\"vuedit-input\"\n :value=\"height\"\n min=\"1\"\n max=\"10000\"\n @input=\"emit('setHeight', parseInt(($event.target as HTMLInputElement).value) || 1)\"\n />\n </div>\n\n <div class=\"vuedit-panel__section\">\n <label style=\"display:flex;align-items:center;gap:8px;cursor:pointer;\">\n <input\n type=\"checkbox\"\n :checked=\"lockRatio\"\n @change=\"emit('toggleLock')\"\n />\n <span class=\"vuedit-panel__label\" style=\"margin:0\">{{ t('lockAspectRatio') }}</span>\n </label>\n </div>\n\n <ConfirmBar\n :apply-label=\"t('apply')\"\n :cancel-label=\"t('cancel')\"\n @apply=\"emit('apply')\"\n @cancel=\"emit('cancel')\"\n />\n </div>\n</template>\n","function t(t,e,s){return(e=function(t){var e=function(t,e){if(\"object\"!=typeof t||!t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var i=s.call(t,e);if(\"object\"!=typeof i)return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}(t,\"string\");return\"symbol\"==typeof e?e:e+\"\"}(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}class e{constructor(){t(this,\"browserShadowBlurConstant\",1),t(this,\"DPI\",96),t(this,\"devicePixelRatio\",\"undefined\"!=typeof window?window.devicePixelRatio:1),t(this,\"perfLimitSizeTotal\",2097152),t(this,\"maxCacheSideLimit\",4096),t(this,\"minCacheSideLimit\",256),t(this,\"disableStyleCopyPaste\",!1),t(this,\"enableGLFiltering\",!0),t(this,\"textureSize\",4096),t(this,\"forceGLPutImageData\",!1),t(this,\"cachesBoundsOfCurve\",!1),t(this,\"fontPaths\",{}),t(this,\"NUM_FRACTION_DIGITS\",4)}}const s=new class extends e{constructor(t){super(),this.configure(t)}configure(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.assign(this,t)}addFonts(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.fontPaths={...this.fontPaths,...t}}removeFonts(){(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(t=>{delete this.fontPaths[t]})}clearFonts(){this.fontPaths={}}restoreDefaults(t){const s=new e,i=(null==t?void 0:t.reduce((t,e)=>(t[e]=s[e],t),{}))||s;this.configure(i)}},i=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];return console[t](\"fabric\",...s)};class r extends Error{constructor(t,e){super(`fabric: ${t}`,e)}}class n extends r{constructor(t){super(`${t} 'options.signal' is in 'aborted' state`)}}class o{}class a extends o{testPrecision(t,e){const s=`precision ${e} float;\\nvoid main(){}`,i=t.createShader(t.FRAGMENT_SHADER);return!!i&&(t.shaderSource(i,s),t.compileShader(i),!!t.getShaderParameter(i,t.COMPILE_STATUS))}queryWebGL(t){const e=t.getContext(\"webgl\");e&&(this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),this.GLPrecision=[\"highp\",\"mediump\",\"lowp\"].find(t=>this.testPrecision(e,t)),e.getExtension(\"WEBGL_lose_context\").loseContext(),i(\"log\",`WebGL: max texture size ${this.maxTextureSize}`))}isSupported(t){return!!this.maxTextureSize&&this.maxTextureSize>=t}}const h={};let l;const c=t=>{l=t},u=()=>l||(l={document:document,window:window,isTouchSupported:\"ontouchstart\"in window||\"ontouchstart\"in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new a,dispose(){},copyPasteData:h}),d=()=>u().document,g=()=>u().window,f=()=>{var t;return Math.max(null!==(t=s.devicePixelRatio)&&void 0!==t?t:g().devicePixelRatio,1)};const p=new class{constructor(){t(this,\"boundsOfCurveCache\",{}),this.charWidthsCache=new Map}getFontCache(t){let{fontFamily:e,fontStyle:s,fontWeight:i}=t;e=e.toLowerCase();const r=this.charWidthsCache;r.has(e)||r.set(e,new Map);const n=r.get(e),o=`${s.toLowerCase()}_${(i+\"\").toLowerCase()}`;return n.has(o)||n.set(o,new Map),n.get(o)}clearFontCache(t){t?this.charWidthsCache.delete((t||\"\").toLowerCase()):this.charWidthsCache=new Map}limitDimsByArea(t){const{perfLimitSizeTotal:e}=s,i=Math.sqrt(e*t);return[Math.floor(i),Math.floor(e/i)]}};const m=\"7.1.0\";function v(){}const y=Math.PI/2,_=Math.PI/4,x=2*Math.PI,C=Math.PI/180,b=Object.freeze([1,0,0,1,0,0]),S=16,w=.4477152502,T=\"center\",O=\"left\",k=\"top\",D=\"bottom\",M=\"right\",E=\"none\",P=/\\r?\\n/,A=\"moving\",j=\"scaling\",F=\"rotating\",L=\"rotate\",I=\"skewing\",R=\"resizing\",B=\"modifyPoly\",$=\"modifyPath\",X=\"changed\",Y=\"scale\",W=\"scaleX\",V=\"scaleY\",G=\"skewX\",z=\"skewY\",H=\"fill\",N=\"stroke\",U=\"modified\",q=\"ltr\",K=\"rtl\",J=\"normal\",Q=\"json\",Z=\"svg\";const tt=new class{constructor(){this[Q]=new Map,this[Z]=new Map}has(t){return this[Q].has(t)}getClass(t){const e=this[Q].get(t);if(!e)throw new r(`No class registered for ${t}`);return e}setClass(t,e){e?this[Q].set(e,t):(this[Q].set(t.type,t),this[Q].set(t.type.toLowerCase(),t))}getSVGClass(t){return this[Z].get(t)}setSVGClass(t,e){this[Z].set(null!=e?e:t.type.toLowerCase(),t)}};const et=new class extends Array{remove(t){const e=this.indexOf(t);e>-1&&this.splice(e,1)}cancelAll(){const t=this.splice(0);return t.forEach(t=>t.abort()),t}cancelByCanvas(t){if(!t)return[];const e=this.filter(e=>{var s;return e.target===t||\"object\"==typeof e.target&&(null===(s=e.target)||void 0===s?void 0:s.canvas)===t});return e.forEach(t=>t.abort()),e}cancelByTarget(t){if(!t)return[];const e=this.filter(e=>e.target===t);return e.forEach(t=>t.abort()),e}};class st{constructor(){t(this,\"__eventListeners\",{})}on(t,e){if(this.__eventListeners||(this.__eventListeners={}),\"object\"==typeof t)return Object.entries(t).forEach(t=>{let[e,s]=t;this.on(e,s)}),()=>this.off(t);if(e){const s=t;return this.__eventListeners[s]||(this.__eventListeners[s]=[]),this.__eventListeners[s].push(e),()=>this.off(s,e)}return()=>!1}once(t,e){if(\"object\"==typeof t){const e=[];return Object.entries(t).forEach(t=>{let[s,i]=t;e.push(this.once(s,i))}),()=>e.forEach(t=>t())}if(e){const s=this.on(t,function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.call(this,...i),s()});return s}return()=>!1}_removeEventListener(t,e){if(this.__eventListeners[t])if(e){const s=this.__eventListeners[t],i=s.indexOf(e);i>-1&&s.splice(i,1)}else this.__eventListeners[t]=[]}off(t,e){if(this.__eventListeners)if(void 0===t)for(const t in this.__eventListeners)this._removeEventListener(t);else\"object\"==typeof t?Object.entries(t).forEach(t=>{let[e,s]=t;this._removeEventListener(e,s)}):this._removeEventListener(t,e)}fire(t,e){var s;if(!this.__eventListeners)return;const i=null===(s=this.__eventListeners[t])||void 0===s?void 0:s.concat();if(i)for(let t=0;t<i.length;t++)i[t].call(this,e||{})}}const it=(t,e)=>{const s=t.indexOf(e);return-1!==s&&t.splice(s,1),t},rt=t=>{if(0===t)return 1;switch(Math.abs(t)/y){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},nt=t=>{if(0===t)return 0;const e=t/y,s=Math.sign(t);switch(e){case 1:return s;case 2:return 0;case 3:return-s}return Math.sin(t)};class ot{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;\"object\"==typeof t?(this.x=t.x,this.y=t.y):(this.x=t,this.y=e)}add(t){return new ot(this.x+t.x,this.y+t.y)}addEquals(t){return this.x+=t.x,this.y+=t.y,this}scalarAdd(t){return new ot(this.x+t,this.y+t)}scalarAddEquals(t){return this.x+=t,this.y+=t,this}subtract(t){return new ot(this.x-t.x,this.y-t.y)}subtractEquals(t){return this.x-=t.x,this.y-=t.y,this}scalarSubtract(t){return new ot(this.x-t,this.y-t)}scalarSubtractEquals(t){return this.x-=t,this.y-=t,this}multiply(t){return new ot(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new ot(this.x*t,this.y*t)}scalarMultiplyEquals(t){return this.x*=t,this.y*=t,this}divide(t){return new ot(this.x/t.x,this.y/t.y)}scalarDivide(t){return new ot(this.x/t,this.y/t)}scalarDivideEquals(t){return this.x/=t,this.y/=t,this}eq(t){return this.x===t.x&&this.y===t.y}lt(t){return this.x<t.x&&this.y<t.y}lte(t){return this.x<=t.x&&this.y<=t.y}gt(t){return this.x>t.x&&this.y>t.y}gte(t){return this.x>=t.x&&this.y>=t.y}lerp(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5;return e=Math.max(Math.min(1,e),0),new ot(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)}distanceFrom(t){const e=this.x-t.x,s=this.y-t.y;return Math.sqrt(e*e+s*s)}midPointFrom(t){return this.lerp(t)}min(t){return new ot(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new ot(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return`${this.x},${this.y}`}setXY(t,e){return this.x=t,this.y=e,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setFromPoint(t){return this.x=t.x,this.y=t.y,this}swap(t){const e=this.x,s=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=s}clone(){return new ot(this.x,this.y)}rotate(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:at;const s=nt(t),i=rt(t),r=this.subtract(e);return new ot(r.x*i-r.y*s,r.x*s+r.y*i).add(e)}transform(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new ot(t[0]*this.x+t[2]*this.y+(e?0:t[4]),t[1]*this.x+t[3]*this.y+(e?0:t[5]))}}const at=new ot(0,0),ht=t=>!!t&&Array.isArray(t._objects);function lt(e){class s extends e{constructor(){super(...arguments),t(this,\"_objects\",[])}_onObjectAdded(t){}_onObjectRemoved(t){}_onStackOrderChanged(t){}add(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];const i=this._objects.push(...e);return e.forEach(t=>this._onObjectAdded(t)),i}insertAt(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];return this._objects.splice(t,0,...s),s.forEach(t=>this._onObjectAdded(t)),this._objects.length}remove(){const t=this._objects,e=[];for(var s=arguments.length,i=new Array(s),r=0;r<s;r++)i[r]=arguments[r];return i.forEach(s=>{const i=t.indexOf(s);-1!==i&&(t.splice(i,1),e.push(s),this._onObjectRemoved(s))}),e}forEachObject(t){this.getObjects().forEach((e,s,i)=>t(e,s,i))}getObjects(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return 0===e.length?[...this._objects]:this._objects.filter(t=>t.isType(...e))}item(t){return this._objects[t]}isEmpty(){return 0===this._objects.length}size(){return this._objects.length}contains(t,e){return!!this._objects.includes(t)||!!e&&this._objects.some(e=>e instanceof s&&e.contains(t,!0))}complexity(){return this._objects.reduce((t,e)=>t+=e.complexity?e.complexity():0,0)}sendObjectToBack(t){return!(!t||t===this._objects[0])&&(it(this._objects,t),this._objects.unshift(t),this._onStackOrderChanged(t),!0)}bringObjectToFront(t){return!(!t||t===this._objects[this._objects.length-1])&&(it(this._objects,t),this._objects.push(t),this._onStackOrderChanged(t),!0)}sendObjectBackwards(t,e){if(!t)return!1;const s=this._objects.indexOf(t);if(0!==s){const i=this.findNewLowerIndex(t,s,e);return it(this._objects,t),this._objects.splice(i,0,t),this._onStackOrderChanged(t),!0}return!1}bringObjectForward(t,e){if(!t)return!1;const s=this._objects.indexOf(t);if(s!==this._objects.length-1){const i=this.findNewUpperIndex(t,s,e);return it(this._objects,t),this._objects.splice(i,0,t),this._onStackOrderChanged(t),!0}return!1}moveObjectTo(t,e){return t!==this._objects[e]&&(it(this._objects,t),this._objects.splice(e,0,t),this._onStackOrderChanged(t),!0)}findNewLowerIndex(t,e,s){let i;if(s){i=e;for(let s=e-1;s>=0;--s)if(t.isOverlapping(this._objects[s])){i=s;break}}else i=e-1;return i}findNewUpperIndex(t,e,s){let i;if(s){i=e;for(let s=e+1;s<this._objects.length;++s)if(t.isOverlapping(this._objects[s])){i=s;break}}else i=e+1;return i}collectObjects(t){let{left:e,top:s,width:i,height:r}=t,{includeIntersecting:n=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=[],a=new ot(e,s),h=a.add(new ot(i,r));for(let t=this._objects.length-1;t>=0;t--){const e=this._objects[t];e.selectable&&e.visible&&(n&&e.intersectsWithRect(a,h)||e.isContainedWithinRect(a,h)||n&&e.containsPoint(a)||n&&e.containsPoint(h))&&o.push(e)}return o}}return s}class ct extends st{_setOptions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(const e in t)this.set(e,t[e])}_setObject(t){for(const e in t)this._set(e,t[e])}set(t,e){return\"object\"==typeof t?this._setObject(t):this._set(t,e),this}_set(t,e){this[t]=e}toggle(t){const e=this.get(t);return\"boolean\"==typeof e&&this.set(t,!e),this}get(t){return this[t]}}function ut(t){return g().requestAnimationFrame(t)}function dt(t){return g().cancelAnimationFrame(t)}let gt=0;const ft=()=>gt++,pt=()=>{const t=d().createElement(\"canvas\");if(!t||void 0===t.getContext)throw new r(\"Failed to create `canvas` element\");return t},mt=()=>d().createElement(\"img\"),vt=t=>{const e=pt();return e.width=t.width,e.height=t.height,e},yt=(t,e,s)=>t.toDataURL(`image/${e}`,s),_t=(t,e,s)=>new Promise((i,r)=>{t.toBlob(i,`image/${e}`,s)}),xt=t=>t*C,Ct=t=>t/C,bt=t=>t.every((t,e)=>t===b[e]),St=(t,e,s)=>new ot(t).transform(e,s),wt=t=>{const e=1/(t[0]*t[3]-t[1]*t[2]),s=[e*t[3],-e*t[1],-e*t[2],e*t[0],0,0],{x:i,y:r}=new ot(t[4],t[5]).transform(s,!0);return s[4]=-i,s[5]=-r,s},Tt=(t,e,s)=>[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],s?0:t[0]*e[4]+t[2]*e[5]+t[4],s?0:t[1]*e[4]+t[3]*e[5]+t[5]],Ot=(t,e)=>t.reduceRight((t,s)=>s&&t?Tt(s,t,e):s||t,void 0)||b.concat(),kt=t=>{let[e,s]=t;return Math.atan2(s,e)},Dt=t=>{const e=kt(t),s=Math.pow(t[0],2)+Math.pow(t[1],2),i=Math.sqrt(s),r=(t[0]*t[3]-t[2]*t[1])/i,n=Math.atan2(t[0]*t[2]+t[1]*t[3],s);return{angle:Ct(e),scaleX:i,scaleY:r,skewX:Ct(n),skewY:0,translateX:t[4]||0,translateY:t[5]||0}},Mt=function(t){return[1,0,0,1,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0]};function Et(){let{angle:t=0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{x:e=0,y:s=0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=xt(t),r=rt(i),n=nt(i);return[r,n,-n,r,e?e-(r*e-n*s):0,s?s-(n*e+r*s):0]}const Pt=function(t){return[t,0,0,arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,0,0]},At=t=>Math.tan(xt(t)),jt=t=>[1,0,At(t),1,0,0],Ft=t=>[1,At(t),0,1,0,0],Lt=t=>{let{scaleX:e=1,scaleY:s=1,flipX:i=!1,flipY:r=!1,skewX:n=0,skewY:o=0}=t,a=Pt(i?-e:e,r?-s:s);return n&&(a=Tt(a,jt(n),!0)),o&&(a=Tt(a,Ft(o),!0)),a},It=t=>{const{translateX:e=0,translateY:s=0,angle:i=0}=t;let r=Mt(e,s);i&&(r=Tt(r,Et({angle:i})));const n=Lt(t);return bt(n)||(r=Tt(r,n)),r},Rt=function(t){let{signal:e,crossOrigin:s=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(function(i,o){if(e&&e.aborted)return o(new n(\"loadImage\"));const a=mt();let h;e&&(h=function(t){a.src=\"\",o(t)},e.addEventListener(\"abort\",h,{once:!0}));const l=function(){a.onload=a.onerror=null,h&&(null==e||e.removeEventListener(\"abort\",h)),i(a)};t?(a.onload=l,a.onerror=function(){h&&(null==e||e.removeEventListener(\"abort\",h)),o(new r(`Error loading ${a.src}`))},s&&(a.crossOrigin=s),a.src=t):l()})},Bt=function(t){let{signal:e,reviver:s=v}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((i,r)=>{const n=[];e&&e.addEventListener(\"abort\",r,{once:!0}),Promise.all(t.map(t=>tt.getClass(t.type).fromObject(t,{signal:e}).then(e=>(s(t,e),n.push(e),e)))).then(i).catch(t=>{n.forEach(t=>{t.dispose&&t.dispose()}),r(t)}).finally(()=>{e&&e.removeEventListener(\"abort\",r)})})},$t=function(t){let{signal:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((s,i)=>{const r=[];e&&e.addEventListener(\"abort\",i,{once:!0});const n=Object.values(t).map(t=>t&&t.type&&tt.has(t.type)?Bt([t],{signal:e}).then(t=>{let[e]=t;return r.push(e),e}):t),o=Object.keys(t);Promise.all(n).then(t=>t.reduce((t,e,s)=>(t[o[s]]=e,t),{})).then(s).catch(t=>{r.forEach(t=>{t.dispose&&t.dispose()}),i(t)}).finally(()=>{e&&e.removeEventListener(\"abort\",i)})})},Xt=function(t){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).reduce((e,s)=>(s in t&&(e[s]=t[s]),e),{})},Yt=(t,e)=>Object.keys(t).reduce((s,i)=>(e(t[i],i,t)&&(s[i]=t[i]),s),{}),Wt=(t,e)=>parseFloat(Number(t).toFixed(e)),Vt=t=>\"matrix(\"+t.map(t=>Wt(t,s.NUM_FRACTION_DIGITS)).join(\" \")+\")\",Gt=t=>!!t&&void 0!==t.toLive,zt=t=>!!t&&\"function\"==typeof t.toObject,Ht=t=>!!t&&void 0!==t.offsetX&&\"source\"in t,Nt=t=>!!t&&\"multiSelectionStacking\"in t;function Ut(t){const e=t&&qt(t);let s=0,i=0;if(!t||!e)return{left:s,top:i};let r=t;const n=e.documentElement,o=e.body||{scrollLeft:0,scrollTop:0};for(;r&&(r.parentNode||r.host)&&(r=r.parentNode||r.host,r===e?(s=o.scrollLeft||n.scrollLeft||0,i=o.scrollTop||n.scrollTop||0):(s+=r.scrollLeft||0,i+=r.scrollTop||0),1!==r.nodeType||\"fixed\"!==r.style.position););return{left:s,top:i}}const qt=t=>t.ownerDocument||null,Kt=t=>{var e;return(null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)||null},Jt=function(t,e,s){let{width:i,height:r}=s,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;t.width=i,t.height=r,n>1&&(t.setAttribute(\"width\",(i*n).toString()),t.setAttribute(\"height\",(r*n).toString()),e.scale(n,n))},Qt=(t,e)=>{let{width:s,height:i}=e;s&&(t.style.width=\"number\"==typeof s?`${s}px`:s),i&&(t.style.height=\"number\"==typeof i?`${i}px`:i)};function Zt(t){return void 0!==t.onselectstart&&(t.onselectstart=()=>!1),t.style.userSelect=E,t}class te{constructor(e){t(this,\"_originalCanvasStyle\",void 0),t(this,\"lower\",void 0);const s=this.createLowerCanvas(e);this.lower={el:s,ctx:s.getContext(\"2d\")}}createLowerCanvas(t){const e=(s=t)&&void 0!==s.getContext?t:t&&d().getElementById(t)||pt();var s;if(e.hasAttribute(\"data-fabric\"))throw new r(\"Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?\");return this._originalCanvasStyle=e.style.cssText,e.setAttribute(\"data-fabric\",\"main\"),e.classList.add(\"lower-canvas\"),e}cleanupDOM(t){let{width:e,height:s}=t;const{el:i}=this.lower;i.classList.remove(\"lower-canvas\"),i.removeAttribute(\"data-fabric\"),i.setAttribute(\"width\",`${e}`),i.setAttribute(\"height\",`${s}`),i.style.cssText=this._originalCanvasStyle||\"\",this._originalCanvasStyle=void 0}setDimensions(t,e){const{el:s,ctx:i}=this.lower;Jt(s,i,t,e)}setCSSDimensions(t){Qt(this.lower.el,t)}calcOffset(){return function(t){var e;const s=t&&qt(t),i={left:0,top:0};if(!s)return i;const r=(null===(e=Kt(t))||void 0===e?void 0:e.getComputedStyle(t,null))||{};i.left+=parseInt(r.borderLeftWidth,10)||0,i.top+=parseInt(r.borderTopWidth,10)||0,i.left+=parseInt(r.paddingLeft,10)||0,i.top+=parseInt(r.paddingTop,10)||0;let n={left:0,top:0};const o=s.documentElement;void 0!==t.getBoundingClientRect&&(n=t.getBoundingClientRect());const a=Ut(t);return{left:n.left+a.left-(o.clientLeft||0)+i.left,top:n.top+a.top-(o.clientTop||0)+i.top}}(this.lower.el)}dispose(){u().dispose(this.lower.el),delete this.lower}}const ee={backgroundVpt:!0,backgroundColor:\"\",overlayVpt:!0,overlayColor:\"\",includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...b],patternQuality:\"best\"};class se extends(lt(ct)){get lowerCanvasEl(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.el}get contextContainer(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.ctx}static getDefaults(){return se.ownDefaults}constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,this.constructor.getDefaults()),this.set(e),this.initElements(t),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(t){this.elements=new te(t)}add(){const t=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];const r=super.insertAt(t,...s);return s.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),r}remove(){const t=super.remove(...arguments);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(t){t.canvas&&t.canvas!==this&&(i(\"warn\",\"Canvas is trying to add an object that belongs to a different canvas.\\nResulting to default behavior: removing object from previous canvas and adding to new canvas\"),t.canvas.remove(t)),t._set(\"canvas\",this),t.setCoords(),this.fire(\"object:added\",{target:t}),t.fire(\"added\",{target:this})}_onObjectRemoved(t){t._set(\"canvas\",void 0),this.fire(\"object:removed\",{target:t}),t.fire(\"removed\",{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?f():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}_setDimensionsImpl(t){let{cssOnly:e=!1,backstoreOnly:s=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e){const e={width:this.width,height:this.height,...t};this.elements.setDimensions(e,this.getRetinaScaling()),this.hasLostContext=!0,this.width=e.width,this.height=e.height}s||this.elements.setCSSDimensions(t),this.calcOffset()}setDimensions(t,e){this._setDimensionsImpl(t,e),e&&e.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(t){this.viewportTransform=t,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(t,e){const s=t,i=[...this.viewportTransform],r=St(t,wt(i));i[0]=e,i[3]=e;const n=St(r,i);i[4]+=s.x-n.x,i[5]+=s.y-n.y,this.setViewportTransform(i)}setZoom(t){this.zoomToPoint(new ot(0,0),t)}absolutePan(t){const e=[...this.viewportTransform];return e[4]=-t.x,e[5]=-t.y,this.setViewportTransform(e)}relativePan(t){return this.absolutePan(new ot(-t.x-this.viewportTransform[4],-t.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(t){t.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor=\"\",this.overlayColor=\"\",this.clearContext(this.getContext()),this.fire(\"canvas:cleared\"),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),this.destroyed||this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){this.nextRenderHandle||this.disposed||this.destroyed||(this.nextRenderHandle=ut(()=>this.renderAndReset()))}calcViewportBoundaries(){const t=this.width,e=this.height,s=wt(this.viewportTransform),i=St({x:0,y:0},s),r=St({x:t,y:e},s),n=i.min(r),o=i.max(r);return this.vptCoords={tl:n,tr:new ot(o.x,n.y),bl:new ot(n.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&(dt(this.nextRenderHandle),this.nextRenderHandle=0)}drawControls(t){}renderCanvas(t,e){if(this.destroyed)return;const s=this.viewportTransform,i=this.clipPath;this.calcViewportBoundaries(),this.clearContext(t),t.imageSmoothingEnabled=this.imageSmoothingEnabled,t.patternQuality=this.patternQuality,this.fire(\"before:render\",{ctx:t}),this._renderBackground(t),t.save(),t.transform(s[0],s[1],s[2],s[3],s[4],s[5]),this._renderObjects(t,e),t.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(t),i&&(i._set(\"canvas\",this),i.shouldCache(),i._transformDone=!0,i.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(t,i)),this._renderOverlay(t),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(t),this.fire(\"after:render\",{ctx:t}),this.__cleanupTask&&(this.__cleanupTask(),this.__cleanupTask=void 0)}drawClipPathOnCanvas(t,e){const s=this.viewportTransform;t.save(),t.transform(...s),t.globalCompositeOperation=\"destination-in\",e.transform(t),t.scale(1/e.zoomX,1/e.zoomY),t.drawImage(e._cacheCanvas,-e.cacheTranslationX,-e.cacheTranslationY),t.restore()}_renderObjects(t,e){for(let s=0,i=e.length;s<i;++s)e[s]&&e[s].render(t)}_renderBackgroundOrOverlay(t,e){const s=this[`${e}Color`],i=this[`${e}Image`],r=this.viewportTransform,n=this[`${e}Vpt`];if(!s&&!i)return;const o=Gt(s);if(s){if(t.save(),t.beginPath(),t.moveTo(0,0),t.lineTo(this.width,0),t.lineTo(this.width,this.height),t.lineTo(0,this.height),t.closePath(),t.fillStyle=o?s.toLive(t):s,n&&t.transform(...r),o){t.transform(1,0,0,1,s.offsetX||0,s.offsetY||0);const e=s.gradientTransform||s.patternTransform;e&&t.transform(...e)}t.fill(),t.restore()}if(i){t.save();const{skipOffscreen:e}=this;this.skipOffscreen=n,n&&t.transform(...r),i.render(t),this.skipOffscreen=e,t.restore()}}_renderBackground(t){this._renderBackgroundOrOverlay(t,\"background\")}_renderOverlay(t){this._renderBackgroundOrOverlay(t,\"overlay\")}getCenterPoint(){return new ot(this.width/2,this.height/2)}centerObjectH(t){return this._centerObject(t,new ot(this.getCenterPoint().x,t.getCenterPoint().y))}centerObjectV(t){return this._centerObject(t,new ot(t.getCenterPoint().x,this.getCenterPoint().y))}centerObject(t){return this._centerObject(t,this.getCenterPoint())}viewportCenterObject(t){return this._centerObject(t,this.getVpCenter())}viewportCenterObjectH(t){return this._centerObject(t,new ot(this.getVpCenter().x,t.getCenterPoint().y))}viewportCenterObjectV(t){return this._centerObject(t,new ot(t.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return St(this.getCenterPoint(),wt(this.viewportTransform))}_centerObject(t,e){t.setXY(e,T,T),t.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(t){return this.toDatalessObject(t)}toObject(t){return this._toObjectMethod(\"toObject\",t)}toJSON(){return this.toObject()}toDatalessObject(t){return this._toObjectMethod(\"toDatalessObject\",t)}_toObjectMethod(t,e){const s=this.clipPath,i=s&&!s.excludeFromExport?this._toObject(s,t,e):null;return{version:m,...Xt(this,e),objects:this._objects.filter(t=>!t.excludeFromExport).map(s=>this._toObject(s,t,e)),...this.__serializeBgOverlay(t,e),...i?{clipPath:i}:null}}_toObject(t,e,s){let i;this.includeDefaultValues||(i=t.includeDefaultValues,t.includeDefaultValues=!1);const r=t[e](s);return this.includeDefaultValues||(t.includeDefaultValues=!!i),r}__serializeBgOverlay(t,e){const s={},i=this.backgroundImage,r=this.overlayImage,n=this.backgroundColor,o=this.overlayColor;return Gt(n)?n.excludeFromExport||(s.background=n.toObject(e)):n&&(s.background=n),Gt(o)?o.excludeFromExport||(s.overlay=o.toObject(e)):o&&(s.overlay=o),i&&!i.excludeFromExport&&(s.backgroundImage=this._toObject(i,t,e)),r&&!r.excludeFromExport&&(s.overlayImage=this._toObject(r,t,e)),s}toSVG(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;t.reviver=e;const s=[];return this._setSVGPreamble(s,t),this._setSVGHeader(s,t),this.clipPath&&s.push(`<g clip-path=\"url(#${this.clipPath.clipPathId})\" >\\n`),this._setSVGBgOverlayColor(s,\"background\"),this._setSVGBgOverlayImage(s,\"backgroundImage\",e),this._setSVGObjects(s,e),this.clipPath&&s.push(\"</g>\\n\"),this._setSVGBgOverlayColor(s,\"overlay\"),this._setSVGBgOverlayImage(s,\"overlayImage\",e),s.push(\"</svg>\"),s.join(\"\")}_setSVGPreamble(t,e){e.suppressPreamble||t.push('<?xml version=\"1.0\" encoding=\"',e.encoding||\"UTF-8\",'\" standalone=\"no\" ?>\\n','<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" ','\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n')}_setSVGHeader(t,e){const i=e.width||`${this.width}`,r=e.height||`${this.height}`,n=s.NUM_FRACTION_DIGITS,o=e.viewBox;let a;if(o)a=`viewBox=\"${o.x} ${o.y} ${o.width} ${o.height}\" `;else if(this.svgViewportTransformation){const t=this.viewportTransform;a=`viewBox=\"${Wt(-t[4]/t[0],n)} ${Wt(-t[5]/t[3],n)} ${Wt(this.width/t[0],n)} ${Wt(this.height/t[3],n)}\" `}else a=`viewBox=\"0 0 ${this.width} ${this.height}\" `;t.push(\"<svg \",'xmlns=\"http://www.w3.org/2000/svg\" ','xmlns:xlink=\"http://www.w3.org/1999/xlink\" ','version=\"1.1\" ','width=\"',i,'\" ','height=\"',r,'\" ',a,'xml:space=\"preserve\">\\n',\"<desc>Created with Fabric.js \",m,\"</desc>\\n\",\"<defs>\\n\",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),\"</defs>\\n\")}createSVGClipPathMarkup(t){const e=this.clipPath;return e?(e.clipPathId=`CLIPPATH_${ft()}`,`<clipPath id=\"${e.clipPathId}\" >\\n${e.toClipPathSVG(t.reviver)}</clipPath>\\n`):\"\"}createSVGRefElementsMarkup(){return[\"background\",\"overlay\"].map(t=>{const e=this[`${t}Color`];if(Gt(e)){const s=this[`${t}Vpt`],i=this.viewportTransform,r={isType:()=>!1,width:this.width/(s?i[0]:1),height:this.height/(s?i[3]:1)};return e.toSVG(r,{additionalTransform:s?Vt(i):\"\"})}}).join(\"\")}createSVGFontFacesMarkup(){const t=[],e={},i=s.fontPaths;this._objects.forEach(function e(s){t.push(s),ht(s)&&s._objects.forEach(e)}),t.forEach(t=>{if(!(s=t)||\"function\"!=typeof s._renderText)return;var s;const{styles:r,fontFamily:n}=t;!e[n]&&i[n]&&(e[n]=!0,r&&Object.values(r).forEach(t=>{Object.values(t).forEach(t=>{let{fontFamily:s=\"\"}=t;!e[s]&&i[s]&&(e[s]=!0)})}))});const r=Object.keys(e).map(t=>`\\t\\t@font-face {\\n\\t\\t\\tfont-family: '${t}';\\n\\t\\t\\tsrc: url('${i[t]}');\\n\\t\\t}\\n`).join(\"\");return r?`\\t<style type=\"text/css\"><![CDATA[\\n${r}]]></style>\\n`:\"\"}_setSVGObjects(t,e){this.forEachObject(s=>{s.excludeFromExport||this._setSVGObject(t,s,e)})}_setSVGObject(t,e,s){t.push(e.toSVG(s))}_setSVGBgOverlayImage(t,e,s){const i=this[e];i&&!i.excludeFromExport&&i.toSVG&&t.push(i.toSVG(s))}_setSVGBgOverlayColor(t,e){const s=this[`${e}Color`];if(s)if(Gt(s)){const i=s.repeat||\"\",r=this.width,n=this.height,o=this[`${e}Vpt`]?Vt(wt(this.viewportTransform)):\"\";t.push(`<rect transform=\"${o} translate(${r/2},${n/2})\" x=\"${s.offsetX-r/2}\" y=\"${s.offsetY-n/2}\" width=\"${\"repeat-y\"!==i&&\"no-repeat\"!==i||!Ht(s)?r:s.source.width}\" height=\"${\"repeat-x\"!==i&&\"no-repeat\"!==i||!Ht(s)?n:s.source.height}\" fill=\"url(#SVGID_${s.id})\"></rect>\\n`)}else t.push('<rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" ','fill=\"',s,'\"',\"></rect>\\n\")}loadFromJSON(t,e){let{signal:s}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)return Promise.reject(new r(\"`json` is undefined\"));const{objects:i=[],...n}=\"string\"==typeof t?JSON.parse(t):t,{backgroundImage:o,background:a,overlayImage:h,overlay:l,clipPath:c}=n,u=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([Bt(i,{reviver:e,signal:s}),$t({backgroundImage:o,backgroundColor:a,overlayImage:h,overlayColor:l,clipPath:c},{signal:s})]).then(t=>{let[e,s]=t;return this.clear(),this.add(...e),this.set(n),this.set(s),this.renderOnAddRemove=u,this})}clone(t){const e=this.toObject(t);return this.cloneWithoutData().loadFromJSON(e)}cloneWithoutData(){const t=vt(this);return new this.constructor(t)}toDataURL(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e=\"png\",quality:s=1,multiplier:i=1,enableRetinaScaling:r=!1}=t,n=i*(r?this.getRetinaScaling():1);return yt(this.toCanvasElement(n,t),e,s)}toBlob(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e=\"png\",quality:s=1,multiplier:i=1,enableRetinaScaling:r=!1}=t,n=i*(r?this.getRetinaScaling():1);return _t(this.toCanvasElement(n,t),e,s)}toCanvasElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,{width:e,height:s,left:i,top:r,filter:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=(e||this.width)*t,a=(s||this.height)*t,h=this.getZoom(),l=this.width,c=this.height,u=this.skipControlsDrawing,d=h*t,g=this.viewportTransform,f=[d,0,0,d,(g[4]-(i||0))*t,(g[5]-(r||0))*t],p=this.enableRetinaScaling,m=vt({width:o,height:a}),v=n?this._objects.filter(t=>n(t)):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=f,this.width=o,this.height=a,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(m.getContext(\"2d\"),v),this.viewportTransform=g,this.width=l,this.height=c,this.calcViewportBoundaries(),this.enableRetinaScaling=p,this.skipControlsDrawing=u,m}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),et.cancelByCanvas(this),this.disposed=!0,new Promise((t,e)=>{const s=()=>{this.destroy(),t(!0)};s.kill=e,this.__cleanupTask&&this.__cleanupTask.kill(\"aborted\"),this.destroyed?t(!1):this.nextRenderHandle?this.__cleanupTask=s:s()})}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject(t=>t.dispose()),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose(),this.backgroundImage=void 0,this.overlayImage&&this.overlayImage.dispose(),this.overlayImage=void 0,this.elements.dispose()}toString(){return`#<Canvas (${this.complexity()}): { objects: ${this._objects.length} }>`}}t(se,\"ownDefaults\",ee);const ie=[\"touchstart\",\"touchmove\",\"touchend\"];const re=t=>{const e=Ut(t.target),s=function(t){const e=t.changedTouches;return e&&e[0]?e[0]:t}(t);return new ot(s.clientX+e.left,s.clientY+e.top)},ne=t=>ie.includes(t.type)||\"touch\"===t.pointerType,oe=t=>{t.preventDefault(),t.stopPropagation()},ae=t=>{let e=0,s=0,i=0,r=0;for(let n=0,o=t.length;n<o;n++){const{x:o,y:a}=t[n];(o>i||!n)&&(i=o),(o<e||!n)&&(e=o),(a>r||!n)&&(r=a),(a<s||!n)&&(s=a)}return{left:e,top:s,width:i-e,height:r-s}},he=(t,e)=>le(t,Tt(e,t.calcOwnMatrix())),le=(t,e)=>{const{translateX:s,translateY:i,scaleX:r,scaleY:n,...o}=Dt(e),a=new ot(s,i);t.flipX=!1,t.flipY=!1,Object.assign(t,o),t.set({scaleX:r,scaleY:n}),t.setPositionByOrigin(a,T,T)},ce=t=>{t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.flipX=!1,t.flipY=!1,t.rotate(0)},ue=t=>({scaleX:t.scaleX,scaleY:t.scaleY,skewX:t.skewX,skewY:t.skewY,angle:t.angle,left:t.left,flipX:t.flipX,flipY:t.flipY,top:t.top}),de=(t,e,s)=>{const i=t/2,r=e/2,n=[new ot(-i,-r),new ot(i,-r),new ot(-i,r),new ot(i,r)].map(t=>t.transform(s)),o=ae(n);return new ot(o.width,o.height)},ge=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b;return Tt(wt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:b),t)},fe=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:b,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b;return t.transform(ge(e,s))},pe=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:b,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b;return t.transform(ge(e,s),!0)},me=(t,e,s)=>{const i=ge(e,s);return le(t,Tt(i,t.calcOwnMatrix())),i},ve={left:-.5,top:-.5,center:0,bottom:.5,right:.5},ye=t=>\"string\"==typeof t?ve[t]:t-.5,_e=new ot(1,0),xe=new ot,Ce=(t,e)=>t.rotate(e),be=(t,e)=>new ot(e).subtract(t),Se=t=>t.distanceFrom(xe),we=(t,e)=>Math.atan2(De(t,e),Me(t,e)),Te=t=>we(_e,t),Oe=t=>t.eq(xe)?t:t.scalarDivide(Se(t)),ke=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return Oe(new ot(-t.y,t.x).scalarMultiply(e?1:-1))},De=(t,e)=>t.x*e.y-t.y*e.x,Me=(t,e)=>t.x*e.x+t.y*e.y,Ee=(t,e,s)=>{if(t.eq(e)||t.eq(s))return!0;const i=De(e,s),r=De(e,t),n=De(s,t);return i>=0?r>=0&&n<=0:!(r<=0&&n>=0)},Pe=\"not-allowed\";function Ae(t){return ye(t.originX)===ye(T)&&ye(t.originY)===ye(T)}function je(t){return.5-ye(t)}const Fe=(t,e)=>t[e],Le=(t,e,s,i)=>({e:t,transform:e,pointer:new ot(s,i)});function Ie(t,e,s){const i=s,r=fe(t.getCenterPoint(),t.canvas.viewportTransform,void 0),n=Te(be(r,i))+x;return Math.round(n%x/_)}function Re(t,e,s,i,r){var n;let{target:o,corner:a}=t;const h=o.controls[a],l=(null===(n=o.canvas)||void 0===n?void 0:n.getZoom())||1,c=o.padding/l,u=function(t,e,s,i){const r=t.getRelativeCenterPoint(),n=void 0!==s&&void 0!==i?t.translateToGivenOrigin(r,T,T,s,i):new ot(t.left,t.top);return(t.angle?e.rotate(-xt(t.angle),r):e).subtract(n)}(o,new ot(i,r),e,s);return u.x>=c&&(u.x-=c),u.x<=-c&&(u.x+=c),u.y>=c&&(u.y-=c),u.y<=c&&(u.y+=c),u.x-=h.offsetX,u.y-=h.offsetY,u}const Be=t=>t.replace(/\\s+/g,\" \"),$e={aliceblue:\"#F0F8FF\",antiquewhite:\"#FAEBD7\",aqua:\"#0FF\",aquamarine:\"#7FFFD4\",azure:\"#F0FFFF\",beige:\"#F5F5DC\",bisque:\"#FFE4C4\",black:\"#000\",blanchedalmond:\"#FFEBCD\",blue:\"#00F\",blueviolet:\"#8A2BE2\",brown:\"#A52A2A\",burlywood:\"#DEB887\",cadetblue:\"#5F9EA0\",chartreuse:\"#7FFF00\",chocolate:\"#D2691E\",coral:\"#FF7F50\",cornflowerblue:\"#6495ED\",cornsilk:\"#FFF8DC\",crimson:\"#DC143C\",cyan:\"#0FF\",darkblue:\"#00008B\",darkcyan:\"#008B8B\",darkgoldenrod:\"#B8860B\",darkgray:\"#A9A9A9\",darkgrey:\"#A9A9A9\",darkgreen:\"#006400\",darkkhaki:\"#BDB76B\",darkmagenta:\"#8B008B\",darkolivegreen:\"#556B2F\",darkorange:\"#FF8C00\",darkorchid:\"#9932CC\",darkred:\"#8B0000\",darksalmon:\"#E9967A\",darkseagreen:\"#8FBC8F\",darkslateblue:\"#483D8B\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",darkturquoise:\"#00CED1\",darkviolet:\"#9400D3\",deeppink:\"#FF1493\",deepskyblue:\"#00BFFF\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1E90FF\",firebrick:\"#B22222\",floralwhite:\"#FFFAF0\",forestgreen:\"#228B22\",fuchsia:\"#F0F\",gainsboro:\"#DCDCDC\",ghostwhite:\"#F8F8FF\",gold:\"#FFD700\",goldenrod:\"#DAA520\",gray:\"#808080\",grey:\"#808080\",green:\"#008000\",greenyellow:\"#ADFF2F\",honeydew:\"#F0FFF0\",hotpink:\"#FF69B4\",indianred:\"#CD5C5C\",indigo:\"#4B0082\",ivory:\"#FFFFF0\",khaki:\"#F0E68C\",lavender:\"#E6E6FA\",lavenderblush:\"#FFF0F5\",lawngreen:\"#7CFC00\",lemonchiffon:\"#FFFACD\",lightblue:\"#ADD8E6\",lightcoral:\"#F08080\",lightcyan:\"#E0FFFF\",lightgoldenrodyellow:\"#FAFAD2\",lightgray:\"#D3D3D3\",lightgrey:\"#D3D3D3\",lightgreen:\"#90EE90\",lightpink:\"#FFB6C1\",lightsalmon:\"#FFA07A\",lightseagreen:\"#20B2AA\",lightskyblue:\"#87CEFA\",lightslategray:\"#789\",lightslategrey:\"#789\",lightsteelblue:\"#B0C4DE\",lightyellow:\"#FFFFE0\",lime:\"#0F0\",limegreen:\"#32CD32\",linen:\"#FAF0E6\",magenta:\"#F0F\",maroon:\"#800000\",mediumaquamarine:\"#66CDAA\",mediumblue:\"#0000CD\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",mediumseagreen:\"#3CB371\",mediumslateblue:\"#7B68EE\",mediumspringgreen:\"#00FA9A\",mediumturquoise:\"#48D1CC\",mediumvioletred:\"#C71585\",midnightblue:\"#191970\",mintcream:\"#F5FFFA\",mistyrose:\"#FFE4E1\",moccasin:\"#FFE4B5\",navajowhite:\"#FFDEAD\",navy:\"#000080\",oldlace:\"#FDF5E6\",olive:\"#808000\",olivedrab:\"#6B8E23\",orange:\"#FFA500\",orangered:\"#FF4500\",orchid:\"#DA70D6\",palegoldenrod:\"#EEE8AA\",palegreen:\"#98FB98\",paleturquoise:\"#AFEEEE\",palevioletred:\"#DB7093\",papayawhip:\"#FFEFD5\",peachpuff:\"#FFDAB9\",peru:\"#CD853F\",pink:\"#FFC0CB\",plum:\"#DDA0DD\",powderblue:\"#B0E0E6\",purple:\"#800080\",rebeccapurple:\"#639\",red:\"#F00\",rosybrown:\"#BC8F8F\",royalblue:\"#4169E1\",saddlebrown:\"#8B4513\",salmon:\"#FA8072\",sandybrown:\"#F4A460\",seagreen:\"#2E8B57\",seashell:\"#FFF5EE\",sienna:\"#A0522D\",silver:\"#C0C0C0\",skyblue:\"#87CEEB\",slateblue:\"#6A5ACD\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#FFFAFA\",springgreen:\"#00FF7F\",steelblue:\"#4682B4\",tan:\"#D2B48C\",teal:\"#008080\",thistle:\"#D8BFD8\",tomato:\"#FF6347\",turquoise:\"#40E0D0\",violet:\"#EE82EE\",wheat:\"#F5DEB3\",white:\"#FFF\",whitesmoke:\"#F5F5F5\",yellow:\"#FF0\",yellowgreen:\"#9ACD32\"},Xe=(t,e,s)=>(s<0&&(s+=1),s>1&&(s-=1),s<1/6?t+6*(e-t)*s:s<.5?e:s<2/3?t+(e-t)*(2/3-s)*6:t),Ye=(t,e,s,i)=>{t/=255,e/=255,s/=255;const r=Math.max(t,e,s),n=Math.min(t,e,s);let o,a;const h=(r+n)/2;if(r===n)o=a=0;else{const i=r-n;switch(a=h>.5?i/(2-r-n):i/(r+n),r){case t:o=(e-s)/i+(e<s?6:0);break;case e:o=(s-t)/i+2;break;case s:o=(t-e)/i+4}o/=6}return[Math.round(360*o),Math.round(100*a),Math.round(100*h),i]},We=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"1\";return parseFloat(t)/(t.endsWith(\"%\")?100:1)},Ve=t=>Math.min(Math.round(t),255).toString(16).toUpperCase().padStart(2,\"0\"),Ge=t=>{let[e,s,i,r=1]=t;const n=Math.round(.3*e+.59*s+.11*i);return[n,n,n,r]};class ze{constructor(e){if(t(this,\"isUnrecognised\",!1),e)if(e instanceof ze)this.setSource([...e._source]);else if(Array.isArray(e)){const[t,s,i,r=1]=e;this.setSource([t,s,i,r])}else this.setSource(this._tryParsingColor(e));else this.setSource([0,0,0,1])}_tryParsingColor(t){return(t=t.toLowerCase())in $e&&(t=$e[t]),\"transparent\"===t?[255,255,255,0]:ze.sourceFromHex(t)||ze.sourceFromRgb(t)||ze.sourceFromHsl(t)||(this.isUnrecognised=!0)&&[0,0,0,1]}getSource(){return this._source}setSource(t){this._source=t}toRgb(){const[t,e,s]=this.getSource();return`rgb(${t},${e},${s})`}toRgba(){return`rgba(${this.getSource().join(\",\")})`}toHsl(){const[t,e,s]=Ye(...this.getSource());return`hsl(${t},${e}%,${s}%)`}toHsla(){const[t,e,s,i]=Ye(...this.getSource());return`hsla(${t},${e}%,${s}%,${i})`}toHex(){return this.toHexa().slice(0,6)}toHexa(){const[t,e,s,i]=this.getSource();return`${Ve(t)}${Ve(e)}${Ve(s)}${Ve(Math.round(255*i))}`}getAlpha(){return this.getSource()[3]}setAlpha(t){return this._source[3]=t,this}toGrayscale(){return this.setSource(Ge(this.getSource())),this}toBlackWhite(t){const[e,,,s]=Ge(this.getSource()),i=e<(t||127)?0:255;return this.setSource([i,i,i,s]),this}overlayWith(t){t instanceof ze||(t=new ze(t));const e=this.getSource(),s=t.getSource(),[i,r,n]=e.map((t,e)=>Math.round(.5*t+.5*s[e]));return this.setSource([i,r,n,e[3]]),this}static fromRgb(t){return ze.fromRgba(t)}static fromRgba(t){return new ze(ze.sourceFromRgb(t))}static sourceFromRgb(t){const e=Be(t).match(/^rgba?\\(\\s?(\\d{0,3}(?:\\.\\d+)?%?)\\s?[\\s|,]\\s?(\\d{0,3}(?:\\.\\d+)?%?)\\s?[\\s|,]\\s?(\\d{0,3}(?:\\.\\d+)?%?)\\s?(?:\\s?[,/]\\s?(\\d{0,3}(?:\\.\\d+)?%?)\\s?)?\\)$/i);if(e){const[t,s,i]=e.slice(1,4).map(t=>{const e=parseFloat(t);return t.endsWith(\"%\")?Math.round(2.55*e):e});return[t,s,i,We(e[4])]}}static fromHsl(t){return ze.fromHsla(t)}static fromHsla(t){return new ze(ze.sourceFromHsl(t))}static sourceFromHsl(t){const e=Be(t).match(/^hsla?\\(\\s?([+-]?\\d{0,3}(?:\\.\\d+)?(?:deg|turn|rad)?)\\s?[\\s|,]\\s?(\\d{0,3}(?:\\.\\d+)?%?)\\s?[\\s|,]\\s?(\\d{0,3}(?:\\.\\d+)?%?)\\s?(?:\\s?[,/]\\s?(\\d*(?:\\.\\d+)?%?)\\s?)?\\)$/i);if(!e)return;const s=(ze.parseAngletoDegrees(e[1])%360+360)%360/360,i=parseFloat(e[2])/100,r=parseFloat(e[3])/100;let n,o,a;if(0===i)n=o=a=r;else{const t=r<=.5?r*(i+1):r+i-r*i,e=2*r-t;n=Xe(e,t,s+1/3),o=Xe(e,t,s),a=Xe(e,t,s-1/3)}return[Math.round(255*n),Math.round(255*o),Math.round(255*a),We(e[4])]}static fromHex(t){return new ze(ze.sourceFromHex(t))}static sourceFromHex(t){if(t.match(/^#?(([0-9a-f]){3,4}|([0-9a-f]{2}){3,4})$/i)){const e=t.slice(t.indexOf(\"#\")+1);let s;s=e.length<=4?e.split(\"\").map(t=>t+t):e.match(/.{2}/g);const[i,r,n,o=255]=s.map(t=>parseInt(t,16));return[i,r,n,o/255]}}static parseAngletoDegrees(t){const e=t.toLowerCase(),s=parseFloat(e);return e.includes(\"rad\")?Ct(s):e.includes(\"turn\")?360*s:s}}const He=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:S;const i=/\\D{0,2}$/.exec(t),r=parseFloat(t),n=s.DPI;switch(null==i?void 0:i[0]){case\"mm\":return r*n/25.4;case\"cm\":return r*n/2.54;case\"in\":return r*n;case\"pt\":return r*n/72;case\"pc\":return r*n/72*12;case\"em\":return r*e;default:return r}},Ne=t=>{const[e,s]=t.trim().split(\" \"),[i,r]=(n=e)&&n!==E?[n.slice(1,4),n.slice(5,8)]:n===E?[n,n]:[\"Mid\",\"Mid\"];var n;return{meetOrSlice:s||\"meet\",alignX:i,alignY:r}},Ue=function(t,e){let s,i,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(e)if(e.toLive)s=`url(#SVGID_${e.id})`;else{const t=new ze(e),r=t.getAlpha();s=t.toRgb(),1!==r&&(i=r.toString())}else s=\"none\";return r?`${t}: ${s}; ${i?`${t}-opacity: ${i}; `:\"\"}`:`${t}=\"${s}\" ${i?`${t}-opacity=\"${i}\" `:\"\"}`};class qe{getSvgStyles(t){const e=this.fillRule?this.fillRule:\"nonzero\",s=this.strokeWidth?this.strokeWidth:\"0\",i=this.strokeDashArray?this.strokeDashArray.join(\" \"):E,r=this.strokeDashOffset?this.strokeDashOffset:\"0\",n=this.strokeLineCap?this.strokeLineCap:\"butt\",o=this.strokeLineJoin?this.strokeLineJoin:\"miter\",a=this.strokeMiterLimit?this.strokeMiterLimit:\"4\",h=void 0!==this.opacity?this.opacity:\"1\",l=this.visible?\"\":\" visibility: hidden;\",c=t?\"\":this.getSvgFilter(),u=Ue(H,this.fill);return[Ue(N,this.stroke),\"stroke-width: \",s,\"; \",\"stroke-dasharray: \",i,\"; \",\"stroke-linecap: \",n,\"; \",\"stroke-dashoffset: \",r,\"; \",\"stroke-linejoin: \",o,\"; \",\"stroke-miterlimit: \",a,\"; \",u,\"fill-rule: \",e,\"; \",\"opacity: \",h,\";\",c,l].join(\"\")}getSvgFilter(){return this.shadow?`filter: url(#SVGID_${this.shadow.id});`:\"\"}getSvgCommons(){return[this.id?`id=\"${this.id}\" `:\"\",this.clipPath?`clip-path=\"url(#${this.clipPath.clipPathId})\" `:\"\"].join(\"\")}getSvgTransform(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\";const s=t?this.calcTransformMatrix():this.calcOwnMatrix();return`${`transform=\"${Vt(s)}`}${e}\" `}_toSVG(t){return[\"\"]}toSVG(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})}toClipPathSVG(t){return\"\\t\"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})}_createBaseClipPathSVGMarkup(t){let{reviver:e,additionalTransform:s=\"\"}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=[this.getSvgTransform(!0,s),this.getSvgCommons()].join(\"\"),r=t.indexOf(\"COMMON_PARTS\");return t[r]=i,e?e(t.join(\"\")):t.join(\"\")}_createBaseSVGMarkup(t){let{noStyle:e,reviver:s,withShadow:i,additionalTransform:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=e?\"\":`style=\"${this.getSvgStyles()}\" `,o=i?`style=\"${this.getSvgFilter()}\" `:\"\",a=this.clipPath,h=this.strokeUniform?'vector-effect=\"non-scaling-stroke\" ':\"\",l=a&&a.absolutePositioned,c=this.stroke,u=this.fill,d=this.shadow,g=[],f=t.indexOf(\"COMMON_PARTS\");let p;a&&(a.clipPathId=`CLIPPATH_${ft()}`,p=`<clipPath id=\"${a.clipPathId}\" >\\n${a.toClipPathSVG(s)}</clipPath>\\n`),l&&g.push(\"<g \",o,this.getSvgCommons(),\" >\\n\"),g.push(\"<g \",this.getSvgTransform(!1),l?\"\":o+this.getSvgCommons(),\" >\\n\");const m=[n,h,e?\"\":this.addPaintOrder(),\" \",r?`transform=\"${r}\" `:\"\"].join(\"\");return t[f]=m,Gt(u)&&g.push(u.toSVG(this)),Gt(c)&&g.push(c.toSVG(this)),d&&g.push(d.toSVG(this)),a&&g.push(p),g.push(t.join(\"\")),g.push(\"</g>\\n\"),l&&g.push(\"</g>\\n\"),s?s(g.join(\"\")):g.join(\"\")}addPaintOrder(){return this.paintFirst!==H?` paint-order=\"${this.paintFirst}\" `:\"\"}}function Ke(t){return new RegExp(\"^(\"+t.join(\"|\")+\")\\\\b\",\"i\")}const Je=\"textDecorationThickness\",Qe=[\"fontSize\",\"fontWeight\",\"fontFamily\",\"fontStyle\"],Ze=[\"underline\",\"overline\",\"linethrough\"],ts=[...Qe,\"lineHeight\",\"text\",\"charSpacing\",\"textAlign\",\"styles\",\"path\",\"pathStartOffset\",\"pathSide\",\"pathAlign\"],es=[...ts,...Ze,\"textBackgroundColor\",\"direction\",Je],ss=[...Qe,...Ze,N,\"strokeWidth\",H,\"deltaY\",\"textBackgroundColor\",Je],is={_reNewline:P,_reSpacesAndTabs:/[ \\t\\r]/g,_reSpaceAndTab:/[ \\t\\r]/,_reWords:/\\S+/g,fontSize:40,fontWeight:J,fontFamily:\"Times New Roman\",underline:!1,overline:!1,linethrough:!1,textAlign:O,fontStyle:J,lineHeight:1.16,textBackgroundColor:\"\",stroke:null,shadow:null,path:void 0,pathStartOffset:0,pathSide:O,pathAlign:\"baseline\",charSpacing:0,deltaY:0,direction:q,CACHE_FONT_SIZE:400,MIN_TEXT_WIDTH:2,superscript:{size:.6,baseline:-.35},subscript:{size:.6,baseline:.11},_fontSizeFraction:.222,offsets:{underline:.1,linethrough:-.28167,overline:-.81333},_fontSizeMult:1.13,[Je]:66.667},rs=\"justify\",ns=\"justify-left\",os=\"justify-right\",as=\"justify-center\",hs=String.raw`[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?`,ls=String.raw`(?:\\s*,?\\s+|\\s*,\\s*)`,cs=\"http://www.w3.org/2000/svg\",us=new RegExp(\"(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(\"+hs+\"(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|\"+hs+\"))?\\\\s+(.*)\"),ds={cx:O,x:O,r:\"radius\",cy:k,y:k,display:\"visible\",visibility:\"visible\",transform:\"transformMatrix\",\"fill-opacity\":\"fillOpacity\",\"fill-rule\":\"fillRule\",\"font-family\":\"fontFamily\",\"font-size\":\"fontSize\",\"font-style\":\"fontStyle\",\"font-weight\":\"fontWeight\",\"letter-spacing\":\"charSpacing\",\"paint-order\":\"paintFirst\",\"stroke-dasharray\":\"strokeDashArray\",\"stroke-dashoffset\":\"strokeDashOffset\",\"stroke-linecap\":\"strokeLineCap\",\"stroke-linejoin\":\"strokeLineJoin\",\"stroke-miterlimit\":\"strokeMiterLimit\",\"stroke-opacity\":\"strokeOpacity\",\"stroke-width\":\"strokeWidth\",\"text-decoration\":\"textDecoration\",\"text-anchor\":\"textAnchor\",opacity:\"opacity\",\"clip-path\":\"clipPath\",\"clip-rule\":\"clipRule\",\"vector-effect\":\"strokeUniform\",\"image-rendering\":\"imageSmoothing\",\"text-decoration-thickness\":Je},gs=\"font-size\",fs=\"clip-path\",ps=Ke([\"path\",\"circle\",\"polygon\",\"polyline\",\"ellipse\",\"rect\",\"line\",\"image\",\"text\"]),ms=Ke([\"symbol\",\"image\",\"marker\",\"pattern\",\"view\",\"svg\"]),vs=Ke([\"symbol\",\"g\",\"a\",\"svg\",\"clipPath\",\"defs\"]),ys=new RegExp(String.raw`^\\s*(${hs})${ls}(${hs})${ls}(${hs})${ls}(${hs})\\s*$`),_s=\"(-?\\\\d+(?:\\\\.\\\\d*)?(?:px)?(?:\\\\s?|$))?\",xs=new RegExp(\"(?:\\\\s|^)\"+_s+_s+\"(\"+hs+\"?(?:px)?)?(?:\\\\s?|$)(?:$|\\\\s)\");class Cs{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=\"string\"==typeof t?Cs.parseShadow(t):t;Object.assign(this,Cs.ownDefaults,e),this.id=ft()}static parseShadow(t){const e=t.trim(),[,s=0,i=0,r=0]=(xs.exec(e)||[]).map(t=>parseFloat(t)||0);return{color:(e.replace(xs,\"\")||\"rgb(0,0,0)\").trim(),offsetX:s,offsetY:i,blur:r}}toString(){return[this.offsetX,this.offsetY,this.blur,this.color].join(\"px \")}toSVG(t){const e=Ce(new ot(this.offsetX,this.offsetY),xt(-t.angle)),i=new ze(this.color);let r=40,n=40;return t.width&&t.height&&(r=100*Wt((Math.abs(e.x)+this.blur)/t.width,s.NUM_FRACTION_DIGITS)+20,n=100*Wt((Math.abs(e.y)+this.blur)/t.height,s.NUM_FRACTION_DIGITS)+20),t.flipX&&(e.x*=-1),t.flipY&&(e.y*=-1),`<filter id=\"SVGID_${this.id}\" y=\"-${n}%\" height=\"${100+2*n}%\" x=\"-${r}%\" width=\"${100+2*r}%\" >\\n\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"${Wt(this.blur?this.blur/2:0,s.NUM_FRACTION_DIGITS)}\"></feGaussianBlur>\\n\\t<feOffset dx=\"${Wt(e.x,s.NUM_FRACTION_DIGITS)}\" dy=\"${Wt(e.y,s.NUM_FRACTION_DIGITS)}\" result=\"oBlur\" ></feOffset>\\n\\t<feFlood flood-color=\"${i.toRgb()}\" flood-opacity=\"${i.getAlpha()}\"/>\\n\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n\\t<feMerge>\\n\\t\\t<feMergeNode></feMergeNode>\\n\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n\\t</feMerge>\\n</filter>\\n`}toObject(){const t={color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling,type:this.constructor.type},e=Cs.ownDefaults;return this.includeDefaultValues?t:Yt(t,(t,s)=>t!==e[s])}static async fromObject(t){return new this(t)}}t(Cs,\"ownDefaults\",{color:\"rgb(0,0,0)\",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1}),t(Cs,\"type\",\"shadow\"),tt.setClass(Cs,\"shadow\");const bs=(t,e,s)=>Math.max(t,Math.min(e,s)),Ss=[k,O,W,V,\"flipX\",\"flipY\",\"originX\",\"originY\",\"angle\",\"opacity\",\"globalCompositeOperation\",\"shadow\",\"visible\",G,z],ws=[H,N,\"strokeWidth\",\"strokeDashArray\",\"width\",\"height\",\"paintFirst\",\"strokeUniform\",\"strokeLineCap\",\"strokeDashOffset\",\"strokeLineJoin\",\"strokeMiterLimit\",\"backgroundColor\",\"clipPath\"],Ts={top:0,left:0,width:0,height:0,angle:0,flipX:!1,flipY:!1,scaleX:1,scaleY:1,minScaleLimit:0,skewX:0,skewY:0,originX:T,originY:T,strokeWidth:1,strokeUniform:!1,padding:0,opacity:1,paintFirst:H,fill:\"rgb(0,0,0)\",fillRule:\"nonzero\",stroke:null,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:\"butt\",strokeLineJoin:\"miter\",strokeMiterLimit:4,globalCompositeOperation:\"source-over\",backgroundColor:\"\",shadow:null,visible:!0,includeDefaultValues:!0,excludeFromExport:!1,objectCaching:!0,clipPath:void 0,inverted:!1,absolutePositioned:!1,centeredRotation:!0,centeredScaling:!1,dirty:!0},Os=(t,e,s,i)=>(t<Math.abs(e)?(t=e,i=s/4):i=0===e&&0===t?s/x*Math.asin(1):s/x*Math.asin(e/t),{a:t,c:e,p:s,s:i}),ks=(t,e,s,i,r)=>t*Math.pow(2,10*(i-=1))*Math.sin((i*r-e)*x/s),Ds=(t,e,s,i)=>-s*Math.cos(t/i*y)+s+e,Ms=(t,e,s,i)=>(t/=i)<1/2.75?s*(7.5625*t*t)+e:t<2/2.75?s*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?s*(7.5625*(t-=2.25/2.75)*t+.9375)+e:s*(7.5625*(t-=2.625/2.75)*t+.984375)+e,Es=(t,e,s,i)=>s-Ms(i-t,0,s,i)+e;var Ps=Object.freeze({__proto__:null,defaultEasing:Ds,easeInBack:function(t,e,s,i){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1.70158;return s*(t/=i)*t*((r+1)*t-r)+e},easeInBounce:Es,easeInCirc:(t,e,s,i)=>-s*(Math.sqrt(1-(t/=i)*t)-1)+e,easeInCubic:(t,e,s,i)=>s*(t/i)**3+e,easeInElastic:(t,e,s,i)=>{const r=s;let n=0;if(0===t)return e;if(1===(t/=i))return e+s;n||(n=.3*i);const{a:o,s:a,p:h}=Os(r,s,n,1.70158);return-ks(o,a,h,t,i)+e},easeInExpo:(t,e,s,i)=>0===t?e:s*2**(10*(t/i-1))+e,easeInOutBack:function(t,e,s,i){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1.70158;return(t/=i/2)<1?s/2*(t*t*((1+(r*=1.525))*t-r))+e:s/2*((t-=2)*t*((1+(r*=1.525))*t+r)+2)+e},easeInOutBounce:(t,e,s,i)=>t<i/2?.5*Es(2*t,0,s,i)+e:.5*Ms(2*t-i,0,s,i)+.5*s+e,easeInOutCirc:(t,e,s,i)=>(t/=i/2)<1?-s/2*(Math.sqrt(1-t**2)-1)+e:s/2*(Math.sqrt(1-(t-=2)*t)+1)+e,easeInOutCubic:(t,e,s,i)=>(t/=i/2)<1?s/2*t**3+e:s/2*((t-2)**3+2)+e,easeInOutElastic:(t,e,s,i)=>{const r=s;let n=0;if(0===t)return e;if(2===(t/=i/2))return e+s;n||(n=i*(.3*1.5));const{a:o,s:a,p:h,c:l}=Os(r,s,n,1.70158);return t<1?-.5*ks(o,a,h,t,i)+e:o*Math.pow(2,-10*(t-=1))*Math.sin((t*i-a)*x/h)*.5+l+e},easeInOutExpo:(t,e,s,i)=>0===t?e:t===i?e+s:(t/=i/2)<1?s/2*2**(10*(t-1))+e:s/2*-(2**(-10*--t)+2)+e,easeInOutQuad:(t,e,s,i)=>(t/=i/2)<1?s/2*t**2+e:-s/2*(--t*(t-2)-1)+e,easeInOutQuart:(t,e,s,i)=>(t/=i/2)<1?s/2*t**4+e:-s/2*((t-=2)*t**3-2)+e,easeInOutQuint:(t,e,s,i)=>(t/=i/2)<1?s/2*t**5+e:s/2*((t-2)**5+2)+e,easeInOutSine:(t,e,s,i)=>-s/2*(Math.cos(Math.PI*t/i)-1)+e,easeInQuad:(t,e,s,i)=>s*(t/=i)*t+e,easeInQuart:(t,e,s,i)=>s*(t/=i)*t**3+e,easeInQuint:(t,e,s,i)=>s*(t/i)**5+e,easeInSine:(t,e,s,i)=>-s*Math.cos(t/i*y)+s+e,easeOutBack:function(t,e,s,i){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1.70158;return s*((t=t/i-1)*t*((r+1)*t+r)+1)+e},easeOutBounce:Ms,easeOutCirc:(t,e,s,i)=>s*Math.sqrt(1-(t=t/i-1)*t)+e,easeOutCubic:(t,e,s,i)=>s*((t/i-1)**3+1)+e,easeOutElastic:(t,e,s,i)=>{const r=s;let n=0;if(0===t)return e;if(1===(t/=i))return e+s;n||(n=.3*i);const{a:o,s:a,p:h,c:l}=Os(r,s,n,1.70158);return o*2**(-10*t)*Math.sin((t*i-a)*x/h)+l+e},easeOutExpo:(t,e,s,i)=>t===i?e+s:s*-(2**(-10*t/i)+1)+e,easeOutQuad:(t,e,s,i)=>-s*(t/=i)*(t-2)+e,easeOutQuart:(t,e,s,i)=>-s*((t=t/i-1)*t**3-1)+e,easeOutQuint:(t,e,s,i)=>s*((t/i-1)**5+1)+e,easeOutSine:(t,e,s,i)=>s*Math.sin(t/i*y)+e});const As=()=>!1;class js{constructor(e){let{startValue:s,byValue:i,duration:r=500,delay:n=0,easing:o=Ds,onStart:a=v,onChange:h=v,onComplete:l=v,abort:c=As,target:u}=e;t(this,\"_state\",\"pending\"),t(this,\"durationProgress\",0),t(this,\"valueProgress\",0),this.tick=this.tick.bind(this),this.duration=r,this.delay=n,this.easing=o,this._onStart=a,this._onChange=h,this._onComplete=l,this._abort=c,this.target=u,this.startValue=s,this.byValue=i,this.value=this.startValue,this.endValue=Object.freeze(this.calculate(this.duration).value)}get state(){return this._state}isDone(){return\"aborted\"===this._state||\"completed\"===this._state}start(){const t=t=>{\"pending\"===this._state&&(this.startTime=t||+new Date,this._state=\"running\",this._onStart(),this.tick(this.startTime))};this.register(),this.delay>0?setTimeout(()=>ut(t),this.delay):ut(t)}tick(t){const e=(t||+new Date)-this.startTime,s=Math.min(e,this.duration);this.durationProgress=s/this.duration;const{value:i,valueProgress:r}=this.calculate(s);this.value=Object.freeze(i),this.valueProgress=r,\"aborted\"!==this._state&&(this._abort(this.value,this.valueProgress,this.durationProgress)?(this._state=\"aborted\",this.unregister()):e>=this.duration?(this.durationProgress=this.valueProgress=1,this._onChange(this.endValue,this.valueProgress,this.durationProgress),this._state=\"completed\",this._onComplete(this.endValue,this.valueProgress,this.durationProgress),this.unregister()):(this._onChange(this.value,this.valueProgress,this.durationProgress),ut(this.tick)))}register(){et.push(this)}unregister(){et.remove(this)}abort(){this._state=\"aborted\",this.unregister()}}class Fs extends js{constructor(t){let{startValue:e=0,endValue:s=100,...i}=t;super({...i,startValue:e,byValue:s-e})}calculate(t){const e=this.easing(t,this.startValue,this.byValue,this.duration);return{value:e,valueProgress:Math.abs((e-this.startValue)/this.byValue)}}}class Ls extends js{constructor(t){let{startValue:e=[0],endValue:s=[100],...i}=t;super({...i,startValue:e,byValue:s.map((t,s)=>t-e[s])})}calculate(t){const e=this.startValue.map((e,s)=>this.easing(t,e,this.byValue[s],this.duration,s));return{value:e,valueProgress:Math.abs((e[0]-this.startValue[0])/this.byValue[0])}}}const Is=(t,e,s,i)=>e+s*(1-Math.cos(t/i*y)),Rs=t=>t&&((e,s,i)=>t(new ze(e).toRgba(),s,i));class Bs extends js{constructor(t){let{startValue:e,endValue:s,easing:i=Is,onChange:r,onComplete:n,abort:o,...a}=t;const h=new ze(e).getSource(),l=new ze(s).getSource();super({...a,startValue:h,byValue:l.map((t,e)=>t-h[e]),easing:i,onChange:Rs(r),onComplete:Rs(n),abort:Rs(o)})}calculate(t){const[e,s,i,r]=this.startValue.map((e,s)=>this.easing(t,e,this.byValue[s],this.duration,s)),n=[...[e,s,i].map(Math.round),bs(0,r,1)];return{value:n,valueProgress:n.map((t,e)=>0!==this.byValue[e]?Math.abs((t-this.startValue[e])/this.byValue[e]):0).find(t=>0!==t)||0}}}function $s(t){const e=(t=>Array.isArray(t.startValue)||Array.isArray(t.endValue))(t)?new Ls(t):new Fs(t);return e.start(),e}function Xs(t){const e=new Bs(t);return e.start(),e}class Ys{constructor(t){this.status=t,this.points=[]}includes(t){return this.points.some(e=>e.eq(t))}append(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return this.points=this.points.concat(e.filter(t=>!this.includes(t))),this}static isPointContained(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(e.eq(s))return t.eq(e);if(e.x===s.x)return t.x===e.x&&(i||t.y>=Math.min(e.y,s.y)&&t.y<=Math.max(e.y,s.y));if(e.y===s.y)return t.y===e.y&&(i||t.x>=Math.min(e.x,s.x)&&t.x<=Math.max(e.x,s.x));{const r=be(e,s),n=be(e,t).divide(r);return i?Math.abs(n.x)===Math.abs(n.y):n.x===n.y&&n.x>=0&&n.x<=1}}static isPointInPolygon(t,e){const s=new ot(t).setX(Math.min(t.x-1,...e.map(t=>t.x)));let i=0;for(let r=0;r<e.length;r++){const n=this.intersectSegmentSegment(e[r],e[(r+1)%e.length],t,s);if(n.includes(t))return!0;i+=Number(\"Intersection\"===n.status)}return i%2==1}static intersectLineLine(t,e,s,i){let r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];const o=e.x-t.x,a=e.y-t.y,h=i.x-s.x,l=i.y-s.y,c=t.x-s.x,u=t.y-s.y,d=h*u-l*c,g=o*u-a*c,f=l*o-h*a;if(0!==f){const e=d/f,s=g/f;return(r||0<=e&&e<=1)&&(n||0<=s&&s<=1)?new Ys(\"Intersection\").append(new ot(t.x+e*o,t.y+e*a)):new Ys}if(0===d||0===g){const o=r||n||Ys.isPointContained(t,s,i)||Ys.isPointContained(e,s,i)||Ys.isPointContained(s,t,e)||Ys.isPointContained(i,t,e);return new Ys(o?\"Coincident\":void 0)}return new Ys(\"Parallel\")}static intersectSegmentLine(t,e,s,i){return Ys.intersectLineLine(t,e,s,i,!1,!0)}static intersectSegmentSegment(t,e,s,i){return Ys.intersectLineLine(t,e,s,i,!1,!1)}static intersectLinePolygon(t,e,s){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const r=new Ys,n=s.length;for(let o,a,h,l=0;l<n;l++){if(o=s[l],a=s[(l+1)%n],h=Ys.intersectLineLine(t,e,o,a,i,!1),\"Coincident\"===h.status)return h;r.append(...h.points)}return r.points.length>0&&(r.status=\"Intersection\"),r}static intersectSegmentPolygon(t,e,s){return Ys.intersectLinePolygon(t,e,s,!1)}static intersectPolygonPolygon(t,e){const s=new Ys,i=t.length,r=[];for(let n=0;n<i;n++){const o=t[n],a=t[(n+1)%i],h=Ys.intersectSegmentPolygon(o,a,e);\"Coincident\"===h.status?(r.push(h),s.append(o,a)):s.append(...h.points)}return r.length>0&&r.length===t.length?new Ys(\"Coincident\"):(s.points.length>0&&(s.status=\"Intersection\"),s)}static intersectPolygonRectangle(t,e,s){const i=e.min(s),r=e.max(s),n=new ot(r.x,i.y),o=new ot(i.x,r.y);return Ys.intersectPolygonPolygon(t,[i,n,r,o])}}class Ws extends ct{getX(){return this.getXY().x}setX(t){this.setXY(this.getXY().setX(t))}getY(){return this.getXY().y}setY(t){this.setXY(this.getXY().setY(t))}getRelativeX(){return this.left}setRelativeX(t){this.left=t}getRelativeY(){return this.top}setRelativeY(t){this.top=t}getXY(){const t=this.getRelativeXY();return this.group?St(t,this.group.calcTransformMatrix()):t}setXY(t,e,s){this.group&&(t=St(t,wt(this.group.calcTransformMatrix()))),this.setRelativeXY(t,e,s)}getRelativeXY(){return new ot(this.left,this.top)}setRelativeXY(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.originX,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.originY;this.setPositionByOrigin(t,e,s)}isStrokeAccountedForInDimensions(){return!1}getCoords(){const{tl:t,tr:e,br:s,bl:i}=this.aCoords||(this.aCoords=this.calcACoords()),r=[t,e,s,i];if(this.group){const t=this.group.calcTransformMatrix();return r.map(e=>St(e,t))}return r}intersectsWithRect(t,e){return\"Intersection\"===Ys.intersectPolygonRectangle(this.getCoords(),t,e).status}intersectsWithObject(t){const e=Ys.intersectPolygonPolygon(this.getCoords(),t.getCoords());return\"Intersection\"===e.status||\"Coincident\"===e.status||t.isContainedWithinObject(this)||this.isContainedWithinObject(t)}isContainedWithinObject(t){return this.getCoords().every(e=>t.containsPoint(e))}isContainedWithinRect(t,e){const{left:s,top:i,width:r,height:n}=this.getBoundingRect();return s>=t.x&&s+r<=e.x&&i>=t.y&&i+n<=e.y}isOverlapping(t){return this.intersectsWithObject(t)||this.isContainedWithinObject(t)||t.isContainedWithinObject(this)}containsPoint(t){return Ys.isPointInPolygon(t,this.getCoords())}isOnScreen(){if(!this.canvas)return!1;const{tl:t,br:e}=this.canvas.vptCoords;return!!this.getCoords().some(s=>s.x<=e.x&&s.x>=t.x&&s.y<=e.y&&s.y>=t.y)||(!!this.intersectsWithRect(t,e)||this.containsPoint(t.midPointFrom(e)))}isPartiallyOnScreen(){if(!this.canvas)return!1;const{tl:t,br:e}=this.canvas.vptCoords;if(this.intersectsWithRect(t,e))return!0;return this.getCoords().every(s=>(s.x>=e.x||s.x<=t.x)&&(s.y>=e.y||s.y<=t.y))&&this.containsPoint(t.midPointFrom(e))}getBoundingRect(){return ae(this.getCoords())}getScaledWidth(){return this._getTransformedDimensions().x}getScaledHeight(){return this._getTransformedDimensions().y}scale(t){this._set(W,t),this._set(V,t),this.setCoords()}scaleToWidth(t){const e=this.getBoundingRect().width/this.getScaledWidth();return this.scale(t/this.width/e)}scaleToHeight(t){const e=this.getBoundingRect().height/this.getScaledHeight();return this.scale(t/this.height/e)}getCanvasRetinaScaling(){var t;return(null===(t=this.canvas)||void 0===t?void 0:t.getRetinaScaling())||1}getTotalAngle(){return this.group?Ct(kt(this.calcTransformMatrix())):this.angle}getViewportTransform(){var t;return(null===(t=this.canvas)||void 0===t?void 0:t.viewportTransform)||b.concat()}calcACoords(){const t=Et({angle:this.angle}),{x:e,y:s}=this.getRelativeCenterPoint(),i=Mt(e,s),r=Tt(i,t),n=this._getTransformedDimensions(),o=n.x/2,a=n.y/2;return{tl:St({x:-o,y:-a},r),tr:St({x:o,y:-a},r),bl:St({x:-o,y:a},r),br:St({x:o,y:a},r)}}setCoords(){this.aCoords=this.calcACoords()}transformMatrixKey(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=[];return!t&&this.group&&(e=this.group.transformMatrixKey(t)),e.push(this.top,this.left,this.width,this.height,this.scaleX,this.scaleY,this.angle,this.strokeWidth,this.skewX,this.skewY,+this.flipX,+this.flipY,ye(this.originX),ye(this.originY)),e}calcTransformMatrix(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.calcOwnMatrix();if(t||!this.group)return e;const s=this.transformMatrixKey(t),i=this.matrixCache;return i&&i.key.every((t,e)=>t===s[e])?i.value:(this.group&&(e=Tt(this.group.calcTransformMatrix(!1),e)),this.matrixCache={key:s,value:e},e)}calcOwnMatrix(){const t=this.transformMatrixKey(!0),e=this.ownMatrixCache;if(e&&e.key.every((e,s)=>e===t[s]))return e.value;const s=this.getRelativeCenterPoint(),i={angle:this.angle,translateX:s.x,translateY:s.y,scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,flipX:this.flipX,flipY:this.flipY},r=It(i);return this.ownMatrixCache={key:t,value:r},r}_getNonTransformedDimensions(){return new ot(this.width,this.height).scalarAdd(this.strokeWidth)}_calculateCurrentDimensions(t){return this._getTransformedDimensions(t).transform(this.getViewportTransform(),!0).scalarAdd(2*this.padding)}_getTransformedDimensions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e={scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,width:this.width,height:this.height,strokeWidth:this.strokeWidth,...t},s=e.strokeWidth;let i=s,r=0;this.strokeUniform&&(i=0,r=s);const n=e.width+i,o=e.height+i;let a;return a=0===e.skewX&&0===e.skewY?new ot(n*e.scaleX,o*e.scaleY):de(n,o,Lt(e)),a.scalarAdd(r)}translateToGivenOrigin(t,e,s,i,r){let n=t.x,o=t.y;const a=ye(i)-ye(e),h=ye(r)-ye(s);if(a||h){const t=this._getTransformedDimensions();n+=a*t.x,o+=h*t.y}return new ot(n,o)}translateToCenterPoint(t,e,s){if(e===T&&s===T)return t;const i=this.translateToGivenOrigin(t,e,s,T,T);return this.angle?i.rotate(xt(this.angle),t):i}translateToOriginPoint(t,e,s){const i=this.translateToGivenOrigin(t,T,T,e,s);return this.angle?i.rotate(xt(this.angle),t):i}getCenterPoint(){const t=this.getRelativeCenterPoint();return this.group?St(t,this.group.calcTransformMatrix()):t}getRelativeCenterPoint(){return this.translateToCenterPoint(new ot(this.left,this.top),this.originX,this.originY)}getPointByOrigin(t,e){return this.getPositionByOrigin(t,e)}getPositionByOrigin(t,e){return this.translateToOriginPoint(this.getRelativeCenterPoint(),t,e)}setPositionByOrigin(t,e,s){const i=this.translateToCenterPoint(t,e,s),r=this.translateToOriginPoint(i,this.originX,this.originY);this.set({left:r.x,top:r.y})}_getLeftTopCoords(){return this.getPositionByOrigin(O,k)}positionByLeftTop(t){return this.setPositionByOrigin(t,O,k)}}let Vs=class e extends Ws{static getDefaults(){return e.ownDefaults}get type(){const t=this.constructor.type;return\"FabricObject\"===t?\"object\":t.toLowerCase()}set type(t){i(\"warn\",\"Setting type has no effect\",t)}constructor(s){super(),t(this,\"_cacheContext\",null),Object.assign(this,e.ownDefaults),this.setOptions(s)}_createCacheCanvas(){this._cacheCanvas=pt(),this._cacheContext=this._cacheCanvas.getContext(\"2d\"),this._updateCacheCanvas(),this.dirty=!0}_limitCacheSize(t){const e=t.width,i=t.height,r=s.maxCacheSideLimit,n=s.minCacheSideLimit;if(e<=r&&i<=r&&e*i<=s.perfLimitSizeTotal)return e<n&&(t.width=n),i<n&&(t.height=n),t;const o=e/i,[a,h]=p.limitDimsByArea(o),l=bs(n,a,r),c=bs(n,h,r);return e>l&&(t.zoomX/=e/l,t.width=l,t.capped=!0),i>c&&(t.zoomY/=i/c,t.height=c,t.capped=!0),t}_getCacheCanvasDimensions(){const t=this.getTotalObjectScaling(),e=this._getTransformedDimensions({skewX:0,skewY:0}),s=e.x*t.x/this.scaleX,i=e.y*t.y/this.scaleY;return{width:Math.ceil(s+2),height:Math.ceil(i+2),zoomX:t.x,zoomY:t.y,x:s,y:i}}_updateCacheCanvas(){const t=this._cacheCanvas,e=this._cacheContext,{width:s,height:i,zoomX:r,zoomY:n,x:o,y:a}=this._limitCacheSize(this._getCacheCanvasDimensions()),h=s!==t.width||i!==t.height,l=this.zoomX!==r||this.zoomY!==n;if(!t||!e)return!1;if(h||l){s!==t.width||i!==t.height?(t.width=s,t.height=i):(e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,t.width,t.height));const h=o/2,l=a/2;return this.cacheTranslationX=Math.round(t.width/2-h)+h,this.cacheTranslationY=Math.round(t.height/2-l)+l,e.translate(this.cacheTranslationX,this.cacheTranslationY),e.scale(r,n),this.zoomX=r,this.zoomY=n,!0}return!1}setOptions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._setOptions(t)}transform(t){const e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,s=this.calcTransformMatrix(!e);t.transform(s[0],s[1],s[2],s[3],s[4],s[5])}getObjectScaling(){if(!this.group)return new ot(Math.abs(this.scaleX),Math.abs(this.scaleY));const t=Dt(this.calcTransformMatrix());return new ot(Math.abs(t.scaleX),Math.abs(t.scaleY))}getTotalObjectScaling(){const t=this.getObjectScaling();if(this.canvas){const e=this.canvas.getZoom(),s=this.getCanvasRetinaScaling();return t.scalarMultiply(e*s)}return t}getObjectOpacity(){let t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t}_constrainScale(t){return Math.abs(t)<this.minScaleLimit?t<0?-this.minScaleLimit:this.minScaleLimit:0===t?1e-4:t}_set(t,e){t!==W&&t!==V||(e=this._constrainScale(e)),t===W&&e<0?(this.flipX=!this.flipX,e*=-1):\"scaleY\"===t&&e<0?(this.flipY=!this.flipY,e*=-1):\"shadow\"!==t||!e||e instanceof Cs||(e=new Cs(e));const s=this[t]!==e;return this[t]=e,s&&this.constructor.cacheProperties.includes(t)&&(this.dirty=!0),this.parent&&(this.dirty||s&&this.constructor.stateProperties.includes(t))&&this.parent._set(\"dirty\",!0),this}isNotVisible(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible}render(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.drawObject(t,!1,{}),this.dirty=!1),t.restore())}drawSelectionBackground(t){}renderCache(t){if(t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&this._cacheContext){const{zoomX:e,zoomY:s,cacheTranslationX:i,cacheTranslationY:r}=this,{width:n,height:o}=this._cacheCanvas;this.drawObject(this._cacheContext,t.forClipping,{zoomX:e,zoomY:s,cacheTranslationX:i,cacheTranslationY:r,width:n,height:o,parentClipPaths:[]}),this.dirty=!1}}_removeCacheCanvas(){this._cacheCanvas=void 0,this._cacheContext=null}hasStroke(){return!!this.stroke&&\"transparent\"!==this.stroke&&0!==this.strokeWidth}hasFill(){return!!this.fill&&\"transparent\"!==this.fill}needsItsOwnCache(){return!!(this.paintFirst===N&&this.hasFill()&&this.hasStroke()&&this.shadow)||!!this.clipPath}shouldCache(){return this.ownCaching=this.objectCaching&&(!this.parent||!this.parent.isOnACache())||this.needsItsOwnCache(),this.ownCaching}willDrawShadow(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)}drawClipPathOnCache(t,e,s){t.save(),e.inverted?t.globalCompositeOperation=\"destination-out\":t.globalCompositeOperation=\"destination-in\",t.setTransform(1,0,0,1,0,0),t.drawImage(s,0,0),t.restore()}drawObject(t,e,s){const i=this.fill,r=this.stroke;e?(this.fill=\"black\",this.stroke=\"\",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath,s),this.fill=i,this.stroke=r}createClipPathLayer(t,e){const s=vt(e),i=s.getContext(\"2d\");if(i.translate(e.cacheTranslationX,e.cacheTranslationY),i.scale(e.zoomX,e.zoomY),t._cacheCanvas=s,e.parentClipPaths.forEach(t=>{t.transform(i)}),e.parentClipPaths.push(t),t.absolutePositioned){const t=wt(this.calcTransformMatrix());i.transform(t[0],t[1],t[2],t[3],t[4],t[5])}return t.transform(i),t.drawObject(i,!0,e),s}_drawClipPath(t,e,s){if(!e)return;e._transformDone=!0;const i=this.createClipPathLayer(e,s);this.drawClipPathOnCache(t,e,i)}drawCacheOnCanvas(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)}isCacheDirty(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.isNotVisible())return!1;const e=this._cacheCanvas,s=this._cacheContext;return!(!e||!s||t||!this._updateCacheCanvas())||!!(this.dirty||this.clipPath&&this.clipPath.absolutePositioned)&&(e&&s&&!t&&(s.save(),s.setTransform(1,0,0,1,0,0),s.clearRect(0,0,e.width,e.height),s.restore()),!0)}_renderBackground(t){if(!this.backgroundColor)return;const e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}_setOpacity(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity}_setStrokeStyles(t,e){const s=e.stroke;s&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,Gt(s)?\"percentage\"===s.gradientUnits||s.gradientTransform||s.patternTransform?this._applyPatternForTransformedGradient(t,s):(t.strokeStyle=s.toLive(t),this._applyPatternGradientTransform(t,s)):t.strokeStyle=e.stroke)}_setFillStyles(t,e){let{fill:s}=e;s&&(Gt(s)?(t.fillStyle=s.toLive(t),this._applyPatternGradientTransform(t,s)):t.fillStyle=s)}_setClippingProperties(t){t.globalAlpha=1,t.strokeStyle=\"transparent\",t.fillStyle=\"#000000\"}_setLineDash(t,e){e&&0!==e.length&&t.setLineDash(e)}_setShadow(t){if(!this.shadow)return;const e=this.shadow,i=this.canvas,r=this.getCanvasRetinaScaling(),[n,,,o]=(null==i?void 0:i.viewportTransform)||b,a=n*r,h=o*r,l=e.nonScaling?new ot(1,1):this.getObjectScaling();t.shadowColor=e.color,t.shadowBlur=e.blur*s.browserShadowBlurConstant*(a+h)*(l.x+l.y)/4,t.shadowOffsetX=e.offsetX*a*l.x,t.shadowOffsetY=e.offsetY*h*l.y}_removeShadow(t){this.shadow&&(t.shadowColor=\"\",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)}_applyPatternGradientTransform(t,e){if(!Gt(e))return{offsetX:0,offsetY:0};const s=e.gradientTransform||e.patternTransform,i=-this.width/2+e.offsetX||0,r=-this.height/2+e.offsetY||0;return\"percentage\"===e.gradientUnits?t.transform(this.width,0,0,this.height,i,r):t.transform(1,0,0,1,i,r),s&&t.transform(s[0],s[1],s[2],s[3],s[4],s[5]),{offsetX:i,offsetY:r}}_renderPaintInOrder(t){this.paintFirst===N?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))}_render(t){}_renderFill(t){this.fill&&(t.save(),this._setFillStyles(t,this),\"evenodd\"===this.fillRule?t.fill(\"evenodd\"):t.fill(),t.restore())}_renderStroke(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform){const e=this.getObjectScaling();t.scale(1/e.x,1/e.y)}this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}}_applyPatternForTransformedGradient(t,e){var s;const i=this._limitCacheSize(this._getCacheCanvasDimensions()),r=this.getCanvasRetinaScaling(),n=i.x/this.scaleX/r,o=i.y/this.scaleY/r,a=vt({width:Math.ceil(n),height:Math.ceil(o)}),h=a.getContext(\"2d\");h&&(h.beginPath(),h.moveTo(0,0),h.lineTo(n,0),h.lineTo(n,o),h.lineTo(0,o),h.closePath(),h.translate(n/2,o/2),h.scale(i.zoomX/this.scaleX/r,i.zoomY/this.scaleY/r),this._applyPatternGradientTransform(h,e),h.fillStyle=e.toLive(t),h.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(r*this.scaleX/i.zoomX,r*this.scaleY/i.zoomY),t.strokeStyle=null!==(s=h.createPattern(a,\"no-repeat\"))&&void 0!==s?s:\"\")}_findCenterFromElement(){return new ot(this.left+this.width/2,this.top+this.height/2)}clone(t){const e=this.toObject(t);return this.constructor.fromObject(e)}cloneAsImage(t){const e=this.toCanvasElement(t);return new(tt.getClass(\"image\"))(e)}toCanvasElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=ue(this),s=this.group,i=this.shadow,r=Math.abs,n=t.enableRetinaScaling?f():1,o=(t.multiplier||1)*n,a=t.canvasProvider||(t=>new se(t,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1}));delete this.group,t.withoutTransform&&ce(this),t.withoutShadow&&(this.shadow=null),t.viewportTransform&&me(this,this.getViewportTransform()),this.setCoords();const h=pt(),l=this.getBoundingRect(),c=this.shadow,u=new ot;if(c){const t=c.blur,e=c.nonScaling?new ot(1,1):this.getObjectScaling();u.x=2*Math.round(r(c.offsetX)+t)*r(e.x),u.y=2*Math.round(r(c.offsetY)+t)*r(e.y)}const d=l.width+u.x,g=l.height+u.y;h.width=Math.ceil(d),h.height=Math.ceil(g);const p=a(h);\"jpeg\"===t.format&&(p.backgroundColor=\"#fff\"),this.setPositionByOrigin(new ot(p.width/2,p.height/2),T,T);const m=this.canvas;p._objects=[this],this.set(\"canvas\",p),this.setCoords();const v=p.toCanvasElement(o||1,t);return this.set(\"canvas\",m),this.shadow=i,s&&(this.group=s),this.set(e),this.setCoords(),p._objects=[],p.destroy(),v}toDataURL(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return yt(this.toCanvasElement(t),t.format||\"png\",t.quality||1)}toBlob(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _t(this.toCanvasElement(t),t.format||\"png\",t.quality||1)}isType(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return e.includes(this.constructor.type)||e.includes(this.type)}complexity(){return 1}toJSON(){return this.toObject()}rotate(t){const{centeredRotation:e,originX:s,originY:i}=this;if(e){const{x:t,y:e}=this.getRelativeCenterPoint();this.originX=T,this.originY=T,this.left=t,this.top=e}if(this.set(\"angle\",t),e){const{x:t,y:e}=this.getPositionByOrigin(s,i);this.left=t,this.top=e,this.originX=s,this.originY=i}}setOnGroup(){}_setupCompositeOperation(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)}dispose(){et.cancelByTarget(this),this.off(),this._set(\"canvas\",void 0),this._cacheCanvas&&u().dispose(this._cacheCanvas),this._cacheCanvas=void 0,this._cacheContext=null}animate(t,e){return Object.entries(t).reduce((t,s)=>{let[i,r]=s;return t[i]=this._animate(i,r,e),t},{})}_animate(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=t.split(\".\"),r=this.constructor.colorProperties.includes(i[i.length-1]),{abort:n,startValue:o,onChange:a,onComplete:h}=s,l={...s,target:this,startValue:null!=o?o:i.reduce((t,e)=>t[e],this),endValue:e,abort:null==n?void 0:n.bind(this),onChange:(t,e,s)=>{i.reduce((e,s,r)=>(r===i.length-1&&(e[s]=t),e[s]),this),a&&a(t,e,s)},onComplete:(t,e,s)=>{this.setCoords(),h&&h(t,e,s)}};return r?Xs(l):$s(l)}isDescendantOf(t){const{parent:e,group:s}=this;return e===t||s===t||!!e&&e.isDescendantOf(t)||!!s&&s!==e&&s.isDescendantOf(t)}getAncestors(){const t=[];let e=this;do{e=e.parent,e&&t.push(e)}while(e);return t}findCommonAncestors(t){if(this===t)return{fork:[],otherFork:[],common:[this,...this.getAncestors()]};const e=this.getAncestors(),s=t.getAncestors();if(0===e.length&&s.length>0&&this===s[s.length-1])return{fork:[],otherFork:[t,...s.slice(0,s.length-1)],common:[this]};for(let i,r=0;r<e.length;r++){if(i=e[r],i===t)return{fork:[this,...e.slice(0,r)],otherFork:[],common:e.slice(r)};for(let n=0;n<s.length;n++){if(this===s[n])return{fork:[],otherFork:[t,...s.slice(0,n)],common:[this,...e]};if(i===s[n])return{fork:[this,...e.slice(0,r)],otherFork:[t,...s.slice(0,n)],common:e.slice(r)}}}return{fork:[this,...e],otherFork:[t,...s],common:[]}}hasCommonAncestors(t){const e=this.findCommonAncestors(t);return e&&!!e.common.length}isInFrontOf(t){if(this===t)return;const e=this.findCommonAncestors(t);if(e.fork.includes(t))return!0;if(e.otherFork.includes(this))return!1;const s=e.common[0]||this.canvas;if(!s)return;const i=e.fork.pop(),r=e.otherFork.pop(),n=s._objects.indexOf(i),o=s._objects.indexOf(r);return n>-1&&n>o}toObject(){const t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).concat(e.customProperties,this.constructor.customProperties||[]);let i;const r=s.NUM_FRACTION_DIGITS,{clipPath:n,fill:o,stroke:a,shadow:h,strokeDashArray:l,left:c,top:u,originX:d,originY:g,width:f,height:p,strokeWidth:v,strokeLineCap:y,strokeDashOffset:_,strokeLineJoin:x,strokeUniform:C,strokeMiterLimit:b,scaleX:S,scaleY:w,angle:T,flipX:O,flipY:k,opacity:D,visible:M,backgroundColor:E,fillRule:P,paintFirst:A,globalCompositeOperation:j,skewX:F,skewY:L}=this;n&&!n.excludeFromExport&&(i=n.toObject(t.concat(\"inverted\",\"absolutePositioned\")));const I=t=>Wt(t,r),R={...Xt(this,t),type:this.constructor.type,version:m,originX:d,originY:g,left:I(c),top:I(u),width:I(f),height:I(p),fill:zt(o)?o.toObject():o,stroke:zt(a)?a.toObject():a,strokeWidth:I(v),strokeDashArray:l?l.concat():l,strokeLineCap:y,strokeDashOffset:_,strokeLineJoin:x,strokeUniform:C,strokeMiterLimit:I(b),scaleX:I(S),scaleY:I(w),angle:I(T),flipX:O,flipY:k,opacity:I(D),shadow:h?h.toObject():h,visible:M,backgroundColor:E,fillRule:P,paintFirst:A,globalCompositeOperation:j,skewX:I(F),skewY:I(L),...i?{clipPath:i}:null};return this.includeDefaultValues?R:this._removeDefaultValues(R)}toDatalessObject(t){return this.toObject(t)}_removeDefaultValues(t){const e=this.constructor.getDefaults(),s=Object.keys(e).length>0?e:Object.getPrototypeOf(this);return Yt(t,(t,e)=>{if(e===O||e===k||\"type\"===e)return!0;const i=s[e];return t!==i&&!(Array.isArray(t)&&Array.isArray(i)&&0===t.length&&0===i.length)})}toString(){return`#<${this.constructor.type}>`}static _fromObject(t){let{type:e,...s}=t,{extraParam:i,...r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return $t(s,r).then(t=>i?(delete t[i],new this(s[i],t)):new this(t))}static fromObject(t,e){return this._fromObject(t,e)}};t(Vs,\"stateProperties\",Ss),t(Vs,\"cacheProperties\",ws),t(Vs,\"ownDefaults\",Ts),t(Vs,\"type\",\"FabricObject\"),t(Vs,\"colorProperties\",[H,N,\"backgroundColor\"]),t(Vs,\"customProperties\",[]),tt.setClass(Vs),tt.setClass(Vs,\"object\");const Gs=(t,e)=>{var s;const{transform:{target:i}}=e;null===(s=i.canvas)||void 0===s||s.fire(`object:${t}`,{...e,target:i}),i.fire(t,e)},zs=(t,e,s)=>(i,r,n,o)=>{const a=e(i,r,n,o);return a&&Gs(t,{...Le(i,r,n,o),...s}),a};function Hs(t){return(e,s,i,r)=>{const{target:n,originX:o,originY:a}=s,h=n.getPositionByOrigin(o,a),l=t(e,s,i,r);return n.setPositionByOrigin(h,s.originX,s.originY),l}}const Ns=(t,e,s,i)=>(r,n,o,a)=>{const h=Re(n,n.originX,n.originY,o,a)[s],l=ye(n[e]);if(0===l||l>0&&h<0||l<0&&h>0){const{target:e}=n,s=e.strokeWidth/(e.strokeUniform?e[i]:1),r=Ae(n)?2:1,o=e[t],a=Math.abs(h*r/e[i])-s;return e.set(t,Math.max(a,1)),o!==e[t]}return!1},Us=Ns(\"width\",\"originX\",\"x\",\"scaleX\"),qs=Ns(\"height\",\"originY\",\"y\",\"scaleY\"),Ks=zs(R,Hs(Us)),Js=zs(R,Hs(qs));function Qs(t,e,s,i,r){t.save();const{stroke:n,xSize:o,ySize:a,opName:h}=this.commonRenderProps(t,e,s,r,i);let l=o;o>a?t.scale(1,a/o):a>o&&(l=a,t.scale(o/a,1)),t.beginPath(),t.arc(0,0,l/2,0,x,!1),t[h](),n&&t.stroke(),t.restore()}function Zs(t,e,s,i,r){t.save();const{stroke:n,xSize:o,ySize:a,opName:h}=this.commonRenderProps(t,e,s,r,i),l=o/2,c=a/2;t[`${h}Rect`](-l,-c,o,a),n&&t.strokeRect(-l,-c,o,a),t.restore()}class ti{constructor(e){t(this,\"visible\",!0),t(this,\"actionName\",Y),t(this,\"angle\",0),t(this,\"x\",0),t(this,\"y\",0),t(this,\"offsetX\",0),t(this,\"offsetY\",0),t(this,\"sizeX\",0),t(this,\"sizeY\",0),t(this,\"touchSizeX\",0),t(this,\"touchSizeY\",0),t(this,\"cursorStyle\",\"crosshair\"),t(this,\"withConnection\",!1),Object.assign(this,e)}shouldActivate(t,e,s,i){var r;let{tl:n,tr:o,br:a,bl:h}=i;return(null===(r=e.canvas)||void 0===r?void 0:r.getActiveObject())===e&&e.isControlVisible(t)&&Ys.isPointInPolygon(s,[n,o,a,h])}getActionHandler(t,e,s){return this.actionHandler}getMouseDownHandler(t,e,s){return this.mouseDownHandler}getMouseUpHandler(t,e,s){return this.mouseUpHandler}cursorStyleHandler(t,e,s,i){return e.cursorStyle}getActionName(t,e,s){return e.actionName}getVisibility(t,e){var s,i;return null!==(s=null===(i=t._controlsVisibility)||void 0===i?void 0:i[e])&&void 0!==s?s:this.visible}setVisibility(t,e,s){this.visible=t}positionHandler(t,e,s,i){return new ot(this.x*t.x+this.offsetX,this.y*t.y+this.offsetY).transform(e)}calcCornerCoords(t,e,s,i,r,n){const o=Ot([Mt(s,i),Et({angle:t}),Pt((r?this.touchSizeX:this.sizeX)||e,(r?this.touchSizeY:this.sizeY)||e)]);return{tl:new ot(-.5,-.5).transform(o),tr:new ot(.5,-.5).transform(o),br:new ot(.5,.5).transform(o),bl:new ot(-.5,.5).transform(o)}}commonRenderProps(t,e,s,i){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const{cornerSize:n,cornerColor:o,transparentCorners:a,cornerStrokeColor:h}=r,l=n||i.cornerSize,c=this.sizeX||l,u=this.sizeY||l,d=void 0!==a?a:i.transparentCorners,g=d?N:H,f=h||i.cornerStrokeColor,p=!d&&!!f;return t.fillStyle=o||i.cornerColor||\"\",t.strokeStyle=f||\"\",t.translate(e,s),t.rotate(xt(i.getTotalAngle())),{stroke:p,xSize:c,ySize:u,transparentCorners:d,opName:g}}render(t,e,s,i,r){if(\"circle\"===((i=i||{}).cornerStyle||r.cornerStyle))Qs.call(this,t,e,s,i,r);else Zs.call(this,t,e,s,i,r)}}const ei=(t,e,s)=>s.lockRotation?Pe:e.cursorStyle,si=zs(F,Hs((t,e,s,i)=>{let{target:r,ex:n,ey:o,theta:a,originX:h,originY:l}=e;const c=r.getPositionByOrigin(h,l);if(Fe(r,\"lockRotation\"))return!1;const u=Math.atan2(o-c.y,n-c.x),d=Math.atan2(i-c.y,s-c.x);let g=Ct(d-u+a);if(r.snapAngle&&r.snapAngle>0){const t=r.snapAngle,e=r.snapThreshold||t,s=Math.ceil(g/t)*t,i=Math.floor(g/t)*t;Math.abs(g-i)<e?g=i:Math.abs(g-s)<e&&(g=s)}g<0&&(g=360+g),g%=360;const f=r.angle!==g;return r.angle=g,f}));function ii(t,e){const s=e.canvas,i=t[s.uniScaleKey];return s.uniformScaling&&!i||!s.uniformScaling&&i}function ri(t,e,s){const i=Fe(t,\"lockScalingX\"),r=Fe(t,\"lockScalingY\");if(i&&r)return!0;if(!e&&(i||r)&&s)return!0;if(i&&\"x\"===e)return!0;if(r&&\"y\"===e)return!0;const{width:n,height:o,strokeWidth:a}=t;return 0===n&&0===a&&\"y\"!==e||0===o&&0===a&&\"x\"!==e}const ni=[\"e\",\"se\",\"s\",\"sw\",\"w\",\"nw\",\"n\",\"ne\",\"e\"],oi=(t,e,s,i)=>{const r=ii(t,s);if(ri(s,0!==e.x&&0===e.y?\"x\":0===e.x&&0!==e.y?\"y\":\"\",r))return Pe;const n=Ie(s,0,i);return`${ni[n]}-resize`};function ai(t,e,s,i){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const n=e.target,o=r.by,a=ii(t,n);let h,l,c,u,d,g;if(ri(n,o,a))return!1;if(e.gestureScale)l=e.scaleX*e.gestureScale,c=e.scaleY*e.gestureScale;else{if(h=Re(e,e.originX,e.originY,s,i),d=\"y\"!==o?Math.sign(h.x||e.signX||1):1,g=\"x\"!==o?Math.sign(h.y||e.signY||1):1,e.signX||(e.signX=d),e.signY||(e.signY=g),Fe(n,\"lockScalingFlip\")&&(e.signX!==d||e.signY!==g))return!1;if(u=n._getTransformedDimensions(),a&&!o){const t=Math.abs(h.x)+Math.abs(h.y),{original:s}=e,i=t/(Math.abs(u.x*s.scaleX/n.scaleX)+Math.abs(u.y*s.scaleY/n.scaleY));l=s.scaleX*i,c=s.scaleY*i}else l=Math.abs(h.x*n.scaleX/u.x),c=Math.abs(h.y*n.scaleY/u.y);Ae(e)&&(l*=2,c*=2),e.signX!==d&&\"y\"!==o&&(e.originX=je(e.originX),l*=-1,e.signX=d),e.signY!==g&&\"x\"!==o&&(e.originY=je(e.originY),c*=-1,e.signY=g)}const f=n.scaleX,p=n.scaleY;return o?(\"x\"===o&&n.set(W,l),\"y\"===o&&n.set(V,c)):(!Fe(n,\"lockScalingX\")&&n.set(W,l),!Fe(n,\"lockScalingY\")&&n.set(V,c)),f!==n.scaleX||p!==n.scaleY}const hi=zs(j,Hs((t,e,s,i)=>ai(t,e,s,i))),li=zs(j,Hs((t,e,s,i)=>ai(t,e,s,i,{by:\"x\"}))),ci=zs(j,Hs((t,e,s,i)=>ai(t,e,s,i,{by:\"y\"}))),ui={x:{counterAxis:\"y\",scale:W,skew:G,lockSkewing:\"lockSkewingX\",origin:\"originX\",flip:\"flipX\"},y:{counterAxis:\"x\",scale:V,skew:z,lockSkewing:\"lockSkewingY\",origin:\"originY\",flip:\"flipY\"}},di=[\"ns\",\"nesw\",\"ew\",\"nwse\"],gi=(t,e,s,i)=>{if(0!==e.x&&Fe(s,\"lockSkewingY\"))return Pe;if(0!==e.y&&Fe(s,\"lockSkewingX\"))return Pe;const r=Ie(s,0,i)%4;return`${di[r]}-resize`};function fi(t,e,s,i,r){const{target:n}=s,{counterAxis:o,origin:a,lockSkewing:h,skew:l,flip:c}=ui[t];if(Fe(n,h))return!1;const{origin:u,flip:d}=ui[o],g=ye(s[u])*(n[d]?-1:1),f=-Math.sign(g)*(n[c]?-1:1),p=.5*-((0===n[l]&&Re(s,T,T,i,r)[t]>0||n[l]>0?1:-1)*f)+.5,m=zs(I,Hs((e,s,i,r)=>function(t,e,s){let{target:i,ex:r,ey:n,skewingSide:o,...a}=e;const{skew:h}=ui[t],l=s.subtract(new ot(r,n)).divide(new ot(i.scaleX,i.scaleY))[t],c=i[h],u=a[h],d=Math.tan(xt(u)),g=\"y\"===t?i._getTransformedDimensions({scaleX:1,scaleY:1,skewX:0}).x:i._getTransformedDimensions({scaleX:1,scaleY:1}).y,f=2*l*o/Math.max(g,1)+d,p=Ct(Math.atan(f));i.set(h,p);const m=c!==i[h];if(m&&\"y\"===t){const{skewX:t,scaleX:e}=i,s=i._getTransformedDimensions({skewY:c}),r=i._getTransformedDimensions(),n=0!==t?s.x/r.x:1;1!==n&&i.set(W,n*e)}return m}(t,s,new ot(i,r))));return m(e,{...s,[a]:p,skewingSide:f},i,r)}const pi=(t,e,s,i)=>fi(\"x\",t,e,s,i),mi=(t,e,s,i)=>fi(\"y\",t,e,s,i);function vi(t,e){return t[e.canvas.altActionKey]}const yi=(t,e,s)=>{const i=vi(t,s);return 0===e.x?i?G:V:0===e.y?i?z:W:\"\"},_i=(t,e,s,i)=>vi(t,s)?gi(0,e,s,i):oi(t,e,s,i),xi=(t,e,s,i)=>vi(t,e.target)?mi(t,e,s,i):li(t,e,s,i),Ci=(t,e,s,i)=>vi(t,e.target)?pi(t,e,s,i):ci(t,e,s,i),bi=()=>({ml:new ti({x:-.5,y:0,cursorStyleHandler:_i,actionHandler:xi,getActionName:yi}),mr:new ti({x:.5,y:0,cursorStyleHandler:_i,actionHandler:xi,getActionName:yi}),mb:new ti({x:0,y:.5,cursorStyleHandler:_i,actionHandler:Ci,getActionName:yi}),mt:new ti({x:0,y:-.5,cursorStyleHandler:_i,actionHandler:Ci,getActionName:yi}),tl:new ti({x:-.5,y:-.5,cursorStyleHandler:oi,actionHandler:hi}),tr:new ti({x:.5,y:-.5,cursorStyleHandler:oi,actionHandler:hi}),bl:new ti({x:-.5,y:.5,cursorStyleHandler:oi,actionHandler:hi}),br:new ti({x:.5,y:.5,cursorStyleHandler:oi,actionHandler:hi}),mtr:new ti({x:0,y:-.5,actionHandler:si,cursorStyleHandler:ei,offsetY:-40,withConnection:!0,actionName:L})}),Si=()=>({mr:new ti({x:.5,y:0,actionHandler:Ks,cursorStyleHandler:_i,actionName:R}),ml:new ti({x:-.5,y:0,actionHandler:Ks,cursorStyleHandler:_i,actionName:R})}),wi=()=>({...bi(),...Si()});class Ti extends Vs{static getDefaults(){return{...super.getDefaults(),...Ti.ownDefaults}}constructor(t){super(),Object.assign(this,this.constructor.createControls(),Ti.ownDefaults),this.setOptions(t)}static createControls(){return{controls:bi()}}_updateCacheCanvas(){const t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){const e=t._currentTransform,s=e.target,i=e.action;if(this===s&&i&&i.startsWith(Y))return!1}return super._updateCacheCanvas()}getActiveControl(){const t=this.__corner;return t?{key:t,control:this.controls[t],coord:this.oCoords[t]}:void 0}findControl(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.hasControls||!this.canvas)return;this.__corner=void 0;const s=Object.entries(this.oCoords);for(let i=s.length-1;i>=0;i--){const[r,n]=s[i],o=this.controls[r];if(o.shouldActivate(r,this,t,e?n.touchCorner:n.corner))return this.__corner=r,{key:r,control:o,coord:this.oCoords[r]}}}calcOCoords(){const t=this.getViewportTransform(),e=this.getCenterPoint(),s=Mt(e.x,e.y),i=Et({angle:this.getTotalAngle()-(this.group&&this.flipX?180:0)}),r=Tt(s,i),n=Tt(t,r),o=Tt(n,[1/t[0],0,0,1/t[3],0,0]),a=this.group?Dt(this.calcTransformMatrix()):void 0;a&&(a.scaleX=Math.abs(a.scaleX),a.scaleY=Math.abs(a.scaleY));const h=this._calculateCurrentDimensions(a),l={};return this.forEachControl((t,e)=>{const s=t.positionHandler(h,o,this,t);l[e]=Object.assign(s,this._calcCornerCoords(t,s))}),l}_calcCornerCoords(t,e){const s=this.getTotalAngle();return{corner:t.calcCornerCoords(s,this.cornerSize,e.x,e.y,!1,this),touchCorner:t.calcCornerCoords(s,this.touchCornerSize,e.x,e.y,!0,this)}}setCoords(){super.setCoords(),this.canvas&&(this.oCoords=this.calcOCoords())}forEachControl(t){for(const e in this.controls)t(this.controls[e],e,this)}drawSelectionBackground(t){if(!this.selectionBackgroundColor||this.canvas&&this.canvas._activeObject!==this)return;t.save();const e=this.getRelativeCenterPoint(),s=this._calculateCurrentDimensions(),i=this.getViewportTransform();t.translate(e.x,e.y),t.scale(1/i[0],1/i[3]),t.rotate(xt(this.angle)),t.fillStyle=this.selectionBackgroundColor,t.fillRect(-s.x/2,-s.y/2,s.x,s.y),t.restore()}strokeBorders(t,e){t.strokeRect(-e.x/2,-e.y/2,e.x,e.y)}_drawBorders(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i={hasControls:this.hasControls,borderColor:this.borderColor,borderDashArray:this.borderDashArray,...s};t.save(),t.strokeStyle=i.borderColor,this._setLineDash(t,i.borderDashArray),this.strokeBorders(t,e),i.hasControls&&this.drawControlsConnectingLines(t,e),t.restore()}_renderControls(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{hasBorders:s,hasControls:i}=this,r={hasBorders:s,hasControls:i,...e},n=this.getViewportTransform(),o=r.hasBorders,a=r.hasControls,h=Tt(n,this.calcTransformMatrix()),l=Dt(h);t.save(),t.translate(l.translateX,l.translateY),t.lineWidth=this.borderScaleFactor,this.group===this.parent&&(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(l.angle-=180),t.rotate(xt(this.group?l.angle:this.angle)),o&&this.drawBorders(t,l,e),a&&this.drawControls(t,e),t.restore()}drawBorders(t,e,s){let i;if(s&&s.forActiveSelection||this.group){const t=de(this.width,this.height,Lt(e)),s=this.isStrokeAccountedForInDimensions()?at:(this.strokeUniform?(new ot).scalarAdd(this.canvas?this.canvas.getZoom():1):new ot(e.scaleX,e.scaleY)).scalarMultiply(this.strokeWidth);i=t.add(s).scalarAdd(this.borderScaleFactor).scalarAdd(2*this.padding)}else i=this._calculateCurrentDimensions().scalarAdd(this.borderScaleFactor);this._drawBorders(t,i,s)}drawControlsConnectingLines(t,e){let s=!1;t.beginPath(),this.forEachControl((i,r)=>{i.withConnection&&i.getVisibility(this,r)&&(s=!0,t.moveTo(i.x*e.x,i.y*e.y),t.lineTo(i.x*e.x+i.offsetX,i.y*e.y+i.offsetY))}),s&&t.stroke()}drawControls(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.save();const s=this.getCanvasRetinaScaling(),{cornerStrokeColor:i,cornerDashArray:r,cornerColor:n}=this,o={cornerStrokeColor:i,cornerDashArray:r,cornerColor:n,...e};t.setTransform(s,0,0,s,0,0),t.strokeStyle=t.fillStyle=o.cornerColor,this.transparentCorners||(t.strokeStyle=o.cornerStrokeColor),this._setLineDash(t,o.cornerDashArray),this.forEachControl((e,s)=>{if(e.getVisibility(this,s)){const i=this.oCoords[s];e.render(t,i.x,i.y,o,this)}}),t.restore()}isControlVisible(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)}setControlVisible(t,e){this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e}setControlsVisibility(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.entries(t).forEach(t=>{let[e,s]=t;return this.setControlVisible(e,s)})}clearContextTop(t){if(!this.canvas)return;const e=this.canvas.contextTop;if(!e)return;const s=this.canvas.viewportTransform;e.save(),e.transform(s[0],s[1],s[2],s[3],s[4],s[5]),this.transform(e);const i=this.width+4,r=this.height+4;return e.clearRect(-i/2,-r/2,i,r),t||e.restore(),e}onDeselect(t){return!1}onSelect(t){return!1}shouldStartDragging(t){return!1}onDragStart(t){return!1}canDrop(t){return!1}renderDragSourceEffect(t){}renderDropTargetEffect(t){}}function Oi(t,e){return e.forEach(e=>{Object.getOwnPropertyNames(e.prototype).forEach(s=>{\"constructor\"!==s&&Object.defineProperty(t.prototype,s,Object.getOwnPropertyDescriptor(e.prototype,s)||Object.create(null))})}),t}t(Ti,\"ownDefaults\",{noScaleCache:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,cornerSize:13,touchCornerSize:24,transparentCorners:!0,cornerColor:\"rgb(178,204,255)\",cornerStrokeColor:\"\",cornerStyle:\"rect\",cornerDashArray:null,hasControls:!0,borderColor:\"rgb(178,204,255)\",borderDashArray:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,hasBorders:!0,selectionBackgroundColor:\"\",selectable:!0,evented:!0,perPixelTargetFind:!1,activeOn:\"down\",hoverCursor:null,moveCursor:null});class ki extends Ti{}Oi(ki,[qe]),tt.setClass(ki),tt.setClass(ki,\"object\");const Di=(t,e,s,i)=>{const r=2*(i=Math.round(i))+1,{data:n}=t.getImageData(e-i,s-i,r,r);for(let t=3;t<n.length;t+=4){if(n[t]>0)return!1}return!0};class Mi{constructor(t){this.options=t,this.strokeProjectionMagnitude=this.options.strokeWidth/2,this.scale=new ot(this.options.scaleX,this.options.scaleY),this.strokeUniformScalar=this.options.strokeUniform?new ot(1/this.options.scaleX,1/this.options.scaleY):new ot(1,1)}createSideVector(t,e){const s=be(t,e);return this.options.strokeUniform?s.multiply(this.scale):s}projectOrthogonally(t,e,s){return this.applySkew(t.add(this.calcOrthogonalProjection(t,e,s)))}isSkewed(){return 0!==this.options.skewX||0!==this.options.skewY}applySkew(t){const e=new ot(t);return e.y+=e.x*Math.tan(xt(this.options.skewY)),e.x+=e.y*Math.tan(xt(this.options.skewX)),e}scaleUnitVector(t,e){return t.multiply(this.strokeUniformScalar).scalarMultiply(e)}}const Ei=new ot;class Pi extends Mi{static getOrthogonalRotationFactor(t,e){const s=e?we(t,e):Te(t);return Math.abs(s)<y?-1:1}constructor(e,s,i,r){super(r),t(this,\"AB\",void 0),t(this,\"AC\",void 0),t(this,\"alpha\",void 0),t(this,\"bisector\",void 0),this.A=new ot(e),this.B=new ot(s),this.C=new ot(i),this.AB=this.createSideVector(this.A,this.B),this.AC=this.createSideVector(this.A,this.C),this.alpha=we(this.AB,this.AC),this.bisector=Oe(Ce(this.AB.eq(Ei)?this.AC:this.AB,this.alpha/2))}calcOrthogonalProjection(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.strokeProjectionMagnitude;const i=this.createSideVector(t,e),r=ke(i),n=Pi.getOrthogonalRotationFactor(r,this.bisector);return this.scaleUnitVector(r,s*n)}projectBevel(){const t=[];return(this.alpha%x===0?[this.B]:[this.B,this.C]).forEach(e=>{t.push(this.projectOrthogonally(this.A,e)),t.push(this.projectOrthogonally(this.A,e,-this.strokeProjectionMagnitude))}),t}projectMiter(){const t=[],e=Math.abs(this.alpha),s=1/Math.sin(e/2),i=this.scaleUnitVector(this.bisector,-this.strokeProjectionMagnitude*s),r=this.options.strokeUniform?Se(this.scaleUnitVector(this.bisector,this.options.strokeMiterLimit)):this.options.strokeMiterLimit;return Se(i)/this.strokeProjectionMagnitude<=r&&t.push(this.applySkew(this.A.add(i))),t.push(...this.projectBevel()),t}projectRoundNoSkew(t,e){const s=[],i=new ot(Pi.getOrthogonalRotationFactor(this.bisector),Pi.getOrthogonalRotationFactor(new ot(this.bisector.y,this.bisector.x)));return[new ot(1,0).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar).multiply(i),new ot(0,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar).multiply(i)].forEach(i=>{Ee(i,t,e)&&s.push(this.A.add(i))}),s}projectRoundWithSkew(t,e){const s=[],{skewX:i,skewY:r,scaleX:n,scaleY:o,strokeUniform:a}=this.options,h=new ot(Math.tan(xt(i)),Math.tan(xt(r))),l=this.strokeProjectionMagnitude,c=a?l/o/Math.sqrt(1/o**2+1/n**2*h.y**2):l/Math.sqrt(1+h.y**2),u=new ot(Math.sqrt(Math.max(l**2-c**2,0)),c),d=a?l/Math.sqrt(1+h.x**2*(1/o)**2/(1/n+1/n*h.x*h.y)**2):l/Math.sqrt(1+h.x**2/(1+h.x*h.y)**2),g=new ot(d,Math.sqrt(Math.max(l**2-d**2,0)));return[g,g.scalarMultiply(-1),u,u.scalarMultiply(-1)].map(t=>this.applySkew(a?t.multiply(this.strokeUniformScalar):t)).forEach(i=>{Ee(i,t,e)&&s.push(this.applySkew(this.A).add(i))}),s}projectRound(){const t=[];t.push(...this.projectBevel());const e=this.alpha%x===0,s=this.applySkew(this.A),i=t[e?0:2].subtract(s),r=t[e?1:0].subtract(s),n=e?this.applySkew(this.AB.scalarMultiply(-1)):this.applySkew(this.bisector.multiply(this.strokeUniformScalar).scalarMultiply(-1)),o=De(i,n)>0,a=o?i:r,h=o?r:i;return this.isSkewed()?t.push(...this.projectRoundWithSkew(a,h)):t.push(...this.projectRoundNoSkew(a,h)),t}projectPoints(){switch(this.options.strokeLineJoin){case\"miter\":return this.projectMiter();case\"round\":return this.projectRound();default:return this.projectBevel()}}project(){return this.projectPoints().map(t=>({originPoint:this.A,projectedPoint:t,angle:this.alpha,bisector:this.bisector}))}}class Ai extends Mi{constructor(t,e,s){super(s),this.A=new ot(t),this.T=new ot(e)}calcOrthogonalProjection(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.strokeProjectionMagnitude;const i=this.createSideVector(t,e);return this.scaleUnitVector(ke(i),s)}projectButt(){return[this.projectOrthogonally(this.A,this.T,this.strokeProjectionMagnitude),this.projectOrthogonally(this.A,this.T,-this.strokeProjectionMagnitude)]}projectRound(){const t=[];if(!this.isSkewed()&&this.A.eq(this.T)){const e=new ot(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);t.push(this.applySkew(this.A.add(e)),this.applySkew(this.A.subtract(e)))}else t.push(...new Pi(this.A,this.T,this.T,this.options).projectRound());return t}projectSquare(){const t=[];if(this.A.eq(this.T)){const e=new ot(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);t.push(this.A.add(e),this.A.subtract(e))}else{const e=this.calcOrthogonalProjection(this.A,this.T,this.strokeProjectionMagnitude),s=this.scaleUnitVector(Oe(this.createSideVector(this.A,this.T)),-this.strokeProjectionMagnitude),i=this.A.add(s);t.push(i.add(e),i.subtract(e))}return t.map(t=>this.applySkew(t))}projectPoints(){switch(this.options.strokeLineCap){case\"round\":return this.projectRound();case\"square\":return this.projectSquare();default:return this.projectButt()}}project(){return this.projectPoints().map(t=>({originPoint:this.A,projectedPoint:t}))}}const ji=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=[];if(0===t.length)return i;const r=t.reduce((t,e)=>(t[t.length-1].eq(e)||t.push(new ot(e)),t),[new ot(t[0])]);if(1===r.length)s=!0;else if(!s){const t=r[0],e=((t,e)=>{for(let s=t.length-1;s>=0;s--)if(e(t[s],s,t))return s;return-1})(r,e=>!e.eq(t));r.splice(e+1)}return r.forEach((t,r,n)=>{let o,a;0===r?(a=n[1],o=s?t:n[n.length-1]):r===n.length-1?(o=n[r-1],a=s?t:n[0]):(o=n[r-1],a=n[r+1]),s&&1===n.length?i.push(...new Ai(t,t,e).project()):!s||0!==r&&r!==n.length-1?i.push(...new Pi(t,o,a,e).project()):i.push(...new Ai(t,0===r?a:o,e).project())}),i},Fi=t=>{const e={};return Object.keys(t).forEach(s=>{e[s]={},Object.keys(t[s]).forEach(i=>{e[s][i]={...t[s][i]}})}),e},Li=t=>t.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/</g,\"<\").replace(/>/g,\">\");let Ii;const Ri=t=>{if(Ii||Ii||(Ii=\"Intl\"in g()&&\"Segmenter\"in Intl&&new Intl.Segmenter(void 0,{granularity:\"grapheme\"})),Ii){const e=Ii.segment(t);return Array.from(e).map(t=>{let{segment:e}=t;return e})}return Bi(t)},Bi=t=>{const e=[];for(let s,i=0;i<t.length;i++)!1!==(s=$i(t,i))&&e.push(s);return e},$i=(t,e)=>{const s=t.charCodeAt(e);if(isNaN(s))return\"\";if(s<55296||s>57343)return t.charAt(e);if(55296<=s&&s<=56319){if(t.length<=e+1)throw\"High surrogate without following low surrogate\";const s=t.charCodeAt(e+1);if(56320>s||s>57343)throw\"High surrogate without following low surrogate\";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw\"Low surrogate without preceding high surrogate\";const i=t.charCodeAt(e-1);if(55296>i||i>56319)throw\"Low surrogate without preceding high surrogate\";return!1};var Xi=Object.freeze({__proto__:null,capitalize:function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return`${t.charAt(0).toUpperCase()}${e?t.slice(1):t.slice(1).toLowerCase()}`},escapeXml:Li,graphemeSplit:Ri});const Yi=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t.fill!==e.fill||t.stroke!==e.stroke||t.strokeWidth!==e.strokeWidth||t.fontSize!==e.fontSize||t.fontFamily!==e.fontFamily||t.fontWeight!==e.fontWeight||t.fontStyle!==e.fontStyle||t.textDecorationThickness!==e.textDecorationThickness||t.textBackgroundColor!==e.textBackgroundColor||t.deltaY!==e.deltaY||s&&(t.overline!==e.overline||t.underline!==e.underline||t.linethrough!==e.linethrough)},Wi=(t,e)=>{const s=e.split(\"\\n\"),i=[];let r=-1,n={};t=Fi(t);for(let e=0;e<s.length;e++){const o=Ri(s[e]);if(t[e])for(let s=0;s<o.length;s++){r++;const o=t[e][s];o&&Object.keys(o).length>0&&(Yi(n,o,!0)?i.push({start:r,end:r+1,style:o}):i[i.length-1].end++),n=o||{}}else r+=o.length,n={}}return i},Vi=(t,e)=>{if(!Array.isArray(t))return Fi(t);const s=e.split(P),i={};let r=-1,n=0;for(let e=0;e<s.length;e++){const o=Ri(s[e]);for(let s=0;s<o.length;s++)r++,t[n]&&t[n].start<=r&&r<t[n].end&&(i[e]=i[e]||{},i[e][s]={...t[n].style},r===t[n].end-1&&n++)}return i},Gi=[\"display\",\"transform\",H,\"fill-opacity\",\"fill-rule\",\"opacity\",N,\"stroke-dasharray\",\"stroke-linecap\",\"stroke-dashoffset\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"id\",\"paint-order\",\"vector-effect\",\"instantiated_by_use\",\"clip-path\"];function zi(t,e){const s=t.nodeName,i=t.getAttribute(\"class\"),r=t.getAttribute(\"id\"),n=\"(?![a-zA-Z\\\\-]+)\";let o;if(o=new RegExp(\"^\"+s,\"i\"),e=e.replace(o,\"\"),r&&e.length&&(o=new RegExp(\"#\"+r+n,\"i\"),e=e.replace(o,\"\")),i&&e.length){const t=i.split(\" \");for(let s=t.length;s--;)o=new RegExp(\"\\\\.\"+t[s]+n,\"i\"),e=e.replace(o,\"\")}return 0===e.length}function Hi(t,e){let s=!0;const i=zi(t,e.pop());return i&&e.length&&(s=function(t,e){let s,i=!0;for(;t.parentElement&&1===t.parentElement.nodeType&&e.length;)i&&(s=e.pop()),i=zi(t=t.parentElement,s);return 0===e.length}(t,e)),i&&s&&0===e.length}function Ni(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s={};for(const i in e)Hi(t,i.split(\" \"))&&(s={...s,...e[i]});return s}const Ui=t=>{var e;return null!==(e=ds[t])&&void 0!==e?e:t},qi=new RegExp(`(${hs})`,\"gi\"),Ki=`(${hs})`,Ji=String.raw`(skewX)\\(${Ki}\\)`,Qi=String.raw`(skewY)\\(${Ki}\\)`,Zi=String.raw`(rotate)\\(${Ki}(?: ${Ki} ${Ki})?\\)`,tr=String.raw`(scale)\\(${Ki}(?: ${Ki})?\\)`,er=String.raw`(translate)\\(${Ki}(?: ${Ki})?\\)`,sr=`(?:${String.raw`(matrix)\\(${Ki} ${Ki} ${Ki} ${Ki} ${Ki} ${Ki}\\)`}|${er}|${Zi}|${tr}|${Ji}|${Qi})`,ir=`(?:${sr}*)`,rr=String.raw`^\\s*(?:${ir}?)\\s*$`,nr=new RegExp(rr),or=new RegExp(sr),ar=new RegExp(sr,\"g\");function hr(t){const e=[];if(!(t=(t=>Be(t.replace(qi,\" $1 \").replace(/,/gi,\" \")))(t).replace(/\\s*([()])\\s*/gi,\"$1\"))||t&&!nr.test(t))return[...b];for(const s of t.matchAll(ar)){const t=or.exec(s[0]);if(!t)continue;let i=b;const r=t.filter(t=>!!t),[,n,...o]=r,[a,h,l,c,u,d]=o.map(t=>parseFloat(t));switch(n){case\"translate\":i=Mt(a,h);break;case L:i=Et({angle:a},{x:h,y:l});break;case Y:i=Pt(a,h);break;case G:i=jt(a);break;case z:i=Ft(a);break;case\"matrix\":i=[a,h,l,c,u,d]}e.push(i)}return Ot(e)}function lr(t,e,s,i){const r=Array.isArray(e);let n,o=e;if(t!==H&&t!==N||e!==E){if(\"strokeUniform\"===t)return\"non-scaling-stroke\"===e;if(\"strokeDashArray\"===t)o=e===E?null:e.replace(/,/g,\" \").split(/\\s+/).map(parseFloat);else if(\"transformMatrix\"===t)o=s&&s.transformMatrix?Tt(s.transformMatrix,hr(e)):hr(e);else if(\"visible\"===t)o=e!==E&&\"hidden\"!==e,s&&!1===s.visible&&(o=!1);else if(\"opacity\"===t)o=parseFloat(e),s&&void 0!==s.opacity&&(o*=s.opacity);else if(\"textAnchor\"===t)o=\"start\"===e?O:\"end\"===e?M:T;else if(\"charSpacing\"===t||t===Je)n=He(e,i)/i*1e3;else if(\"paintFirst\"===t){const t=e.indexOf(H),s=e.indexOf(N);o=H,(t>-1&&s>-1&&s<t||-1===t&&s>-1)&&(o=N)}else{if(\"href\"===t||\"xlink:href\"===t||\"font\"===t||\"id\"===t)return e;if(\"imageSmoothing\"===t)return\"optimizeQuality\"===e;n=r?e.map(He):He(e,i)}}else o=\"\";return!r&&isNaN(n)?o:n}function cr(t,e){t.replace(/;\\s*$/,\"\").split(\";\").forEach(t=>{if(!t)return;const[s,i]=t.split(\":\");e[s.trim().toLowerCase()]=i.trim()})}function ur(t){const e={},s=t.getAttribute(\"style\");return s?(\"string\"==typeof s?cr(s,e):function(t,e){Object.entries(t).forEach(t=>{let[s,i]=t;void 0!==i&&(e[s.toLowerCase()]=i)})}(s,e),e):e}const dr={stroke:\"strokeOpacity\",fill:\"fillOpacity\"};function gr(t,e,s){if(!t)return{};let i,r={},n=S;t.parentNode&&vs.test(t.parentNode.nodeName)&&(r=gr(t.parentElement,e,s),r.fontSize&&(i=n=He(r.fontSize)));const o={...e.reduce((e,s)=>{const i=t.getAttribute(s);return i&&(e[s]=i),e},{}),...Ni(t,s),...ur(t)};o[fs]&&t.setAttribute(fs,o[fs]),o[gs]&&(i=He(o[gs],n),o[gs]=`${i}`);const a={};for(const t in o){const e=Ui(t),s=lr(e,o[t],r,i);a[e]=s}a&&a.font&&function(t,e){const s=t.match(us);if(!s)return;const i=s[1],r=s[3],n=s[4],o=s[5],a=s[6];i&&(e.fontStyle=i),r&&(e.fontWeight=isNaN(parseFloat(r))?r:parseFloat(r)),n&&(e.fontSize=He(n)),a&&(e.fontFamily=a),o&&(e.lineHeight=o===J?1:o)}(a.font,a);const h={...r,...a};return vs.test(t.nodeName)?h:function(t){const e=ki.getDefaults();return Object.entries(dr).forEach(s=>{let[i,r]=s;if(void 0===t[r]||\"\"===t[i])return;if(void 0===t[i]){if(!e[i])return;t[i]=e[i]}if(0===t[i].indexOf(\"url(\"))return;const n=new ze(t[i]);t[i]=n.setAlpha(Wt(n.getAlpha()*t[r],2)).toRgba()}),t}(h)}const fr=[\"rx\",\"ry\"];class pr extends ki{static getDefaults(){return{...super.getDefaults(),...pr.ownDefaults}}constructor(t){super(),Object.assign(this,pr.ownDefaults),this.setOptions(t),this._initRxRy()}_initRxRy(){const{rx:t,ry:e}=this;t&&!e?this.ry=t:e&&!t&&(this.rx=e)}_render(t){const{width:e,height:s}=this,i=-e/2,r=-s/2,n=this.rx?Math.min(this.rx,e/2):0,o=this.ry?Math.min(this.ry,s/2):0,a=0!==n||0!==o;t.beginPath(),t.moveTo(i+n,r),t.lineTo(i+e-n,r),a&&t.bezierCurveTo(i+e-w*n,r,i+e,r+w*o,i+e,r+o),t.lineTo(i+e,r+s-o),a&&t.bezierCurveTo(i+e,r+s-w*o,i+e-w*n,r+s,i+e-n,r+s),t.lineTo(i+n,r+s),a&&t.bezierCurveTo(i+w*n,r+s,i,r+s-w*o,i,r+s-o),t.lineTo(i,r+o),a&&t.bezierCurveTo(i,r+w*o,i+w*n,r,i+n,r),t.closePath(),this._renderPaintInOrder(t)}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return super.toObject([...fr,...t])}_toSVG(){const{width:t,height:e,rx:s,ry:i}=this;return[\"<rect \",\"COMMON_PARTS\",`x=\"${-t/2}\" y=\"${-e/2}\" rx=\"${s}\" ry=\"${i}\" width=\"${t}\" height=\"${e}\" />\\n`]}static async fromElement(t,e,s){const{left:i=0,top:r=0,width:n=0,height:o=0,visible:a=!0,...h}=gr(t,this.ATTRIBUTE_NAMES,s);return new this({...e,...h,left:i,top:r,width:n,height:o,visible:Boolean(a&&n&&o)})}}t(pr,\"type\",\"Rect\"),t(pr,\"cacheProperties\",[...ws,...fr]),t(pr,\"ownDefaults\",{rx:0,ry:0}),t(pr,\"ATTRIBUTE_NAMES\",[...Gi,\"x\",\"y\",\"rx\",\"ry\",\"width\",\"height\"]),tt.setClass(pr),tt.setSVGClass(pr);const mr=\"initialization\",vr=\"added\",yr=\"removed\",_r=\"imperative\",xr=(t,e)=>{const{strokeUniform:s,strokeWidth:i,width:r,height:n,group:o}=e,a=o&&o!==t?ge(o.calcTransformMatrix(),t.calcTransformMatrix()):null,h=a?e.getRelativeCenterPoint().transform(a):e.getRelativeCenterPoint(),l=!e.isStrokeAccountedForInDimensions(),c=s&&l?pe(new ot(i,i),void 0,t.calcTransformMatrix()):at,u=!s&&l?i:0,d=de(r+u,n+u,Ot([a,e.calcOwnMatrix()],!0)).add(c).scalarDivide(2);return[h.subtract(d),h.add(d)]};class Cr{calcLayoutResult(t,e){if(this.shouldPerformLayout(t))return this.calcBoundingBox(e,t)}shouldPerformLayout(t){let{type:e,prevStrategy:s,strategy:i}=t;return e===mr||e===_r||!!s&&i!==s}shouldLayoutClipPath(t){let{type:e,target:{clipPath:s}}=t;return e!==mr&&s&&!s.absolutePositioned}getInitialSize(t,e){return e.size}calcBoundingBox(t,e){const{type:s,target:i}=e;if(s===_r&&e.overrides)return e.overrides;if(0===t.length)return;const{left:r,top:n,width:o,height:a}=ae(t.map(t=>xr(i,t)).reduce((t,e)=>t.concat(e),[])),h=new ot(o,a),l=new ot(r,n).add(h.scalarDivide(2));if(s===mr){const t=this.getInitialSize(e,{size:h,center:l});return{center:l,relativeCorrection:new ot(0,0),size:t}}return{center:l.transform(i.calcOwnMatrix()),size:h}}}t(Cr,\"type\",\"strategy\");class br extends Cr{shouldPerformLayout(t){return!0}}t(br,\"type\",\"fit-content\"),tt.setClass(br);const Sr=\"layoutManager\";class wr{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new br;t(this,\"strategy\",void 0),this.strategy=e,this._subscriptions=new Map}performLayout(t){const e={bubbles:!0,strategy:this.strategy,...t,prevStrategy:this._prevLayoutStrategy,stopPropagation(){this.bubbles=!1}};this.onBeforeLayout(e);const s=this.getLayoutResult(e);s&&this.commitLayout(e,s),this.onAfterLayout(e,s),this._prevLayoutStrategy=e.strategy}attachHandlers(t,e){const{target:s}=e;return[U,A,R,F,j,I,X,B,$].map(e=>t.on(e,t=>this.performLayout(e===U?{type:\"object_modified\",trigger:e,e:t,target:s}:{type:\"object_modifying\",trigger:e,e:t,target:s})))}subscribe(t,e){this.unsubscribe(t,e);const s=this.attachHandlers(t,e);this._subscriptions.set(t,s)}unsubscribe(t,e){(this._subscriptions.get(t)||[]).forEach(t=>t()),this._subscriptions.delete(t)}unsubscribeTargets(t){t.targets.forEach(e=>this.unsubscribe(e,t))}subscribeTargets(t){t.targets.forEach(e=>this.subscribe(e,t))}onBeforeLayout(t){const{target:e,type:s}=t,{canvas:i}=e;if(s===mr||s===vr?this.subscribeTargets(t):s===yr&&this.unsubscribeTargets(t),e.fire(\"layout:before\",{context:t}),i&&i.fire(\"object:layout:before\",{target:e,context:t}),s===_r&&t.deep){const{strategy:s,...i}=t;e.forEachObject(t=>t.layoutManager&&t.layoutManager.performLayout({...i,bubbles:!1,target:t}))}}getLayoutResult(t){const{target:e,strategy:s,type:i}=t,r=s.calcLayoutResult(t,e.getObjects());if(!r)return;const n=i===mr?new ot:e.getRelativeCenterPoint(),{center:o,correction:a=new ot,relativeCorrection:h=new ot}=r,l=n.subtract(o).add(a).transform(i===mr?b:wt(e.calcOwnMatrix()),!0).add(h);return{result:r,prevCenter:n,nextCenter:o,offset:l}}commitLayout(t,e){const{target:s}=t,{result:{size:i},nextCenter:r}=e;var n,o;(s.set({width:i.x,height:i.y}),this.layoutObjects(t,e),t.type===mr)?s.set({left:null!==(n=t.x)&&void 0!==n?n:r.x+i.x*ye(s.originX),top:null!==(o=t.y)&&void 0!==o?o:r.y+i.y*ye(s.originY)}):(s.setPositionByOrigin(r,T,T),s.setCoords(),s.set(\"dirty\",!0))}layoutObjects(t,e){const{target:s}=t;s.forEachObject(i=>{i.group===s&&this.layoutObject(t,e,i)}),t.strategy.shouldLayoutClipPath(t)&&this.layoutObject(t,e,s.clipPath)}layoutObject(t,e,s){let{offset:i}=e;s.set({left:s.left+i.x,top:s.top+i.y})}onAfterLayout(t,e){const{target:s,strategy:i,bubbles:r,prevStrategy:n,...o}=t,{canvas:a}=s;s.fire(\"layout:after\",{context:t,result:e}),a&&a.fire(\"object:layout:after\",{context:t,result:e,target:s});const h=s.parent;r&&null!=h&&h.layoutManager&&((o.path||(o.path=[])).push(s),h.layoutManager.performLayout({...o,target:h})),s.set(\"dirty\",!0)}dispose(){const{_subscriptions:t}=this;t.forEach(t=>t.forEach(t=>t())),t.clear()}toObject(){return{type:Sr,strategy:this.strategy.constructor.type}}toJSON(){return this.toObject()}}tt.setClass(wr,Sr);class Tr extends wr{performLayout(){}}class Or extends(lt(ki)){static getDefaults(){return{...super.getDefaults(),...Or.ownDefaults}}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),t(this,\"_activeObjects\",[]),t(this,\"__objectSelectionTracker\",void 0),t(this,\"__objectSelectionDisposer\",void 0),Object.assign(this,Or.ownDefaults),this.setOptions(s),this.groupInit(e,s)}groupInit(t,e){var s;this._objects=[...t],this.__objectSelectionTracker=this.__objectSelectionMonitor.bind(this,!0),this.__objectSelectionDisposer=this.__objectSelectionMonitor.bind(this,!1),this.forEachObject(t=>{this.enterGroup(t,!1)}),this.layoutManager=null!==(s=e.layoutManager)&&void 0!==s?s:new wr,this.layoutManager.performLayout({type:mr,target:this,targets:[...t],x:e.left,y:e.top})}canEnterGroup(t){return t===this||this.isDescendantOf(t)?(i(\"error\",\"Group: circular object trees are not supported, this call has no effect\"),!1):-1===this._objects.indexOf(t)||(i(\"error\",\"Group: duplicate objects are not supported inside group, this call has no effect\"),!1)}_filterObjectsBeforeEnteringGroup(t){return t.filter((t,e,s)=>this.canEnterGroup(t)&&s.indexOf(t)===e)}add(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];const i=this._filterObjectsBeforeEnteringGroup(e),r=super.add(...i);return this._onAfterObjectsChange(vr,i),r}insertAt(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];const r=this._filterObjectsBeforeEnteringGroup(s),n=super.insertAt(t,...r);return this._onAfterObjectsChange(vr,r),n}remove(){const t=super.remove(...arguments);return this._onAfterObjectsChange(yr,t),t}_onObjectAdded(t){this.enterGroup(t,!0),this.fire(\"object:added\",{target:t}),t.fire(\"added\",{target:this})}_onObjectRemoved(t,e){this.exitGroup(t,e),this.fire(\"object:removed\",{target:t}),t.fire(\"removed\",{target:this})}_onAfterObjectsChange(t,e){this.layoutManager.performLayout({type:t,targets:e,target:this})}_onStackOrderChanged(){this._set(\"dirty\",!0)}_set(t,e){const s=this[t];return super._set(t,e),\"canvas\"===t&&s!==e&&(this._objects||[]).forEach(s=>{s._set(t,e)}),this}_shouldSetNestedCoords(){return this.subTargetCheck}removeAll(){return this._activeObjects=[],this.remove(...this._objects)}__objectSelectionMonitor(t,e){let{target:s}=e;const i=this._activeObjects;if(t)i.push(s),this._set(\"dirty\",!0);else if(i.length>0){const t=i.indexOf(s);t>-1&&(i.splice(t,1),this._set(\"dirty\",!0))}}_watchObject(t,e){t&&this._watchObject(!1,e),t?(e.on(\"selected\",this.__objectSelectionTracker),e.on(\"deselected\",this.__objectSelectionDisposer)):(e.off(\"selected\",this.__objectSelectionTracker),e.off(\"deselected\",this.__objectSelectionDisposer))}enterGroup(t,e){t.group&&t.group.remove(t),t._set(\"parent\",this),this._enterGroup(t,e)}_enterGroup(t,e){e&&le(t,Tt(wt(this.calcTransformMatrix()),t.calcTransformMatrix())),this._shouldSetNestedCoords()&&t.setCoords(),t._set(\"group\",this),t._set(\"canvas\",this.canvas),this._watchObject(!0,t);const s=this.canvas&&this.canvas.getActiveObject&&this.canvas.getActiveObject();s&&(s===t||t.isDescendantOf(s))&&this._activeObjects.push(t)}exitGroup(t,e){this._exitGroup(t,e),t._set(\"parent\",void 0),t._set(\"canvas\",void 0)}_exitGroup(t,e){t._set(\"group\",void 0),e||(le(t,Tt(this.calcTransformMatrix(),t.calcTransformMatrix())),t.setCoords()),this._watchObject(!1,t);const s=this._activeObjects.length>0?this._activeObjects.indexOf(t):-1;s>-1&&this._activeObjects.splice(s,1)}shouldCache(){const t=ki.prototype.shouldCache.call(this);if(t)for(let t=0;t<this._objects.length;t++)if(this._objects[t].willDrawShadow())return this.ownCaching=!1,!1;return t}willDrawShadow(){if(super.willDrawShadow())return!0;for(let t=0;t<this._objects.length;t++)if(this._objects[t].willDrawShadow())return!0;return!1}isOnACache(){return this.ownCaching||!!this.parent&&this.parent.isOnACache()}drawObject(t,e,s){this._renderBackground(t);for(let e=0;e<this._objects.length;e++){var i;const s=this._objects[e];null!==(i=this.canvas)&&void 0!==i&&i.preserveObjectStacking&&s.group!==this?(t.save(),t.transform(...wt(this.calcTransformMatrix())),s.render(t),t.restore()):s.group===this&&s.render(t)}this._drawClipPath(t,this.clipPath,s)}setCoords(){super.setCoords(),this._shouldSetNestedCoords()&&this.forEachObject(t=>t.setCoords())}triggerLayout(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.layoutManager.performLayout({target:this,type:_r,...t})}render(t){this._transformDone=!0,super.render(t),this._transformDone=!1}__serializeObjects(t,e){const s=this.includeDefaultValues;return this._objects.filter(function(t){return!t.excludeFromExport}).map(function(i){const r=i.includeDefaultValues;i.includeDefaultValues=s;const n=i[t||\"toObject\"](e);return i.includeDefaultValues=r,n})}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e=this.layoutManager.toObject();return{...super.toObject([\"subTargetCheck\",\"interactive\",...t]),...\"fit-content\"!==e.strategy||this.includeDefaultValues?{layoutManager:e}:{},objects:this.__serializeObjects(\"toObject\",t)}}toString(){return`#<Group: (${this.complexity()})>`}dispose(){this.layoutManager.unsubscribeTargets({targets:this.getObjects(),target:this}),this._activeObjects=[],this.forEachObject(t=>{this._watchObject(!1,t),t.dispose()}),super.dispose()}_createSVGBgRect(t){if(!this.backgroundColor)return\"\";const e=pr.prototype._toSVG.call(this),s=e.indexOf(\"COMMON_PARTS\");e[s]='for=\"group\" ';const i=e.join(\"\");return t?t(i):i}_toSVG(t){const e=[\"<g \",\"COMMON_PARTS\",\" >\\n\"],s=this._createSVGBgRect(t);s&&e.push(\"\\t\\t\",s);for(let s=0;s<this._objects.length;s++)e.push(\"\\t\\t\",this._objects[s].toSVG(t));return e.push(\"</g>\\n\"),e}getSvgStyles(){const t=void 0!==this.opacity&&1!==this.opacity?`opacity: ${this.opacity};`:\"\",e=this.visible?\"\":\" visibility: hidden;\";return[t,this.getSvgFilter(),e].join(\"\")}toClipPathSVG(t){const e=[],s=this._createSVGBgRect(t);s&&e.push(\"\\t\",s);for(let s=0;s<this._objects.length;s++)e.push(\"\\t\",this._objects[s].toClipPathSVG(t));return this._createBaseClipPathSVGMarkup(e,{reviver:t})}static fromObject(t,e){let{type:s,objects:i=[],layoutManager:r,...n}=t;return Promise.all([Bt(i,e),$t(n,e)]).then(t=>{let[e,s]=t;const i=new this(e,{...n,...s,layoutManager:new Tr});if(r){const t=tt.getClass(r.type),e=tt.getClass(r.strategy);i.layoutManager=new t(new e)}else i.layoutManager=new wr;return i.layoutManager.subscribeTargets({type:mr,target:i,targets:i.getObjects()}),i.setCoords(),i})}}t(Or,\"type\",\"Group\"),t(Or,\"ownDefaults\",{strokeWidth:0,subTargetCheck:!1,interactive:!1}),tt.setClass(Or);const kr=(t,e)=>Math.min(e.width/t.width,e.height/t.height),Dr=(t,e)=>Math.max(e.width/t.width,e.height/t.height),Mr=\"\\\\s*,?\\\\s*\",Er=`${Mr}(${hs})`,Pr=`${Er}${Er}${Er}${Mr}([01])${Mr}([01])${Er}${Er}`,Ar={m:\"l\",M:\"L\"},jr=(t,e,s,i,r,n,o,a,h,l,c)=>{const u=rt(t),d=nt(t),g=rt(e),f=nt(e),p=s*r*g-i*n*f+o,m=i*r*g+s*n*f+a;return[\"C\",l+h*(-s*r*d-i*n*u),c+h*(-i*r*d+s*n*u),p+h*(s*r*f+i*n*g),m+h*(i*r*f-s*n*g),p,m]},Fr=(t,e,s,i)=>{const r=Math.atan2(e,t),n=Math.atan2(i,s);return n>=r?n-r:2*Math.PI-(r-n)};function Lr(t,e,i,r,n,o,a,h){let l;if(s.cachesBoundsOfCurve&&(l=[...arguments].join(),p.boundsOfCurveCache[l]))return p.boundsOfCurveCache[l];const c=Math.sqrt,u=Math.abs,d=[],g=[[0,0],[0,0]];let f=6*t-12*i+6*n,m=-3*t+9*i-9*n+3*a,v=3*i-3*t;for(let t=0;t<2;++t){if(t>0&&(f=6*e-12*r+6*o,m=-3*e+9*r-9*o+3*h,v=3*r-3*e),u(m)<1e-12){if(u(f)<1e-12)continue;const t=-v/f;0<t&&t<1&&d.push(t);continue}const s=f*f-4*v*m;if(s<0)continue;const i=c(s),n=(-f+i)/(2*m);0<n&&n<1&&d.push(n);const a=(-f-i)/(2*m);0<a&&a<1&&d.push(a)}let y=d.length;const _=y,x=$r(t,e,i,r,n,o,a,h);for(;y--;){const{x:t,y:e}=x(d[y]);g[0][y]=t,g[1][y]=e}g[0][_]=t,g[1][_]=e,g[0][_+1]=a,g[1][_+1]=h;const C=[new ot(Math.min(...g[0]),Math.min(...g[1])),new ot(Math.max(...g[0]),Math.max(...g[1]))];return s.cachesBoundsOfCurve&&(p.boundsOfCurveCache[l]=C),C}const Ir=(t,e,s)=>{let[i,r,n,o,a,h,l,c]=s;const u=((t,e,s,i,r,n,o)=>{if(0===s||0===i)return[];let a=0,h=0,l=0;const c=Math.PI,u=o*C,d=nt(u),g=rt(u),f=.5*(-g*t-d*e),p=.5*(-g*e+d*t),m=s**2,v=i**2,y=p**2,_=f**2,x=m*v-m*y-v*_;let b=Math.abs(s),S=Math.abs(i);if(x<0){const t=Math.sqrt(1-x/(m*v));b*=t,S*=t}else l=(r===n?-1:1)*Math.sqrt(x/(m*y+v*_));const w=l*b*p/S,T=-l*S*f/b,O=g*w-d*T+.5*t,k=d*w+g*T+.5*e;let D=Fr(1,0,(f-w)/b,(p-T)/S),M=Fr((f-w)/b,(p-T)/S,(-f-w)/b,(-p-T)/S);0===n&&M>0?M-=2*c:1===n&&M<0&&(M+=2*c);const E=Math.ceil(Math.abs(M/c*2)),P=[],A=M/E,j=8/3*Math.sin(A/4)*Math.sin(A/4)/Math.sin(A/2);let F=D+A;for(let t=0;t<E;t++)P[t]=jr(D,F,g,d,b,S,O,k,j,a,h),a=P[t][5],h=P[t][6],D=F,F+=A;return P})(l-t,c-e,r,n,a,h,o);for(let s=0,i=u.length;s<i;s++)u[s][1]+=t,u[s][2]+=e,u[s][3]+=t,u[s][4]+=e,u[s][5]+=t,u[s][6]+=e;return u},Rr=t=>{let e=0,s=0,i=0,r=0;const n=[];let o,a=0,h=0;for(const l of t){const t=[...l];let c;switch(t[0]){case\"l\":t[1]+=e,t[2]+=s;case\"L\":e=t[1],s=t[2],c=[\"L\",e,s];break;case\"h\":t[1]+=e;case\"H\":e=t[1],c=[\"L\",e,s];break;case\"v\":t[1]+=s;case\"V\":s=t[1],c=[\"L\",e,s];break;case\"m\":t[1]+=e,t[2]+=s;case\"M\":e=t[1],s=t[2],i=t[1],r=t[2],c=[\"M\",e,s];break;case\"c\":t[1]+=e,t[2]+=s,t[3]+=e,t[4]+=s,t[5]+=e,t[6]+=s;case\"C\":a=t[3],h=t[4],e=t[5],s=t[6],c=[\"C\",t[1],t[2],a,h,e,s];break;case\"s\":t[1]+=e,t[2]+=s,t[3]+=e,t[4]+=s;case\"S\":\"C\"===o?(a=2*e-a,h=2*s-h):(a=e,h=s),e=t[3],s=t[4],c=[\"C\",a,h,t[1],t[2],e,s],a=c[3],h=c[4];break;case\"q\":t[1]+=e,t[2]+=s,t[3]+=e,t[4]+=s;case\"Q\":a=t[1],h=t[2],e=t[3],s=t[4],c=[\"Q\",a,h,e,s];break;case\"t\":t[1]+=e,t[2]+=s;case\"T\":\"Q\"===o?(a=2*e-a,h=2*s-h):(a=e,h=s),e=t[1],s=t[2],c=[\"Q\",a,h,e,s];break;case\"a\":t[6]+=e,t[7]+=s;case\"A\":Ir(e,s,t).forEach(t=>n.push(t)),e=t[6],s=t[7];break;case\"z\":case\"Z\":e=i,s=r,c=[\"Z\"]}c?(n.push(c),o=c[0]):o=\"\"}return n},Br=(t,e,s,i)=>Math.sqrt((s-t)**2+(i-e)**2),$r=(t,e,s,i,r,n,o,a)=>h=>{const l=h**3,c=(t=>3*t**2*(1-t))(h),u=(t=>3*t*(1-t)**2)(h),d=(t=>(1-t)**3)(h);return new ot(o*l+r*c+s*u+t*d,a*l+n*c+i*u+e*d)},Xr=t=>t**2,Yr=t=>2*t*(1-t),Wr=t=>(1-t)**2,Vr=(t,e,s,i,r,n,o,a)=>h=>{const l=Xr(h),c=Yr(h),u=Wr(h),d=3*(u*(s-t)+c*(r-s)+l*(o-r)),g=3*(u*(i-e)+c*(n-i)+l*(a-n));return Math.atan2(g,d)},Gr=(t,e,s,i,r,n)=>o=>{const a=Xr(o),h=Yr(o),l=Wr(o);return new ot(r*a+s*h+t*l,n*a+i*h+e*l)},zr=(t,e,s,i,r,n)=>o=>{const a=1-o,h=2*(a*(s-t)+o*(r-s)),l=2*(a*(i-e)+o*(n-i));return Math.atan2(l,h)},Hr=(t,e,s)=>{let i=new ot(e,s),r=0;for(let e=1;e<=100;e+=1){const s=t(e/100);r+=Br(i.x,i.y,s.x,s.y),i=s}return r},Nr=(t,e)=>{let s,i=0,r=0,n={x:t.x,y:t.y},o={...n},a=.01,h=0;const l=t.iterator,c=t.angleFinder;for(;r<e&&a>1e-4;)o=l(i),h=i,s=Br(n.x,n.y,o.x,o.y),s+r>e?(i-=a,a/=2):(n=o,i+=a,r+=s);return{...o,angle:c(h)}},Ur=t=>{let e,s,i=0,r=0,n=0,o=0,a=0;const h=[];for(const l of t){const t={x:r,y:n,command:l[0],length:0};switch(l[0]){case\"M\":s=t,s.x=o=r=l[1],s.y=a=n=l[2];break;case\"L\":s=t,s.length=Br(r,n,l[1],l[2]),r=l[1],n=l[2];break;case\"C\":e=$r(r,n,l[1],l[2],l[3],l[4],l[5],l[6]),s=t,s.iterator=e,s.angleFinder=Vr(r,n,l[1],l[2],l[3],l[4],l[5],l[6]),s.length=Hr(e,r,n),r=l[5],n=l[6];break;case\"Q\":e=Gr(r,n,l[1],l[2],l[3],l[4]),s=t,s.iterator=e,s.angleFinder=zr(r,n,l[1],l[2],l[3],l[4]),s.length=Hr(e,r,n),r=l[3],n=l[4];break;case\"Z\":s=t,s.destX=o,s.destY=a,s.length=Br(r,n,o,a),r=o,n=a}i+=s.length,h.push(s)}return h.push({length:i,x:r,y:n}),h},qr=function(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ur(t),i=0;for(;e-s[i].length>0&&i<s.length-2;)e-=s[i].length,i++;const r=s[i],n=e/r.length,o=t[i];switch(r.command){case\"M\":return{x:r.x,y:r.y,angle:0};case\"Z\":return{...new ot(r.x,r.y).lerp(new ot(r.destX,r.destY),n),angle:Math.atan2(r.destY-r.y,r.destX-r.x)};case\"L\":return{...new ot(r.x,r.y).lerp(new ot(o[1],o[2]),n),angle:Math.atan2(o[2]-r.y,o[1]-r.x)};case\"C\":case\"Q\":return Nr(r,e)}},Kr=new RegExp(\"[mzlhvcsqta][^mzlhvcsqta]*\",\"gi\"),Jr=new RegExp(Pr,\"g\"),Qr=new RegExp(hs,\"gi\"),Zr={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},tn=t=>{var e;const s=[],i=null!==(e=t.match(Kr))&&void 0!==e?e:[];for(const t of i){const e=t[0];if(\"z\"===e||\"Z\"===e){s.push([e]);continue}const i=Zr[e.toLowerCase()];let r=[];if(\"a\"===e||\"A\"===e){Jr.lastIndex=0;for(let e=null;e=Jr.exec(t);)r.push(...e.slice(1))}else r=t.match(Qr)||[];for(let t=0;t<r.length;t+=i){const n=new Array(i),o=Ar[e];n[0]=t>0&&o?o:e;for(let e=0;e<i;e++)n[e+1]=parseFloat(r[t+e]);s.push(n)}}return s},en=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=new ot(t[0]),i=new ot(t[1]),r=1,n=0;const o=[],a=t.length,h=a>2;let l;for(h&&(r=t[2].x<i.x?-1:t[2].x===i.x?0:1,n=t[2].y<i.y?-1:t[2].y===i.y?0:1),o.push([\"M\",s.x-r*e,s.y-n*e]),l=1;l<a;l++){if(!s.eq(i)){const t=s.midPointFrom(i);o.push([\"Q\",s.x,s.y,t.x,t.y])}s=t[l],l+1<t.length&&(i=t[l+1])}return h&&(r=s.x>t[l-2].x?1:s.x===t[l-2].x?0:-1,n=s.y>t[l-2].y?1:s.y===t[l-2].y?0:-1),o.push([\"L\",s.x+r*e,s.y+n*e]),o},sn=(t,e)=>t.map(t=>t.map((t,s)=>0===s||void 0===e?t:Wt(t,e)).join(\" \")).join(\" \"),rn=(t,e)=>Math.floor(Math.random()*(e-t+1))+t,nn=(t,e)=>{let s=t._findCenterFromElement();t.transformMatrix&&((t=>{if(t.transformMatrix){const{scaleX:e,scaleY:s,angle:i,skewX:r}=Dt(t.transformMatrix);t.flipX=!1,t.flipY=!1,t.set(W,e),t.set(V,s),t.angle=i,t.skewX=r,t.skewY=0}})(t),s=s.transform(t.transformMatrix)),delete t.transformMatrix,e&&(t.scaleX*=e.scaleX,t.scaleY*=e.scaleY,t.cropX=e.cropX,t.cropY=e.cropY,s.x+=e.offsetLeft,s.y+=e.offsetTop,t.width=e.width,t.height=e.height),t.setPositionByOrigin(s,T,T)};var on=Object.freeze({__proto__:null,addTransformToObject:he,animate:$s,animateColor:Xs,applyTransformToObject:le,calcAngleBetweenVectors:we,calcDimensionsMatrix:Lt,calcPlaneChangeMatrix:ge,calcVectorRotation:Te,cancelAnimFrame:dt,capValue:bs,composeMatrix:It,copyCanvasElement:t=>{var e;const s=vt(t);return null===(e=s.getContext(\"2d\"))||void 0===e||e.drawImage(t,0,0),s},cos:rt,createCanvasElement:pt,createImage:mt,createRotateMatrix:Et,createScaleMatrix:Pt,createSkewXMatrix:jt,createSkewYMatrix:Ft,createTranslateMatrix:Mt,createVector:be,crossProduct:De,degreesToRadians:xt,dotProduct:Me,ease:Ps,enlivenObjectEnlivables:$t,enlivenObjects:Bt,findScaleToCover:Dr,findScaleToFit:kr,getBoundsOfCurve:Lr,getOrthonormalVector:ke,getPathSegmentsInfo:Ur,getPointOnPath:qr,getPointer:re,getRandomInt:rn,getRegularPolygonPath:(t,e)=>{const s=2*Math.PI/t;let i=-y;t%2==0&&(i+=s/2);const r=new Array(t+1);for(let n=0;n<t;n++){const t=n*s+i,{x:o,y:a}=new ot(rt(t),nt(t)).scalarMultiply(e);r[n]=[0===n?\"M\":\"L\",o,a]}return r[t]=[\"Z\"],r},getSmoothPathFromPoints:en,getSvgAttributes:t=>{const e=[\"instantiated_by_use\",\"style\",\"id\",\"class\"];switch(t){case\"linearGradient\":return e.concat([\"x1\",\"y1\",\"x2\",\"y2\",\"gradientUnits\",\"gradientTransform\"]);case\"radialGradient\":return e.concat([\"gradientUnits\",\"gradientTransform\",\"cx\",\"cy\",\"r\",\"fx\",\"fy\",\"fr\"]);case\"stop\":return e.concat([\"offset\",\"stop-color\",\"stop-opacity\"])}return e},getUnitVector:Oe,groupSVGElements:(t,e)=>t&&1===t.length?t[0]:new Or(t,e),hasStyleChanged:Yi,invertTransform:wt,isBetweenVectors:Ee,isIdentityMatrix:bt,isTouchEvent:ne,isTransparent:Di,joinPath:sn,loadImage:Rt,magnitude:Se,makeBoundingBoxFromPoints:ae,makePathSimpler:Rr,matrixToSVG:Vt,mergeClipPaths:(t,e)=>{var s;let i=t,r=e;i.inverted&&!r.inverted&&(i=e,r=t),me(r,null===(s=r.group)||void 0===s?void 0:s.calcTransformMatrix(),i.calcTransformMatrix());const n=i.inverted&&r.inverted;return n&&(i.inverted=r.inverted=!1),new Or([i],{clipPath:r,inverted:n})},multiplyTransformMatrices:Tt,multiplyTransformMatrixArray:Ot,parsePath:tn,parsePreserveAspectRatioAttribute:Ne,parseUnit:He,pick:Xt,projectStrokeOnPoints:ji,qrDecompose:Dt,radiansToDegrees:Ct,removeFromArray:it,removeTransformFromObject:(t,e)=>{const s=wt(e),i=Tt(s,t.calcOwnMatrix());le(t,i)},removeTransformMatrixForSvgParsing:nn,requestAnimFrame:ut,resetObjectTransform:ce,rotateVector:Ce,saveObjectTransform:ue,sendObjectToPlane:me,sendPointToPlane:fe,sendVectorToPlane:pe,sin:nt,sizeAfterTransform:de,string:Xi,stylesFromArray:Vi,stylesToArray:Wi,toBlob:_t,toDataURL:yt,toFixed:Wt,transformPath:(t,e,s)=>(s&&(e=Tt(e,[1,0,0,1,-s.x,-s.y])),t.map(t=>{const s=[...t];for(let i=1;i<t.length-1;i+=2){const{x:r,y:n}=St({x:t[i],y:t[i+1]},e);s[i]=r,s[i+1]=n}return s})),transformPoint:St});function an(t,e){const s=t.style;s&&Object.entries(e).forEach(t=>{let[e,i]=t;return s.setProperty(e,i)})}class hn extends te{constructor(e){let{allowTouchScrolling:s=!1,containerClass:i=\"\"}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e),t(this,\"upper\",void 0),t(this,\"container\",void 0);const{el:r}=this.lower,n=this.createUpperCanvas();this.upper={el:n,ctx:n.getContext(\"2d\")},this.applyCanvasStyle(r,{allowTouchScrolling:s}),this.applyCanvasStyle(n,{allowTouchScrolling:s,styles:{position:\"absolute\",left:\"0\",top:\"0\"}});const o=this.createContainerElement();o.classList.add(i),r.parentNode&&r.parentNode.replaceChild(o,r),o.append(r,n),this.container=o}createUpperCanvas(){const{el:t}=this.lower,e=pt();return e.className=t.className,e.classList.remove(\"lower-canvas\"),e.classList.add(\"upper-canvas\"),e.setAttribute(\"data-fabric\",\"top\"),e.style.cssText=t.style.cssText,e.setAttribute(\"draggable\",\"true\"),e}createContainerElement(){const t=d().createElement(\"div\");return t.setAttribute(\"data-fabric\",\"wrapper\"),an(t,{position:\"relative\"}),Zt(t),t}applyCanvasStyle(t,e){const{styles:s,allowTouchScrolling:i}=e;an(t,{...s,\"touch-action\":i?\"manipulation\":E}),Zt(t)}setDimensions(t,e){super.setDimensions(t,e);const{el:s,ctx:i}=this.upper;Jt(s,i,t,e)}setCSSDimensions(t){super.setCSSDimensions(t),Qt(this.upper.el,t),Qt(this.container,t)}cleanupDOM(t){const e=this.container,{el:s}=this.lower,{el:i}=this.upper;super.cleanupDOM(t),e.removeChild(i),e.removeChild(s),e.parentNode&&e.parentNode.replaceChild(s,e)}dispose(){super.dispose(),u().dispose(this.upper.el),delete this.upper,delete this.container}}const ln=(t,e,s,i)=>{const{target:r,offsetX:n,offsetY:o}=e,a=s-n,h=i-o,l=!Fe(r,\"lockMovementX\")&&r.left!==a,c=!Fe(r,\"lockMovementY\")&&r.top!==h;return l&&r.set(O,a),c&&r.set(k,h),(l||c)&&Gs(A,Le(t,e,s,i)),l||c},cn=B,un=t=>function(e,s,i){const{points:r,pathOffset:n}=i;return new ot(r[t]).subtract(n).transform(Tt(i.getViewportTransform(),i.calcTransformMatrix()))},dn=(t,e,s,i)=>{const{target:r,pointIndex:n}=e,o=r,a=fe(new ot(s,i),void 0,o.calcOwnMatrix());return o.points[n]=a.add(o.pathOffset),o.setDimensions(),o.set(\"dirty\",!0),!0},gn=(t,e)=>function(s,i,r,n){const o=i.target,a=new ot(o.points[(t>0?t:o.points.length)-1]),h=a.subtract(o.pathOffset).transform(o.calcOwnMatrix()),l=e(s,{...i,pointIndex:t},r,n),c=a.subtract(o.pathOffset).transform(o.calcOwnMatrix()).subtract(h);return o.left-=c.x,o.top-=c.y,l},fn=t=>zs(cn,gn(t,dn));const pn=(t,e,s)=>{const{path:i,pathOffset:r}=t,n=i[e];return new ot(n[s]-r.x,n[s+1]-r.y).transform(Tt(t.getViewportTransform(),t.calcTransformMatrix()))};function mn(t,e,s){const{commandIndex:i,pointIndex:r}=this;return pn(s,i,r)}function vn(t,e,s,i){const{target:r}=e,{commandIndex:n,pointIndex:o}=this,a=((t,e,s,i,r)=>{const{path:n,pathOffset:o}=t,a=n[(i>0?i:n.length)-1],h=new ot(a[r],a[r+1]),l=h.subtract(o).transform(t.calcOwnMatrix()),c=fe(new ot(e,s),void 0,t.calcOwnMatrix());n[i][r]=c.x+o.x,n[i][r+1]=c.y+o.y,t.setDimensions();const u=h.subtract(t.pathOffset).transform(t.calcOwnMatrix()).subtract(l);return t.left-=u.x,t.top-=u.y,t.set(\"dirty\",!0),!0})(r,s,i,n,o);return Gs(this.actionName,{...Le(t,e,s,i),commandIndex:n,pointIndex:o}),a}class yn extends ti{constructor(t){super(t)}render(t,e,s,i,r){const n={...i,cornerColor:this.controlFill,cornerStrokeColor:this.controlStroke,transparentCorners:!this.controlFill};super.render(t,e,s,n,r)}}class _n extends yn{constructor(t){super(t)}render(t,e,s,i,r){const{path:n}=r,{commandIndex:o,pointIndex:a,connectToCommandIndex:h,connectToPointIndex:l}=this;t.save(),t.strokeStyle=this.controlStroke,this.connectionDashArray&&t.setLineDash(this.connectionDashArray);const[c]=n[o],u=pn(r,h,l);if(\"Q\"===c){const i=pn(r,o,a+2);t.moveTo(i.x,i.y),t.lineTo(e,s)}else t.moveTo(e,s);t.lineTo(u.x,u.y),t.stroke(),t.restore(),super.render(t,e,s,i,r)}}const xn=(t,e,s,i,r,n)=>new(s?_n:yn)({commandIndex:t,pointIndex:e,actionName:\"modifyPath\",positionHandler:mn,actionHandler:vn,connectToCommandIndex:r,connectToPointIndex:n,...i,...s?i.controlPointStyle:i.pointStyle});var Cn=Object.freeze({__proto__:null,changeHeight:Js,changeObjectHeight:qs,changeObjectWidth:Us,changeWidth:Ks,createObjectDefaultControls:bi,createPathControls:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s={};let i=\"M\";return t.path.forEach((t,r)=>{const n=t[0];switch(\"Z\"!==n&&(s[`c_${r}_${n}`]=xn(r,t.length-2,!1,e)),n){case\"C\":s[`c_${r}_C_CP_1`]=xn(r,1,!0,e,r-1,(t=>\"C\"===t?5:\"Q\"===t?3:1)(i)),s[`c_${r}_C_CP_2`]=xn(r,3,!0,e,r,5);break;case\"Q\":s[`c_${r}_Q_CP_1`]=xn(r,1,!0,e,r,3)}i=n}),s},createPolyActionHandler:fn,createPolyControls:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s={};for(let i=0;i<(\"number\"==typeof t?t:t.points.length);i++)s[`p${i}`]=new ti({actionName:cn,positionHandler:un(i),actionHandler:fn(i),...e});return s},createPolyPositionHandler:un,createResizeControls:Si,createTextboxDefaultControls:wi,dragHandler:ln,factoryPolyActionHandler:gn,getLocalPoint:Re,polyActionHandler:dn,renderCircleControl:Qs,renderSquareControl:Zs,rotationStyleHandler:ei,rotationWithSnapping:si,scaleCursorStyleHandler:oi,scaleOrSkewActionName:yi,scaleSkewCursorStyleHandler:_i,scalingEqually:hi,scalingX:li,scalingXOrSkewingY:xi,scalingY:ci,scalingYOrSkewingX:Ci,skewCursorStyleHandler:gi,skewHandlerX:pi,skewHandlerY:mi,wrapWithFireEvent:zs,wrapWithFixedAnchor:Hs});class bn extends se{constructor(){super(...arguments),t(this,\"_hoveredTargets\",[]),t(this,\"_currentTransform\",null),t(this,\"_groupSelector\",null),t(this,\"contextTopDirty\",!1)}static getDefaults(){return{...super.getDefaults(),...bn.ownDefaults}}get upperCanvasEl(){var t;return null===(t=this.elements.upper)||void 0===t?void 0:t.el}get contextTop(){var t;return null===(t=this.elements.upper)||void 0===t?void 0:t.ctx}get wrapperEl(){return this.elements.container}initElements(t){this.elements=new hn(t,{allowTouchScrolling:this.allowTouchScrolling,containerClass:this.containerClass}),this._createCacheCanvas()}_onObjectAdded(t){this._objectsToRender=void 0,super._onObjectAdded(t)}_onObjectRemoved(t){this._objectsToRender=void 0,t===this._activeObject&&(this.fire(\"before:selection:cleared\",{deselected:[t]}),this._discardActiveObject(),this.fire(\"selection:cleared\",{deselected:[t]}),t.fire(\"deselected\",{target:t})),t===this._hoveredTarget&&(this._hoveredTarget=void 0,this._hoveredTargets=[]),super._onObjectRemoved(t)}_onStackOrderChanged(){this._objectsToRender=void 0,super._onStackOrderChanged()}_chooseObjectsToRender(){const t=this._activeObject;return!this.preserveObjectStacking&&t?this._objects.filter(e=>!e.group&&e!==t).concat(t):this._objects}renderAll(){this.cancelRequestedRender(),this.destroyed||(!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1),!this._objectsToRender&&(this._objectsToRender=this._chooseObjectsToRender()),this.renderCanvas(this.getContext(),this._objectsToRender))}renderTopLayer(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()}renderTop(){const t=this.contextTop;this.clearContext(t),this.renderTopLayer(t),this.fire(\"after:render\",{ctx:t})}setTargetFindTolerance(t){t=Math.round(t),this.targetFindTolerance=t;const e=this.getRetinaScaling(),s=Math.ceil((2*t+1)*e);this.pixelFindCanvasEl.width=this.pixelFindCanvasEl.height=s,this.pixelFindContext.scale(e,e)}isTargetTransparent(t,e,s){const i=this.targetFindTolerance,r=this.pixelFindContext;this.clearContext(r),r.save(),r.translate(-e+i,-s+i),r.transform(...this.viewportTransform);const n=t.selectionBackgroundColor;t.selectionBackgroundColor=\"\",t.render(r),t.selectionBackgroundColor=n,r.restore();const o=Math.round(i*this.getRetinaScaling());return Di(r,o,o,o)}_isSelectionKeyPressed(t){const e=this.selectionKey;return!!e&&(Array.isArray(e)?!!e.find(e=>!!e&&!0===t[e]):t[e])}_shouldClearSelection(t,e){const s=this.getActiveObjects(),i=this._activeObject;return!!(!e||e&&i&&s.length>1&&-1===s.indexOf(e)&&i!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&i&&i!==e)}_shouldCenterTransform(t,e,s){if(!t)return;let i;return e===Y||e===W||e===V||e===R?i=this.centeredScaling||t.centeredScaling:e===L&&(i=this.centeredRotation||t.centeredRotation),i?!s:s}_getOriginFromCorner(t,e){const s={x:t.originX,y:t.originY};return e?([\"ml\",\"tl\",\"bl\"].includes(e)?s.x=M:[\"mr\",\"tr\",\"br\"].includes(e)&&(s.x=O),[\"tl\",\"mt\",\"tr\"].includes(e)?s.y=D:[\"bl\",\"mb\",\"br\"].includes(e)&&(s.y=k),s):s}_setupCurrentTransform(t,e,s){var i;const r=e.group?fe(this.getScenePoint(t),void 0,e.group.calcTransformMatrix()):this.getScenePoint(t),{key:n=\"\",control:o}=e.getActiveControl()||{},a=s&&o?null===(i=o.getActionHandler(t,e,o))||void 0===i?void 0:i.bind(o):ln,h=((t,e,s,i)=>{if(!e||!t)return\"drag\";const r=i.controls[e];return r.getActionName(s,r,i)})(s,n,t,e),l=t[this.centeredKey],c=this._shouldCenterTransform(e,h,l)?{x:T,y:T}:this._getOriginFromCorner(e,n),{scaleX:u,scaleY:d,skewX:g,skewY:f,left:p,top:m,angle:v,width:y,height:_,cropX:x,cropY:C}=e,b={target:e,action:h,actionHandler:a,actionPerformed:!1,corner:n,scaleX:u,scaleY:d,skewX:g,skewY:f,offsetX:r.x-p,offsetY:r.y-m,originX:c.x,originY:c.y,ex:r.x,ey:r.y,lastX:r.x,lastY:r.y,theta:xt(v),width:y,height:_,shiftKey:t.shiftKey,altKey:l,original:{...ue(e),originX:c.x,originY:c.y,cropX:x,cropY:C}};this._currentTransform=b,this.fire(\"before:transform\",{e:t,transform:b})}setCursor(t){this.upperCanvasEl.style.cursor=t}_drawSelection(t){const{x:e,y:s,deltaX:i,deltaY:r}=this._groupSelector,n=new ot(e,s).transform(this.viewportTransform),o=new ot(e+i,s+r).transform(this.viewportTransform),a=this.selectionLineWidth/2;let h=Math.min(n.x,o.x),l=Math.min(n.y,o.y),c=Math.max(n.x,o.x),u=Math.max(n.y,o.y);this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(h,l,c-h,u-l)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,h+=a,l+=a,c-=a,u-=a,ki.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(h,l,c-h,u-l))}findTarget(t){if(this._targetInfo)return this._targetInfo;if(this.skipTargetFind)return{subTargets:[],currentSubTargets:[]};const e=this.getScenePoint(t),s=this._activeObject,i=this.getActiveObjects(),r=this.searchPossibleTargets(this._objects,e),{subTargets:n,container:o,target:a}=r,h={...r,currentSubTargets:n,currentContainer:o,currentTarget:a};if(!s)return h;const l={...this.searchPossibleTargets([s],e),currentSubTargets:n,currentContainer:o,currentTarget:a};if(s.findControl(this.getViewportPoint(t),ne(t)))return{...l,target:s};if(l.target){if(i.length>1)return l;if(!this.preserveObjectStacking)return l;if(this.preserveObjectStacking&&t[this.altSelectionKey])return l}return h}_pointIsInObjectSelectionArea(t,e){let s=t.getCoords();const i=this.getZoom(),r=t.padding/i;if(r){const[t,e,i,n]=s,o=Math.atan2(e.y-t.y,e.x-t.x),a=rt(o)*r,h=nt(o)*r,l=a+h,c=a-h;s=[new ot(t.x-c,t.y-l),new ot(e.x+l,e.y-c),new ot(i.x+c,i.y+l),new ot(n.x-l,n.y+c)]}return Ys.isPointInPolygon(e,s)}_checkTarget(t,e){if(t&&t.visible&&t.evented&&this._pointIsInObjectSelectionArea(t,e)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;{const s=e.transform(this.viewportTransform);if(!this.isTargetTransparent(t,s.x,s.y))return!0}}return!1}_searchPossibleTargets(t,e,s){let i=t.length;for(;i--;){const r=t[i];if(this._checkTarget(r,e)){if(ht(r)&&r.subTargetCheck){const{target:t}=this._searchPossibleTargets(r._objects,e,s);t&&s.push(t)}return{target:r,subTargets:s}}}return{subTargets:[]}}searchPossibleTargets(t,e){const s=this._searchPossibleTargets(t,e,[]);s.container=s.target;const{container:i,subTargets:r}=s;if(i&&ht(i)&&i.interactive&&r[0]){for(let t=r.length-1;t>0;t--){const e=r[t];if(!ht(e)||!e.interactive)return s.target=e,s}return s.target=r[0],s}return s}getViewportPoint(t){return this._viewportPoint?this._viewportPoint:this._getPointerImpl(t,!0)}getScenePoint(t){return this._scenePoint?this._scenePoint:this._getPointerImpl(t)}_getPointerImpl(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const s=this.upperCanvasEl,i=s.getBoundingClientRect();let r=re(t),n=i.width||0,o=i.height||0;n&&o||(k in i&&D in i&&(o=Math.abs(i.top-i.bottom)),M in i&&O in i&&(n=Math.abs(i.right-i.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,e||(r=fe(r,void 0,this.viewportTransform));const a=this.getRetinaScaling();1!==a&&(r.x/=a,r.y/=a);const h=0===n||0===o?new ot(1,1):new ot(s.width/n,s.height/o);return r.multiply(h)}_setDimensionsImpl(t,e){this._resetTransformEventData(),super._setDimensionsImpl(t,e),this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop)}_createCacheCanvas(){this.pixelFindCanvasEl=pt(),this.pixelFindContext=this.pixelFindCanvasEl.getContext(\"2d\",{willReadFrequently:!0}),this.setTargetFindTolerance(this.targetFindTolerance)}getTopContext(){return this.elements.upper.ctx}getSelectionContext(){return this.elements.upper.ctx}getSelectionElement(){return this.elements.upper.el}getActiveObject(){return this._activeObject}getActiveObjects(){const t=this._activeObject;return Nt(t)?t.getObjects():t?[t]:[]}_fireSelectionEvents(t,e){let s=!1,i=!1;const r=this.getActiveObjects(),n=[],o=[];t.forEach(t=>{r.includes(t)||(s=!0,t.fire(\"deselected\",{e:e,target:t}),o.push(t))}),r.forEach(i=>{t.includes(i)||(s=!0,i.fire(\"selected\",{e:e,target:i}),n.push(i))}),t.length>0&&r.length>0?(i=!0,s&&this.fire(\"selection:updated\",{e:e,selected:n,deselected:o})):r.length>0?(i=!0,this.fire(\"selection:created\",{e:e,selected:n})):t.length>0&&(i=!0,this.fire(\"selection:cleared\",{e:e,deselected:o})),i&&(this._objectsToRender=void 0)}setActiveObject(t,e){const s=this.getActiveObjects(),i=this._setActiveObject(t,e);return this._fireSelectionEvents(s,e),i}_setActiveObject(t,e){const s=this._activeObject;return s!==t&&(!(!this._discardActiveObject(e,t)&&this._activeObject)&&(!t.onSelect({e:e})&&(this._activeObject=t,Nt(t)&&s!==t&&t.set(\"canvas\",this),t.setCoords(),!0)))}_discardActiveObject(t,e){const s=this._activeObject;return!!s&&(!s.onDeselect({e:t,object:e})&&(this._currentTransform&&this._currentTransform.target===s&&this.endCurrentTransform(t),Nt(s)&&s===this._hoveredTarget&&(this._hoveredTarget=void 0),this._activeObject=void 0,!0))}discardActiveObject(t){const e=this.getActiveObjects(),s=this.getActiveObject();e.length&&this.fire(\"before:selection:cleared\",{e:t,deselected:[s]});const i=this._discardActiveObject(t);return this._fireSelectionEvents(e,t),i}endCurrentTransform(t){const e=this._currentTransform;this._finalizeCurrentTransform(t),e&&e.target&&(e.target.isMoving=!1),this._currentTransform=null}_finalizeCurrentTransform(t){const e=this._currentTransform,s=e.target,i={e:t,target:s,transform:e,action:e.action};s._scaling&&(s._scaling=!1),s.setCoords(),e.actionPerformed&&(this.fire(\"object:modified\",i),s.fire(U,i))}setViewportTransform(t){super.setViewportTransform(t);const e=this._activeObject;e&&e.setCoords()}destroy(){const t=this._activeObject;Nt(t)&&(t.removeAll(),t.dispose()),delete this._activeObject,super.destroy(),this.pixelFindContext=null,this.pixelFindCanvasEl=void 0}clear(){this.discardActiveObject(),this._activeObject=void 0,this.clearContext(this.contextTop),super.clear()}drawControls(t){const e=this._activeObject;e&&e._renderControls(t)}_toObject(t,e,s){const i=this._realizeGroupTransformOnObject(t),r=super._toObject(t,e,s);return t.set(i),r}_realizeGroupTransformOnObject(t){const{group:e}=t;if(e&&Nt(e)&&this._activeObject===e){const s=Xt(t,[\"angle\",\"flipX\",\"flipY\",O,W,V,G,z,k]);return he(t,e.calcOwnMatrix()),s}return{}}_setSVGObject(t,e,s){const i=this._realizeGroupTransformOnObject(e);super._setSVGObject(t,e,s),e.set(i)}}t(bn,\"ownDefaults\",{uniformScaling:!0,uniScaleKey:\"shiftKey\",centeredScaling:!1,centeredRotation:!1,centeredKey:\"altKey\",altActionKey:\"shiftKey\",selection:!0,selectionKey:\"shiftKey\",selectionColor:\"rgba(100, 100, 255, 0.3)\",selectionDashArray:[],selectionBorderColor:\"rgba(255, 255, 255, 0.3)\",selectionLineWidth:1,selectionFullyContained:!1,hoverCursor:\"move\",moveCursor:\"move\",defaultCursor:\"default\",freeDrawingCursor:\"crosshair\",notAllowedCursor:\"not-allowed\",perPixelTargetFind:!1,targetFindTolerance:0,skipTargetFind:!1,stopContextMenu:!0,fireRightClick:!0,fireMiddleClick:!0,enablePointerEvents:!1,containerClass:\"canvas-container\",preserveObjectStacking:!0});class Sn{constructor(e){t(this,\"targets\",[]),t(this,\"__disposer\",void 0);const s=()=>{const{hiddenTextarea:t}=e.getActiveObject()||{};t&&t.focus()},i=e.upperCanvasEl;i.addEventListener(\"click\",s),this.__disposer=()=>i.removeEventListener(\"click\",s)}exitTextEditing(){this.target=void 0,this.targets.forEach(t=>{t.isEditing&&t.exitEditing()})}add(t){this.targets.push(t)}remove(t){this.unregister(t),it(this.targets,t)}register(t){this.target=t}unregister(t){t===this.target&&(this.target=void 0)}onMouseMove(t){var e;(null===(e=this.target)||void 0===e?void 0:e.isEditing)&&this.target.updateSelectionOnMouseMove(t)}clear(){this.targets=[],this.target=void 0}dispose(){this.clear(),this.__disposer(),delete this.__disposer}}const wn={passive:!1},Tn=(t,e)=>({viewportPoint:t.getViewportPoint(e),scenePoint:t.getScenePoint(e)}),On=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];return t.addEventListener(...s)},kn=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];return t.removeEventListener(...s)},Dn={mouse:{in:\"over\",out:\"out\",targetIn:\"mouseover\",targetOut:\"mouseout\",canvasIn:\"mouse:over\",canvasOut:\"mouse:out\"},drag:{in:\"enter\",out:\"leave\",targetIn:\"dragenter\",targetOut:\"dragleave\",canvasIn:\"drag:enter\",canvasOut:\"drag:leave\"}};class Mn extends bn{constructor(e){super(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),t(this,\"_isClick\",void 0),t(this,\"textEditingManager\",new Sn(this)),[\"_onMouseDown\",\"_onTouchStart\",\"_onMouseMove\",\"_onMouseUp\",\"_onTouchEnd\",\"_onResize\",\"_onMouseWheel\",\"_onMouseOut\",\"_onMouseEnter\",\"_onContextMenu\",\"_onClick\",\"_onDragStart\",\"_onDragEnd\",\"_onDragProgress\",\"_onDragOver\",\"_onDragEnter\",\"_onDragLeave\",\"_onDrop\"].forEach(t=>{this[t]=this[t].bind(this)}),this.addOrRemove(On)}_getEventPrefix(){return this.enablePointerEvents?\"pointer\":\"mouse\"}addOrRemove(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const s=this.upperCanvasEl,i=this._getEventPrefix();t(Kt(s),\"resize\",this._onResize),t(s,i+\"down\",this._onMouseDown),t(s,`${i}move`,this._onMouseMove,wn),t(s,`${i}out`,this._onMouseOut),t(s,`${i}enter`,this._onMouseEnter),t(s,\"wheel\",this._onMouseWheel,{passive:!1}),t(s,\"contextmenu\",this._onContextMenu),e||(t(s,\"click\",this._onClick),t(s,\"dblclick\",this._onClick)),t(s,\"dragstart\",this._onDragStart),t(s,\"dragend\",this._onDragEnd),t(s,\"dragover\",this._onDragOver),t(s,\"dragenter\",this._onDragEnter),t(s,\"dragleave\",this._onDragLeave),t(s,\"drop\",this._onDrop),this.enablePointerEvents||t(s,\"touchstart\",this._onTouchStart,wn)}removeListeners(){this.addOrRemove(kn);const t=this._getEventPrefix(),e=qt(this.upperCanvasEl);kn(e,`${t}up`,this._onMouseUp),kn(e,\"touchend\",this._onTouchEnd,wn),kn(e,`${t}move`,this._onMouseMove,wn),kn(e,\"touchmove\",this._onMouseMove,wn),clearTimeout(this._willAddMouseDown)}_onMouseWheel(t){this._cacheTransformEventData(t),this._handleEvent(t,\"wheel\"),this._resetTransformEventData()}_onMouseOut(t){const e=this._hoveredTarget,s={e:t,...Tn(this,t)};this.fire(\"mouse:out\",{...s,target:e}),this._hoveredTarget=void 0,e&&e.fire(\"mouseout\",{...s}),this._hoveredTargets.forEach(t=>{this.fire(\"mouse:out\",{...s,target:t}),t&&t.fire(\"mouseout\",{...s})}),this._hoveredTargets=[]}_onMouseEnter(t){const{target:e}=this.findTarget(t);this._currentTransform||e||(this.fire(\"mouse:over\",{e:t,...Tn(this,t)}),this._hoveredTarget=void 0,this._hoveredTargets=[])}_onDragStart(t){this._isClick=!1;const e=this.getActiveObject();if(e&&e.onDragStart(t)){this._dragSource=e;const s={e:t,target:e};return this.fire(\"dragstart\",s),e.fire(\"dragstart\",s),void On(this.upperCanvasEl,\"drag\",this._onDragProgress)}oe(t)}_renderDragEffects(t,e,s){let i=!1;const r=this._dropTarget;r&&r!==e&&r!==s&&(r.clearContextTop(),i=!0),null==e||e.clearContextTop(),s!==e&&(null==s||s.clearContextTop());const n=this.contextTop;n.save(),n.transform(...this.viewportTransform),e&&(n.save(),e.transform(n),e.renderDragSourceEffect(t),n.restore(),i=!0),s&&(n.save(),s.transform(n),s.renderDropTargetEffect(t),n.restore(),i=!0),n.restore(),i&&(this.contextTopDirty=!0)}_onDragEnd(t){const{currentSubTargets:e}=this.findTarget(t),s=!!t.dataTransfer&&t.dataTransfer.dropEffect!==E,i=s?this._activeObject:void 0,r={e:t,target:this._dragSource,subTargets:e,dragSource:this._dragSource,didDrop:s,dropTarget:i};kn(this.upperCanvasEl,\"drag\",this._onDragProgress),this.fire(\"dragend\",r),this._dragSource&&this._dragSource.fire(\"dragend\",r),delete this._dragSource,this._onMouseUp(t)}_onDragProgress(t){const e={e:t,target:this._dragSource,dragSource:this._dragSource,dropTarget:this._draggedoverTarget};this.fire(\"drag\",e),this._dragSource&&this._dragSource.fire(\"drag\",e)}_onDragOver(t){const e=\"dragover\",{currentContainer:s,currentSubTargets:i}=this.findTarget(t),r=this._dragSource,n={e:t,target:s,subTargets:i,dragSource:r,canDrop:!1,dropTarget:void 0};let o;this.fire(e,n),this._fireEnterLeaveEvents(t,s,n),s&&(s.canDrop(t)&&(o=s),s.fire(e,n));for(let s=0;s<i.length;s++){const r=i[s];r.canDrop(t)&&(o=r),r.fire(e,n)}this._renderDragEffects(t,r,o),this._dropTarget=o}_onDragEnter(t){const{currentContainer:e,currentSubTargets:s}=this.findTarget(t),i={e:t,target:e,subTargets:s,dragSource:this._dragSource};this.fire(\"dragenter\",i),this._fireEnterLeaveEvents(t,e,i)}_onDragLeave(t){const{currentSubTargets:e}=this.findTarget(t),s={e:t,target:this._draggedoverTarget,subTargets:e,dragSource:this._dragSource};this.fire(\"dragleave\",s),this._fireEnterLeaveEvents(t,void 0,s),this._renderDragEffects(t,this._dragSource),this._dropTarget=void 0,this._hoveredTargets=[]}_onDrop(t){const{currentContainer:e,currentSubTargets:s}=this.findTarget(t),i=this._basicEventHandler(\"drop:before\",{e:t,target:e,subTargets:s,dragSource:this._dragSource,...Tn(this,t)});i.didDrop=!1,i.dropTarget=void 0,this._basicEventHandler(\"drop\",i),this.fire(\"drop:after\",i)}_onContextMenu(t){const{target:e,subTargets:s}=this.findTarget(t),i=this._basicEventHandler(\"contextmenu:before\",{e:t,target:e,subTargets:s});return this.stopContextMenu&&oe(t),this._basicEventHandler(\"contextmenu\",i),!1}_onClick(t){const e=t.detail;e>3||e<2||(this._cacheTransformEventData(t),2==e&&\"dblclick\"===t.type&&this._handleEvent(t,\"dblclick\"),3==e&&this._handleEvent(t,\"tripleclick\"),this._resetTransformEventData())}fireEventFromPointerEvent(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this._cacheTransformEventData(t);const{target:r,subTargets:n}=this.findTarget(t),o={e:t,target:r,subTargets:n,...Tn(this,t),transform:this._currentTransform,...i};this.fire(e,o),r&&r.fire(s,o);for(let t=0;t<n.length;t++)n[t]!==r&&n[t].fire(s,o);this._resetTransformEventData()}getPointerId(t){const e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1}_isMainEvent(t){return!0===t.isPrimary||!1!==t.isPrimary&&(\"touchend\"===t.type&&0===t.touches.length||(!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId))}_onTouchStart(t){this._cacheTransformEventData(t);let e=!this.allowTouchScrolling;const s=this._activeObject;void 0===this.mainTouchId&&(this.mainTouchId=this.getPointerId(t)),this.__onMouseDown(t);const{target:i}=this.findTarget(t);(this.isDrawingMode||s&&i===s)&&(e=!0),e&&t.preventDefault();const r=this.upperCanvasEl,n=this._getEventPrefix(),o=qt(r);On(o,\"touchend\",this._onTouchEnd,wn),e&&On(o,\"touchmove\",this._onMouseMove,wn),kn(r,`${n}down`,this._onMouseDown),this._resetTransformEventData()}_onMouseDown(t){this._cacheTransformEventData(t),this.__onMouseDown(t);const e=this.upperCanvasEl,s=this._getEventPrefix();kn(e,`${s}move`,this._onMouseMove,wn);const i=qt(e);On(i,`${s}up`,this._onMouseUp),On(i,`${s}move`,this._onMouseMove,wn),this._resetTransformEventData()}_onTouchEnd(t){if(t.touches.length>0)return;this._cacheTransformEventData(t),this.__onMouseUp(t),this._resetTransformEventData(),delete this.mainTouchId;const e=this._getEventPrefix(),s=qt(this.upperCanvasEl);kn(s,\"touchend\",this._onTouchEnd,wn),kn(s,\"touchmove\",this._onMouseMove,wn),this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout(()=>{On(this.upperCanvasEl,`${e}down`,this._onMouseDown),this._willAddMouseDown=0},400)}_onMouseUp(t){this._cacheTransformEventData(t),this.__onMouseUp(t);const e=this.upperCanvasEl,s=this._getEventPrefix();if(this._isMainEvent(t)){const t=qt(this.upperCanvasEl);kn(t,`${s}up`,this._onMouseUp),kn(t,`${s}move`,this._onMouseMove,wn),On(e,`${s}move`,this._onMouseMove,wn)}this._resetTransformEventData()}_onMouseMove(t){this._cacheTransformEventData(t);const e=this.getActiveObject();!this.allowTouchScrolling&&(!e||!e.shouldStartDragging(t))&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t),this._resetTransformEventData()}_onResize(){this.calcOffset(),this._resetTransformEventData()}_shouldRender(t){const e=this.getActiveObject();return!!e!=!!t||e&&t&&e!==t}__onMouseUp(t){var e;this._handleEvent(t,\"up:before\");const s=this._currentTransform,i=this._isClick,{target:r}=this.findTarget(t),{button:n}=t;if(n)return void((this.fireMiddleClick&&1===n||this.fireRightClick&&2===n)&&this._handleEvent(t,\"up\"));if(this.isDrawingMode&&this._isCurrentlyDrawing)return void this._onMouseUpInDrawingMode(t);if(!this._isMainEvent(t))return;let o,a,h=!1;if(s&&(this._finalizeCurrentTransform(t),h=s.actionPerformed),!i){const e=r===this._activeObject;this.handleSelection(t),h||(h=this._shouldRender(r)||!e&&r===this._activeObject)}if(r){const e=r.findControl(this.getViewportPoint(t),ne(t)),{key:i,control:n}=e||{};if(a=i,r.selectable&&r!==this._activeObject&&\"up\"===r.activeOn)this.setActiveObject(r,t),h=!0;else if(n){const e=n.getMouseUpHandler(t,r,n);e&&(o=this.getScenePoint(t),e.call(n,t,s,o.x,o.y))}r.isMoving=!1}if(s&&(s.target!==r||s.corner!==a)){const e=s.target&&s.target.controls[s.corner],i=e&&e.getMouseUpHandler(t,s.target,e);o=o||this.getScenePoint(t),i&&i.call(e,t,s,o.x,o.y)}this._setCursorFromEvent(t,r),this._handleEvent(t,\"up\"),this._groupSelector=null,this._currentTransform=null,r&&(r.__corner=void 0),h?this.requestRenderAll():i||null!==(e=this._activeObject)&&void 0!==e&&e.isEditing||this.renderTop()}_basicEventHandler(t,e){const{target:s,subTargets:i=[]}=e;this.fire(t,e),s&&s.fire(t,e);for(let r=0;r<i.length;r++)i[r]!==s&&i[r].fire(t,e);return e}_handleEvent(t,e,s){const{target:i,subTargets:r}=this.findTarget(t),n={e:t,target:i,subTargets:r,...Tn(this,t),transform:this._currentTransform,...\"down:before\"===e||\"down\"===e?s:{}};\"up:before\"!==e&&\"up\"!==e||(n.isClick=this._isClick),this.fire(`mouse:${e}`,n),i&&i.fire(`mouse${e}`,n);for(let t=0;t<r.length;t++)r[t]!==i&&r[t].fire(`mouse${e}`,n)}_onMouseDownInDrawingMode(t){this._isCurrentlyDrawing=!0,this.getActiveObject()&&(this.discardActiveObject(t),this.requestRenderAll());const e=this.getScenePoint(t);this.freeDrawingBrush&&this.freeDrawingBrush.onMouseDown(e,{e:t,pointer:e}),this._handleEvent(t,\"down\",{alreadySelected:!1})}_onMouseMoveInDrawingMode(t){if(this._isCurrentlyDrawing){const e=this.getScenePoint(t);this.freeDrawingBrush&&this.freeDrawingBrush.onMouseMove(e,{e:t,pointer:e})}this.setCursor(this.freeDrawingCursor),this._handleEvent(t,\"move\")}_onMouseUpInDrawingMode(t){const e=this.getScenePoint(t);this.freeDrawingBrush?this._isCurrentlyDrawing=!!this.freeDrawingBrush.onMouseUp({e:t,pointer:e}):this._isCurrentlyDrawing=!1,this._handleEvent(t,\"up\")}__onMouseDown(t){this._isClick=!0,this._handleEvent(t,\"down:before\");let{target:e}=this.findTarget(t),s=!!e&&e===this._activeObject;const{button:i}=t;if(i)return void((this.fireMiddleClick&&1===i||this.fireRightClick&&2===i)&&this._handleEvent(t,\"down\",{alreadySelected:s}));if(this.isDrawingMode)return void this._onMouseDownInDrawingMode(t);if(!this._isMainEvent(t))return;if(this._currentTransform)return;let r=this._shouldRender(e),n=!1;if(this.handleMultiSelection(t,e)?(e=this._activeObject,n=!0,r=!0):this._shouldClearSelection(t,e)&&this.discardActiveObject(t),this.selection&&(!e||!e.selectable&&!e.isEditing&&e!==this._activeObject)){const e=this.getScenePoint(t);this._groupSelector={x:e.x,y:e.y,deltaY:0,deltaX:0}}if(s=!!e&&e===this._activeObject,e){e.selectable&&\"down\"===e.activeOn&&this.setActiveObject(e,t);const i=e.findControl(this.getViewportPoint(t),ne(t));if(e===this._activeObject&&(i||!n)){this._setupCurrentTransform(t,e,s);const r=i?i.control:void 0,n=this.getScenePoint(t),o=r&&r.getMouseDownHandler(t,e,r);o&&o.call(r,t,this._currentTransform,n.x,n.y)}}r&&(this._objectsToRender=void 0),this._handleEvent(t,\"down\",{alreadySelected:s}),r&&this.requestRenderAll()}_resetTransformEventData(){this._targetInfo=this._viewportPoint=this._scenePoint=void 0}_cacheTransformEventData(t){this._resetTransformEventData(),this._viewportPoint=this.getViewportPoint(t),this._scenePoint=fe(this._viewportPoint,void 0,this.viewportTransform),this._targetInfo=this.findTarget(t),this._currentTransform&&(this._targetInfo.target=this._currentTransform.target)}__onMouseMove(t){if(this._isClick=!1,this._handleEvent(t,\"move:before\"),this.isDrawingMode)return void this._onMouseMoveInDrawingMode(t);if(!this._isMainEvent(t))return;const e=this._groupSelector;if(e){const s=this.getScenePoint(t);e.deltaX=s.x-e.x,e.deltaY=s.y-e.y,this.renderTop()}else if(this._currentTransform)this._transformObject(t);else{const{target:e}=this.findTarget(t);this._setCursorFromEvent(t,e),this._fireOverOutEvents(t,e)}this.textEditingManager.onMouseMove(t),this._handleEvent(t,\"move\")}_fireOverOutEvents(t,e){const{_hoveredTarget:s,_hoveredTargets:i}=this,{subTargets:r}=this.findTarget(t),n=Math.max(i.length,r.length);this.fireSyntheticInOutEvents(\"mouse\",{e:t,target:e,oldTarget:s,fireCanvas:!0});for(let o=0;o<n;o++)r[o]===e||i[o]&&i[o]===s||this.fireSyntheticInOutEvents(\"mouse\",{e:t,target:r[o],oldTarget:i[o]});this._hoveredTarget=e,this._hoveredTargets=r}_fireEnterLeaveEvents(t,e,s){const i=this._draggedoverTarget,r=this._hoveredTargets,{subTargets:n}=this.findTarget(t),o=Math.max(r.length,n.length);this.fireSyntheticInOutEvents(\"drag\",{...s,target:e,oldTarget:i,fireCanvas:!0});for(let t=0;t<o;t++)this.fireSyntheticInOutEvents(\"drag\",{...s,target:n[t],oldTarget:r[t]});this._draggedoverTarget=e}fireSyntheticInOutEvents(t,e){let{target:s,oldTarget:i,fireCanvas:r,e:n,...o}=e;const{targetIn:a,targetOut:h,canvasIn:l,canvasOut:c}=Dn[t],u=i!==s;if(i&&u){const t={...o,e:n,target:i,nextTarget:s,...Tn(this,n)};r&&this.fire(c,t),i.fire(h,t)}if(s&&u){const t={...o,e:n,target:s,previousTarget:i,...Tn(this,n)};r&&this.fire(l,t),s.fire(a,t)}}_transformObject(t){const e=this.getScenePoint(t),s=this._currentTransform,i=s.target,r=i.group?fe(e,void 0,i.group.calcTransformMatrix()):e;s.shiftKey=t.shiftKey,s.altKey=!!this.centeredKey&&t[this.centeredKey],this._performTransformAction(t,s,r),s.actionPerformed&&this.requestRenderAll()}_performTransformAction(t,e,s){const{action:i,actionHandler:r,target:n}=e,o=!!r&&r(t,e,s.x,s.y);o&&n.setCoords(),\"drag\"===i&&o&&(e.target.isMoving=!0,this.setCursor(e.target.moveCursor||this.moveCursor)),e.actionPerformed=e.actionPerformed||o}_setCursorFromEvent(t,e){if(!e)return void this.setCursor(this.defaultCursor);let s=e.hoverCursor||this.hoverCursor;const i=Nt(this._activeObject)?this._activeObject:null,r=(!i||e.group!==i)&&e.findControl(this.getViewportPoint(t));if(r){const{control:s,coord:i}=r;this.setCursor(s.cursorStyleHandler(t,s,e,i))}else{if(e.subTargetCheck){const{subTargets:e}=this.findTarget(t);e.concat().reverse().forEach(t=>{s=t.hoverCursor||s})}this.setCursor(s)}}handleMultiSelection(t,e){const s=this._activeObject,i=Nt(s);if(s&&this._isSelectionKeyPressed(t)&&this.selection&&e&&e.selectable&&(s!==e||i)&&(i||!e.isDescendantOf(s)&&!s.isDescendantOf(e))&&!e.onSelect({e:t})&&!s.getActiveControl()){if(i){const i=s.getObjects();let r=[];if(e===s){const s=this.getScenePoint(t);let n=this.searchPossibleTargets(i,s);if(n.target?(e=n.target,r=n.subTargets):(n=this.searchPossibleTargets(this._objects,s),e=n.target,r=n.subTargets),!e||!e.selectable)return!1}e.group===s?(s.remove(e),this._hoveredTarget=e,this._hoveredTargets=r,1===s.size()&&this._setActiveObject(s.item(0),t)):(s.multiSelectAdd(e),this._hoveredTarget=s,this._hoveredTargets=r),this._fireSelectionEvents(i,t)}else{s.isEditing&&s.exitEditing();const i=new(tt.getClass(\"ActiveSelection\"))([],{canvas:this});i.multiSelectAdd(s,e),this._hoveredTarget=i,this._setActiveObject(i,t),this._fireSelectionEvents([s],t)}return!0}return!1}handleSelection(t){if(!this.selection||!this._groupSelector)return!1;const{x:e,y:s,deltaX:i,deltaY:r}=this._groupSelector,n=new ot(e,s),o=n.add(new ot(i,r)),a=n.min(o),h=n.max(o).subtract(a),l=this.collectObjects({left:a.x,top:a.y,width:h.x,height:h.y},{includeIntersecting:!this.selectionFullyContained}),c=n.eq(o)?l[0]?[l[0]]:[]:l.length>1?l.filter(e=>!e.onSelect({e:t})).reverse():l;if(1===c.length)this.setActiveObject(c[0],t);else if(c.length>1){const e=tt.getClass(\"ActiveSelection\");this.setActiveObject(new e(c,{canvas:this}),t)}return this._groupSelector=null,!0}toCanvasElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1?arguments[1]:void 0;const{upper:s}=this.elements;s.ctx=void 0;const i=super.toCanvasElement(t,e);return s.ctx=s.el.getContext(\"2d\"),i}clear(){this.textEditingManager.clear(),super.clear()}destroy(){this.removeListeners(),this.textEditingManager.dispose(),super.destroy()}}const En={x1:0,y1:0,x2:0,y2:0},Pn={...En,r1:0,r2:0},An=(t,e)=>isNaN(t)&&\"number\"==typeof e?e:t;function jn(t){return t&&/%$/.test(t)&&Number.isFinite(parseFloat(t))}function Fn(t,e){const s=\"number\"==typeof t?t:\"string\"==typeof t?parseFloat(t)/(jn(t)?100:1):NaN;return bs(0,An(s,e),1)}const Ln=/\\s*;\\s*/,In=/\\s*:\\s*/;function Rn(t,e){let s,i;const r=t.getAttribute(\"style\");if(r){const t=r.split(Ln);\"\"===t[t.length-1]&&t.pop();for(let e=t.length;e--;){const[r,n]=t[e].split(In).map(t=>t.trim());\"stop-color\"===r?s=n:\"stop-opacity\"===r&&(i=n)}}s=s||t.getAttribute(\"stop-color\")||\"rgb(0,0,0)\",i=An(parseFloat(i||t.getAttribute(\"stop-opacity\")||\"\"),1);const n=new ze(s);return n.setAlpha(n.getAlpha()*i*e),{offset:Fn(t.getAttribute(\"offset\"),0),color:n.toRgba()}}function Bn(t,e){const s=[],i=t.getElementsByTagName(\"stop\"),r=Fn(e,1);for(let t=i.length;t--;)s.push(Rn(i[t],r));return s}function $n(t){return\"linearGradient\"===t.nodeName||\"LINEARGRADIENT\"===t.nodeName?\"linear\":\"radial\"}function Xn(t){return\"userSpaceOnUse\"===t.getAttribute(\"gradientUnits\")?\"pixels\":\"percentage\"}function Yn(t,e){return t.getAttribute(e)}function Wn(t,e){return function(t,e){let s,{width:i,height:r,gradientUnits:n}=e;return Object.entries(t).reduce((t,e)=>{let[o,a]=e;if(\"Infinity\"===a)s=1;else if(\"-Infinity\"===a)s=0;else{const t=\"string\"==typeof a;s=t?parseFloat(a):a,t&&jn(a)&&(s*=.01,\"pixels\"===n&&(\"x1\"!==o&&\"x2\"!==o&&\"r2\"!==o||(s*=i),\"y1\"!==o&&\"y2\"!==o||(s*=r)))}return t[o]=s,t},{})}(\"linear\"===$n(t)?function(t){return{x1:Yn(t,\"x1\")||0,y1:Yn(t,\"y1\")||0,x2:Yn(t,\"x2\")||\"100%\",y2:Yn(t,\"y2\")||0}}(t):function(t){return{x1:Yn(t,\"fx\")||Yn(t,\"cx\")||\"50%\",y1:Yn(t,\"fy\")||Yn(t,\"cy\")||\"50%\",r1:0,x2:Yn(t,\"cx\")||\"50%\",y2:Yn(t,\"cy\")||\"50%\",r2:Yn(t,\"r\")||\"50%\"}}(t),{...e,gradientUnits:Xn(t)})}class Vn{constructor(t){const{type:e=\"linear\",gradientUnits:s=\"pixels\",coords:i={},colorStops:r=[],offsetX:n=0,offsetY:o=0,gradientTransform:a,id:h}=t||{};Object.assign(this,{type:e,gradientUnits:s,coords:{...\"radial\"===e?Pn:En,...i},colorStops:r,offsetX:n,offsetY:o,gradientTransform:a,id:h?`${h}_${ft()}`:ft()})}addColorStop(t){for(const e in t)this.colorStops.push({offset:parseFloat(e),color:t[e]});return this}toObject(t){return{...Xt(this,t),type:this.type,coords:{...this.coords},colorStops:this.colorStops.map(t=>({...t})),offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?[...this.gradientTransform]:void 0}}toSVG(t){let{additionalTransform:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=[],i=this.gradientTransform?this.gradientTransform.concat():b.concat(),r=\"pixels\"===this.gradientUnits?\"userSpaceOnUse\":\"objectBoundingBox\",n=this.colorStops.map(t=>({...t})).sort((t,e)=>t.offset-e.offset);let o=-this.offsetX,a=-this.offsetY;var h;\"objectBoundingBox\"===r?(o/=t.width,a/=t.height):(o+=t.width/2,a+=t.height/2),(h=t)&&\"function\"==typeof h._renderPathCommands&&\"percentage\"!==this.gradientUnits&&(o-=t.pathOffset.x,a-=t.pathOffset.y),i[4]-=o,i[5]-=a;const l=[`id=\"SVGID_${this.id}\"`,`gradientUnits=\"${r}\"`,`gradientTransform=\"${e?e+\" \":\"\"}${Vt(i)}\"`,\"\"].join(\" \");if(\"linear\"===this.type){const{x1:t,y1:e,x2:i,y2:r}=this.coords;s.push(\"<linearGradient \",l,' x1=\"',t,'\" y1=\"',e,'\" x2=\"',i,'\" y2=\"',r,'\">\\n')}else if(\"radial\"===this.type){const{x1:t,y1:e,x2:i,y2:r,r1:o,r2:a}=this.coords,h=o>a;s.push(\"<radialGradient \",l,' cx=\"',h?t:i,'\" cy=\"',h?e:r,'\" r=\"',h?o:a,'\" fx=\"',h?i:t,'\" fy=\"',h?r:e,'\">\\n'),h&&(n.reverse(),n.forEach(t=>{t.offset=1-t.offset}));const c=Math.min(o,a);if(c>0){const t=c/Math.max(o,a);n.forEach(e=>{e.offset+=t*(1-e.offset)})}}return n.forEach(t=>{let{color:e,offset:i}=t;s.push(`<stop offset=\"${100*i}%\" style=\"stop-color:${e};\"/>\\n`)}),s.push(\"linear\"===this.type?\"</linearGradient>\":\"</radialGradient>\",\"\\n\"),s.join(\"\")}toLive(t){const{x1:e,y1:s,x2:i,y2:r,r1:n,r2:o}=this.coords,a=\"linear\"===this.type?t.createLinearGradient(e,s,i,r):t.createRadialGradient(e,s,n,i,r,o);return this.colorStops.forEach(t=>{let{color:e,offset:s}=t;a.addColorStop(s,e)}),a}static async fromObject(t){const{colorStops:e,gradientTransform:s}=t;return new this({...t,colorStops:e?e.map(t=>({...t})):void 0,gradientTransform:s?[...s]:void 0})}static fromElement(t,e,s){const i=Xn(t),r=e._findCenterFromElement();return new this({id:t.getAttribute(\"id\")||void 0,type:$n(t),coords:Wn(t,{width:s.viewBoxWidth||s.width,height:s.viewBoxHeight||s.height}),colorStops:Bn(t,s.opacity),gradientUnits:i,gradientTransform:hr(t.getAttribute(\"gradientTransform\")||\"\"),...\"pixels\"===i?{offsetX:e.width/2-r.x,offsetY:e.height/2-r.y}:{offsetX:0,offsetY:0}})}}t(Vn,\"type\",\"Gradient\"),tt.setClass(Vn,\"gradient\"),tt.setClass(Vn,\"linear\"),tt.setClass(Vn,\"radial\");class Gn{get type(){return\"pattern\"}set type(t){i(\"warn\",\"Setting type has no effect\",t)}constructor(e){t(this,\"repeat\",\"repeat\"),t(this,\"offsetX\",0),t(this,\"offsetY\",0),t(this,\"crossOrigin\",\"\"),this.id=ft(),Object.assign(this,e)}isImageSource(){return!!this.source&&\"string\"==typeof this.source.src}isCanvasSource(){return!!this.source&&!!this.source.toDataURL}sourceToString(){return this.isImageSource()?this.source.src:this.isCanvasSource()?this.source.toDataURL():\"\"}toLive(t){return this.source&&(!this.isImageSource()||this.source.complete&&0!==this.source.naturalWidth&&0!==this.source.naturalHeight)?t.createPattern(this.source,this.repeat):null}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const{repeat:e,crossOrigin:i}=this;return{...Xt(this,t),type:\"pattern\",source:this.sourceToString(),repeat:e,crossOrigin:i,offsetX:Wt(this.offsetX,s.NUM_FRACTION_DIGITS),offsetY:Wt(this.offsetY,s.NUM_FRACTION_DIGITS),patternTransform:this.patternTransform?[...this.patternTransform]:null}}toSVG(t){let{width:e,height:s}=t;const{source:i,repeat:r,id:n}=this,o=An(this.offsetX/e,0),a=An(this.offsetY/s,0);return[`<pattern id=\"SVGID_${n}\" x=\"${o}\" y=\"${a}\" width=\"${\"repeat-y\"===r||\"no-repeat\"===r?1+Math.abs(o||0):An(i.width/e,0)}\" height=\"${\"repeat-x\"===r||\"no-repeat\"===r?1+Math.abs(a||0):An(i.height/s,0)}\">`,`<image x=\"0\" y=\"0\" width=\"${i.width}\" height=\"${i.height}\" xlink:href=\"${this.sourceToString()}\"></image>`,\"</pattern>\",\"\"].join(\"\\n\")}static async fromObject(t,e){let{type:s,source:i,patternTransform:r,...n}=t;const o=await Rt(i,{...e,crossOrigin:n.crossOrigin});return new this({...n,patternTransform:r&&r.slice(0),source:o})}}t(Gn,\"type\",\"Pattern\"),tt.setClass(Gn),tt.setClass(Gn,\"pattern\");class zn{constructor(e){t(this,\"color\",\"rgb(0, 0, 0)\"),t(this,\"width\",1),t(this,\"shadow\",null),t(this,\"strokeLineCap\",\"round\"),t(this,\"strokeLineJoin\",\"round\"),t(this,\"strokeMiterLimit\",10),t(this,\"strokeDashArray\",null),t(this,\"limitedToCanvasSize\",!1),this.canvas=e}_setBrushStyles(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])}_saveAndTransform(t){const e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])}needsFullRender(){return new ze(this.color).getAlpha()<1||!!this.shadow}_setShadow(){if(!this.shadow||!this.canvas)return;const t=this.canvas,e=this.shadow,s=t.contextTop,i=t.getZoom()*t.getRetinaScaling();s.shadowColor=e.color,s.shadowBlur=e.blur*i,s.shadowOffsetX=e.offsetX*i,s.shadowOffsetY=e.offsetY*i}_resetShadow(){const t=this.canvas.contextTop;t.shadowColor=\"\",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0}_isOutSideCanvas(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}class Hn extends ki{constructor(t){let{path:e,left:s,top:i,...r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,Hn.ownDefaults),this.setOptions(r),this._setPath(t||[],!0),\"number\"==typeof s&&this.set(O,s),\"number\"==typeof i&&this.set(k,i)}_setPath(t,e){this.path=Rr(Array.isArray(t)?t:tn(t)),this.setBoundingBox(e)}_findCenterFromElement(){const t=this._calcBoundsFromPath();return new ot(t.left+t.width/2,t.top+t.height/2)}_renderPathCommands(t){const e=-this.pathOffset.x,s=-this.pathOffset.y;t.beginPath();for(const i of this.path)switch(i[0]){case\"L\":t.lineTo(i[1]+e,i[2]+s);break;case\"M\":t.moveTo(i[1]+e,i[2]+s);break;case\"C\":t.bezierCurveTo(i[1]+e,i[2]+s,i[3]+e,i[4]+s,i[5]+e,i[6]+s);break;case\"Q\":t.quadraticCurveTo(i[1]+e,i[2]+s,i[3]+e,i[4]+s);break;case\"Z\":t.closePath()}}_render(t){this._renderPathCommands(t),this._renderPaintInOrder(t)}toString(){return`#<Path (${this.complexity()}): { \"top\": ${this.top}, \"left\": ${this.left} }>`}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{...super.toObject(t),path:this.path.map(t=>t.slice())}}toDatalessObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e=this.toObject(t);return this.sourcePath&&(delete e.path,e.sourcePath=this.sourcePath),e}_toSVG(){return[\"<path \",\"COMMON_PARTS\",`d=\"${sn(this.path,s.NUM_FRACTION_DIGITS)}\" stroke-linecap=\"round\" />\\n`]}_getOffsetTransform(){const t=s.NUM_FRACTION_DIGITS;return` translate(${Wt(-this.pathOffset.x,t)}, ${Wt(-this.pathOffset.y,t)})`}toClipPathSVG(t){const e=this._getOffsetTransform();return\"\\t\"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})}toSVG(t){const e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})}complexity(){return this.path.length}setDimensions(){this.setBoundingBox()}setBoundingBox(t){const{width:e,height:s,pathOffset:i}=this._calcDimensions();this.set({width:e,height:s,pathOffset:i}),t&&this.setPositionByOrigin(i,T,T)}_calcBoundsFromPath(){const t=[];let e=0,s=0,i=0,r=0;for(const n of this.path)switch(n[0]){case\"L\":i=n[1],r=n[2],t.push({x:e,y:s},{x:i,y:r});break;case\"M\":i=n[1],r=n[2],e=i,s=r;break;case\"C\":t.push(...Lr(i,r,n[1],n[2],n[3],n[4],n[5],n[6])),i=n[5],r=n[6];break;case\"Q\":t.push(...Lr(i,r,n[1],n[2],n[1],n[2],n[3],n[4])),i=n[3],r=n[4];break;case\"Z\":i=e,r=s}return ae(t)}_calcDimensions(){const t=this._calcBoundsFromPath();return{...t,pathOffset:new ot(t.left+t.width/2,t.top+t.height/2)}}static fromObject(t){return this._fromObject(t,{extraParam:\"path\"})}static async fromElement(t,e,s){const{d:i,...r}=gr(t,this.ATTRIBUTE_NAMES,s);return new this(i,{...r,...e,left:void 0,top:void 0})}}t(Hn,\"type\",\"Path\"),t(Hn,\"cacheProperties\",[...ws,\"path\",\"fillRule\"]),t(Hn,\"ATTRIBUTE_NAMES\",[...Gi,\"d\"]),tt.setClass(Hn),tt.setSVGClass(Hn);class Nn extends zn{constructor(e){super(e),t(this,\"decimate\",.4),t(this,\"drawStraightLine\",!1),t(this,\"straightLineKey\",\"shiftKey\"),this._points=[],this._hasStraightLine=!1}needsFullRender(){return super.needsFullRender()||this._hasStraightLine}static drawSegment(t,e,s){const i=e.midPointFrom(s);return t.quadraticCurveTo(e.x,e.y,i.x,i.y),i}onMouseDown(t,e){let{e:s}=e;this.canvas._isMainEvent(s)&&(this.drawStraightLine=!!this.straightLineKey&&s[this.straightLineKey],this._prepareForDrawing(t),this._addPoint(t),this._render())}onMouseMove(t,e){let{e:s}=e;if(this.canvas._isMainEvent(s)&&(this.drawStraightLine=!!this.straightLineKey&&s[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._addPoint(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{const t=this._points,e=t.length,s=this.canvas.contextTop;this._saveAndTransform(s),this.oldEnd&&(s.beginPath(),s.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=Nn.drawSegment(s,t[e-2],t[e-1]),s.stroke(),s.restore()}}onMouseUp(t){let{e:e}=t;return!this.canvas._isMainEvent(e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)}_prepareForDrawing(t){this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)}_addPoint(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1]))&&(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),!0)}_reset(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1}_render(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.canvas.contextTop,e=this._points[0],s=this._points[1];if(this._saveAndTransform(t),t.beginPath(),2===this._points.length&&e.x===s.x&&e.y===s.y){const t=this.width/1e3;e.x-=t,s.x+=t}t.moveTo(e.x,e.y);for(let i=1;i<this._points.length;i++)Nn.drawSegment(t,e,s),e=this._points[i],s=this._points[i+1];t.lineTo(e.x,e.y),t.stroke(),t.restore()}convertPointsToSVGPath(t){const e=this.width/1e3;return en(t,e)}createPath(t){const e=new Hn(t,{fill:null,stroke:this.color,strokeWidth:this.width,strokeLineCap:this.strokeLineCap,strokeMiterLimit:this.strokeMiterLimit,strokeLineJoin:this.strokeLineJoin,strokeDashArray:this.strokeDashArray});return this.shadow&&(this.shadow.affectStroke=!0,e.shadow=new Cs(this.shadow)),e}decimatePoints(t,e){if(t.length<=2)return t;let s,i=t[0];const r=this.canvas.getZoom(),n=Math.pow(e/r,2),o=t.length-1,a=[i];for(let e=1;e<o-1;e++)s=Math.pow(i.x-t[e].x,2)+Math.pow(i.y-t[e].y,2),s>=n&&(i=t[e],a.push(i));return a.push(t[o]),a}_finalizeAndAddPath(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));const t=this.convertPointsToSVGPath(this._points);if(function(t){return\"M 0 0 Q 0 0 0 0 L 0 0\"===sn(t)}(t))return void this.canvas.requestRenderAll();const e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire(\"before:path:created\",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire(\"path:created\",{path:e})}}const Un=[\"radius\",\"startAngle\",\"endAngle\",\"counterClockwise\"];class qn extends ki{static getDefaults(){return{...super.getDefaults(),...qn.ownDefaults}}constructor(t){super(),Object.assign(this,qn.ownDefaults),this.setOptions(t)}_set(t,e){return super._set(t,e),\"radius\"===t&&this.setRadius(e),this}_render(t){t.beginPath(),t.arc(0,0,this.radius,xt(this.startAngle),xt(this.endAngle),this.counterClockwise),this._renderPaintInOrder(t)}getRadiusX(){return this.get(\"radius\")*this.get(W)}getRadiusY(){return this.get(\"radius\")*this.get(V)}setRadius(t){this.radius=t,this.set({width:2*t,height:2*t})}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return super.toObject([...Un,...t])}_toSVG(){const t=(this.endAngle-this.startAngle)%360;if(0===t)return[\"<circle \",\"COMMON_PARTS\",'cx=\"0\" cy=\"0\" ','r=\"',`${this.radius}`,'\" />\\n'];{const{radius:e}=this,s=xt(this.startAngle),i=xt(this.endAngle),r=rt(s)*e,n=nt(s)*e,o=rt(i)*e,a=nt(i)*e;return[`<path d=\"M ${r} ${n} A ${e} ${e} 0 ${t>180?1:0} ${this.counterClockwise?0:1} ${o} ${a}\" `,\"COMMON_PARTS\",\" />\\n\"]}}static async fromElement(t,e,s){const{left:i=0,top:r=0,radius:n=0,...o}=gr(t,this.ATTRIBUTE_NAMES,s);return new this({...o,radius:n,left:i-n,top:r-n})}static fromObject(t){return super._fromObject(t)}}t(qn,\"type\",\"Circle\"),t(qn,\"cacheProperties\",[...ws,...Un]),t(qn,\"ownDefaults\",{radius:0,startAngle:0,endAngle:360,counterClockwise:!1}),t(qn,\"ATTRIBUTE_NAMES\",[\"cx\",\"cy\",\"r\",...Gi]),tt.setClass(qn),tt.setSVGClass(qn);class Kn extends zn{constructor(e){super(e),t(this,\"width\",10),this.points=[]}drawDot(t){const e=this.addPoint(t),s=this.canvas.contextTop;this._saveAndTransform(s),this.dot(s,e),s.restore()}dot(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()}onMouseDown(t){this.points=[],this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)}_render(){const t=this.canvas.contextTop,e=this.points;this._saveAndTransform(t);for(let s=0;s<e.length;s++)this.dot(t,e[s]);t.restore()}onMouseMove(t){!0===this.limitedToCanvasSize&&this._isOutSideCanvas(t)||(this.needsFullRender()?(this.canvas.clearContext(this.canvas.contextTop),this.addPoint(t),this._render()):this.drawDot(t))}onMouseUp(){const t=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;const e=[];for(let t=0;t<this.points.length;t++){const s=this.points[t],i=new qn({radius:s.radius,left:s.x,top:s.y,originX:T,originY:T,fill:s.fill});this.shadow&&(i.shadow=new Cs(this.shadow)),e.push(i)}const s=new Or(e,{canvas:this.canvas});this.canvas.fire(\"before:path:created\",{path:s}),this.canvas.add(s),this.canvas.fire(\"path:created\",{path:s}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=t,this.canvas.requestRenderAll()}addPoint(t){let{x:e,y:s}=t;const i={x:e,y:s,radius:rn(Math.max(0,this.width-20),this.width+20)/2,fill:new ze(this.color).setAlpha(rn(0,100)/100).toRgba()};return this.points.push(i),i}}class Jn extends zn{constructor(e){super(e),t(this,\"width\",10),t(this,\"density\",20),t(this,\"dotWidth\",1),t(this,\"dotWidthVariance\",1),t(this,\"randomOpacity\",!1),t(this,\"optimizeOverlapping\",!0),this.sprayChunks=[],this.sprayChunk=[]}onMouseDown(t){this.sprayChunks=[],this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.addSprayChunk(t),this.renderChunck(this.sprayChunk)}onMouseMove(t){!0===this.limitedToCanvasSize&&this._isOutSideCanvas(t)||(this.addSprayChunk(t),this.renderChunck(this.sprayChunk))}onMouseUp(){const t=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;const e=[];for(let t=0;t<this.sprayChunks.length;t++){const s=this.sprayChunks[t];for(let t=0;t<s.length;t++){const i=s[t],r=new pr({width:i.width,height:i.width,left:i.x+1,top:i.y+1,originX:T,originY:T,fill:this.color});e.push(r)}}const s=new Or(this.optimizeOverlapping?function(t){const e={},s=[];for(let i,r=0;r<t.length;r++)i=`${t[r].left}${t[r].top}`,e[i]||(e[i]=!0,s.push(t[r]));return s}(e):e,{objectCaching:!0,subTargetCheck:!1,interactive:!1});this.shadow&&s.set(\"shadow\",new Cs(this.shadow)),this.canvas.fire(\"before:path:created\",{path:s}),this.canvas.add(s),this.canvas.fire(\"path:created\",{path:s}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=t,this.canvas.requestRenderAll()}renderChunck(t){const e=this.canvas.contextTop;e.fillStyle=this.color,this._saveAndTransform(e);for(let s=0;s<t.length;s++){const i=t[s];e.globalAlpha=i.opacity,e.fillRect(i.x,i.y,i.width,i.width)}e.restore()}_render(){const t=this.canvas.contextTop;t.fillStyle=this.color,this._saveAndTransform(t);for(let t=0;t<this.sprayChunks.length;t++)this.renderChunck(this.sprayChunks[t]);t.restore()}addSprayChunk(t){this.sprayChunk=[];const e=this.width/2;for(let s=0;s<this.density;s++)this.sprayChunk.push({x:rn(t.x-e,t.x+e),y:rn(t.y-e,t.y+e),width:this.dotWidthVariance?rn(Math.max(1,this.dotWidth-this.dotWidthVariance),this.dotWidth+this.dotWidthVariance):this.dotWidth,opacity:this.randomOpacity?rn(0,100)/100:1});this.sprayChunks.push(this.sprayChunk)}}class Qn extends Nn{constructor(t){super(t)}getPatternSrc(){const t=pt(),e=t.getContext(\"2d\");return t.width=t.height=25,e&&(e.fillStyle=this.color,e.beginPath(),e.arc(10,10,10,0,2*Math.PI,!1),e.closePath(),e.fill()),t}getPattern(t){return t.createPattern(this.source||this.getPatternSrc(),\"repeat\")}_setBrushStyles(t){super._setBrushStyles(t);const e=this.getPattern(t);e&&(t.strokeStyle=e)}createPath(t){const e=super.createPath(t),s=e._getLeftTopCoords().scalarAdd(e.strokeWidth/2);return e.stroke=new Gn({source:this.source||this.getPatternSrc(),offsetX:-s.x,offsetY:-s.y}),e}}const Zn=[\"x1\",\"x2\",\"y1\",\"y2\"];class to extends ki{constructor(){let[t,e,s,i]=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[0,0,0,0],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,to.ownDefaults),this.setOptions(r),this.x1=t,this.x2=s,this.y1=e,this.y2=i,this._setWidthHeight();const{left:n,top:o}=r;\"number\"==typeof n&&this.set(O,n),\"number\"==typeof o&&this.set(k,o)}_setWidthHeight(){const{x1:t,y1:e,x2:s,y2:i}=this;this.width=Math.abs(s-t),this.height=Math.abs(i-e);const{left:r,top:n,width:o,height:a}=ae([{x:t,y:e},{x:s,y:i}]),h=new ot(r+o/2,n+a/2);this.setPositionByOrigin(h,T,T)}_set(t,e){return super._set(t,e),Zn.includes(t)&&this._setWidthHeight(),this}_render(t){t.beginPath();const e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;const s=t.strokeStyle;var i;Gt(this.stroke)?t.strokeStyle=this.stroke.toLive(t):t.strokeStyle=null!==(i=this.stroke)&&void 0!==i?i:t.fillStyle;this.stroke&&this._renderStroke(t),t.strokeStyle=s}_findCenterFromElement(){return new ot((this.x1+this.x2)/2,(this.y1+this.y2)/2)}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{...super.toObject(t),...this.calcLinePoints()}}_getNonTransformedDimensions(){const t=super._getNonTransformedDimensions();return\"butt\"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t}calcLinePoints(){const{x1:t,x2:e,y1:s,y2:i,width:r,height:n}=this,o=t<=e?-1:1,a=s<=i?-1:1;return{x1:o*r/2,x2:o*-r/2,y1:a*n/2,y2:a*-n/2}}_toSVG(){const{x1:t,x2:e,y1:s,y2:i}=this.calcLinePoints();return[\"<line \",\"COMMON_PARTS\",`x1=\"${t}\" y1=\"${s}\" x2=\"${e}\" y2=\"${i}\" />\\n`]}static async fromElement(t,e,s){const{x1:i=0,y1:r=0,x2:n=0,y2:o=0,...a}=gr(t,this.ATTRIBUTE_NAMES,s);return new this([i,r,n,o],a)}static fromObject(t){let{x1:e,y1:s,x2:i,y2:r,...n}=t;return this._fromObject({...n,points:[e,s,i,r]},{extraParam:\"points\"})}}t(to,\"type\",\"Line\"),t(to,\"cacheProperties\",[...ws,...Zn]),t(to,\"ATTRIBUTE_NAMES\",Gi.concat(Zn)),tt.setClass(to),tt.setSVGClass(to);class eo extends ki{static getDefaults(){return{...super.getDefaults(),...eo.ownDefaults}}constructor(t){super(),Object.assign(this,eo.ownDefaults),this.setOptions(t)}_render(t){const e=this.width/2,s=this.height/2;t.beginPath(),t.moveTo(-e,s),t.lineTo(0,-s),t.lineTo(e,s),t.closePath(),this._renderPaintInOrder(t)}_toSVG(){const t=this.width/2,e=this.height/2;return[\"<polygon \",\"COMMON_PARTS\",'points=\"',`${-t} ${e},0 ${-e},${t} ${e}`,'\" />']}}t(eo,\"type\",\"Triangle\"),t(eo,\"ownDefaults\",{width:100,height:100}),tt.setClass(eo),tt.setSVGClass(eo);const so=[\"rx\",\"ry\"];class io extends ki{static getDefaults(){return{...super.getDefaults(),...io.ownDefaults}}constructor(t){super(),Object.assign(this,io.ownDefaults),this.setOptions(t)}_set(t,e){switch(super._set(t,e),t){case\"rx\":this.rx=e,this.set(\"width\",2*e);break;case\"ry\":this.ry=e,this.set(\"height\",2*e)}return this}getRx(){return this.get(\"rx\")*this.get(W)}getRy(){return this.get(\"ry\")*this.get(V)}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return super.toObject([...so,...t])}_toSVG(){return[\"<ellipse \",\"COMMON_PARTS\",`cx=\"0\" cy=\"0\" rx=\"${this.rx}\" ry=\"${this.ry}\" />\\n`]}_render(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,x,!1),t.restore(),this._renderPaintInOrder(t)}static async fromElement(t,e,s){const i=gr(t,this.ATTRIBUTE_NAMES,s);return i.left=(i.left||0)-i.rx,i.top=(i.top||0)-i.ry,new this(i)}}t(io,\"type\",\"Ellipse\"),t(io,\"cacheProperties\",[...ws,...so]),t(io,\"ownDefaults\",{rx:0,ry:0}),t(io,\"ATTRIBUTE_NAMES\",[...Gi,\"cx\",\"cy\",\"rx\",\"ry\"]),tt.setClass(io),tt.setSVGClass(io);const ro={exactBoundingBox:!1};class no extends ki{static getDefaults(){return{...super.getDefaults(),...no.ownDefaults}}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),t(this,\"strokeDiff\",void 0),Object.assign(this,no.ownDefaults),this.setOptions(s),this.points=e;const{left:i,top:r}=s;this.initialized=!0,this.setBoundingBox(!0),\"number\"==typeof i&&this.set(O,i),\"number\"==typeof r&&this.set(k,r)}isOpen(){return!0}_projectStrokeOnPoints(t){return ji(this.points,t,this.isOpen())}_calcDimensions(t){t={scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:this.strokeMiterLimit,strokeUniform:this.strokeUniform,strokeWidth:this.strokeWidth,...t||{}};const e=this.exactBoundingBox?this._projectStrokeOnPoints(t).map(t=>t.projectedPoint):this.points;if(0===e.length)return{left:0,top:0,width:0,height:0,pathOffset:new ot,strokeOffset:new ot,strokeDiff:new ot};const s=ae(e),i=Lt({...t,scaleX:1,scaleY:1}),r=ae(this.points.map(t=>St(t,i,!0))),n=new ot(this.scaleX,this.scaleY);let o=s.left+s.width/2,a=s.top+s.height/2;return this.exactBoundingBox&&(o-=a*Math.tan(xt(this.skewX)),a-=o*Math.tan(xt(this.skewY))),{...s,pathOffset:new ot(o,a),strokeOffset:new ot(r.left,r.top).subtract(new ot(s.left,s.top)).multiply(n),strokeDiff:new ot(s.width,s.height).subtract(new ot(r.width,r.height)).multiply(n)}}_findCenterFromElement(){const t=ae(this.points);return new ot(t.left+t.width/2,t.top+t.height/2)}setDimensions(){this.setBoundingBox()}setBoundingBox(t){const{left:e,top:s,width:i,height:r,pathOffset:n,strokeOffset:o,strokeDiff:a}=this._calcDimensions();this.set({width:i,height:r,pathOffset:n,strokeOffset:o,strokeDiff:a}),t&&this.setPositionByOrigin(new ot(e+i/2,s+r/2),T,T)}isStrokeAccountedForInDimensions(){return this.exactBoundingBox}_getNonTransformedDimensions(){return this.exactBoundingBox?new ot(this.width,this.height):super._getNonTransformedDimensions()}_getTransformedDimensions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.exactBoundingBox){let n;if(Object.keys(t).some(t=>this.strokeUniform||this.constructor.layoutProperties.includes(t))){var e,s;const{width:i,height:r}=this._calcDimensions(t);n=new ot(null!==(e=t.width)&&void 0!==e?e:i,null!==(s=t.height)&&void 0!==s?s:r)}else{var i,r;n=new ot(null!==(i=t.width)&&void 0!==i?i:this.width,null!==(r=t.height)&&void 0!==r?r:this.height)}return n.multiply(new ot(t.scaleX||this.scaleX,t.scaleY||this.scaleY))}return super._getTransformedDimensions(t)}_set(t,e){const s=this.initialized&&this[t]!==e,i=super._set(t,e);return this.exactBoundingBox&&s&&((t===W||t===V)&&this.strokeUniform&&this.constructor.layoutProperties.includes(\"strokeUniform\")||this.constructor.layoutProperties.includes(t))&&this.setDimensions(),i}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{...super.toObject(t),points:this.points.map(t=>{let{x:e,y:s}=t;return{x:e,y:s}})}}_toSVG(){const t=[],e=this.pathOffset.x,i=this.pathOffset.y,r=s.NUM_FRACTION_DIGITS;for(let s=0,n=this.points.length;s<n;s++)t.push(Wt(this.points[s].x-e,r),\",\",Wt(this.points[s].y-i,r),\" \");return[`<${this.constructor.type.toLowerCase()} `,\"COMMON_PARTS\",`points=\"${t.join(\"\")}\" />\\n`]}_render(t){const e=this.points.length,s=this.pathOffset.x,i=this.pathOffset.y;if(e&&!isNaN(this.points[e-1].y)){t.beginPath(),t.moveTo(this.points[0].x-s,this.points[0].y-i);for(let r=0;r<e;r++){const e=this.points[r];t.lineTo(e.x-s,e.y-i)}!this.isOpen()&&t.closePath(),this._renderPaintInOrder(t)}}complexity(){return this.points.length}static async fromElement(t,e,s){const i=function(t){if(!t)return[];const e=t.replace(/,/g,\" \").trim().split(/\\s+/),s=[];for(let t=0;t<e.length;t+=2)s.push({x:parseFloat(e[t]),y:parseFloat(e[t+1])});return s}(t.getAttribute(\"points\")),{left:r,top:n,...o}=gr(t,this.ATTRIBUTE_NAMES,s);return new this(i,{...o,...e})}static fromObject(t){return this._fromObject(t,{extraParam:\"points\"})}}t(no,\"ownDefaults\",ro),t(no,\"type\",\"Polyline\"),t(no,\"layoutProperties\",[G,z,\"strokeLineCap\",\"strokeLineJoin\",\"strokeMiterLimit\",\"strokeWidth\",\"strokeUniform\",\"points\"]),t(no,\"cacheProperties\",[...ws,\"points\"]),t(no,\"ATTRIBUTE_NAMES\",[...Gi]),tt.setClass(no),tt.setSVGClass(no);class oo extends no{isOpen(){return!1}}t(oo,\"ownDefaults\",ro),t(oo,\"type\",\"Polygon\"),tt.setClass(oo),tt.setSVGClass(oo);class ao extends ki{isEmptyStyles(t){if(!this.styles)return!0;if(void 0!==t&&!this.styles[t])return!0;const e=void 0===t?this.styles:{line:this.styles[t]};for(const t in e)for(const s in e[t])for(const i in e[t][s])return!1;return!0}styleHas(t,e){if(!this.styles)return!1;if(void 0!==e&&!this.styles[e])return!1;const s=void 0===e?this.styles:{0:this.styles[e]};for(const e in s)for(const i in s[e])if(void 0!==s[e][i][t])return!0;return!1}cleanStyle(t){if(!this.styles)return!1;const e=this.styles;let s,i,r=0,n=!0,o=0;for(const o in e){s=0;for(const a in e[o]){const h=e[o][a]||{};r++,void 0!==h[t]?(i?h[t]!==i&&(n=!1):i=h[t],h[t]===this[t]&&delete h[t]):n=!1,0!==Object.keys(h).length?s++:delete e[o][a]}0===s&&delete e[o]}for(let t=0;t<this._textLines.length;t++)o+=this._textLines[t].length;n&&r===o&&(this[t]=i,this.removeStyle(t))}removeStyle(t){if(!this.styles)return;const e=this.styles;let s,i,r;for(i in e){for(r in s=e[i],s)delete s[r][t],0===Object.keys(s[r]).length&&delete s[r];0===Object.keys(s).length&&delete e[i]}}_extendStyles(t,e){const{lineIndex:s,charIndex:i}=this.get2DCursorLocation(t);this._getLineStyle(s)||this._setLineStyle(s);const r=Yt({...this._getStyleDeclaration(s,i),...e},t=>void 0!==t);this._setStyleDeclaration(s,i,r)}getSelectionStyles(t,e,s){const i=[];for(let r=t;r<(e||t);r++)i.push(this.getStyleAtPosition(r,s));return i}getStyleAtPosition(t,e){const{lineIndex:s,charIndex:i}=this.get2DCursorLocation(t);return e?this.getCompleteStyleDeclaration(s,i):this._getStyleDeclaration(s,i)}setSelectionStyles(t,e,s){for(let i=e;i<(s||e);i++)this._extendStyles(i,t);this._forceClearCache=!0}_getStyleDeclaration(t,e){var s;const i=this.styles&&this.styles[t];return i&&null!==(s=i[e])&&void 0!==s?s:{}}getCompleteStyleDeclaration(t,e){return{...Xt(this,this.constructor._styleProperties),...this._getStyleDeclaration(t,e)}}_setStyleDeclaration(t,e,s){this.styles[t][e]=s}_deleteStyleDeclaration(t,e){delete this.styles[t][e]}_getLineStyle(t){return!!this.styles[t]}_setLineStyle(t){this.styles[t]={}}_deleteLineStyle(t){delete this.styles[t]}}t(ao,\"_styleProperties\",ss);const ho=/ +/g,lo=/\"/g;function co(t,e,i,r,n){return`\\t\\t${function(t,e){let{left:i,top:r,width:n,height:o}=e,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.NUM_FRACTION_DIGITS;const h=Ue(H,t,!1),[l,c,u,d]=[i,r,n,o].map(t=>Wt(t,a));return`<rect ${h} x=\"${l}\" y=\"${c}\" width=\"${u}\" height=\"${d}\"></rect>`}(t,{left:e,top:i,width:r,height:n})}\\n`}let uo;class go extends ao{static getDefaults(){return{...super.getDefaults(),...go.ownDefaults}}constructor(e,s){super(),t(this,\"__charBounds\",[]),Object.assign(this,go.ownDefaults),this.setOptions(s),this.styles||(this.styles={}),this.text=e,this.initialized=!0,this.path&&this.setPathInfo(),this.initDimensions(),this.setCoords()}setPathInfo(){const t=this.path;t&&(t.segmentsInfo=Ur(t.path))}_splitText(){const t=this._splitTextIntoLines(this.text);return this.textLines=t.lines,this._textLines=t.graphemeLines,this._unwrappedTextLines=t._unwrappedLines,this._text=t.graphemeText,t}initDimensions(){this._splitText(),this._clearCache(),this.dirty=!0,this.path?(this.width=this.path.width,this.height=this.path.height):(this.width=this.calcTextWidth()||this.cursorWidth||this.MIN_TEXT_WIDTH,this.height=this.calcTextHeight()),this.textAlign.includes(rs)&&this.enlargeSpaces()}enlargeSpaces(){let t,e,s,i,r,n,o;for(let a=0,h=this._textLines.length;a<h;a++)if((this.textAlign===rs||a!==h-1&&!this.isEndOfWrapping(a))&&(i=0,r=this._textLines[a],e=this.getLineWidth(a),e<this.width&&(o=this.textLines[a].match(this._reSpacesAndTabs)))){s=o.length,t=(this.width-e)/s;for(let e=0;e<=r.length;e++)n=this.__charBounds[a][e],this._reSpaceAndTab.test(r[e])?(n.width+=t,n.kernedWidth+=t,n.left+=i,i+=t):n.left+=i}}isEndOfWrapping(t){return t===this._textLines.length-1}missingNewlineOffset(t){return 1}get2DCursorLocation(t,e){const s=e?this._unwrappedTextLines:this._textLines;let i;for(i=0;i<s.length;i++){if(t<=s[i].length)return{lineIndex:i,charIndex:t};t-=s[i].length+this.missingNewlineOffset(i,e)}return{lineIndex:i-1,charIndex:s[i-1].length<t?s[i-1].length:t}}toString(){return`#<Text (${this.complexity()}): { \"text\": \"${this.text}\", \"fontFamily\": \"${this.fontFamily}\" }>`}_getCacheCanvasDimensions(){const t=super._getCacheCanvasDimensions(),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t}_render(t){const e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,\"underline\"),this._renderText(t),this._renderTextDecoration(t,\"overline\"),this._renderTextDecoration(t,\"linethrough\")}_renderText(t){this.paintFirst===N?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))}_setTextStyles(t,e,s){if(t.textBaseline=\"alphabetic\",this.path)switch(this.pathAlign){case T:t.textBaseline=\"middle\";break;case\"ascender\":t.textBaseline=k;break;case\"descender\":t.textBaseline=D}t.font=this._getFontDeclaration(e,s)}calcTextWidth(){let t=this.getLineWidth(0);for(let e=1,s=this._textLines.length;e<s;e++){const s=this.getLineWidth(e);s>t&&(t=s)}return t}_renderTextLine(t,e,s,i,r,n){this._renderChars(t,e,s,i,r,n)}_renderTextLinesBackground(t){if(!this.textBackgroundColor&&!this.styleHas(\"textBackgroundColor\"))return;const e=t.fillStyle,s=this._getLeftOffset();let i=this._getTopOffset();for(let e=0,r=this._textLines.length;e<r;e++){const r=this.getHeightOfLine(e);if(!this.textBackgroundColor&&!this.styleHas(\"textBackgroundColor\",e)){i+=r;continue}const n=this._textLines[e].length,o=this._getLineLeftOffset(e);let a,h,l=0,c=0,u=this.getValueOfPropertyAt(e,0,\"textBackgroundColor\");const d=this.getHeightOfLineImpl(e);for(let r=0;r<n;r++){const n=this.__charBounds[e][r];h=this.getValueOfPropertyAt(e,r,\"textBackgroundColor\"),this.path?(t.save(),t.translate(n.renderLeft,n.renderTop),t.rotate(n.angle),t.fillStyle=h,h&&t.fillRect(-n.width/2,-d*(1-this._fontSizeFraction),n.width,d),t.restore()):h!==u?(a=s+o+c,this.direction===K&&(a=this.width-a-l),t.fillStyle=u,u&&t.fillRect(a,i,l,d),c=n.left,l=n.width,u=h):l+=n.kernedWidth}h&&!this.path&&(a=s+o+c,this.direction===K&&(a=this.width-a-l),t.fillStyle=h,t.fillRect(a,i,l,d)),i+=r}t.fillStyle=e,this._removeShadow(t)}_measureChar(t,e,s,i){const r=p.getFontCache(e),n=this._getFontDeclaration(e),o=s?s+t:t,a=s&&n===this._getFontDeclaration(i),h=e.fontSize/this.CACHE_FONT_SIZE;let l,c,u,d;if(s&&r.has(s)&&(u=r.get(s)),r.has(t)&&(d=l=r.get(t)),a&&r.has(o)&&(c=r.get(o),d=c-u),void 0===l||void 0===u||void 0===c){const i=function(){if(!uo){const t=vt({width:0,height:0});uo=t.getContext(\"2d\")}return uo}();this._setTextStyles(i,e,!0),void 0===l&&(d=l=i.measureText(t).width,r.set(t,l)),void 0===u&&a&&s&&(u=i.measureText(s).width,r.set(s,u)),a&&void 0===c&&(c=i.measureText(o).width,r.set(o,c),d=c-u)}return{width:l*h,kernedWidth:d*h}}getHeightOfChar(t,e){return this.getValueOfPropertyAt(t,e,\"fontSize\")}measureLine(t){const e=this._measureLine(t);return 0!==this.charSpacing&&(e.width-=this._getWidthOfCharSpacing()),e.width<0&&(e.width=0),e}_measureLine(t){let e,s,i=0;const r=this.pathSide===M,n=this.path,o=this._textLines[t],a=o.length,h=new Array(a);this.__charBounds[t]=h;for(let r=0;r<a;r++){const n=o[r];s=this._getGraphemeBox(n,t,r,e),h[r]=s,i+=s.kernedWidth,e=n}if(h[a]={left:s?s.left+s.width:0,width:0,kernedWidth:0,height:this.fontSize,deltaY:0},n&&n.segmentsInfo){let t=0;const e=n.segmentsInfo[n.segmentsInfo.length-1].length;switch(this.textAlign){case O:t=r?e-i:0;break;case T:t=(e-i)/2;break;case M:t=r?0:e-i}t+=this.pathStartOffset*(r?-1:1);for(let i=r?a-1:0;r?i>=0:i<a;r?i--:i++)s=h[i],t>e?t%=e:t<0&&(t+=e),this._setGraphemeOnPath(t,s),t+=s.kernedWidth}return{width:i,numOfSpaces:0}}_setGraphemeOnPath(t,e){const s=t+e.kernedWidth/2,i=this.path,r=qr(i.path,s,i.segmentsInfo);e.renderLeft=r.x-i.pathOffset.x,e.renderTop=r.y-i.pathOffset.y,e.angle=r.angle+(this.pathSide===M?Math.PI:0)}_getGraphemeBox(t,e,s,i,r){const n=this.getCompleteStyleDeclaration(e,s),o=i?this.getCompleteStyleDeclaration(e,s-1):{},a=this._measureChar(t,n,i,o);let h,l=a.kernedWidth,c=a.width;0!==this.charSpacing&&(h=this._getWidthOfCharSpacing(),c+=h,l+=h);const u={width:c,left:0,height:n.fontSize,kernedWidth:l,deltaY:n.deltaY};if(s>0&&!r){const t=this.__charBounds[e][s-1];u.left=t.left+t.width+a.kernedWidth-a.width}return u}getHeightOfLineImpl(t){const e=this.__lineHeights;if(e[t])return e[t];let s=this.getHeightOfChar(t,0);for(let e=1,i=this._textLines[t].length;e<i;e++)s=Math.max(this.getHeightOfChar(t,e),s);return e[t]=s*this._fontSizeMult}getHeightOfLine(t){return this.getHeightOfLineImpl(t)*this.lineHeight}calcTextHeight(){let t=0;for(let e=0,s=this._textLines.length;e<s;e++)t+=e===s-1?this.getHeightOfLineImpl(e):this.getHeightOfLine(e);return t}_getLeftOffset(){return this.direction===q?-this.width/2:this.width/2}_getTopOffset(){return-this.height/2}_renderTextCommon(t,e){t.save();let s=0;const i=this._getLeftOffset(),r=this._getTopOffset();for(let n=0,o=this._textLines.length;n<o;n++)this._renderTextLine(e,t,this._textLines[n],i+this._getLineLeftOffset(n),r+s+this.getHeightOfLineImpl(n),n),s+=this.getHeightOfLine(n);t.restore()}_renderTextFill(t){(this.fill||this.styleHas(H))&&this._renderTextCommon(t,\"fillText\")}_renderTextStroke(t){(this.stroke&&0!==this.strokeWidth||!this.isEmptyStyles())&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this._setLineDash(t,this.strokeDashArray),t.beginPath(),this._renderTextCommon(t,\"strokeText\"),t.closePath(),t.restore())}_renderChars(t,e,s,i,r,n){const o=this.textAlign.includes(rs),a=this.path,h=!o&&0===this.charSpacing&&this.isEmptyStyles(n)&&!a,l=this.direction===q,c=this.direction===q?1:-1,u=e.direction;let d,g,f,p,m,v=\"\",y=0;if(e.save(),u!==this.direction&&(e.canvas.setAttribute(\"dir\",l?q:K),e.direction=l?q:K,e.textAlign=l?O:M),r-=this.getHeightOfLineImpl(n)*this._fontSizeFraction,h)return this._renderChar(t,e,n,0,s.join(\"\"),i,r),void e.restore();for(let h=0,l=s.length-1;h<=l;h++)p=h===l||this.charSpacing||a,v+=s[h],f=this.__charBounds[n][h],0===y?(i+=c*(f.kernedWidth-f.width),y+=f.width):y+=f.kernedWidth,o&&!p&&this._reSpaceAndTab.test(s[h])&&(p=!0),p||(d=d||this.getCompleteStyleDeclaration(n,h),g=this.getCompleteStyleDeclaration(n,h+1),p=Yi(d,g,!1)),p&&(a?(e.save(),e.translate(f.renderLeft,f.renderTop),e.rotate(f.angle),this._renderChar(t,e,n,h,v,-y/2,0),e.restore()):(m=i,this._renderChar(t,e,n,h,v,m,r)),v=\"\",d=g,i+=c*y,y=0);e.restore()}_applyPatternGradientTransformText(t){const e=this.width+this.strokeWidth,s=this.height+this.strokeWidth,i=vt({width:e,height:s}),r=i.getContext(\"2d\");return i.width=e,i.height=s,r.beginPath(),r.moveTo(0,0),r.lineTo(e,0),r.lineTo(e,s),r.lineTo(0,s),r.closePath(),r.translate(e/2,s/2),r.fillStyle=t.toLive(r),this._applyPatternGradientTransform(r,t),r.fill(),r.createPattern(i,\"no-repeat\")}handleFiller(t,e,s){let i,r;return Gt(s)?\"percentage\"===s.gradientUnits||s.gradientTransform||s.patternTransform?(i=-this.width/2,r=-this.height/2,t.translate(i,r),t[e]=this._applyPatternGradientTransformText(s),{offsetX:i,offsetY:r}):(t[e]=s.toLive(t),this._applyPatternGradientTransform(t,s)):(t[e]=s,{offsetX:0,offsetY:0})}_setStrokeStyles(t,e){let{stroke:s,strokeWidth:i}=e;return t.lineWidth=i,t.lineCap=this.strokeLineCap,t.lineDashOffset=this.strokeDashOffset,t.lineJoin=this.strokeLineJoin,t.miterLimit=this.strokeMiterLimit,this.handleFiller(t,\"strokeStyle\",s)}_setFillStyles(t,e){let{fill:s}=e;return this.handleFiller(t,\"fillStyle\",s)}_renderChar(t,e,s,i,r,n,o){const a=this._getStyleDeclaration(s,i),h=this.getCompleteStyleDeclaration(s,i),l=\"fillText\"===t&&h.fill,c=\"strokeText\"===t&&h.stroke&&h.strokeWidth;if(c||l){if(e.save(),e.font=this._getFontDeclaration(h),a.textBackgroundColor&&this._removeShadow(e),a.deltaY&&(o+=a.deltaY),l){const t=this._setFillStyles(e,h);e.fillText(r,n-t.offsetX,o-t.offsetY)}if(c){const t=this._setStrokeStyles(e,h);e.strokeText(r,n-t.offsetX,o-t.offsetY)}e.restore()}}setSuperscript(t,e){this._setScript(t,e,this.superscript)}setSubscript(t,e){this._setScript(t,e,this.subscript)}_setScript(t,e,s){const i=this.get2DCursorLocation(t,!0),r=this.getValueOfPropertyAt(i.lineIndex,i.charIndex,\"fontSize\"),n=this.getValueOfPropertyAt(i.lineIndex,i.charIndex,\"deltaY\"),o={fontSize:r*s.size,deltaY:n+r*s.baseline};this.setSelectionStyles(o,t,e)}_getLineLeftOffset(t){const e=this.getLineWidth(t),s=this.width-e,i=this.textAlign,r=this.direction,n=this.isEndOfWrapping(t);let o=0;return i===rs||i===as&&!n||i===os&&!n||i===ns&&!n?0:(i===T&&(o=s/2),i===M&&(o=s),i===as&&(o=s/2),i===os&&(o=s),r===K&&(i===M||i===os?o=0:i===O||i===ns?o=-s:i!==T&&i!==as||(o=-s/2)),o)}_clearCache(){this._forceClearCache=!1,this.__lineWidths=[],this.__lineHeights=[],this.__charBounds=[]}getLineWidth(t){if(void 0!==this.__lineWidths[t])return this.__lineWidths[t];const{width:e}=this.measureLine(t);return this.__lineWidths[t]=e,e}_getWidthOfCharSpacing(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0}getValueOfPropertyAt(t,e,s){var i;return null!==(i=this._getStyleDeclaration(t,e)[s])&&void 0!==i?i:this[s]}_renderTextDecoration(t,e){if(!this[e]&&!this.styleHas(e))return;let s=this._getTopOffset();const i=this._getLeftOffset(),r=this.path,n=this._getWidthOfCharSpacing(),o=\"linethrough\"===e?.5:\"overline\"===e?1:0,a=this.offsets[e];for(let h=0,l=this._textLines.length;h<l;h++){const l=this.getHeightOfLine(h);if(!this[e]&&!this.styleHas(e,h)){s+=l;continue}const c=this._textLines[h],u=l/this.lineHeight,d=this._getLineLeftOffset(h);let g=0,f=0,p=this.getValueOfPropertyAt(h,0,e),m=this.getValueOfPropertyAt(h,0,H),v=this.getValueOfPropertyAt(h,0,Je),y=p,_=m,x=v;const C=s+u*(1-this._fontSizeFraction);let b=this.getHeightOfChar(h,0),S=this.getValueOfPropertyAt(h,0,\"deltaY\");for(let s=0,n=c.length;s<n;s++){const n=this.__charBounds[h][s];y=this.getValueOfPropertyAt(h,s,e),_=this.getValueOfPropertyAt(h,s,H),x=this.getValueOfPropertyAt(h,s,Je);const l=this.getHeightOfChar(h,s),c=this.getValueOfPropertyAt(h,s,\"deltaY\");if(r&&y&&_){const e=this.fontSize*x/1e3;t.save(),t.fillStyle=m,t.translate(n.renderLeft,n.renderTop),t.rotate(n.angle),t.fillRect(-n.kernedWidth/2,a*l+c-o*e,n.kernedWidth,e),t.restore()}else if((y!==p||_!==m||l!==b||x!==v||c!==S)&&f>0){const e=this.fontSize*v/1e3;let s=i+d+g;this.direction===K&&(s=this.width-s-f),p&&m&&v&&(t.fillStyle=m,t.fillRect(s,C+a*b+S-o*e,f,e)),g=n.left,f=n.width,p=y,v=x,m=_,b=l,S=c}else f+=n.kernedWidth}let w=i+d+g;this.direction===K&&(w=this.width-w-f),t.fillStyle=_;const T=this.fontSize*x/1e3;y&&_&&x&&t.fillRect(w,C+a*b+S-o*T,f-n,T),s+=l}this._removeShadow(t)}_getFontDeclaration(){let{fontFamily:t=this.fontFamily,fontStyle:e=this.fontStyle,fontWeight:s=this.fontWeight,fontSize:i=this.fontSize}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;const n=t.includes(\"'\")||t.includes('\"')||t.includes(\",\")||go.genericFonts.includes(t.toLowerCase())?t:`\"${t}\"`;return[e,s,`${r?this.CACHE_FONT_SIZE:i}px`,n].join(\" \")}render(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._forceClearCache&&this.initDimensions(),super.render(t)))}graphemeSplit(t){return Ri(t)}_splitTextIntoLines(t){const e=t.split(this._reNewline),s=new Array(e.length),i=[\"\\n\"];let r=[];for(let t=0;t<e.length;t++)s[t]=this.graphemeSplit(e[t]),r=r.concat(s[t],i);return r.pop(),{_unwrappedLines:s,lines:e,graphemeText:r,graphemeLines:s}}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{...super.toObject([...es,...t]),styles:Wi(this.styles,this.text),...this.path?{path:this.path.toObject()}:{}}}set(t,e){const{textLayoutProperties:s}=this.constructor;super.set(t,e);let i=!1,r=!1;if(\"object\"==typeof t)for(const e in t)\"path\"===e&&this.setPathInfo(),i=i||s.includes(e),r=r||\"path\"===e;else i=s.includes(t),r=\"path\"===t;return r&&this.setPathInfo(),i&&this.initialized&&(this.initDimensions(),this.setCoords()),this}complexity(){return 1}static async fromElement(t,e,s){const i=gr(t,go.ATTRIBUTE_NAMES,s),{textAnchor:r=O,textDecoration:n=\"\",dx:o=0,dy:a=0,top:h=0,left:l=0,fontSize:c=S,strokeWidth:u=1,...d}={...e,...i},g=new this(Be(t.textContent||\"\").trim(),{left:l+o,top:h+a,underline:n.includes(\"underline\"),overline:n.includes(\"overline\"),linethrough:n.includes(\"line-through\"),strokeWidth:0,fontSize:c,...d}),f=g.getScaledHeight()/g.height,p=((g.height+g.strokeWidth)*g.lineHeight-g.height)*f,m=g.getScaledHeight()+p;let v=0;return r===T&&(v=g.getScaledWidth()/2),r===M&&(v=g.getScaledWidth()),g.set({left:g.left-v,top:g.top-(m-g.fontSize*(.07+g._fontSizeFraction))/g.lineHeight,strokeWidth:u}),g}static fromObject(t){return this._fromObject({...t,styles:Vi(t.styles||{},t.text)},{extraParam:\"text\"})}}t(go,\"textLayoutProperties\",ts),t(go,\"cacheProperties\",[...ws,...es]),t(go,\"ownDefaults\",is),t(go,\"type\",\"Text\"),t(go,\"genericFonts\",[\"serif\",\"sans-serif\",\"monospace\",\"cursive\",\"fantasy\",\"system-ui\",\"ui-serif\",\"ui-sans-serif\",\"ui-monospace\",\"ui-rounded\",\"math\",\"emoji\",\"fangsong\"]),t(go,\"ATTRIBUTE_NAMES\",Gi.concat(\"x\",\"y\",\"dx\",\"dy\",\"font-family\",\"font-style\",\"font-weight\",\"font-size\",\"letter-spacing\",\"text-decoration\",\"text-anchor\")),Oi(go,[class extends qe{_toSVG(){const t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)}toSVG(t){const e=this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0}),s=this.path;return s?e+s._createBaseSVGMarkup(s._toSVG(),{reviver:t,withShadow:!0,additionalTransform:Vt(this.calcOwnMatrix())}):e}_getSVGLeftTopOffsets(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}}_wrapSVGTextAndBg(t){let{textBgRects:e,textSpans:s}=t;const i=this.getSvgTextDecoration(this);return[e.join(\"\"),'\\t\\t<text xml:space=\"preserve\" ',`font-family=\"${this.fontFamily.replace(lo,\"'\")}\" `,`font-size=\"${this.fontSize}\" `,this.fontStyle?`font-style=\"${this.fontStyle}\" `:\"\",this.fontWeight?`font-weight=\"${this.fontWeight}\" `:\"\",i?`text-decoration=\"${i}\" `:\"\",\"rtl\"===this.direction?`direction=\"${this.direction}\" `:\"\",'style=\"',this.getSvgStyles(!0),'\"',this.addPaintOrder(),\" >\",s.join(\"\"),\"</text>\\n\"]}_getSVGTextAndBg(t,e){const s=[],i=[];let r,n=t;this.backgroundColor&&i.push(...co(this.backgroundColor,-this.width/2,-this.height/2,this.width,this.height));for(let t=0,o=this._textLines.length;t<o;t++)r=this._getLineLeftOffset(t),\"rtl\"===this.direction&&(r+=this.width),(this.textBackgroundColor||this.styleHas(\"textBackgroundColor\",t))&&this._setSVGTextLineBg(i,t,e+r,n),this._setSVGTextLineText(s,t,e+r,n),n+=this.getHeightOfLine(t);return{textSpans:s,textBgRects:i}}_createTextCharSpan(t,e,i,r,n){const o=s.NUM_FRACTION_DIGITS,a=this.getSvgSpanStyles(e,t!==t.trim()||!!t.match(ho)),h=a?`style=\"${a}\"`:\"\",l=e.deltaY,c=l?` dy=\"${Wt(l,o)}\" `:\"\",{angle:u,renderLeft:d,renderTop:g,width:f}=n;let p=\"\";if(void 0!==d){const t=f/2;u&&(p=` rotate=\"${Wt(Ct(u),o)}\"`);const e=Et({angle:Ct(u)});e[4]=d,e[5]=g;const s=new ot(-t,0).transform(e);i=s.x,r=s.y}return`<tspan x=\"${Wt(i,o)}\" y=\"${Wt(r,o)}\" ${c}${p}${h}>${Li(t)}</tspan>`}_setSVGTextLineText(t,e,s,i){const r=this.getHeightOfLine(e),n=this.textAlign.includes(rs),o=this._textLines[e];let a,h,l,c,u,d=\"\",g=0;i+=r*(1-this._fontSizeFraction)/this.lineHeight;for(let r=0,f=o.length-1;r<=f;r++)u=r===f||this.charSpacing||this.path,d+=o[r],l=this.__charBounds[e][r],0===g?(s+=l.kernedWidth-l.width,g+=l.width):g+=l.kernedWidth,n&&!u&&this._reSpaceAndTab.test(o[r])&&(u=!0),u||(a=a||this.getCompleteStyleDeclaration(e,r),h=this.getCompleteStyleDeclaration(e,r+1),u=Yi(a,h,!0)),u&&(c=this._getStyleDeclaration(e,r),t.push(this._createTextCharSpan(d,c,s,i,l)),d=\"\",a=h,\"rtl\"===this.direction?s-=g:s+=g,g=0)}_setSVGTextLineBg(t,e,s,i){const r=this._textLines[e],n=this.getHeightOfLine(e)/this.lineHeight;let o,a=0,h=0,l=this.getValueOfPropertyAt(e,0,\"textBackgroundColor\");for(let c=0;c<r.length;c++){const{left:r,width:u,kernedWidth:d}=this.__charBounds[e][c];o=this.getValueOfPropertyAt(e,c,\"textBackgroundColor\"),o!==l?(l&&t.push(...co(l,s+h,i,a,n)),h=r,a=u,l=o):a+=d}o&&t.push(...co(l,s+h,i,a,n))}getSvgStyles(t){return`${super.getSvgStyles(t)} text-decoration-thickness: ${Wt(this.textDecorationThickness*this.getObjectScaling().y/10,s.NUM_FRACTION_DIGITS)}%; white-space: pre;`}getSvgSpanStyles(t,e){const{fontFamily:i,strokeWidth:r,stroke:n,fill:o,fontSize:a,fontStyle:h,fontWeight:l,textDecorationThickness:c,linethrough:u,overline:d,underline:g}=t,f=this.getSvgTextDecoration({underline:null!=g?g:this.underline,overline:null!=d?d:this.overline,linethrough:null!=u?u:this.linethrough}),p=c||this.textDecorationThickness;return[n?Ue(N,n):\"\",r?`stroke-width: ${r}; `:\"\",i?`font-family: ${i.includes(\"'\")||i.includes('\"')?i:`'${i}'`}; `:\"\",a?`font-size: ${a}px; `:\"\",h?`font-style: ${h}; `:\"\",l?`font-weight: ${l}; `:\"\",f?`text-decoration: ${f}; text-decoration-thickness: ${Wt(p*this.getObjectScaling().y/10,s.NUM_FRACTION_DIGITS)}%; `:\"\",o?Ue(H,o):\"\",e?\"white-space: pre; \":\"\"].join(\"\")}getSvgTextDecoration(t){return[\"overline\",\"underline\",\"line-through\"].filter(e=>t[e.replace(\"-\",\"\")]).join(\" \")}}]),tt.setClass(go),tt.setSVGClass(go);class fo{constructor(e){t(this,\"target\",void 0),t(this,\"__mouseDownInPlace\",!1),t(this,\"__dragStartFired\",!1),t(this,\"__isDraggingOver\",!1),t(this,\"__dragStartSelection\",void 0),t(this,\"__dragImageDisposer\",void 0),t(this,\"_dispose\",void 0),this.target=e;const s=[this.target.on(\"dragenter\",this.dragEnterHandler.bind(this)),this.target.on(\"dragover\",this.dragOverHandler.bind(this)),this.target.on(\"dragleave\",this.dragLeaveHandler.bind(this)),this.target.on(\"dragend\",this.dragEndHandler.bind(this)),this.target.on(\"drop\",this.dropHandler.bind(this))];this._dispose=()=>{s.forEach(t=>t()),this._dispose=void 0}}isPointerOverSelection(t){const e=this.target,s=e.getSelectionStartFromPointer(t);return e.isEditing&&s>=e.selectionStart&&s<=e.selectionEnd&&e.selectionStart<e.selectionEnd}start(t){return this.__mouseDownInPlace=this.isPointerOverSelection(t)}isActive(){return this.__mouseDownInPlace}end(t){const e=this.isActive();return e&&!this.__dragStartFired&&(this.target.setCursorByClick(t),this.target.initDelayedCursor(!0)),this.__mouseDownInPlace=!1,this.__dragStartFired=!1,this.__isDraggingOver=!1,e}getDragStartSelection(){return this.__dragStartSelection}setDragImage(t,e){var s;let{selectionStart:i,selectionEnd:r}=e;const n=this.target,o=n.canvas,a=new ot(n.flipX?-1:1,n.flipY?-1:1),h=n._getCursorBoundaries(i),l=new ot(h.left+h.leftOffset,h.top+h.topOffset).multiply(a).transform(n.calcTransformMatrix()),c=o.getScenePoint(t).subtract(l),u=n.getCanvasRetinaScaling(),d=n.getBoundingRect(),g=l.subtract(new ot(d.left,d.top)),f=o.viewportTransform,p=g.add(c).transform(f,!0),m=n.backgroundColor,v=Fi(n.styles);n.backgroundColor=\"\";const y={stroke:\"transparent\",fill:\"transparent\",textBackgroundColor:\"transparent\"};n.setSelectionStyles(y,0,i),n.setSelectionStyles(y,r,n.text.length),n.dirty=!0;const _=n.toCanvasElement({enableRetinaScaling:o.enableRetinaScaling,viewportTransform:!0});n.backgroundColor=m,n.styles=v,n.dirty=!0,an(_,{position:\"fixed\",left:-_.width+\"px\",border:E,width:_.width/u+\"px\",height:_.height/u+\"px\"}),this.__dragImageDisposer&&this.__dragImageDisposer(),this.__dragImageDisposer=()=>{_.remove()},qt(t.target||this.target.hiddenTextarea).body.appendChild(_),null===(s=t.dataTransfer)||void 0===s||s.setDragImage(_,p.x,p.y)}onDragStart(t){this.__dragStartFired=!0;const e=this.target,s=this.isActive();if(s&&t.dataTransfer){const s=this.__dragStartSelection={selectionStart:e.selectionStart,selectionEnd:e.selectionEnd},i=e._text.slice(s.selectionStart,s.selectionEnd).join(\"\"),r={text:e.text,value:i,...s};t.dataTransfer.setData(\"text/plain\",i),t.dataTransfer.setData(\"application/fabric\",JSON.stringify({value:i,styles:e.getSelectionStyles(s.selectionStart,s.selectionEnd,!0)})),t.dataTransfer.effectAllowed=\"copyMove\",this.setDragImage(t,r)}return e.abortCursorAnimation(),s}canDrop(t){if(this.target.editable&&!this.target.getActiveControl()&&!t.defaultPrevented){if(this.isActive()&&this.__dragStartSelection){const e=this.target.getSelectionStartFromPointer(t),s=this.__dragStartSelection;return e<s.selectionStart||e>s.selectionEnd}return!0}return!1}targetCanDrop(t){return this.target.canDrop(t)}dragEnterHandler(t){let{e:e}=t;const s=this.targetCanDrop(e);!this.__isDraggingOver&&s&&(this.__isDraggingOver=!0)}dragOverHandler(t){const{e:e}=t,s=this.targetCanDrop(e);!this.__isDraggingOver&&s?this.__isDraggingOver=!0:this.__isDraggingOver&&!s&&(this.__isDraggingOver=!1),this.__isDraggingOver&&(e.preventDefault(),t.canDrop=!0,t.dropTarget=this.target)}dragLeaveHandler(){(this.__isDraggingOver||this.isActive())&&(this.__isDraggingOver=!1)}dropHandler(t){var e;const{e:s}=t,i=s.defaultPrevented;this.__isDraggingOver=!1,s.preventDefault();let r=null===(e=s.dataTransfer)||void 0===e?void 0:e.getData(\"text/plain\");if(r&&!i){const e=this.target,i=e.canvas;let n=e.getSelectionStartFromPointer(s);const{styles:o}=s.dataTransfer.types.includes(\"application/fabric\")?JSON.parse(s.dataTransfer.getData(\"application/fabric\")):{},a=r[Math.max(0,r.length-1)],h=0;if(this.__dragStartSelection){const t=this.__dragStartSelection.selectionStart,s=this.__dragStartSelection.selectionEnd;n>t&&n<=s?n=t:n>s&&(n-=s-t),e.removeChars(t,s),delete this.__dragStartSelection}e._reNewline.test(a)&&(e._reNewline.test(e._text[n])||n===e._text.length)&&(r=r.trimEnd()),t.didDrop=!0,t.dropTarget=e,e.insertChars(r,o,n),i.setActiveObject(e),e.enterEditing(s),e.selectionStart=Math.min(n+h,e._text.length),e.selectionEnd=Math.min(e.selectionStart+r.length,e._text.length),e.hiddenTextarea.value=e.text,e._updateTextarea(),e.hiddenTextarea.focus(),e.fire(X,{index:n+h,action:\"drop\"}),i.fire(\"text:changed\",{target:e}),i.contextTopDirty=!0,i.requestRenderAll()}}dragEndHandler(t){let{e:e}=t;if(this.isActive()&&this.__dragStartFired&&this.__dragStartSelection){var s;const t=this.target,i=this.target.canvas,{selectionStart:r,selectionEnd:n}=this.__dragStartSelection,o=(null===(s=e.dataTransfer)||void 0===s?void 0:s.dropEffect)||E;o===E?(t.selectionStart=r,t.selectionEnd=n,t._updateTextarea(),t.hiddenTextarea.focus()):(t.clearContextTop(),\"move\"===o&&(t.removeChars(r,n),t.selectionStart=t.selectionEnd=r,t.hiddenTextarea&&(t.hiddenTextarea.value=t.text),t._updateTextarea(),t.fire(X,{index:r,action:\"dragend\"}),i.fire(\"text:changed\",{target:t}),i.requestRenderAll()),t.exitEditing())}this.__dragImageDisposer&&this.__dragImageDisposer(),delete this.__dragImageDisposer,delete this.__dragStartSelection,this.__isDraggingOver=!1}dispose(){this._dispose&&this._dispose()}}const po=/[ \\n\\.,;!\\?\\-]/;class mo extends go{constructor(){super(...arguments),t(this,\"_currentCursorOpacity\",1)}initBehavior(){this._tick=this._tick.bind(this),this._onTickComplete=this._onTickComplete.bind(this),this.updateSelectionOnMouseMove=this.updateSelectionOnMouseMove.bind(this)}onDeselect(t){return this.isEditing&&this.exitEditing(),this.selected=!1,super.onDeselect(t)}_animateCursor(t){let{toValue:e,duration:s,delay:i,onComplete:r}=t;return $s({startValue:this._currentCursorOpacity,endValue:e,duration:s,delay:i,onComplete:r,abort:()=>!this.canvas||this.selectionStart!==this.selectionEnd,onChange:t=>{this._currentCursorOpacity=t,this.renderCursorOrSelection()}})}_tick(t){this._currentTickState=this._animateCursor({toValue:0,duration:this.cursorDuration/2,delay:Math.max(t||0,100),onComplete:this._onTickComplete})}_onTickComplete(){var t;null===(t=this._currentTickCompleteState)||void 0===t||t.abort(),this._currentTickCompleteState=this._animateCursor({toValue:1,duration:this.cursorDuration,onComplete:this._tick})}initDelayedCursor(t){this.abortCursorAnimation(),this._tick(t?0:this.cursorDelay)}abortCursorAnimation(){let t=!1;[this._currentTickState,this._currentTickCompleteState].forEach(e=>{e&&!e.isDone()&&(t=!0,e.abort())}),this._currentCursorOpacity=1,t&&this.clearContextTop()}restartCursorIfNeeded(){[this._currentTickState,this._currentTickCompleteState].some(t=>!t||t.isDone())&&this.initDelayedCursor()}selectAll(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this}cmdAll(){this.selectAll(),this.renderCursorOrSelection()}getSelectedText(){return this._text.slice(this.selectionStart,this.selectionEnd).join(\"\")}findWordBoundaryLeft(t){let e=0,s=t-1;if(this._reSpace.test(this._text[s]))for(;this._reSpace.test(this._text[s]);)e++,s--;for(;/\\S/.test(this._text[s])&&s>-1;)e++,s--;return t-e}findWordBoundaryRight(t){let e=0,s=t;if(this._reSpace.test(this._text[s]))for(;this._reSpace.test(this._text[s]);)e++,s++;for(;/\\S/.test(this._text[s])&&s<this._text.length;)e++,s++;return t+e}findLineBoundaryLeft(t){let e=0,s=t-1;for(;!/\\n/.test(this._text[s])&&s>-1;)e++,s--;return t-e}findLineBoundaryRight(t){let e=0,s=t;for(;!/\\n/.test(this._text[s])&&s<this._text.length;)e++,s++;return t+e}searchWordBoundary(t,e){const s=this._text;let i=t>0&&this._reSpace.test(s[t])&&(-1===e||!P.test(s[t-1]))?t-1:t,r=s[i];for(;i>0&&i<s.length&&!po.test(r);)i+=e,r=s[i];return-1===e&&po.test(r)&&i++,i}selectWord(t){t=null!=t?t:this.selectionStart;const e=this.searchWordBoundary(t,-1),s=Math.max(e,this.searchWordBoundary(t,1));this.selectionStart=e,this.selectionEnd=s,this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()}selectLine(t){t=null!=t?t:this.selectionStart;const e=this.findLineBoundaryLeft(t),s=this.findLineBoundaryRight(t);this.selectionStart=e,this.selectionEnd=s,this._fireSelectionChanged(),this._updateTextarea()}enterEditing(t){!this.isEditing&&this.editable&&(this.enterEditingImpl(),this.fire(\"editing:entered\",t?{e:t}:void 0),this._fireSelectionChanged(),this.canvas&&(this.canvas.fire(\"text:editing:entered\",{target:this,e:t}),this.canvas.requestRenderAll()))}enterEditingImpl(){this.canvas&&(this.canvas.calcOffset(),this.canvas.textEditingManager.exitTextEditing()),this.isEditing=!0,this.initHiddenTextarea(),this.hiddenTextarea.focus(),this.hiddenTextarea.value=this.text,this._updateTextarea(),this._saveEditingProps(),this._setEditingProps(),this._textBeforeEdit=this.text,this._tick()}updateSelectionOnMouseMove(t){if(this.getActiveControl())return;const e=this.hiddenTextarea;qt(e).activeElement!==e&&e.focus();const s=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;(s===this.__selectionStartOnMouseDown&&i!==r||i!==s&&r!==s)&&(s>this.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=s):(this.selectionStart=s,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}_setEditingProps(){this.hoverCursor=\"text\",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor=\"text\"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0}fromStringToGraphemeSelection(t,e,s){const i=s.slice(0,t),r=this.graphemeSplit(i).length;if(t===e)return{selectionStart:r,selectionEnd:r};const n=s.slice(t,e);return{selectionStart:r,selectionEnd:r+this.graphemeSplit(n).length}}fromGraphemeToStringSelection(t,e,s){const i=s.slice(0,t).join(\"\").length;if(t===e)return{selectionStart:i,selectionEnd:i};return{selectionStart:i,selectionEnd:i+s.slice(t,e).join(\"\").length}}_updateTextarea(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){const t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}}updateFromTextArea(){const{hiddenTextarea:t,direction:e,textAlign:s,inCompositionMode:i}=this;if(!t)return;const r=s!==rs?s.replace(\"justify-\",\"\"):e===q?O:M,n=this.getPositionByOrigin(r,\"top\");this.cursorOffsetCache={},this.text=t.value,this.set(\"dirty\",!0),this.initDimensions(),this.setPositionByOrigin(n,r,\"top\"),this.setCoords();const o=this.fromStringToGraphemeSelection(t.selectionStart,t.selectionEnd,t.value);this.selectionEnd=this.selectionStart=o.selectionEnd,i||(this.selectionStart=o.selectionStart),this.updateTextareaPosition()}updateTextareaPosition(){if(this.selectionStart===this.selectionEnd){const t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}}_calcTextareaPosition(){if(!this.canvas)return{left:\"1px\",top:\"1px\"};const t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),s=this.get2DCursorLocation(t),i=s.lineIndex,r=s.charIndex,n=this.getValueOfPropertyAt(i,r,\"fontSize\")*this.lineHeight,o=e.leftOffset,a=this.getCanvasRetinaScaling(),h=this.canvas.upperCanvasEl,l=h.width/a,c=h.height/a,u=l-n,d=c-n,g=new ot(e.left+o,e.top+e.topOffset+n).transform(this.calcTransformMatrix()).transform(this.canvas.viewportTransform).multiply(new ot(h.clientWidth/l,h.clientHeight/c));return g.x<0&&(g.x=0),g.x>u&&(g.x=u),g.y<0&&(g.y=0),g.y>d&&(g.y=d),g.x+=this.canvas._offset.left,g.y+=this.canvas._offset.top,{left:`${g.x}px`,top:`${g.y}px`,fontSize:`${n}px`,charHeight:n}}_saveEditingProps(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}}_restoreEditingProps(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor||this.canvas.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor||this.canvas.moveCursor),delete this._savedProps)}exitEditingImpl(){const t=this.hiddenTextarea;this.selected=!1,this.isEditing=!1,t&&(t.blur&&t.blur(),t.parentNode&&t.parentNode.removeChild(t)),this.hiddenTextarea=null,this.abortCursorAnimation(),this.selectionStart!==this.selectionEnd&&this.clearContextTop(),this.selectionEnd=this.selectionStart,this._restoreEditingProps(),this._forceClearCache&&(this.initDimensions(),this.setCoords())}exitEditing(){const t=this._textBeforeEdit!==this.text;return this.exitEditingImpl(),this.fire(\"editing:exited\"),t&&this.fire(U),this.canvas&&(this.canvas.fire(\"text:editing:exited\",{target:this}),t&&this.canvas.fire(\"object:modified\",{target:this})),this}_removeExtraneousStyles(){for(const t in this.styles)this._textLines[t]||delete this.styles[t]}removeStyleFromTo(t,e){const{lineIndex:s,charIndex:i}=this.get2DCursorLocation(t,!0),{lineIndex:r,charIndex:n}=this.get2DCursorLocation(e,!0);if(s!==r){if(this.styles[s])for(let t=i;t<this._unwrappedTextLines[s].length;t++)delete this.styles[s][t];if(this.styles[r])for(let t=n;t<this._unwrappedTextLines[r].length;t++){const e=this.styles[r][t];e&&(this.styles[s]||(this.styles[s]={}),this.styles[s][i+t-n]=e)}for(let t=s+1;t<=r;t++)delete this.styles[t];this.shiftLineStyles(r,s-r)}else if(this.styles[s]){const t=this.styles[s],e=n-i;for(let e=i;e<n;e++)delete t[e];for(const i in this.styles[s]){const s=parseInt(i,10);s>=n&&(t[s-e]=t[i],delete t[i])}}}shiftLineStyles(t,e){const s=Object.assign({},this.styles);for(const i in this.styles){const r=parseInt(i,10);r>t&&(this.styles[r+e]=s[r],s[r-e]||delete this.styles[r])}}insertNewlineStyleObject(t,e,s,i){const r={},n=this._unwrappedTextLines[t].length,o=n===e;let a=!1;s||(s=1),this.shiftLineStyles(t,s);const h=this.styles[t]?this.styles[t][0===e?e:e-1]:void 0;for(const s in this.styles[t]){const i=parseInt(s,10);i>=e&&(a=!0,r[i-e]=this.styles[t][s],o&&0===e||delete this.styles[t][s])}let l=!1;for(a&&!o&&(this.styles[t+s]=r,l=!0),(l||n>e)&&s--;s>0;)i&&i[s-1]?this.styles[t+s]={0:{...i[s-1]}}:h?this.styles[t+s]={0:{...h}}:delete this.styles[t+s],s--;this._forceClearCache=!0}insertCharStyleObject(t,e,s,i){this.styles||(this.styles={});const r=this.styles[t],n=r?{...r}:{};s||(s=1);for(const t in n){const i=parseInt(t,10);i>=e&&(r[i+s]=n[i],n[i-s]||delete r[i])}if(this._forceClearCache=!0,i){for(;s--;)Object.keys(i[s]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+s]={...i[s]});return}if(!r)return;const o=r[e?e-1:1];for(;o&&s--;)this.styles[t][e+s]={...o}}insertNewStyleBlock(t,e,s){const i=this.get2DCursorLocation(e,!0),r=[0];let n,o=0;for(let e=0;e<t.length;e++)\"\\n\"===t[e]?(o++,r[o]=0):r[o]++;for(r[0]>0&&(this.insertCharStyleObject(i.lineIndex,i.charIndex,r[0],s),s=s&&s.slice(r[0]+1)),o&&this.insertNewlineStyleObject(i.lineIndex,i.charIndex+r[0],o),n=1;n<o;n++)r[n]>0?this.insertCharStyleObject(i.lineIndex+n,0,r[n],s):s&&this.styles[i.lineIndex+n]&&s[0]&&(this.styles[i.lineIndex+n][0]=s[0]),s=s&&s.slice(r[n]+1);r[n]>0&&this.insertCharStyleObject(i.lineIndex+n,0,r[n],s)}removeChars(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t+1;this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(\"\"),this.set(\"dirty\",!0),this.initDimensions(),this.setCoords(),this._removeExtraneousStyles()}insertChars(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s;i>s&&this.removeStyleFromTo(s,i);const r=this.graphemeSplit(t);this.insertNewStyleBlock(r,s,e),this._text=[...this._text.slice(0,s),...r,...this._text.slice(i)],this.text=this._text.join(\"\"),this.set(\"dirty\",!0),this.initDimensions(),this.setCoords(),this._removeExtraneousStyles()}setSelectionStartEndWithShift(t,e,s){s<=t?(e===t?this._selectionDirection=O:this._selectionDirection===M&&(this._selectionDirection=O,this.selectionEnd=t),this.selectionStart=s):s>t&&s<e?this._selectionDirection===M?this.selectionEnd=s:this.selectionStart=s:(e===t?this._selectionDirection=M:this._selectionDirection===O&&(this._selectionDirection=M,this.selectionStart=e),this.selectionEnd=s)}}class vo extends mo{initHiddenTextarea(){const t=this.canvas&&qt(this.canvas.getElement())||d(),e=t.createElement(\"textarea\");Object.entries({autocapitalize:\"off\",autocorrect:\"off\",autocomplete:\"off\",spellcheck:\"false\",\"data-fabric\":\"textarea\",wrap:\"off\",name:\"fabricTextarea\"}).map(t=>{let[s,i]=t;return e.setAttribute(s,i)});const{top:s,left:i,fontSize:r}=this._calcTextareaPosition();e.style.cssText=`position: absolute; top: ${s}; left: ${i}; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: ${r};`,(this.hiddenTextareaContainer||t.body).appendChild(e),Object.entries({blur:\"blur\",keydown:\"onKeyDown\",keyup:\"onKeyUp\",input:\"onInput\",copy:\"copy\",cut:\"copy\",paste:\"paste\",compositionstart:\"onCompositionStart\",compositionupdate:\"onCompositionUpdate\",compositionend:\"onCompositionEnd\"}).map(t=>{let[s,i]=t;return e.addEventListener(s,this[i].bind(this))}),this.hiddenTextarea=e}blur(){this.abortCursorAnimation()}onKeyDown(t){if(!this.isEditing)return;const e=\"rtl\"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}onKeyUp(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())}onInput(t){const e=this.fromPaste,{value:i,selectionStart:r,selectionEnd:n}=this.hiddenTextarea;if(this.fromPaste=!1,t&&t.stopPropagation(),!this.isEditing)return;const o=()=>{this.updateFromTextArea(),this.fire(X),this.canvas&&(this.canvas.fire(\"text:changed\",{target:this}),this.canvas.requestRenderAll())};if(\"\"===this.hiddenTextarea.value)return this.styles={},void o();const a=this._splitTextIntoLines(i).graphemeText,h=this._text.length,l=a.length,c=this.selectionStart,d=this.selectionEnd,g=c!==d;let f,p,m,v,y=l-h;const _=this.fromStringToGraphemeSelection(r,n,i),x=c>_.selectionStart;g?(p=this._text.slice(c,d),y+=d-c):l<h&&(p=x?this._text.slice(d+y,d):this._text.slice(c,c-y));const C=a.slice(_.selectionEnd-y,_.selectionEnd);if(p&&p.length&&(C.length&&(f=this.getSelectionStyles(c,c+1,!1),f=C.map(()=>f[0])),g?(m=c,v=d):x?(m=d-p.length,v=d):(m=d,v=d+p.length),this.removeStyleFromTo(m,v)),C.length){const{copyPasteData:t}=u();e&&C.join(\"\")===t.copiedText&&!s.disableStyleCopyPaste&&(f=t.copiedTextStyle),this.insertNewStyleBlock(C,c,f)}o()}onCompositionStart(){this.inCompositionMode=!0}onCompositionEnd(){this.inCompositionMode=!1}onCompositionUpdate(t){let{target:e}=t;const{selectionStart:s,selectionEnd:i}=e;this.compositionStart=s,this.compositionEnd=i,this.updateTextareaPosition()}copy(){if(this.selectionStart===this.selectionEnd)return;const{copyPasteData:t}=u();t.copiedText=this.getSelectedText(),s.disableStyleCopyPaste?t.copiedTextStyle=void 0:t.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd,!0),this._copyDone=!0}paste(){this.fromPaste=!0}_getWidthBeforeCursor(t,e){let s,i=this._getLineLeftOffset(t);return e>0&&(s=this.__charBounds[t][e-1],i+=s.left+s.width),i}getDownCursorOffset(t,e){const s=this._getSelectionForOffset(t,e),i=this.get2DCursorLocation(s),r=i.lineIndex;if(r===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-s;const n=i.charIndex,o=this._getWidthBeforeCursor(r,n),a=this._getIndexOnLine(r+1,o);return this._textLines[r].slice(n).length+a+1+this.missingNewlineOffset(r)}_getSelectionForOffset(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart}getUpCursorOffset(t,e){const s=this._getSelectionForOffset(t,e),i=this.get2DCursorLocation(s),r=i.lineIndex;if(0===r||t.metaKey||33===t.keyCode)return-s;const n=i.charIndex,o=this._getWidthBeforeCursor(r,n),a=this._getIndexOnLine(r-1,o),h=this._textLines[r].slice(0,n),l=this.missingNewlineOffset(r-1);return-this._textLines[r-1].length+a-h.length+(1-l)}_getIndexOnLine(t,e){const s=this._textLines[t];let i,r,n=this._getLineLeftOffset(t),o=0;for(let a=0,h=s.length;a<h;a++)if(i=this.__charBounds[t][a].width,n+=i,n>e){r=!0;const t=n-i,s=n,h=Math.abs(t-e);o=Math.abs(s-e)<h?a:a-1;break}return r||(o=s.length-1),o}moveCursorDown(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown(\"Down\",t)}moveCursorUp(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown(\"Up\",t)}_moveCursorUpOrDown(t,e){const s=this[`get${t}CursorOffset`](e,this._selectionDirection===M);if(e.shiftKey?this.moveCursorWithShift(s):this.moveCursorWithoutShift(s),0!==s){const t=this.text.length;this.selectionStart=bs(0,this.selectionStart,t),this.selectionEnd=bs(0,this.selectionEnd,t),this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea()}}moveCursorWithShift(t){const e=this._selectionDirection===O?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t}moveCursorWithoutShift(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t}moveCursorLeft(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight(\"Left\",t)}_move(t,e,s){let i;if(t.altKey)i=this[`findWordBoundary${s}`](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+=\"Left\"===s?-1:1,!0;i=this[`findLineBoundary${s}`](this[e])}return void 0!==i&&this[e]!==i&&(this[e]=i,!0)}_moveLeft(t,e){return this._move(t,e,\"Left\")}_moveRight(t,e){return this._move(t,e,\"Right\")}moveCursorLeftWithoutShift(t){let e=!0;return this._selectionDirection=O,this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,\"selectionStart\")),this.selectionEnd=this.selectionStart,e}moveCursorLeftWithShift(t){return this._selectionDirection===M&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,\"selectionEnd\"):0!==this.selectionStart?(this._selectionDirection=O,this._moveLeft(t,\"selectionStart\")):void 0}moveCursorRight(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight(\"Right\",t)}_moveCursorLeftOrRight(t,e){const s=`moveCursor${t}${e.shiftKey?\"WithShift\":\"WithoutShift\"}`;this._currentCursorOpacity=1,this[s](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())}moveCursorRightWithShift(t){return this._selectionDirection===O&&this.selectionStart!==this.selectionEnd?this._moveRight(t,\"selectionStart\"):this.selectionEnd!==this._text.length?(this._selectionDirection=M,this._moveRight(t,\"selectionEnd\")):void 0}moveCursorRightWithoutShift(t){let e=!0;return this._selectionDirection=M,this.selectionStart===this.selectionEnd?(e=this._moveRight(t,\"selectionStart\"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e}}const yo=t=>!!t.button;class _o extends vo{constructor(){super(...arguments),t(this,\"draggableTextDelegate\",void 0)}initBehavior(){this.on(\"mousedown\",this._mouseDownHandler),this.on(\"mouseup\",this.mouseUpHandler),this.on(\"mousedblclick\",this.doubleClickHandler),this.on(\"mousetripleclick\",this.tripleClickHandler),this.draggableTextDelegate=new fo(this),super.initBehavior()}shouldStartDragging(){return this.draggableTextDelegate.isActive()}onDragStart(t){return this.draggableTextDelegate.onDragStart(t)}canDrop(t){return this.draggableTextDelegate.canDrop(t)}doubleClickHandler(t){this.isEditing&&(this.selectWord(this.getSelectionStartFromPointer(t.e)),this.renderCursorOrSelection())}tripleClickHandler(t){this.isEditing&&(this.selectLine(this.getSelectionStartFromPointer(t.e)),this.renderCursorOrSelection())}_mouseDownHandler(t){let{e:e,alreadySelected:s}=t;this.canvas&&this.editable&&!yo(e)&&!this.getActiveControl()&&(this.draggableTextDelegate.start(e)||(this.canvas.textEditingManager.register(this),s&&(this.inCompositionMode=!1,this.setCursorByClick(e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()),this.selected||(this.selected=s||this.isEditing)))}mouseUpHandler(t){let{e:e,transform:s}=t;const i=this.draggableTextDelegate.end(e);if(this.canvas){this.canvas.textEditingManager.unregister(this);const t=this.canvas._activeObject;if(t&&t!==this)return}!this.editable||this.group&&!this.group.interactive||s&&s.actionPerformed||yo(e)||i||this.selected&&!this.getActiveControl()&&(this.enterEditing(e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection())}setCursorByClick(t){const e=this.getSelectionStartFromPointer(t),s=this.selectionStart,i=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(s,i,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())}getSelectionStartFromPointer(t){const e=this.canvas.getScenePoint(t).transform(wt(this.calcTransformMatrix())).add(new ot(-this._getLeftOffset(),-this._getTopOffset()));let s=0,i=0,r=0;for(let t=0;t<this._textLines.length&&s<=e.y;t++)s+=this.getHeightOfLine(t),r=t,t>0&&(i+=this._textLines[t-1].length+this.missingNewlineOffset(t-1));let n=Math.abs(this._getLineLeftOffset(r));const o=this._textLines[r].length,a=this.__charBounds[r];for(let t=0;t<o;t++){const s=n+a[t].kernedWidth;if(e.x<=s){Math.abs(e.x-s)<=Math.abs(e.x-n)&&i++;break}n=s,i++}return Math.min(this.flipX?o-i:i,this._text.length)}}const xo=\"moveCursorUp\",Co=\"moveCursorDown\",bo=\"moveCursorLeft\",So=\"moveCursorRight\",wo=\"exitEditing\",To=(t,e)=>{const s=e.getRetinaScaling();t.setTransform(s,0,0,s,0,0);const i=e.viewportTransform;t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},Oo={selectionStart:0,selectionEnd:0,selectionColor:\"rgba(17,119,255,0.3)\",isEditing:!1,editable:!0,editingBorderColor:\"rgba(102,153,255,0.25)\",cursorWidth:2,cursorColor:\"\",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,keysMap:{9:wo,27:wo,33:xo,34:Co,35:So,36:bo,37:bo,38:xo,39:So,40:Co},keysMapRtl:{9:wo,27:wo,33:xo,34:Co,35:bo,36:So,37:So,38:xo,39:bo,40:Co},ctrlKeysMapDown:{65:\"cmdAll\"},ctrlKeysMapUp:{67:\"copy\",88:\"cut\"},_selectionDirection:null,_reSpace:/\\s|\\r?\\n/,inCompositionMode:!1};class ko extends _o{static getDefaults(){return{...super.getDefaults(),...ko.ownDefaults}}get type(){const t=super.type;return\"itext\"===t?\"i-text\":t}constructor(t,e){super(t,{...ko.ownDefaults,...e}),this.initBehavior()}_set(t,e){return this.isEditing&&this._savedProps&&t in this._savedProps?(this._savedProps[t]=e,this):(\"canvas\"===t&&(this.canvas instanceof Mn&&this.canvas.textEditingManager.remove(this),e instanceof Mn&&e.textEditingManager.add(this)),super._set(t,e))}setSelectionStart(t){t=Math.max(t,0),this._updateAndFire(\"selectionStart\",t)}setSelectionEnd(t){t=Math.min(t,this.text.length),this._updateAndFire(\"selectionEnd\",t)}_updateAndFire(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()}_fireSelectionChanged(){this.fire(\"selection:changed\"),this.canvas&&this.canvas.fire(\"text:selection:changed\",{target:this})}initDimensions(){this.isEditing&&this.initDelayedCursor(),super.initDimensions()}getSelectionStyles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selectionStart||0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selectionEnd,s=arguments.length>2?arguments[2]:void 0;return super.getSelectionStyles(t,e,s)}setSelectionStyles(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selectionStart||0,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.selectionEnd;return super.setSelectionStyles(t,e,s)}get2DCursorLocation(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selectionStart,e=arguments.length>1?arguments[1]:void 0;return super.get2DCursorLocation(t,e)}render(t){super.render(t),this.cursorOffsetCache={},this.renderCursorOrSelection()}toCanvasElement(t){const e=this.isEditing;this.isEditing=!1;const s=super.toCanvasElement(t);return this.isEditing=e,s}renderCursorOrSelection(){if(!this.isEditing||!this.canvas)return;const t=this.clearContextTop(!0);if(!t)return;const e=this._getCursorBoundaries(),s=this.findAncestorsWithClipPath(),i=s.length>0;let r,n=t;if(i){r=vt(t.canvas),n=r.getContext(\"2d\"),To(n,this.canvas);const e=this.calcTransformMatrix();n.transform(e[0],e[1],e[2],e[3],e[4],e[5])}if(this.selectionStart!==this.selectionEnd||this.inCompositionMode?this.renderSelection(n,e):this.renderCursor(n,e),i)for(const e of s){const s=e.clipPath,i=vt(t.canvas),r=i.getContext(\"2d\");if(To(r,this.canvas),!s.absolutePositioned){const t=e.calcTransformMatrix();r.transform(t[0],t[1],t[2],t[3],t[4],t[5])}s.transform(r),s.drawObject(r,!0,{}),this.drawClipPathOnCache(n,s,i)}i&&(t.setTransform(1,0,0,1,0,0),t.drawImage(r,0,0)),this.canvas.contextTopDirty=!0,t.restore()}findAncestorsWithClipPath(){const t=[];let e=this;for(;e;)e.clipPath&&t.push(e),e=e.parent;return t}_getCursorBoundaries(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selectionStart,e=arguments.length>1?arguments[1]:void 0;const s=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(t,e);return{left:s,top:i,leftOffset:r.left,topOffset:r.top}}_getCursorBoundariesOffsets(t,e){return e?this.__getCursorBoundariesOffsets(t):this.cursorOffsetCache&&\"top\"in this.cursorOffsetCache?this.cursorOffsetCache:this.cursorOffsetCache=this.__getCursorBoundariesOffsets(t)}__getCursorBoundariesOffsets(t){let e=0,s=0;const{charIndex:i,lineIndex:r}=this.get2DCursorLocation(t),{textAlign:n,direction:o}=this;for(let t=0;t<r;t++)e+=this.getHeightOfLine(t);const a=this._getLineLeftOffset(r),h=this.__charBounds[r][i];h&&(s=h.left),0!==this.charSpacing&&i===this._textLines[r].length&&(s-=this._getWidthOfCharSpacing());let l=a+(s>0?s:0);return o===K&&(n===M||n===rs||n===os?l*=-1:n===O||n===ns?l=a-(s>0?s:0):n!==T&&n!==as||(l=a-(s>0?s:0))),{top:e,left:l}}renderCursorAt(t){this._renderCursor(this.canvas.contextTop,this._getCursorBoundaries(t,!0),t)}renderCursor(t,e){this._renderCursor(t,e,this.selectionStart)}getCursorRenderingData(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selectionStart,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getCursorBoundaries(t);const s=this.get2DCursorLocation(t),i=s.lineIndex,r=s.charIndex>0?s.charIndex-1:0,n=this.getValueOfPropertyAt(i,r,\"fontSize\"),o=this.getObjectScaling().x*this.canvas.getZoom(),a=this.cursorWidth/o,h=this.getValueOfPropertyAt(i,r,\"deltaY\"),l=e.topOffset+(1-this._fontSizeFraction)*this.getHeightOfLine(i)/this.lineHeight-n*(1-this._fontSizeFraction);return{color:this.cursorColor||this.getValueOfPropertyAt(i,r,\"fill\"),opacity:this._currentCursorOpacity,left:e.left+e.leftOffset-a/2,top:l+e.top+h,width:a,height:n}}_renderCursor(t,e,s){const{color:i,opacity:r,left:n,top:o,width:a,height:h}=this.getCursorRenderingData(s,e);t.fillStyle=i,t.globalAlpha=r,t.fillRect(n,o,a,h)}renderSelection(t,e){const s={selectionStart:this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,selectionEnd:this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd};this._renderSelection(t,s,e)}renderDragSourceEffect(){const t=this.draggableTextDelegate.getDragStartSelection();this._renderSelection(this.canvas.contextTop,t,this._getCursorBoundaries(t.selectionStart,!0))}renderDropTargetEffect(t){const e=this.getSelectionStartFromPointer(t);this.renderCursorAt(e)}_renderSelection(t,e,s){const{textAlign:i,direction:r}=this,n=e.selectionStart,o=e.selectionEnd,a=i.includes(rs),h=this.get2DCursorLocation(n),l=this.get2DCursorLocation(o),c=h.lineIndex,u=l.lineIndex,d=h.charIndex<0?0:h.charIndex,g=l.charIndex<0?0:l.charIndex;for(let e=c;e<=u;e++){const n=this._getLineLeftOffset(e)||0;let o=this.getHeightOfLine(e),h=0,l=0,f=0;if(e===c&&(l=this.__charBounds[c][d].left),e>=c&&e<u)f=a&&!this.isEndOfWrapping(e)?this.width:this.getLineWidth(e)||5;else if(e===u)if(0===g)f=this.__charBounds[u][g].left;else{const t=this._getWidthOfCharSpacing();f=this.__charBounds[u][g-1].left+this.__charBounds[u][g-1].width-t}h=o,(this.lineHeight<1||e===u&&this.lineHeight>1)&&(o/=this.lineHeight);let p=s.left+n+l,m=o,v=0;const y=f-l;this.inCompositionMode?(t.fillStyle=this.compositionColor||\"black\",m=1,v=o):t.fillStyle=this.selectionColor,r===K&&(i===M||i===rs||i===os?p=this.width-p-y:i===O||i===ns?p=s.left+n-f:i!==T&&i!==as||(p=s.left+n-f)),t.fillRect(p,s.top+s.topOffset+v,y,m),s.topOffset+=h}}getCurrentCharFontSize(){const t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,\"fontSize\")}getCurrentCharColor(){const t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,H)}_getCurrentCharIndex(){const t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}dispose(){this.exitEditingImpl(),this.draggableTextDelegate.dispose(),super.dispose()}}t(ko,\"ownDefaults\",Oo),t(ko,\"type\",\"IText\"),tt.setClass(ko),tt.setClass(ko,\"i-text\");class Do extends ko{static getDefaults(){return{...super.getDefaults(),...Do.ownDefaults}}constructor(t,e){super(t,{...Do.ownDefaults,...e})}static createControls(){return{controls:wi()}}initDimensions(){this.initialized&&(this.isEditing&&this.initDelayedCursor(),this._clearCache(),this.dynamicMinWidth=0,this._styleMap=this._generateStyleMap(this._splitText()),this.dynamicMinWidth>this.width&&this._set(\"width\",this.dynamicMinWidth),this.textAlign.includes(rs)&&this.enlargeSpaces(),this.height=this.calcTextHeight())}_generateStyleMap(t){let e=0,s=0,i=0;const r={};for(let n=0;n<t.graphemeLines.length;n++)\"\\n\"===t.graphemeText[i]&&n>0?(s=0,i++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[i])&&n>0&&(s++,i++),r[n]={line:e,offset:s},i+=t.graphemeLines[n].length,s+=t.graphemeLines[n].length;return r}styleHas(t,e){if(this._styleMap&&!this.isWrapping){const t=this._styleMap[e];t&&(e=t.line)}return super.styleHas(t,e)}isEmptyStyles(t){if(!this.styles)return!0;let e,s=0,i=t+1,r=!1;const n=this._styleMap[t],o=this._styleMap[t+1];n&&(t=n.line,s=n.offset),o&&(i=o.line,r=i===t,e=o.offset);const a=void 0===t?this.styles:{line:this.styles[t]};for(const t in a)for(const i in a[t]){const n=parseInt(i,10);if(n>=s&&(!r||n<e))for(const e in a[t][i])return!1}return!0}_getStyleDeclaration(t,e){if(this._styleMap&&!this.isWrapping){const s=this._styleMap[t];if(!s)return{};t=s.line,e=s.offset+e}return super._getStyleDeclaration(t,e)}_setStyleDeclaration(t,e,s){const i=this._styleMap[t];super._setStyleDeclaration(i.line,i.offset+e,s)}_deleteStyleDeclaration(t,e){const s=this._styleMap[t];super._deleteStyleDeclaration(s.line,s.offset+e)}_getLineStyle(t){const e=this._styleMap[t];return!!this.styles[e.line]}_setLineStyle(t){const e=this._styleMap[t];super._setLineStyle(e.line)}_wrapText(t,e){this.isWrapping=!0;const s=this.getGraphemeDataForRender(t),i=[];for(let t=0;t<s.wordsData.length;t++)i.push(...this._wrapLine(t,e,s));return this.isWrapping=!1,i}getGraphemeDataForRender(t){const e=this.splitByGrapheme,s=e?\"\":\" \";let i=0;return{wordsData:t.map((t,r)=>{let n=0;const o=e?this.graphemeSplit(t):this.wordSplit(t);return 0===o.length?[{word:[],width:0}]:o.map(t=>{const o=e?[t]:this.graphemeSplit(t),a=this._measureWord(o,r,n);return i=Math.max(a,i),n+=o.length+s.length,{word:o,width:a}})}),largestWordWidth:i}}_measureWord(t,e){let s,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=0;for(let n=0,o=t.length;n<o;n++){r+=this._getGraphemeBox(t[n],e,n+i,s,true).kernedWidth,s=t[n]}return r}wordSplit(t){return t.split(this._wordJoiners)}_wrapLine(t,e,s){let{largestWordWidth:i,wordsData:r}=s,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const o=this._getWidthOfCharSpacing(),a=this.splitByGrapheme,h=[],l=a?\"\":\" \";let c=0,u=[],d=0,g=0,f=!0;e-=n;const p=Math.max(e,i,this.dynamicMinWidth),m=r[t];let v;for(d=0,v=0;v<m.length;v++){const{word:e,width:s}=m[v];d+=e.length,c+=g+s-o,c>p&&!f?(h.push(u),u=[],c=s,f=!0):c+=o,f||a||u.push(l),u=u.concat(e),g=a?0:this._measureWord([l],t,d),d++,f=!1}return v&&h.push(u),i+n>this.dynamicMinWidth&&(this.dynamicMinWidth=i-o+n),h}isEndOfWrapping(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line}missingNewlineOffset(t,e){return this.splitByGrapheme&&!e?this.isEndOfWrapping(t)?1:0:1}_splitTextIntoLines(t){const e=super._splitTextIntoLines(t),s=this._wrapText(e.lines,this.width),i=new Array(s.length);for(let t=0;t<s.length;t++)i[t]=s[t].join(\"\");return e.lines=i,e.graphemeLines=s,e}getMinWidth(){return Math.max(this.minWidth,this.dynamicMinWidth)}_removeExtraneousStyles(){const t=new Map;for(const e in this._styleMap){const s=parseInt(e,10);if(this._textLines[s]){const s=this._styleMap[e].line;t.set(`${s}`,!0)}}for(const e in this.styles)t.has(e)||delete this.styles[e]}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return super.toObject([\"minWidth\",\"splitByGrapheme\",...t])}}t(Do,\"type\",\"Textbox\"),t(Do,\"textLayoutProperties\",[...ko.textLayoutProperties,\"width\"]),t(Do,\"ownDefaults\",{minWidth:20,dynamicMinWidth:2,lockScalingFlip:!0,noScaleCache:!1,_wordJoiners:/[ \\t\\r]/,splitByGrapheme:!1}),tt.setClass(Do);class Mo extends Cr{shouldPerformLayout(t){return!!t.target.clipPath&&super.shouldPerformLayout(t)}shouldLayoutClipPath(){return!1}calcLayoutResult(t,e){const{target:s}=t,{clipPath:i,group:r}=s;if(!i||!this.shouldPerformLayout(t))return;const{width:n,height:o}=ae(xr(s,i)),a=new ot(n,o);if(i.absolutePositioned){return{center:fe(i.getRelativeCenterPoint(),void 0,r?r.calcTransformMatrix():void 0),size:a}}{const r=i.getRelativeCenterPoint().transform(s.calcOwnMatrix(),!0);if(this.shouldPerformLayout(t)){const{center:s=new ot,correction:i=new ot}=this.calcBoundingBox(e,t)||{};return{center:s.add(r),correction:i.subtract(r),size:a}}return{center:s.getRelativeCenterPoint().add(r),size:a}}}}t(Mo,\"type\",\"clip-path\"),tt.setClass(Mo);class Eo extends Cr{getInitialSize(t,e){let{target:s}=t,{size:i}=e;return new ot(s.width||i.x,s.height||i.y)}}t(Eo,\"type\",\"fixed\"),tt.setClass(Eo);class Po extends wr{subscribeTargets(t){const e=t.target;t.targets.reduce((t,e)=>(e.parent&&t.add(e.parent),t),new Set).forEach(t=>{t.layoutManager.subscribeTargets({target:t,targets:[e]})})}unsubscribeTargets(t){const e=t.target,s=e.getObjects();t.targets.reduce((t,e)=>(e.parent&&t.add(e.parent),t),new Set).forEach(t=>{!s.some(e=>e.parent===t)&&t.layoutManager.unsubscribeTargets({target:t,targets:[e]})})}}class Ao extends Or{static getDefaults(){return{...super.getDefaults(),...Ao.ownDefaults}}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,Ao.ownDefaults),this.setOptions(e);const{left:s,top:i,layoutManager:r}=e;this.groupInit(t,{left:s,top:i,layoutManager:null!=r?r:new Po})}_shouldSetNestedCoords(){return!0}__objectSelectionMonitor(){}multiSelectAdd(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];\"selection-order\"===this.multiSelectionStacking?this.add(...e):e.forEach(t=>{const e=this._objects.findIndex(e=>e.isInFrontOf(t)),s=-1===e?this.size():e;this.insertAt(s,t)})}canEnterGroup(t){return this.getObjects().some(e=>e.isDescendantOf(t)||t.isDescendantOf(e))?(i(\"error\",\"ActiveSelection: circular object trees are not supported, this call has no effect\"),!1):super.canEnterGroup(t)}enterGroup(t,e){t.parent&&t.parent===t.group?t.parent._exitGroup(t):t.group&&t.parent!==t.group&&t.group.remove(t),this._enterGroup(t,e)}exitGroup(t,e){this._exitGroup(t,e),t.parent&&t.parent._enterGroup(t,!0)}_onAfterObjectsChange(t,e){super._onAfterObjectsChange(t,e);const s=new Set;e.forEach(t=>{const{parent:e}=t;e&&s.add(e)}),t===yr?s.forEach(t=>{t._onAfterObjectsChange(vr,e)}):s.forEach(t=>{t._set(\"dirty\",!0)})}onDeselect(){return this.removeAll(),!1}toString(){return`#<ActiveSelection: (${this.complexity()})>`}shouldCache(){return!1}isOnACache(){return!1}_renderControls(t,e,s){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;const i={hasControls:!1,...s,forActiveSelection:!0};for(let e=0;e<this._objects.length;e++)this._objects[e]._renderControls(t,i);super._renderControls(t,e),t.restore()}}t(Ao,\"type\",\"ActiveSelection\"),t(Ao,\"ownDefaults\",{multiSelectionStacking:\"canvas-stacking\"}),tt.setClass(Ao),tt.setClass(Ao,\"activeSelection\");class jo{constructor(){t(this,\"resources\",{})}applyFilters(t,e,s,i,r){const n=r.getContext(\"2d\",{willReadFrequently:!0,desynchronized:!0});if(!n)return;n.drawImage(e,0,0,s,i);const o={sourceWidth:s,sourceHeight:i,imageData:n.getImageData(0,0,s,i),originalEl:e,originalImageData:n.getImageData(0,0,s,i),canvasEl:r,ctx:n,filterBackend:this};t.forEach(t=>{t.applyTo(o)});const{imageData:a}=o;return a.width===s&&a.height===i||(r.width=a.width,r.height=a.height),n.putImageData(a,0,0),o}}class Fo{constructor(){let{tileSize:e=s.textureSize}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,\"aPosition\",new Float32Array([0,0,0,1,1,0,1,1])),t(this,\"resources\",{}),this.tileSize=e,this.setupGLContext(e,e),this.captureGPUInfo()}setupGLContext(t,e){this.dispose(),this.createWebGLCanvas(t,e)}createWebGLCanvas(t,e){const s=vt({width:t,height:e}),i=s.getContext(\"webgl\",{alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1});i&&(i.clearColor(0,0,0,0),this.canvas=s,this.gl=i)}applyFilters(t,e,s,i,r,n){const o=this.gl,a=r.getContext(\"2d\");if(!o||!a)return;let h;n&&(h=this.getCachedTexture(n,e));const l={originalWidth:e.width||e.naturalWidth||0,originalHeight:e.height||e.naturalHeight||0,sourceWidth:s,sourceHeight:i,destinationWidth:s,destinationHeight:i,context:o,sourceTexture:this.createTexture(o,s,i,h?void 0:e),targetTexture:this.createTexture(o,s,i),originalTexture:h||this.createTexture(o,s,i,h?void 0:e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:r},c=o.createFramebuffer();return o.bindFramebuffer(o.FRAMEBUFFER,c),t.forEach(t=>{t&&t.applyTo(l)}),function(t){const e=t.targetCanvas,s=e.width,i=e.height,r=t.destinationWidth,n=t.destinationHeight;s===r&&i===n||(e.width=r,e.height=n)}(l),this.copyGLTo2D(o,l),o.bindTexture(o.TEXTURE_2D,null),o.deleteTexture(l.sourceTexture),o.deleteTexture(l.targetTexture),o.deleteFramebuffer(c),a.setTransform(1,0,0,1,0,0),l}dispose(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()}clearWebGLCaches(){this.programCache={},this.textureCache={}}createTexture(t,e,s,i,r){const{NEAREST:n,TEXTURE_2D:o,RGBA:a,UNSIGNED_BYTE:h,CLAMP_TO_EDGE:l,TEXTURE_MAG_FILTER:c,TEXTURE_MIN_FILTER:u,TEXTURE_WRAP_S:d,TEXTURE_WRAP_T:g}=t,f=t.createTexture();return t.bindTexture(o,f),t.texParameteri(o,c,r||n),t.texParameteri(o,u,r||n),t.texParameteri(o,d,l),t.texParameteri(o,g,l),i?t.texImage2D(o,0,a,a,h,i):t.texImage2D(o,0,a,e,s,0,a,h,null),f}getCachedTexture(t,e,s){const{textureCache:i}=this;if(i[t])return i[t];{const r=this.createTexture(this.gl,e.width,e.height,e,s);return r&&(i[t]=r),r}}evictCachesForKey(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])}copyGLTo2D(t,e){const s=t.canvas,i=e.targetCanvas,r=i.getContext(\"2d\");if(!r)return;r.translate(0,i.height),r.scale(1,-1);const n=s.height-i.height;r.drawImage(s,0,n,i.width,i.height,0,0,i.width,i.height)}copyGLTo2DPutImageData(t,e){const s=e.targetCanvas.getContext(\"2d\"),i=e.destinationWidth,r=e.destinationHeight,n=i*r*4;if(!s)return;const o=new Uint8Array(this.imageBuffer,0,n),a=new Uint8ClampedArray(this.imageBuffer,0,n);t.readPixels(0,0,i,r,t.RGBA,t.UNSIGNED_BYTE,o);const h=new ImageData(a,i,r);s.putImageData(h,0,0)}captureGPUInfo(){if(this.gpuInfo)return this.gpuInfo;const t=this.gl,e={renderer:\"\",vendor:\"\"};if(!t)return e;const s=t.getExtension(\"WEBGL_debug_renderer_info\");if(s){const i=t.getParameter(s.UNMASKED_RENDERER_WEBGL),r=t.getParameter(s.UNMASKED_VENDOR_WEBGL);i&&(e.renderer=i.toLowerCase()),r&&(e.vendor=r.toLowerCase())}return this.gpuInfo=e,e}}let Lo;function Io(){const{WebGLProbe:t}=u();return t.queryWebGL(pt()),s.enableGLFiltering&&t.isSupported(s.textureSize)?new Fo({tileSize:s.textureSize}):new jo}function Ro(){return!Lo&&(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&(Lo=Io()),Lo}function Bo(t){Lo=t}const $o=[\"cropX\",\"cropY\"];class Xo extends ki{static getDefaults(){return{...super.getDefaults(),...Xo.ownDefaults}}constructor(e,s){super(),t(this,\"_lastScaleX\",1),t(this,\"_lastScaleY\",1),t(this,\"_filterScalingX\",1),t(this,\"_filterScalingY\",1),this.filters=[],Object.assign(this,Xo.ownDefaults),this.setOptions(s),this.cacheKey=`texture${ft()}`,this.setElement(\"string\"==typeof e?(this.canvas&&qt(this.canvas.getElement())||d()).getElementById(e):e,s)}getElement(){return this._element}setElement(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.removeTexture(this.cacheKey),this.removeTexture(`${this.cacheKey}_filtered`),this._element=t,this._originalElement=t,this._setWidthHeight(e),0!==this.filters.length&&this.applyFilters(),this.resizeFilter&&this.applyResizeFilters()}removeTexture(t){const e=Ro(!1);e instanceof Fo&&e.evictCachesForKey(t)}dispose(){super.dispose(),this.removeTexture(this.cacheKey),this.removeTexture(`${this.cacheKey}_filtered`),this._cacheContext=null,[\"_originalElement\",\"_element\",\"_filteredEl\",\"_cacheCanvas\"].forEach(t=>{const e=this[t];e&&u().dispose(e),this[t]=void 0})}getCrossOrigin(){return this._originalElement&&(this._originalElement.crossOrigin||null)}getOriginalSize(){const t=this.getElement();return t?{width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}:{width:0,height:0}}_stroke(t){if(!this.stroke||0===this.strokeWidth)return;const e=this.width/2,s=this.height/2;t.beginPath(),t.moveTo(-e,-s),t.lineTo(e,-s),t.lineTo(e,s),t.lineTo(-e,s),t.lineTo(-e,-s),t.closePath()}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e=[];return this.filters.forEach(t=>{t&&e.push(t.toObject())}),{...super.toObject([...$o,...t]),src:this.getSrc(),crossOrigin:this.getCrossOrigin(),filters:e,...this.resizeFilter?{resizeFilter:this.resizeFilter.toObject()}:{}}}hasCrop(){return!!this.cropX||!!this.cropY||this.width<this._element.width||this.height<this._element.height}_toSVG(){const t=[],e=this._element,s=-this.width/2,i=-this.height/2;let r=[],n=[],o=\"\",a=\"\";if(!e)return[];if(this.hasCrop()){const t=ft();r.push('<clipPath id=\"imageCrop_'+t+'\">\\n','\\t<rect x=\"'+s+'\" y=\"'+i+'\" width=\"'+this.width+'\" height=\"'+this.height+'\" />\\n',\"</clipPath>\\n\"),o=' clip-path=\"url(#imageCrop_'+t+')\" '}if(this.imageSmoothing||(a=' image-rendering=\"optimizeSpeed\"'),t.push(\"\\t<image \",\"COMMON_PARTS\",`xlink:href=\"${this.getSvgSrc(!0)}\" x=\"${s-this.cropX}\" y=\"${i-this.cropY}\" width=\"${e.width||e.naturalWidth}\" height=\"${e.height||e.naturalHeight}\"${a}${o}></image>\\n`),this.stroke||this.strokeDashArray){const t=this.fill;this.fill=null,n=[`\\t<rect x=\"${s}\" y=\"${i}\" width=\"${this.width}\" height=\"${this.height}\" style=\"${this.getSvgStyles()}\" />\\n`],this.fill=t}return r=this.paintFirst!==H?r.concat(n,t):r.concat(t,n),r}getSrc(t){const e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute(\"src\")||\"\":e.src:this.src||\"\"}getSvgSrc(t){return this.getSrc(t)}setSrc(t){let{crossOrigin:e,signal:s}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Rt(t,{crossOrigin:e,signal:s}).then(t=>{void 0!==e&&this.set({crossOrigin:e}),this.setElement(t)})}toString(){return`#<Image: { src: \"${this.getSrc()}\" }>`}applyResizeFilters(){const t=this.resizeFilter,e=this.minimumScaleTrigger,s=this.getTotalObjectScaling(),i=s.x,r=s.y,n=this._filteredEl||this._originalElement;if(this.group&&this.set(\"dirty\",!0),!t||i>e&&r>e)return this._element=n,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=i,void(this._lastScaleY=r);const o=vt(n),{width:a,height:h}=n;this._element=o,this._lastScaleX=t.scaleX=i,this._lastScaleY=t.scaleY=r,Ro().applyFilters([t],n,a,h,this._element),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height}applyFilters(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.filters||[];if(t=t.filter(t=>t&&!t.isNeutralState()),this.set(\"dirty\",!0),this.removeTexture(`${this.cacheKey}_filtered`),0===t.length)return this._element=this._originalElement,this._filteredEl=void 0,this._filterScalingX=1,void(this._filterScalingY=1);const e=this._originalElement,s=e.naturalWidth||e.width,i=e.naturalHeight||e.height;if(this._element===this._originalElement){const t=vt({width:s,height:i});this._element=t,this._filteredEl=t}else this._filteredEl&&(this._element=this._filteredEl,this._filteredEl.getContext(\"2d\").clearRect(0,0,s,i),this._lastScaleX=1,this._lastScaleY=1);Ro().applyFilters(t,this._originalElement,s,i,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height)}_render(t){t.imageSmoothingEnabled=this.imageSmoothing,!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)}drawCacheOnCanvas(t){t.imageSmoothingEnabled=this.imageSmoothing,super.drawCacheOnCanvas(t)}shouldCache(){return this.needsItsOwnCache()}_renderFill(t){const e=this._element;if(!e)return;const s=this._filterScalingX,i=this._filterScalingY,r=this.width,n=this.height,o=Math.max(this.cropX,0),a=Math.max(this.cropY,0),h=e.naturalWidth||e.width,l=e.naturalHeight||e.height,c=o*s,u=a*i,d=Math.min(r*s,h-c),g=Math.min(n*i,l-u),f=-r/2,p=-n/2,m=Math.min(r,h/s-o),v=Math.min(n,l/i-a);e&&t.drawImage(e,c,u,d,g,f,p,m,v)}_needsResize(){const t=this.getTotalObjectScaling();return t.x!==this._lastScaleX||t.y!==this._lastScaleY}_resetWidthHeight(){this.set(this.getOriginalSize())}_setWidthHeight(){let{width:t,height:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const s=this.getOriginalSize();this.width=t||s.width,this.height=e||s.height}parsePreserveAspectRatioAttribute(){const t=Ne(this.preserveAspectRatio||\"\"),e=this.width,s=this.height,i={width:e,height:s};let r,n=this._element.width,o=this._element.height,a=1,h=1,l=0,c=0,u=0,d=0;return!t||t.alignX===E&&t.alignY===E?(a=e/n,h=s/o):(\"meet\"===t.meetOrSlice&&(a=h=kr(this._element,i),r=(e-n*a)/2,\"Min\"===t.alignX&&(l=-r),\"Max\"===t.alignX&&(l=r),r=(s-o*h)/2,\"Min\"===t.alignY&&(c=-r),\"Max\"===t.alignY&&(c=r)),\"slice\"===t.meetOrSlice&&(a=h=Dr(this._element,i),r=n-e/a,\"Mid\"===t.alignX&&(u=r/2),\"Max\"===t.alignX&&(u=r),r=o-s/h,\"Mid\"===t.alignY&&(d=r/2),\"Max\"===t.alignY&&(d=r),n=e/a,o=s/h)),{width:n,height:o,scaleX:a,scaleY:h,offsetLeft:l,offsetTop:c,cropX:u,cropY:d}}static fromObject(t,e){let{filters:s,resizeFilter:i,src:r,crossOrigin:n,type:o,...a}=t;return Promise.all([Rt(r,{...e,crossOrigin:n}),s&&Bt(s,e),i?Bt([i],e):[],$t(a,e)]).then(t=>{let[e,s=[],[i],n={}]=t;return new this(e,{...a,src:r,filters:s,resizeFilter:i,...n})})}static fromURL(t){let{crossOrigin:e=null,signal:s}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;return Rt(t,{crossOrigin:e,signal:s}).then(t=>new this(t,i))}static async fromElement(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0;const r=gr(t,this.ATTRIBUTE_NAMES,s);return this.fromURL(r[\"xlink:href\"]||r.href,e,r).catch(t=>(i(\"log\",\"Unable to parse Image\",t),null))}}function Yo(t){if(!ms.test(t.nodeName))return{};const e=t.getAttribute(\"viewBox\");let s,i,r=1,n=1,o=0,a=0;const h=t.getAttribute(\"width\"),l=t.getAttribute(\"height\"),c=t.getAttribute(\"x\")||0,u=t.getAttribute(\"y\")||0,d=!(e&&ys.test(e)),g=!h||!l||\"100%\"===h||\"100%\"===l;let f=\"\",p=0,m=0;if(d&&(c||u)&&t.parentNode&&\"#document\"!==t.parentNode.nodeName&&(f=\" translate(\"+He(c||\"0\")+\" \"+He(u||\"0\")+\") \",s=(t.getAttribute(\"transform\")||\"\")+f,t.setAttribute(\"transform\",s),t.removeAttribute(\"x\"),t.removeAttribute(\"y\")),d&&g)return{width:0,height:0};const v={width:0,height:0};if(d)return v.width=He(h),v.height=He(l),v;const y=e.match(ys);o=-parseFloat(y[1]),a=-parseFloat(y[2]);const _=parseFloat(y[3]),x=parseFloat(y[4]);v.minX=o,v.minY=a,v.viewBoxWidth=_,v.viewBoxHeight=x,g?(v.width=_,v.height=x):(v.width=He(h),v.height=He(l),r=v.width/_,n=v.height/x);const C=Ne(t.getAttribute(\"preserveAspectRatio\")||\"\");if(C.alignX!==E&&(\"meet\"===C.meetOrSlice&&(n=r=r>n?n:r),\"slice\"===C.meetOrSlice&&(n=r=r>n?r:n),p=v.width-_*r,m=v.height-x*r,\"Mid\"===C.alignX&&(p/=2),\"Mid\"===C.alignY&&(m/=2),\"Min\"===C.alignX&&(p=0),\"Min\"===C.alignY&&(m=0)),1===r&&1===n&&0===o&&0===a&&0===c&&0===u)return v;if((c||u)&&\"#document\"!==t.parentNode.nodeName&&(f=\" translate(\"+He(c||\"0\")+\" \"+He(u||\"0\")+\") \"),s=f+\" matrix(\"+r+\" 0 0 \"+n+\" \"+(o*r+p)+\" \"+(a*n+m)+\") \",\"svg\"===t.nodeName){for(i=t.ownerDocument.createElementNS(cs,\"g\");t.firstChild;)i.appendChild(t.firstChild);t.appendChild(i)}else i=t,i.removeAttribute(\"x\"),i.removeAttribute(\"y\"),s=i.getAttribute(\"transform\")+s;return i.setAttribute(\"transform\",s),v}t(Xo,\"type\",\"Image\"),t(Xo,\"cacheProperties\",[...ws,...$o]),t(Xo,\"ownDefaults\",{strokeWidth:0,srcFromAttribute:!1,minimumScaleTrigger:.5,cropX:0,cropY:0,imageSmoothing:!0}),t(Xo,\"ATTRIBUTE_NAMES\",[...Gi,\"x\",\"y\",\"width\",\"height\",\"preserveAspectRatio\",\"xlink:href\",\"href\",\"crossOrigin\",\"image-rendering\"]),tt.setClass(Xo),tt.setSVGClass(Xo);const Wo=t=>t.tagName.replace(\"svg:\",\"\"),Vo=Ke([\"pattern\",\"defs\",\"symbol\",\"metadata\",\"clipPath\",\"mask\",\"desc\"]);function Go(t,e){let s,i,r,n,o=[];for(r=0,n=e.length;r<n;r++)s=e[r],i=t.getElementsByTagNameNS(\"http://www.w3.org/2000/svg\",s),o=o.concat(Array.from(i));return o}const zo=[\"gradientTransform\",\"x1\",\"x2\",\"y1\",\"y2\",\"gradientUnits\",\"cx\",\"cy\",\"r\",\"fx\",\"fy\"],Ho=\"xlink:href\";function No(t,e){var s;const i=(null===(s=e.getAttribute(Ho))||void 0===s?void 0:s.slice(1))||\"\",r=t.getElementById(i);if(r&&r.getAttribute(Ho)&&No(t,r),r&&(zo.forEach(t=>{const s=r.getAttribute(t);!e.hasAttribute(t)&&s&&e.setAttribute(t,s)}),!e.children.length)){const t=r.cloneNode(!0);for(;t.firstChild;)e.appendChild(t.firstChild)}e.removeAttribute(Ho)}const Uo=[\"linearGradient\",\"radialGradient\",\"svg:linearGradient\",\"svg:radialGradient\"];const qo=t=>tt.getSVGClass(Wo(t).toLowerCase());class Ko{constructor(t,e,s,i,r){this.elements=t,this.options=e,this.reviver=s,this.regexUrl=/^url\\(['\"]?#([^'\"]+)['\"]?\\)/g,this.doc=i,this.clipPaths=r,this.gradientDefs=function(t){const e=Go(t,Uo),s={};let i=e.length;for(;i--;){const r=e[i];r.getAttribute(\"xlink:href\")&&No(t,r);const n=r.getAttribute(\"id\");n&&(s[n]=r)}return s}(i),this.cssRules=function(t){const e=t.getElementsByTagName(\"style\"),s={};for(let t=0;t<e.length;t++){const i=(e[t].textContent||\"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g,\"\");\"\"!==i.trim()&&i.split(\"}\").filter((t,e,s)=>s.length>1&&t.trim()).forEach(t=>{if((t.match(/{/g)||[]).length>1&&t.trim().startsWith(\"@\"))return;const e=t.split(\"{\"),i={},r=e[1].trim().split(\";\").filter(function(t){return t.trim()});for(let t=0;t<r.length;t++){const e=r[t].split(\":\"),s=e[0].trim(),n=e[1].trim();i[s]=n}(t=e[0].trim()).split(\",\").forEach(t=>{\"\"!==(t=t.replace(/^svg/i,\"\").trim())&&(s[t]={...s[t]||{},...i})})})}return s}(i)}parse(){return Promise.all(this.elements.map(t=>this.createObject(t)))}async createObject(t){const e=qo(t);if(e){const s=await e.fromElement(t,this.options,this.cssRules);return this.resolveGradient(s,t,H),this.resolveGradient(s,t,N),s instanceof Xo&&s._originalElement?nn(s,s.parsePreserveAspectRatioAttribute()):nn(s),await this.resolveClipPath(s,t),this.reviver&&this.reviver(t,s),s}return null}extractPropertyDefinition(t,e,s){const i=t[e],r=this.regexUrl;if(!r.test(i))return;r.lastIndex=0;const n=r.exec(i)[1];return r.lastIndex=0,s[n]}resolveGradient(t,e,s){const i=this.extractPropertyDefinition(t,s,this.gradientDefs);if(i){const r=e.getAttribute(s+\"-opacity\"),n=Vn.fromElement(i,t,{...this.options,opacity:r});t.set(s,n)}}async resolveClipPath(t,e,s){const i=this.extractPropertyDefinition(t,\"clipPath\",this.clipPaths);if(i){const r=wt(t.calcTransformMatrix()),n=i[0].parentElement;let o=e;for(;!s&&o.parentElement&&o.getAttribute(\"clip-path\")!==t.clipPath;)o=o.parentElement;o.parentElement.appendChild(n);const a=hr(`${o.getAttribute(\"transform\")||\"\"} ${n.getAttribute(\"originalTransform\")||\"\"}`);n.setAttribute(\"transform\",`matrix(${a.join(\",\")})`);const h=await Promise.all(i.map(t=>qo(t).fromElement(t,this.options,this.cssRules).then(t=>(nn(t),t.fillRule=t.clipRule,delete t.clipRule,t)))),l=1===h.length?h[0]:new Or(h),c=Tt(r,l.calcTransformMatrix());l.clipPath&&await this.resolveClipPath(l,o,n.getAttribute(\"clip-path\")?o:void 0);const{scaleX:u,scaleY:d,angle:g,skewX:f,translateX:p,translateY:m}=Dt(c);l.set({flipX:!1,flipY:!1}),l.set({scaleX:u,scaleY:d,angle:g,skewX:f,skewY:0}),l.setPositionByOrigin(new ot(p,m),T,T),t.clipPath=l}else delete t.clipPath}}const Jo=t=>ps.test(Wo(t));async function Qo(t,e){let{crossOrigin:s,signal:r}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(r&&r.aborted)return i(\"log\",new n(\"parseSVGDocument\")),{objects:[],elements:[],options:{},allElements:[]};const o=t.documentElement;!function(t){const e=Go(t,[\"use\",\"svg:use\"]),s=[\"x\",\"y\",\"xlink:href\",\"href\",\"transform\"];for(const i of e){const e=i.attributes,r={};for(const t of e)t.value&&(r[t.name]=t.value);const n=(r[\"xlink:href\"]||r.href||\"\").slice(1);if(\"\"===n)return;const o=t.getElementById(n);if(null===o)return;let a=o.cloneNode(!0);const h=a.attributes,l={};for(const t of h)t.value&&(l[t.name]=t.value);const{x:c=0,y:u=0,transform:d=\"\"}=r,g=`${d} ${l.transform||\"\"} translate(${c}, ${u})`;if(Yo(a),/^svg$/i.test(a.nodeName)){const t=a.ownerDocument.createElementNS(cs,\"g\");Object.entries(l).forEach(e=>{let[s,i]=e;return t.setAttributeNS(cs,s,i)}),t.append(...a.childNodes),a=t}for(const t of e){if(!t)continue;const{name:e,value:i}=t;if(!s.includes(e))if(\"style\"===e){const t={};cr(i,t),Object.entries(l).forEach(e=>{let[s,i]=e;t[s]=i}),cr(l.style||\"\",t);const s=Object.entries(t).map(t=>t.join(\":\")).join(\";\");a.setAttribute(e,s)}else!l[e]&&a.setAttribute(e,i)}a.setAttribute(\"transform\",g),a.setAttribute(\"instantiated_by_use\",\"1\"),a.removeAttribute(\"id\"),i.parentNode.replaceChild(a,i)}}(t);const a=Array.from(o.getElementsByTagName(\"*\")),h={...Yo(o),crossOrigin:s,signal:r},l=a.filter(t=>(Yo(t),Jo(t)&&!function(t){let e=t;for(;e&&(e=e.parentElement);)if(e&&e.nodeName&&Vo.test(Wo(e))&&!e.getAttribute(\"instantiated_by_use\"))return!0;return!1}(t)));if(!l||l&&!l.length)return{objects:[],elements:[],options:{},allElements:[],options:h,allElements:a};const c={};a.filter(t=>\"clipPath\"===Wo(t)).forEach(t=>{t.setAttribute(\"originalTransform\",t.getAttribute(\"transform\")||\"\");const e=t.getAttribute(\"id\");c[e]=Array.from(t.getElementsByTagName(\"*\")).filter(t=>Jo(t))});const u=new Ko(l,h,e,t,c);return{objects:await u.parse(),elements:l,options:h,allElements:a}}function Zo(t,e,s){return Qo((new(g().DOMParser)).parseFromString(t.trim(),\"text/xml\"),e,s)}function ta(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return fetch(t.replace(/^\\n\\s*/,\"\").trim(),{signal:s.signal}).then(t=>{if(!t.ok)throw new r(`HTTP error! status: ${t.status}`);return t.text()}).then(t=>Zo(t,e,s)).catch(()=>({objects:[],elements:[],options:{},allElements:[]}))}const ea=t=>void 0!==t.webgl,sa=(t,e)=>{const s=vt({width:t,height:e}),i=pt().getContext(\"webgl\"),r={imageBuffer:new ArrayBuffer(t*e*4)},n={destinationWidth:t,destinationHeight:e,targetCanvas:s};let o;o=g().performance.now(),Fo.prototype.copyGLTo2D.call(r,i,n);const a=g().performance.now()-o;o=g().performance.now(),Fo.prototype.copyGLTo2DPutImageData.call(r,i,n);return a>g().performance.now()-o},ia=\"precision highp float\",ra=`\\n ${ia};\\n varying vec2 vTexCoord;\\n uniform sampler2D uTexture;\\n void main() {\\n gl_FragColor = texture2D(uTexture, vTexCoord);\\n }`,na=new RegExp(ia,\"g\");class oa{get type(){return this.constructor.type}constructor(){let{type:t,...e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.assign(this,this.constructor.defaults,e)}getFragmentSource(){return ra}getVertexSource(){return\"\\n attribute vec2 aPosition;\\n varying vec2 vTexCoord;\\n void main() {\\n vTexCoord = aPosition;\\n gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n }\"}createProgram(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getFragmentSource(),s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.getVertexSource();const{WebGLProbe:{GLPrecision:i=\"highp\"}}=u();\"highp\"!==i&&(e=e.replace(na,ia.replace(\"highp\",i)));const n=t.createShader(t.VERTEX_SHADER),o=t.createShader(t.FRAGMENT_SHADER),a=t.createProgram();if(!n||!o||!a)throw new r(\"Vertex, fragment shader or program creation error\");if(t.shaderSource(n,s),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new r(`Vertex shader compile error for ${this.type}: ${t.getShaderInfoLog(n)}`);if(t.shaderSource(o,e),t.compileShader(o),!t.getShaderParameter(o,t.COMPILE_STATUS))throw new r(`Fragment shader compile error for ${this.type}: ${t.getShaderInfoLog(o)}`);if(t.attachShader(a,n),t.attachShader(a,o),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new r(`Shader link error for \"${this.type}\" ${t.getProgramInfoLog(a)}`);const h=this.getUniformLocations(t,a)||{};return h.uStepW=t.getUniformLocation(a,\"uStepW\"),h.uStepH=t.getUniformLocation(a,\"uStepH\"),{program:a,attributeLocations:this.getAttributeLocations(t,a),uniformLocations:h}}getAttributeLocations(t,e){return{aPosition:t.getAttribLocation(e,\"aPosition\")}}getUniformLocations(t,e){const s=this.constructor.uniformLocations,i={};for(let r=0;r<s.length;r++)i[s[r]]=t.getUniformLocation(e,s[r]);return i}sendAttributeData(t,e,s){const i=e.aPosition,r=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,r),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,s,t.STATIC_DRAW)}_setupFrameBuffer(t){const e=t.context;if(t.passes>1){const s=t.destinationWidth,i=t.destinationHeight;t.sourceWidth===s&&t.sourceHeight===i||(e.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(e,s,i)),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t.targetTexture,0)}else e.bindFramebuffer(e.FRAMEBUFFER,null),e.finish()}_swapTextures(t){t.passes--,t.pass++;const e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e}isNeutralState(t){return!1}applyTo(t){ea(t)?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)}applyTo2d(t){}getCacheKey(){return this.type}retrieveShader(t){const e=this.getCacheKey();return t.programCache[e]||(t.programCache[e]=this.createProgram(t.context)),t.programCache[e]}applyToWebGL(t){const e=t.context,s=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(s.program),this.sendAttributeData(e,s.attributeLocations,t.aPosition),e.uniform1f(s.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(s.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,s.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)}bindAdditionalTexture(t,e,s){t.activeTexture(s),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)}unbindAdditionalTexture(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)}sendUniformData(t,e){}createHelpLayer(t){if(!t.helpLayer){const{sourceWidth:e,sourceHeight:s}=t,i=vt({width:e,height:s});t.helpLayer=i}}toObject(){const t=Object.keys(this.constructor.defaults||{});return{type:this.type,...t.reduce((t,e)=>(t[e]=this[e],t),{})}}toJSON(){return this.toObject()}static async fromObject(t,e){let{type:s,...i}=t;return new this(i)}}t(oa,\"type\",\"BaseFilter\"),t(oa,\"uniformLocations\",[]);const aa={multiply:\"gl_FragColor.rgb *= uColor.rgb;\\n\",screen:\"gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\\n\",add:\"gl_FragColor.rgb += uColor.rgb;\\n\",difference:\"gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\\n\",subtract:\"gl_FragColor.rgb -= uColor.rgb;\\n\",lighten:\"gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\\n\",darken:\"gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\\n\",exclusion:\"gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\\n\",overlay:\"\\n if (uColor.r < 0.5) {\\n gl_FragColor.r *= 2.0 * uColor.r;\\n } else {\\n gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\\n }\\n if (uColor.g < 0.5) {\\n gl_FragColor.g *= 2.0 * uColor.g;\\n } else {\\n gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\\n }\\n if (uColor.b < 0.5) {\\n gl_FragColor.b *= 2.0 * uColor.b;\\n } else {\\n gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\\n }\\n \",tint:\"\\n gl_FragColor.rgb *= (1.0 - uColor.a);\\n gl_FragColor.rgb += uColor.rgb;\\n \"};class ha extends oa{getCacheKey(){return`${this.type}_${this.mode}`}getFragmentSource(){return`\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform vec4 uColor;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n gl_FragColor = color;\\n if (color.a > 0.0) {\\n ${aa[this.mode]}\\n }\\n }\\n `}applyTo2d(t){let{imageData:{data:e}}=t;const s=new ze(this.color).getSource(),i=this.alpha,r=s[0]*i,n=s[1]*i,o=s[2]*i,a=1-i;for(let t=0;t<e.length;t+=4){const s=e[t],i=e[t+1],h=e[t+2];let l,c,u;switch(this.mode){case\"multiply\":l=s*r/255,c=i*n/255,u=h*o/255;break;case\"screen\":l=255-(255-s)*(255-r)/255,c=255-(255-i)*(255-n)/255,u=255-(255-h)*(255-o)/255;break;case\"add\":l=s+r,c=i+n,u=h+o;break;case\"difference\":l=Math.abs(s-r),c=Math.abs(i-n),u=Math.abs(h-o);break;case\"subtract\":l=s-r,c=i-n,u=h-o;break;case\"darken\":l=Math.min(s,r),c=Math.min(i,n),u=Math.min(h,o);break;case\"lighten\":l=Math.max(s,r),c=Math.max(i,n),u=Math.max(h,o);break;case\"overlay\":l=r<128?2*s*r/255:255-2*(255-s)*(255-r)/255,c=n<128?2*i*n/255:255-2*(255-i)*(255-n)/255,u=o<128?2*h*o/255:255-2*(255-h)*(255-o)/255;break;case\"exclusion\":l=r+s-2*r*s/255,c=n+i-2*n*i/255,u=o+h-2*o*h/255;break;case\"tint\":l=r+s*a,c=n+i*a,u=o+h*a}e[t]=l,e[t+1]=c,e[t+2]=u}}sendUniformData(t,e){const s=new ze(this.color).getSource();s[0]=this.alpha*s[0]/255,s[1]=this.alpha*s[1]/255,s[2]=this.alpha*s[2]/255,s[3]=this.alpha,t.uniform4fv(e.uColor,s)}}t(ha,\"defaults\",{color:\"#F95C63\",mode:\"multiply\",alpha:1}),t(ha,\"type\",\"BlendColor\"),t(ha,\"uniformLocations\",[\"uColor\"]),tt.setClass(ha);const la={multiply:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform sampler2D uImage;\\n uniform vec4 uColor;\\n varying vec2 vTexCoord;\\n varying vec2 vTexCoord2;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n vec4 color2 = texture2D(uImage, vTexCoord2);\\n color.rgba *= color2.rgba;\\n gl_FragColor = color;\\n }\\n \",mask:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform sampler2D uImage;\\n uniform vec4 uColor;\\n varying vec2 vTexCoord;\\n varying vec2 vTexCoord2;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n vec4 color2 = texture2D(uImage, vTexCoord2);\\n color.a = color2.a;\\n gl_FragColor = color;\\n }\\n \"};class ca extends oa{getCacheKey(){return`${this.type}_${this.mode}`}getFragmentSource(){return la[this.mode]}getVertexSource(){return\"\\n attribute vec2 aPosition;\\n varying vec2 vTexCoord;\\n varying vec2 vTexCoord2;\\n uniform mat3 uTransformMatrix;\\n void main() {\\n vTexCoord = aPosition;\\n vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\\n gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n }\\n \"}applyToWebGL(t){const e=t.context,s=this.createTexture(t.filterBackend,this.image);this.bindAdditionalTexture(e,s,e.TEXTURE1),super.applyToWebGL(t),this.unbindAdditionalTexture(e,e.TEXTURE1)}createTexture(t,e){return t.getCachedTexture(e.cacheKey,e.getElement())}calculateMatrix(){const t=this.image,{width:e,height:s}=t.getElement();return[1/t.scaleX,0,0,0,1/t.scaleY,0,-t.left/e,-t.top/s,1]}applyTo2d(t){let{imageData:{data:e,width:s,height:i},filterBackend:{resources:r}}=t;const n=this.image;r.blendImage||(r.blendImage=pt());const o=r.blendImage,a=o.getContext(\"2d\");o.width!==s||o.height!==i?(o.width=s,o.height=i):a.clearRect(0,0,s,i),a.setTransform(n.scaleX,0,0,n.scaleY,n.left,n.top),a.drawImage(n.getElement(),0,0,s,i);const h=a.getImageData(0,0,s,i).data;for(let t=0;t<e.length;t+=4){const s=e[t],i=e[t+1],r=e[t+2],n=e[t+3],o=h[t],a=h[t+1],l=h[t+2],c=h[t+3];switch(this.mode){case\"multiply\":e[t]=s*o/255,e[t+1]=i*a/255,e[t+2]=r*l/255,e[t+3]=n*c/255;break;case\"mask\":e[t+3]=c}}}sendUniformData(t,e){const s=this.calculateMatrix();t.uniform1i(e.uImage,1),t.uniformMatrix3fv(e.uTransformMatrix,!1,s)}toObject(){return{...super.toObject(),image:this.image&&this.image.toObject()}}static async fromObject(t,e){let{type:s,image:i,...r}=t;return Xo.fromObject(i,e).then(t=>new this({...r,image:t}))}}t(ca,\"type\",\"BlendImage\"),t(ca,\"defaults\",{mode:\"multiply\",alpha:1}),t(ca,\"uniformLocations\",[\"uTransformMatrix\",\"uImage\"]),tt.setClass(ca);class ua extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform vec2 uDelta;\\n varying vec2 vTexCoord;\\n const float nSamples = 15.0;\\n vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\\n float random(vec3 scale) {\\n /* use the fragment position for a different seed per-pixel */\\n return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\\n }\\n void main() {\\n vec4 color = vec4(0.0);\\n float totalC = 0.0;\\n float totalA = 0.0;\\n float offset = random(v3offset);\\n for (float t = -nSamples; t <= nSamples; t++) {\\n float percent = (t + offset - 0.5) / nSamples;\\n vec4 sample = texture2D(uTexture, vTexCoord + uDelta * percent);\\n float weight = 1.0 - abs(percent);\\n float alpha = weight * sample.a;\\n color.rgb += sample.rgb * alpha;\\n color.a += alpha;\\n totalA += weight;\\n totalC += alpha;\\n }\\n gl_FragColor.rgb = color.rgb / totalC;\\n gl_FragColor.a = color.a / totalA;\\n }\\n \"}applyTo(t){ea(t)?(this.aspectRatio=t.sourceWidth/t.sourceHeight,t.passes++,this._setupFrameBuffer(t),this.horizontal=!0,this.applyToWebGL(t),this._swapTextures(t),this._setupFrameBuffer(t),this.horizontal=!1,this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)}applyTo2d(t){let{imageData:{data:e,width:s,height:i}}=t;this.aspectRatio=s/i,this.horizontal=!0;let r=this.getBlurValue()*s;const n=new Uint8ClampedArray(e),o=15,a=4*s;for(let t=0;t<e.length;t+=4){let s=0,i=0,h=0,l=0,c=0;const u=t-t%a,d=u+a;for(let n=-14;n<o;n++){const a=n/o,g=4*Math.floor(r*a),f=1-Math.abs(a);let p=t+g;p<u?p=u:p>d&&(p=d);const m=e[p+3]*f;s+=e[p]*m,i+=e[p+1]*m,h+=e[p+2]*m,l+=m,c+=f}n[t]=s/l,n[t+1]=i/l,n[t+2]=h/l,n[t+3]=l/c}this.horizontal=!1,r=this.getBlurValue()*i;for(let t=0;t<n.length;t+=4){let s=0,i=0,h=0,l=0,c=0;const u=t%a,d=n.length-a+u;for(let e=-14;e<o;e++){const g=e/o,f=Math.floor(r*g)*a,p=1-Math.abs(g);let m=t+f;m<u?m=u:m>d&&(m=d);const v=n[m+3]*p;s+=n[m]*v,i+=n[m+1]*v,h+=n[m+2]*v,l+=v,c+=p}e[t]=s/l,e[t+1]=i/l,e[t+2]=h/l,e[t+3]=l/c}}sendUniformData(t,e){const s=this.chooseRightDelta();t.uniform2fv(e.uDelta,s)}isNeutralState(){return 0===this.blur}getBlurValue(){let t=1;const{horizontal:e,aspectRatio:s}=this;return e?s>1&&(t=1/s):s<1&&(t=s),t*this.blur*.12}chooseRightDelta(){const t=this.getBlurValue();return this.horizontal?[t,0]:[0,t]}}t(ua,\"type\",\"Blur\"),t(ua,\"defaults\",{blur:0}),t(ua,\"uniformLocations\",[\"uDelta\"]),tt.setClass(ua);class da extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uBrightness;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n color.rgb += uBrightness;\\n gl_FragColor = color;\\n }\\n\"}applyTo2d(t){let{imageData:{data:e}}=t;const s=Math.round(255*this.brightness);for(let t=0;t<e.length;t+=4)e[t]+=s,e[t+1]+=s,e[t+2]+=s}isNeutralState(){return 0===this.brightness}sendUniformData(t,e){t.uniform1f(e.uBrightness,this.brightness)}}t(da,\"type\",\"Brightness\"),t(da,\"defaults\",{brightness:0}),t(da,\"uniformLocations\",[\"uBrightness\"]),tt.setClass(da);const ga={matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],colorsOnly:!0};class fa extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n varying vec2 vTexCoord;\\n uniform mat4 uColorMatrix;\\n uniform vec4 uConstants;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n color *= uColorMatrix;\\n color += uConstants;\\n gl_FragColor = color;\\n }\"}applyTo2d(t){const e=t.imageData.data,s=this.matrix,i=this.colorsOnly;for(let t=0;t<e.length;t+=4){const r=e[t],n=e[t+1],o=e[t+2];if(e[t]=r*s[0]+n*s[1]+o*s[2]+255*s[4],e[t+1]=r*s[5]+n*s[6]+o*s[7]+255*s[9],e[t+2]=r*s[10]+n*s[11]+o*s[12]+255*s[14],!i){const i=e[t+3];e[t]+=i*s[3],e[t+1]+=i*s[8],e[t+2]+=i*s[13],e[t+3]=r*s[15]+n*s[16]+o*s[17]+i*s[18]+255*s[19]}}}sendUniformData(t,e){const s=this.matrix,i=[s[0],s[1],s[2],s[3],s[5],s[6],s[7],s[8],s[10],s[11],s[12],s[13],s[15],s[16],s[17],s[18]],r=[s[4],s[9],s[14],s[19]];t.uniformMatrix4fv(e.uColorMatrix,!1,i),t.uniform4fv(e.uConstants,r)}toObject(){return{...super.toObject(),matrix:[...this.matrix]}}}function pa(e,s){var i;const r=(t(i=class extends fa{toObject(){return{type:this.type,colorsOnly:this.colorsOnly}}},\"type\",e),t(i,\"defaults\",{colorsOnly:!1,matrix:s}),i);return tt.setClass(r,e),r}t(fa,\"type\",\"ColorMatrix\"),t(fa,\"defaults\",ga),t(fa,\"uniformLocations\",[\"uColorMatrix\",\"uConstants\"]),tt.setClass(fa);const ma=pa(\"Brownie\",[.5997,.34553,-.27082,0,.186,-.0377,.86095,.15059,0,-.1449,.24113,-.07441,.44972,0,-.02965,0,0,0,1,0]),va=pa(\"Vintage\",[.62793,.32021,-.03965,0,.03784,.02578,.64411,.03259,0,.02926,.0466,-.08512,.52416,0,.02023,0,0,0,1,0]),ya=pa(\"Kodachrome\",[1.12855,-.39673,-.03992,0,.24991,-.16404,1.08352,-.05498,0,.09698,-.16786,-.56034,1.60148,0,.13972,0,0,0,1,0]),_a=pa(\"Technicolor\",[1.91252,-.85453,-.09155,0,.04624,-.30878,1.76589,-.10601,0,-.27589,-.2311,-.75018,1.84759,0,.12137,0,0,0,1,0]),xa=pa(\"Polaroid\",[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0]),Ca=pa(\"Sepia\",[.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0]),ba=pa(\"BlackWhite\",[1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,1.5,1.5,1.5,0,-1,0,0,0,1,0]);class Sa extends oa{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(t),this.subFilters=t.subFilters||[]}applyTo(t){ea(t)&&(t.passes+=this.subFilters.length-1),this.subFilters.forEach(e=>{e.applyTo(t)})}toObject(){return{type:this.type,subFilters:this.subFilters.map(t=>t.toObject())}}isNeutralState(){return!this.subFilters.some(t=>!t.isNeutralState())}static fromObject(t,e){return Promise.all((t.subFilters||[]).map(t=>tt.getClass(t.type).fromObject(t,e))).then(t=>new this({subFilters:t}))}}t(Sa,\"type\",\"Composed\"),tt.setClass(Sa);class wa extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uContrast;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\\n color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\\n gl_FragColor = color;\\n }\"}isNeutralState(){return 0===this.contrast}applyTo2d(t){let{imageData:{data:e}}=t;const s=Math.floor(255*this.contrast),i=259*(s+255)/(255*(259-s));for(let t=0;t<e.length;t+=4)e[t]=i*(e[t]-128)+128,e[t+1]=i*(e[t+1]-128)+128,e[t+2]=i*(e[t+2]-128)+128}sendUniformData(t,e){t.uniform1f(e.uContrast,this.contrast)}}t(wa,\"type\",\"Contrast\"),t(wa,\"defaults\",{contrast:0}),t(wa,\"uniformLocations\",[\"uContrast\"]),tt.setClass(wa);const Ta={Convolute_3_1:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[9];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 0);\\n for (float h = 0.0; h < 3.0; h+=1.0) {\\n for (float w = 0.0; w < 3.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\\n color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\\n }\\n }\\n gl_FragColor = color;\\n }\\n \",Convolute_3_0:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[9];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 1);\\n for (float h = 0.0; h < 3.0; h+=1.0) {\\n for (float w = 0.0; w < 3.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\\n color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\\n }\\n }\\n float alpha = texture2D(uTexture, vTexCoord).a;\\n gl_FragColor = color;\\n gl_FragColor.a = alpha;\\n }\\n \",Convolute_5_1:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[25];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 0);\\n for (float h = 0.0; h < 5.0; h+=1.0) {\\n for (float w = 0.0; w < 5.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\\n }\\n }\\n gl_FragColor = color;\\n }\\n \",Convolute_5_0:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[25];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 1);\\n for (float h = 0.0; h < 5.0; h+=1.0) {\\n for (float w = 0.0; w < 5.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\\n }\\n }\\n float alpha = texture2D(uTexture, vTexCoord).a;\\n gl_FragColor = color;\\n gl_FragColor.a = alpha;\\n }\\n \",Convolute_7_1:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[49];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 0);\\n for (float h = 0.0; h < 7.0; h+=1.0) {\\n for (float w = 0.0; w < 7.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\\n }\\n }\\n gl_FragColor = color;\\n }\\n \",Convolute_7_0:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[49];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 1);\\n for (float h = 0.0; h < 7.0; h+=1.0) {\\n for (float w = 0.0; w < 7.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\\n }\\n }\\n float alpha = texture2D(uTexture, vTexCoord).a;\\n gl_FragColor = color;\\n gl_FragColor.a = alpha;\\n }\\n \",Convolute_9_1:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[81];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 0);\\n for (float h = 0.0; h < 9.0; h+=1.0) {\\n for (float w = 0.0; w < 9.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\\n }\\n }\\n gl_FragColor = color;\\n }\\n \",Convolute_9_0:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uMatrix[81];\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = vec4(0, 0, 0, 1);\\n for (float h = 0.0; h < 9.0; h+=1.0) {\\n for (float w = 0.0; w < 9.0; w+=1.0) {\\n vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\\n }\\n }\\n float alpha = texture2D(uTexture, vTexCoord).a;\\n gl_FragColor = color;\\n gl_FragColor.a = alpha;\\n }\\n \"};class Oa extends oa{getCacheKey(){return`${this.type}_${Math.sqrt(this.matrix.length)}_${this.opaque?1:0}`}getFragmentSource(){return Ta[this.getCacheKey()]}applyTo2d(t){const e=t.imageData,s=e.data,i=this.matrix,r=Math.round(Math.sqrt(i.length)),n=Math.floor(r/2),o=e.width,a=e.height,h=t.ctx.createImageData(o,a),l=h.data,c=this.opaque?1:0;let u,d,g,f,p,m,v,y,_,x,C,b,S;for(C=0;C<a;C++)for(x=0;x<o;x++){for(p=4*(C*o+x),u=0,d=0,g=0,f=0,S=0;S<r;S++)for(b=0;b<r;b++)v=C+S-n,m=x+b-n,v<0||v>=a||m<0||m>=o||(y=4*(v*o+m),_=i[S*r+b],u+=s[y]*_,d+=s[y+1]*_,g+=s[y+2]*_,c||(f+=s[y+3]*_));l[p]=u,l[p+1]=d,l[p+2]=g,l[p+3]=c?s[p+3]:f}t.imageData=h}sendUniformData(t,e){t.uniform1fv(e.uMatrix,this.matrix)}toObject(){return{...super.toObject(),opaque:this.opaque,matrix:[...this.matrix]}}}t(Oa,\"type\",\"Convolute\"),t(Oa,\"defaults\",{opaque:!1,matrix:[0,0,0,0,1,0,0,0,0]}),t(Oa,\"uniformLocations\",[\"uMatrix\",\"uOpaque\",\"uHalfSize\",\"uSize\"]),tt.setClass(Oa);const ka=\"Gamma\";class Da extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform vec3 uGamma;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n vec3 correction = (1.0 / uGamma);\\n color.r = pow(color.r, correction.r);\\n color.g = pow(color.g, correction.g);\\n color.b = pow(color.b, correction.b);\\n gl_FragColor = color;\\n gl_FragColor.rgb *= color.a;\\n }\\n\"}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(t),this.gamma=t.gamma||this.constructor.defaults.gamma.concat()}applyTo2d(t){let{imageData:{data:e}}=t;const s=this.gamma,i=1/s[0],r=1/s[1],n=1/s[2];this.rgbValues||(this.rgbValues={r:new Uint8Array(256),g:new Uint8Array(256),b:new Uint8Array(256)});const o=this.rgbValues;for(let t=0;t<256;t++)o.r[t]=255*Math.pow(t/255,i),o.g[t]=255*Math.pow(t/255,r),o.b[t]=255*Math.pow(t/255,n);for(let t=0;t<e.length;t+=4)e[t]=o.r[e[t]],e[t+1]=o.g[e[t+1]],e[t+2]=o.b[e[t+2]]}sendUniformData(t,e){t.uniform3fv(e.uGamma,this.gamma)}isNeutralState(){const{gamma:t}=this;return 1===t[0]&&1===t[1]&&1===t[2]}toObject(){return{type:ka,gamma:this.gamma.concat()}}}t(Da,\"type\",ka),t(Da,\"defaults\",{gamma:[1,1,1]}),t(Da,\"uniformLocations\",[\"uGamma\"]),tt.setClass(Da);const Ma={average:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n float average = (color.r + color.b + color.g) / 3.0;\\n gl_FragColor = vec4(average, average, average, color.a);\\n }\\n \",lightness:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform int uMode;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 col = texture2D(uTexture, vTexCoord);\\n float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\\n gl_FragColor = vec4(average, average, average, col.a);\\n }\\n \",luminosity:\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform int uMode;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 col = texture2D(uTexture, vTexCoord);\\n float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\\n gl_FragColor = vec4(average, average, average, col.a);\\n }\\n \"};class Ea extends oa{applyTo2d(t){let{imageData:{data:e}}=t;for(let t,s=0;s<e.length;s+=4){const i=e[s],r=e[s+1],n=e[s+2];switch(this.mode){case\"average\":t=(i+r+n)/3;break;case\"lightness\":t=(Math.min(i,r,n)+Math.max(i,r,n))/2;break;case\"luminosity\":t=.21*i+.72*r+.07*n}e[s+2]=e[s+1]=e[s]=t}}getCacheKey(){return`${this.type}_${this.mode}`}getFragmentSource(){return Ma[this.mode]}sendUniformData(t,e){t.uniform1i(e.uMode,1)}isNeutralState(){return!1}}t(Ea,\"type\",\"Grayscale\"),t(Ea,\"defaults\",{mode:\"average\"}),t(Ea,\"uniformLocations\",[\"uMode\"]),tt.setClass(Ea);const Pa={...ga,rotation:0};class Aa extends fa{calculateMatrix(){const t=this.rotation*Math.PI,e=rt(t),s=nt(t),i=1/3,r=Math.sqrt(i)*s,n=1-e;this.matrix=[e+n/3,i*n-r,i*n+r,0,0,i*n+r,e+i*n,i*n-r,0,0,i*n-r,i*n+r,e+i*n,0,0,0,0,0,1,0]}isNeutralState(){return 0===this.rotation}applyTo(t){this.calculateMatrix(),super.applyTo(t)}toObject(){return{type:this.type,rotation:this.rotation}}}t(Aa,\"type\",\"HueRotation\"),t(Aa,\"defaults\",Pa),tt.setClass(Aa);class ja extends oa{applyTo2d(t){let{imageData:{data:e}}=t;for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[t+2]=255-e[t+2],this.alpha&&(e[t+3]=255-e[t+3])}getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform int uInvert;\\n uniform int uAlpha;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n if (uInvert == 1) {\\n if (uAlpha == 1) {\\n gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,1.0 -color.a);\\n } else {\\n gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\\n }\\n } else {\\n gl_FragColor = color;\\n }\\n }\\n\"}isNeutralState(){return!this.invert}sendUniformData(t,e){t.uniform1i(e.uInvert,Number(this.invert)),t.uniform1i(e.uAlpha,Number(this.alpha))}}t(ja,\"type\",\"Invert\"),t(ja,\"defaults\",{alpha:!1,invert:!0}),t(ja,\"uniformLocations\",[\"uInvert\",\"uAlpha\"]),tt.setClass(ja);class Fa extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uStepH;\\n uniform float uNoise;\\n uniform float uSeed;\\n varying vec2 vTexCoord;\\n float rand(vec2 co, float seed, float vScale) {\\n return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\\n }\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\\n gl_FragColor = color;\\n }\\n\"}applyTo2d(t){let{imageData:{data:e}}=t;const s=this.noise;for(let t=0;t<e.length;t+=4){const i=(.5-Math.random())*s;e[t]+=i,e[t+1]+=i,e[t+2]+=i}}sendUniformData(t,e){t.uniform1f(e.uNoise,this.noise/255),t.uniform1f(e.uSeed,Math.random())}isNeutralState(){return 0===this.noise}}t(Fa,\"type\",\"Noise\"),t(Fa,\"defaults\",{noise:0}),t(Fa,\"uniformLocations\",[\"uNoise\",\"uSeed\"]),tt.setClass(Fa);class La extends oa{applyTo2d(t){let{imageData:{data:e,width:s,height:i}}=t;for(let t=0;t<i;t+=this.blocksize)for(let r=0;r<s;r+=this.blocksize){const n=4*t*s+4*r,o=e[n],a=e[n+1],h=e[n+2],l=e[n+3];for(let n=t;n<Math.min(t+this.blocksize,i);n++)for(let t=r;t<Math.min(r+this.blocksize,s);t++){const i=4*n*s+4*t;e[i]=o,e[i+1]=a,e[i+2]=h,e[i+3]=l}}}isNeutralState(){return 1===this.blocksize}getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uBlocksize;\\n uniform float uStepW;\\n uniform float uStepH;\\n varying vec2 vTexCoord;\\n void main() {\\n float blockW = uBlocksize * uStepW;\\n float blockH = uBlocksize * uStepH;\\n int posX = int(vTexCoord.x / blockW);\\n int posY = int(vTexCoord.y / blockH);\\n float fposX = float(posX);\\n float fposY = float(posY);\\n vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\\n vec4 color = texture2D(uTexture, squareCoords);\\n gl_FragColor = color;\\n }\\n\"}sendUniformData(t,e){t.uniform1f(e.uBlocksize,this.blocksize)}}t(La,\"type\",\"Pixelate\"),t(La,\"defaults\",{blocksize:4}),t(La,\"uniformLocations\",[\"uBlocksize\"]),tt.setClass(La);class Ia extends oa{getFragmentSource(){return\"\\nprecision highp float;\\nuniform sampler2D uTexture;\\nuniform vec4 uLow;\\nuniform vec4 uHigh;\\nvarying vec2 vTexCoord;\\nvoid main() {\\n gl_FragColor = texture2D(uTexture, vTexCoord);\\n if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\\n gl_FragColor.a = 0.0;\\n }\\n}\\n\"}applyTo2d(t){let{imageData:{data:e}}=t;const s=255*this.distance,i=new ze(this.color).getSource(),r=[i[0]-s,i[1]-s,i[2]-s],n=[i[0]+s,i[1]+s,i[2]+s];for(let t=0;t<e.length;t+=4){const s=e[t],i=e[t+1],o=e[t+2];s>r[0]&&i>r[1]&&o>r[2]&&s<n[0]&&i<n[1]&&o<n[2]&&(e[t+3]=0)}}sendUniformData(t,e){const s=new ze(this.color).getSource(),i=this.distance,r=[0+s[0]/255-i,0+s[1]/255-i,0+s[2]/255-i,1],n=[s[0]/255+i,s[1]/255+i,s[2]/255+i,1];t.uniform4fv(e.uLow,r),t.uniform4fv(e.uHigh,n)}}t(Ia,\"type\",\"RemoveColor\"),t(Ia,\"defaults\",{color:\"#FFFFFF\",distance:.02,useAlpha:!1}),t(Ia,\"uniformLocations\",[\"uLow\",\"uHigh\"]),tt.setClass(Ia);class Ra extends oa{sendUniformData(t,e){t.uniform2fv(e.uDelta,this.horizontal?[1/this.width,0]:[0,1/this.height]),t.uniform1fv(e.uTaps,this.taps)}getFilterWindow(){const t=this.tempScale;return Math.ceil(this.lanczosLobes/t)}getCacheKey(){const t=this.getFilterWindow();return`${this.type}_${t}`}getFragmentSource(){const t=this.getFilterWindow();return this.generateShader(t)}getTaps(){const t=this.lanczosCreate(this.lanczosLobes),e=this.tempScale,s=this.getFilterWindow(),i=new Array(s);for(let r=1;r<=s;r++)i[r-1]=t(r*e);return i}generateShader(t){const e=new Array(t);for(let s=1;s<=t;s++)e[s-1]=`${s}.0 * uDelta`;return`\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform vec2 uDelta;\\n varying vec2 vTexCoord;\\n uniform float uTaps[${t}];\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n float sum = 1.0;\\n ${e.map((t,e)=>`\\n color += texture2D(uTexture, vTexCoord + ${t}) * uTaps[${e}] + texture2D(uTexture, vTexCoord - ${t}) * uTaps[${e}];\\n sum += 2.0 * uTaps[${e}];\\n `).join(\"\\n\")}\\n gl_FragColor = color / sum;\\n }\\n `}applyToForWebgl(t){t.passes++,this.width=t.sourceWidth,this.horizontal=!0,this.dW=Math.round(this.width*this.scaleX),this.dH=t.sourceHeight,this.tempScale=this.dW/this.width,this.taps=this.getTaps(),t.destinationWidth=this.dW,super.applyTo(t),t.sourceWidth=t.destinationWidth,this.height=t.sourceHeight,this.horizontal=!1,this.dH=Math.round(this.height*this.scaleY),this.tempScale=this.dH/this.height,this.taps=this.getTaps(),t.destinationHeight=this.dH,super.applyTo(t),t.sourceHeight=t.destinationHeight}applyTo(t){ea(t)?this.applyToForWebgl(t):this.applyTo2d(t)}isNeutralState(){return 1===this.scaleX&&1===this.scaleY}lanczosCreate(t){return e=>{if(e>=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;const s=(e*=Math.PI)/t;return Math.sin(e)/e*Math.sin(s)/s}}applyTo2d(t){const e=t.imageData,s=this.scaleX,i=this.scaleY;this.rcpScaleX=1/s,this.rcpScaleY=1/i;const r=e.width,n=e.height,o=Math.round(r*s),a=Math.round(n*i);let h;h=\"sliceHack\"===this.resizeType?this.sliceByTwo(t,r,n,o,a):\"hermite\"===this.resizeType?this.hermiteFastResize(t,r,n,o,a):\"bilinear\"===this.resizeType?this.bilinearFiltering(t,r,n,o,a):\"lanczos\"===this.resizeType?this.lanczosResize(t,r,n,o,a):new ImageData(o,a),t.imageData=h}sliceByTwo(t,e,s,i,r){const n=t.imageData,o=.5;let a=!1,h=!1,l=e*o,c=s*o;const u=t.filterBackend.resources;let d=0,g=0;const f=e;let p=0;u.sliceByTwo||(u.sliceByTwo=pt());const m=u.sliceByTwo;(m.width<1.5*e||m.height<s)&&(m.width=1.5*e,m.height=s);const v=m.getContext(\"2d\");for(v.clearRect(0,0,1.5*e,s),v.putImageData(n,0,0),i=Math.floor(i),r=Math.floor(r);!a||!h;)e=l,s=c,i<Math.floor(l*o)?l=Math.floor(l*o):(l=i,a=!0),r<Math.floor(c*o)?c=Math.floor(c*o):(c=r,h=!0),v.drawImage(m,d,g,e,s,f,p,l,c),d=f,g=p,p+=c;return v.getImageData(d,g,i,r)}lanczosResize(t,e,s,i,r){const n=t.imageData.data,o=t.ctx.createImageData(i,r),a=o.data,h=this.lanczosCreate(this.lanczosLobes),l=this.rcpScaleX,c=this.rcpScaleY,u=2/this.rcpScaleX,d=2/this.rcpScaleY,g=Math.ceil(l*this.lanczosLobes/2),f=Math.ceil(c*this.lanczosLobes/2),p={},m={x:0,y:0},v={x:0,y:0};return function t(y){let _,x,C,b,S,w,T,O,k,D,M;for(m.x=(y+.5)*l,v.x=Math.floor(m.x),_=0;_<r;_++){for(m.y=(_+.5)*c,v.y=Math.floor(m.y),S=0,w=0,T=0,O=0,k=0,x=v.x-g;x<=v.x+g;x++)if(!(x<0||x>=e)){D=Math.floor(1e3*Math.abs(x-m.x)),p[D]||(p[D]={});for(let t=v.y-f;t<=v.y+f;t++)t<0||t>=s||(M=Math.floor(1e3*Math.abs(t-m.y)),p[D][M]||(p[D][M]=h(Math.sqrt(Math.pow(D*u,2)+Math.pow(M*d,2))/1e3)),C=p[D][M],C>0&&(b=4*(t*e+x),S+=C,w+=C*n[b],T+=C*n[b+1],O+=C*n[b+2],k+=C*n[b+3]))}b=4*(_*i+y),a[b]=w/S,a[b+1]=T/S,a[b+2]=O/S,a[b+3]=k/S}return++y<i?t(y):o}(0)}bilinearFiltering(t,e,s,i,r){let n,o,a,h,l,c,u,d,g,f,p,m,v,y=0;const _=this.rcpScaleX,x=this.rcpScaleY,C=4*(e-1),b=t.imageData.data,S=t.ctx.createImageData(i,r),w=S.data;for(u=0;u<r;u++)for(d=0;d<i;d++)for(l=Math.floor(_*d),c=Math.floor(x*u),g=_*d-l,f=x*u-c,v=4*(c*e+l),p=0;p<4;p++)n=b[v+p],o=b[v+4+p],a=b[v+C+p],h=b[v+C+4+p],m=n*(1-g)*(1-f)+o*g*(1-f)+a*f*(1-g)+h*g*f,w[y++]=m;return S}hermiteFastResize(t,e,s,i,r){const n=this.rcpScaleX,o=this.rcpScaleY,a=Math.ceil(n/2),h=Math.ceil(o/2),l=t.imageData.data,c=t.ctx.createImageData(i,r),u=c.data;for(let t=0;t<r;t++)for(let s=0;s<i;s++){const r=4*(s+t*i);let c=0,d=0,g=0,f=0,p=0,m=0,v=0;const y=(t+.5)*o;for(let i=Math.floor(t*o);i<(t+1)*o;i++){const t=Math.abs(y-(i+.5))/h,r=(s+.5)*n,o=t*t;for(let t=Math.floor(s*n);t<(s+1)*n;t++){let s=Math.abs(r-(t+.5))/a;const n=Math.sqrt(o+s*s);n>1&&n<-1||(c=2*n*n*n-3*n*n+1,c>0&&(s=4*(t+i*e),v+=c*l[s+3],g+=c,l[s+3]<255&&(c=c*l[s+3]/250),f+=c*l[s],p+=c*l[s+1],m+=c*l[s+2],d+=c))}}u[r]=f/d,u[r+1]=p/d,u[r+2]=m/d,u[r+3]=v/g}return c}}t(Ra,\"type\",\"Resize\"),t(Ra,\"defaults\",{resizeType:\"hermite\",scaleX:1,scaleY:1,lanczosLobes:3}),t(Ra,\"uniformLocations\",[\"uDelta\",\"uTaps\"]),tt.setClass(Ra);class Ba extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uSaturation;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n float rgMax = max(color.r, color.g);\\n float rgbMax = max(rgMax, color.b);\\n color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\\n color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\\n color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\\n gl_FragColor = color;\\n }\\n\"}applyTo2d(t){let{imageData:{data:e}}=t;const s=-this.saturation;for(let t=0;t<e.length;t+=4){const i=e[t],r=e[t+1],n=e[t+2],o=Math.max(i,r,n);e[t]+=o!==i?(o-i)*s:0,e[t+1]+=o!==r?(o-r)*s:0,e[t+2]+=o!==n?(o-n)*s:0}}sendUniformData(t,e){t.uniform1f(e.uSaturation,-this.saturation)}isNeutralState(){return 0===this.saturation}}t(Ba,\"type\",\"Saturation\"),t(Ba,\"defaults\",{saturation:0}),t(Ba,\"uniformLocations\",[\"uSaturation\"]),tt.setClass(Ba);class $a extends oa{getFragmentSource(){return\"\\n precision highp float;\\n uniform sampler2D uTexture;\\n uniform float uVibrance;\\n varying vec2 vTexCoord;\\n void main() {\\n vec4 color = texture2D(uTexture, vTexCoord);\\n float max = max(color.r, max(color.g, color.b));\\n float avg = (color.r + color.g + color.b) / 3.0;\\n float amt = (abs(max - avg) * 2.0) * uVibrance;\\n color.r += max != color.r ? (max - color.r) * amt : 0.00;\\n color.g += max != color.g ? (max - color.g) * amt : 0.00;\\n color.b += max != color.b ? (max - color.b) * amt : 0.00;\\n gl_FragColor = color;\\n }\\n\"}applyTo2d(t){let{imageData:{data:e}}=t;const s=-this.vibrance;for(let t=0;t<e.length;t+=4){const i=e[t],r=e[t+1],n=e[t+2],o=Math.max(i,r,n),a=(i+r+n)/3,h=2*Math.abs(o-a)/255*s;e[t]+=o!==i?(o-i)*h:0,e[t+1]+=o!==r?(o-r)*h:0,e[t+2]+=o!==n?(o-n)*h:0}}sendUniformData(t,e){t.uniform1f(e.uVibrance,-this.vibrance)}isNeutralState(){return 0===this.vibrance}}t($a,\"type\",\"Vibrance\"),t($a,\"defaults\",{vibrance:0}),t($a,\"uniformLocations\",[\"uVibrance\"]),tt.setClass($a);var Xa=Object.freeze({__proto__:null,BaseFilter:oa,BlackWhite:ba,BlendColor:ha,BlendImage:ca,Blur:ua,Brightness:da,Brownie:ma,ColorMatrix:fa,Composed:Sa,Contrast:wa,Convolute:Oa,Gamma:Da,Grayscale:Ea,HueRotation:Aa,Invert:ja,Kodachrome:ya,Noise:Fa,Pixelate:La,Polaroid:xa,RemoveColor:Ia,Resize:Ra,Saturation:Ba,Sepia:Ca,Technicolor:_a,Vibrance:$a,Vintage:va});export{Ao as ActiveSelection,zn as BaseBrush,Vs as BaseFabricObject,Mn as Canvas,jo as Canvas2dFilterBackend,hn as CanvasDOMManager,qn as Circle,Kn as CircleBrush,Mo as ClipPathLayout,ze as Color,ti as Control,io as Ellipse,Xo as FabricImage,ki as FabricObject,go as FabricText,br as FitContentLayout,Eo as FixedLayout,Vn as Gradient,Or as Group,ko as IText,Xo as Image,Ti as InteractiveFabricObject,Ys as Intersection,wr as LayoutManager,Cr as LayoutStrategy,to as Line,ki as Object,st as Observable,Hn as Path,Gn as Pattern,Qn as PatternBrush,Nn as PencilBrush,ot as Point,oo as Polygon,no as Polyline,pr as Rect,Cs as Shadow,Jn as SprayBrush,se as StaticCanvas,te as StaticCanvasDOMManager,go as Text,Do as Textbox,eo as Triangle,Fo as WebGLFilterBackend,p as cache,tt as classRegistry,s as config,Cn as controlsUtils,lt as createCollectionMixin,Xa as filters,u as getEnv,d as getFabricDocument,g as getFabricWindow,Ro as getFilterBackend,b as iMatrix,Io as initFilterBackend,sa as isPutImageFaster,ea as isWebGLPipelineState,Zo as loadSVGFromString,ta as loadSVGFromURL,Qo as parseSVGDocument,et as runningAnimations,c as setEnv,Bo as setFilterBackend,on as util,m as version};\n//# sourceMappingURL=index.min.mjs.map\n","import { ref, shallowRef, type Ref, nextTick } from 'vue'\nimport { Canvas, FabricImage } from 'fabric'\nimport type { ImageSource, ExportOptions } from '@/types'\n\nexport function useFabricCanvas() {\n const canvas = shallowRef<Canvas | null>(null)\n const originalImage = shallowRef<FabricImage | null>(null)\n const isLoading = ref(false)\n const imageWidth = ref(0)\n const imageHeight = ref(0)\n\n function init(canvasEl: HTMLCanvasElement, container: HTMLElement) {\n canvas.value = new Canvas(canvasEl, {\n preserveObjectStacking: true,\n selection: true,\n backgroundColor: '#1a1a2e',\n })\n fitToContainer(container)\n }\n\n function fitToContainer(container: HTMLElement) {\n if (!canvas.value) return\n const w = container.clientWidth\n const h = container.clientHeight\n canvas.value.setDimensions({ width: w, height: h })\n canvas.value.renderAll()\n }\n\n async function loadImage(source: ImageSource): Promise<void> {\n if (!canvas.value) return\n isLoading.value = true\n\n try {\n let url: string\n let revokeUrl = false\n\n if (source instanceof File || source instanceof Blob) {\n url = URL.createObjectURL(source)\n revokeUrl = true\n } else {\n url = source\n }\n\n const img = await FabricImage.fromURL(url, { crossOrigin: 'anonymous' })\n\n const canvasWidth = canvas.value.getWidth()\n const canvasHeight = canvas.value.getHeight()\n const scale = Math.min(\n canvasWidth / (img.width ?? 1),\n canvasHeight / (img.height ?? 1),\n 1\n )\n\n img.scale(scale)\n img.set({\n left: (canvasWidth - img.getScaledWidth()) / 2,\n top: (canvasHeight - img.getScaledHeight()) / 2,\n selectable: false,\n evented: false,\n })\n\n canvas.value.clear()\n canvas.value.backgroundColor = '#1a1a2e'\n canvas.value.add(img)\n canvas.value.sendObjectToBack(img)\n originalImage.value = img\n imageWidth.value = img.width ?? 0\n imageHeight.value = img.height ?? 0\n canvas.value.renderAll()\n\n if (revokeUrl) {\n URL.revokeObjectURL(url)\n }\n } finally {\n isLoading.value = false\n }\n }\n\n async function exportImage(\n options: ExportOptions\n ): Promise<File | Blob | string | HTMLCanvasElement> {\n if (!canvas.value) throw new Error('Canvas not initialized')\n\n const format = options.mimeType.split('/')[1] || 'png'\n const dataURL = canvas.value.toDataURL({\n format: format as any,\n quality: options.quality,\n multiplier: 1,\n })\n\n switch (options.format) {\n case 'dataurl':\n return dataURL\n case 'canvas':\n return canvas.value.toCanvasElement()\n case 'blob': {\n const response = await fetch(dataURL)\n return response.blob()\n }\n case 'file':\n default: {\n const response = await fetch(dataURL)\n const blob = await response.blob()\n const ext = format === 'jpeg' ? 'jpg' : format\n return new File([blob], `${options.fileName}.${ext}`, {\n type: options.mimeType,\n })\n }\n }\n }\n\n function dispose() {\n canvas.value?.dispose()\n canvas.value = null\n originalImage.value = null\n }\n\n return {\n canvas,\n originalImage,\n isLoading,\n imageWidth,\n imageHeight,\n init,\n fitToContainer,\n loadImage,\n exportImage,\n dispose,\n }\n}\n","import { ref, computed, type ShallowRef } from 'vue'\nimport type { Canvas } from 'fabric'\n\nexport function useHistory(canvas: ShallowRef<Canvas | null>, maxStates = 50) {\n const states = ref<string[]>([])\n const currentIndex = ref(-1)\n const isRestoring = ref(false)\n\n const canUndo = computed(() => currentIndex.value > 0)\n const canRedo = computed(() => currentIndex.value < states.value.length - 1)\n\n function saveState() {\n if (isRestoring.value || !canvas.value) return\n states.value = states.value.slice(0, currentIndex.value + 1)\n const json = JSON.stringify(canvas.value.toJSON())\n states.value.push(json)\n if (states.value.length > maxStates) {\n states.value.shift()\n } else {\n currentIndex.value++\n }\n }\n\n async function restoreState(index: number) {\n if (!canvas.value || index < 0 || index >= states.value.length) return\n isRestoring.value = true\n currentIndex.value = index\n await canvas.value.loadFromJSON(states.value[index])\n canvas.value.renderAll()\n isRestoring.value = false\n }\n\n function undo() {\n if (canUndo.value) restoreState(currentIndex.value - 1)\n }\n\n function redo() {\n if (canRedo.value) restoreState(currentIndex.value + 1)\n }\n\n function clearHistory() {\n states.value = []\n currentIndex.value = -1\n }\n\n return { canUndo, canRedo, saveState, undo, redo, clearHistory }\n}\n","import { ref, computed } from 'vue'\nimport type { ToolType } from '@/types'\n\nexport function useEditorState() {\n const activeTool = ref<ToolType | null>(null)\n\n function setTool(tool: ToolType | null) {\n activeTool.value = activeTool.value === tool ? null : tool\n }\n\n function clearTool() {\n activeTool.value = null\n }\n\n return { activeTool, setTool, clearTool }\n}\n","import { ref, type ShallowRef } from 'vue'\nimport { Canvas, Rect, FabricImage } from 'fabric'\nimport type { CropAspectRatio } from '@/types'\n\nexport function useCrop(\n canvas: ShallowRef<Canvas | null>,\n originalImage: ShallowRef<FabricImage | null>,\n onAfterCrop: () => void\n) {\n const isCropping = ref(false)\n const cropRect = ref<Rect | null>(null)\n const selectedRatio = ref<CropAspectRatio | null>(null)\n\n function startCrop(ratio?: CropAspectRatio) {\n if (!canvas.value) return\n cancelCrop()\n\n isCropping.value = true\n selectedRatio.value = ratio || null\n\n const cw = canvas.value.getWidth()\n const ch = canvas.value.getHeight()\n let w = cw * 0.7\n let h = ch * 0.7\n\n if (ratio?.value) {\n h = w / ratio.value\n if (h > ch * 0.7) {\n h = ch * 0.7\n w = h * ratio.value\n }\n }\n\n const rect = new Rect({\n left: (cw - w) / 2,\n top: (ch - h) / 2,\n width: w,\n height: h,\n fill: 'rgba(255,255,255,0.1)',\n stroke: '#ffffff',\n strokeWidth: 2,\n strokeDashArray: [8, 4],\n cornerColor: '#ffffff',\n cornerStrokeColor: '#333333',\n cornerSize: 10,\n transparentCorners: false,\n lockRotation: true,\n hasRotatingPoint: false,\n })\n\n if (ratio?.value) {\n rect.setControlsVisibility({\n mt: false,\n mb: false,\n ml: false,\n mr: false,\n })\n rect.on('scaling', () => {\n const scaleX = rect.scaleX ?? 1\n const scaleY = rect.scaleY ?? 1\n const newWidth = (rect.width ?? w) * scaleX\n const newHeight = newWidth / (ratio.value ?? 1)\n rect.set({ scaleX: 1, scaleY: 1, width: newWidth, height: newHeight })\n rect.setCoords()\n })\n }\n\n cropRect.value = rect\n canvas.value.add(rect)\n canvas.value.setActiveObject(rect)\n canvas.value.renderAll()\n }\n\n function setAspectRatio(ratio: CropAspectRatio) {\n selectedRatio.value = ratio\n if (isCropping.value) {\n cancelCrop()\n startCrop(ratio)\n }\n }\n\n async function applyCrop() {\n if (!canvas.value || !cropRect.value) return\n\n const rect = cropRect.value\n const left = rect.left ?? 0\n const top = rect.top ?? 0\n const width = rect.getScaledWidth()\n const height = rect.getScaledHeight()\n\n canvas.value.remove(rect as any)\n cropRect.value = null\n isCropping.value = false\n\n const dataURL = canvas.value.toDataURL({\n left,\n top,\n width,\n height,\n multiplier: 1,\n format: 'png' as any,\n })\n\n const img = await FabricImage.fromURL(dataURL)\n const cw = canvas.value.getWidth()\n const ch = canvas.value.getHeight()\n const scale = Math.min(cw / (img.width ?? 1), ch / (img.height ?? 1), 1)\n\n img.scale(scale)\n img.set({\n left: (cw - img.getScaledWidth()) / 2,\n top: (ch - img.getScaledHeight()) / 2,\n selectable: false,\n evented: false,\n })\n\n canvas.value.clear()\n canvas.value.backgroundColor = '#1a1a2e'\n canvas.value.add(img)\n canvas.value.sendObjectToBack(img)\n originalImage.value = img\n canvas.value.renderAll()\n\n onAfterCrop()\n }\n\n function cancelCrop() {\n if (!canvas.value || !cropRect.value) return\n canvas.value.remove(cropRect.value as any)\n cropRect.value = null\n isCropping.value = false\n canvas.value.renderAll()\n }\n\n return {\n isCropping,\n selectedRatio,\n startCrop,\n setAspectRatio,\n applyCrop,\n cancelCrop,\n }\n}\n","import { ref, type ShallowRef } from 'vue'\nimport { Canvas, FabricImage } from 'fabric'\n\nexport function useRotateFlip(\n canvas: ShallowRef<Canvas | null>,\n originalImage: ShallowRef<FabricImage | null>,\n onAfterTransform: () => void\n) {\n const rotation = ref(0)\n const flippedX = ref(false)\n const flippedY = ref(false)\n\n function rotate90(direction: 'left' | 'right') {\n if (!canvas.value) return\n const delta = direction === 'right' ? 90 : -90\n rotation.value = (rotation.value + delta + 360) % 360\n\n canvas.value.getObjects().forEach((obj) => {\n const cx = canvas.value!.getWidth() / 2\n const cy = canvas.value!.getHeight() / 2\n const objLeft = (obj.left ?? 0) - cx\n const objTop = (obj.top ?? 0) - cy\n const rad = (delta * Math.PI) / 180\n\n obj.set({\n left: cx + objLeft * Math.cos(rad) - objTop * Math.sin(rad),\n top: cy + objLeft * Math.sin(rad) + objTop * Math.cos(rad),\n angle: ((obj.angle ?? 0) + delta) % 360,\n })\n obj.setCoords()\n })\n\n canvas.value.renderAll()\n onAfterTransform()\n }\n\n function setRotation(degrees: number) {\n if (!canvas.value || !originalImage.value) return\n const img = originalImage.value\n img.set({ angle: degrees })\n img.setCoords()\n rotation.value = degrees\n canvas.value.renderAll()\n }\n\n function flipHorizontal() {\n if (!canvas.value) return\n flippedX.value = !flippedX.value\n canvas.value.getObjects().forEach((obj) => {\n obj.set({ flipX: !obj.flipX })\n obj.setCoords()\n })\n canvas.value.renderAll()\n onAfterTransform()\n }\n\n function flipVertical() {\n if (!canvas.value) return\n flippedY.value = !flippedY.value\n canvas.value.getObjects().forEach((obj) => {\n obj.set({ flipY: !obj.flipY })\n obj.setCoords()\n })\n canvas.value.renderAll()\n onAfterTransform()\n }\n\n return {\n rotation,\n flippedX,\n flippedY,\n rotate90,\n setRotation,\n flipHorizontal,\n flipVertical,\n }\n}\n","import { reactive, watch, type ShallowRef } from 'vue'\nimport { Canvas, FabricImage, filters } from 'fabric'\nimport type { FilterState } from '@/types'\n\nexport function useFilters(\n canvas: ShallowRef<Canvas | null>,\n backgroundImage: ShallowRef<FabricImage | null>,\n onAfterFilter: () => void\n) {\n const state = reactive<FilterState>({\n brightness: 0,\n contrast: 0,\n saturation: 0,\n exposure: 0,\n blur: 0,\n grayscale: false,\n sepia: false,\n invert: false,\n })\n\n let debounceTimer: ReturnType<typeof setTimeout> | null = null\n\n function applyFilters() {\n if (!backgroundImage.value || !canvas.value) return\n const img = backgroundImage.value\n const list: InstanceType<typeof filters.BaseFilter>[] = []\n\n if (state.brightness !== 0)\n list.push(new filters.Brightness({ brightness: state.brightness }))\n if (state.contrast !== 0)\n list.push(new filters.Contrast({ contrast: state.contrast }))\n if (state.saturation !== 0)\n list.push(new filters.Saturation({ saturation: state.saturation }))\n if (state.exposure !== 0)\n list.push(\n new filters.Gamma({\n gamma: [1 + state.exposure, 1 + state.exposure, 1 + state.exposure],\n })\n )\n if (state.blur > 0) list.push(new filters.Blur({ blur: state.blur }))\n if (state.grayscale) list.push(new filters.Grayscale())\n if (state.sepia) list.push(new filters.Sepia())\n if (state.invert) list.push(new filters.Invert())\n\n img.filters = list\n img.applyFilters()\n canvas.value.renderAll()\n }\n\n function resetFilters() {\n Object.assign(state, {\n brightness: 0,\n contrast: 0,\n saturation: 0,\n exposure: 0,\n blur: 0,\n grayscale: false,\n sepia: false,\n invert: false,\n })\n applyFilters()\n onAfterFilter()\n }\n\n watch(state, () => {\n if (debounceTimer) clearTimeout(debounceTimer)\n debounceTimer = setTimeout(() => {\n applyFilters()\n }, 50)\n })\n\n function commitFilters() {\n applyFilters()\n onAfterFilter()\n }\n\n return { state, applyFilters, resetFilters, commitFilters }\n}\n","import { reactive, type ShallowRef } from 'vue'\nimport { Canvas, IText } from 'fabric'\nimport type { TextConfig } from '@/types'\n\nexport function useText(\n canvas: ShallowRef<Canvas | null>,\n onAfterAdd: () => void\n) {\n const config = reactive<TextConfig>({\n text: 'Text',\n fontFamily: 'Arial',\n fontSize: 24,\n fill: '#ffffff',\n fontWeight: 'normal',\n fontStyle: 'normal',\n textAlign: 'left',\n })\n\n function addText() {\n if (!canvas.value) return\n\n const text = new IText(config.text, {\n left: canvas.value.getWidth() / 2 - 50,\n top: canvas.value.getHeight() / 2 - 20,\n fontFamily: config.fontFamily,\n fontSize: config.fontSize,\n fill: config.fill,\n fontWeight: config.fontWeight,\n fontStyle: config.fontStyle,\n textAlign: config.textAlign,\n editable: true,\n })\n\n canvas.value.add(text)\n canvas.value.setActiveObject(text)\n canvas.value.renderAll()\n onAfterAdd()\n }\n\n function updateSelectedText() {\n if (!canvas.value) return\n const active = canvas.value.getActiveObject()\n if (!(active instanceof IText)) return\n\n active.set({\n fontFamily: config.fontFamily,\n fontSize: config.fontSize,\n fill: config.fill,\n fontWeight: config.fontWeight,\n fontStyle: config.fontStyle,\n textAlign: config.textAlign,\n })\n canvas.value.renderAll()\n }\n\n return { config, addText, updateSelectedText }\n}\n","import { reactive, watch, type ShallowRef } from 'vue'\nimport { Canvas, PencilBrush } from 'fabric'\nimport type { BrushConfig } from '@/types'\n\nexport function useDraw(\n canvas: ShallowRef<Canvas | null>,\n onAfterDraw: () => void\n) {\n const config = reactive<BrushConfig>({\n width: 4,\n color: '#ffffff',\n opacity: 1,\n })\n\n function enableDrawing() {\n if (!canvas.value) return\n canvas.value.isDrawingMode = true\n const brush = new PencilBrush(canvas.value)\n brush.width = config.width\n brush.color = config.color\n canvas.value.freeDrawingBrush = brush\n canvas.value.on('path:created', () => {\n onAfterDraw()\n })\n }\n\n function disableDrawing() {\n if (!canvas.value) return\n canvas.value.isDrawingMode = false\n canvas.value.off('path:created')\n }\n\n watch(config, () => {\n if (!canvas.value?.freeDrawingBrush) return\n canvas.value.freeDrawingBrush.width = config.width\n canvas.value.freeDrawingBrush.color = config.color\n })\n\n return { config, enableDrawing, disableDrawing }\n}\n","import { reactive, type ShallowRef } from 'vue'\nimport { Canvas, Rect, Circle, Line, Path } from 'fabric'\nimport type { ShapeConfig } from '@/types'\n\nexport function useShapes(\n canvas: ShallowRef<Canvas | null>,\n onAfterAdd: () => void\n) {\n const config = reactive<ShapeConfig>({\n type: 'rect',\n strokeColor: '#ffffff',\n fillColor: 'transparent',\n strokeWidth: 2,\n })\n\n function addShape() {\n if (!canvas.value) return\n\n const cx = canvas.value.getWidth() / 2\n const cy = canvas.value.getHeight() / 2\n let shape: any\n\n switch (config.type) {\n case 'rect':\n shape = new Rect({\n left: cx - 50,\n top: cy - 40,\n width: 100,\n height: 80,\n fill: config.fillColor,\n stroke: config.strokeColor,\n strokeWidth: config.strokeWidth,\n })\n break\n\n case 'circle':\n shape = new Circle({\n left: cx - 40,\n top: cy - 40,\n radius: 40,\n fill: config.fillColor,\n stroke: config.strokeColor,\n strokeWidth: config.strokeWidth,\n })\n break\n\n case 'line':\n shape = new Line([cx - 60, cy, cx + 60, cy], {\n stroke: config.strokeColor,\n strokeWidth: config.strokeWidth,\n })\n break\n\n case 'arrow': {\n const startX = cx - 60\n const endX = cx + 60\n const pathData = `M ${startX} ${cy} L ${endX} ${cy} M ${endX - 12} ${cy - 8} L ${endX} ${cy} L ${endX - 12} ${cy + 8}`\n shape = new Path(pathData, {\n fill: '',\n stroke: config.strokeColor,\n strokeWidth: config.strokeWidth,\n strokeLineCap: 'round',\n strokeLineJoin: 'round',\n })\n break\n }\n }\n\n if (shape) {\n canvas.value.add(shape)\n canvas.value.setActiveObject(shape)\n canvas.value.renderAll()\n onAfterAdd()\n }\n }\n\n return { config, addShape }\n}\n","import { ref, type ShallowRef } from 'vue'\nimport { Canvas, FabricImage } from 'fabric'\n\nexport function useResize(\n canvas: ShallowRef<Canvas | null>,\n originalImage: ShallowRef<FabricImage | null>,\n imageWidth: { value: number },\n imageHeight: { value: number },\n onAfterResize: () => void\n) {\n const newWidth = ref(0)\n const newHeight = ref(0)\n const lockRatio = ref(true)\n const aspectRatio = ref(1)\n\n function initResize() {\n newWidth.value = imageWidth.value\n newHeight.value = imageHeight.value\n aspectRatio.value =\n imageHeight.value > 0 ? imageWidth.value / imageHeight.value : 1\n }\n\n function setWidth(w: number) {\n newWidth.value = w\n if (lockRatio.value) {\n newHeight.value = Math.round(w / aspectRatio.value)\n }\n }\n\n function setHeight(h: number) {\n newHeight.value = h\n if (lockRatio.value) {\n newWidth.value = Math.round(h * aspectRatio.value)\n }\n }\n\n async function applyResize() {\n if (!canvas.value || !originalImage.value) return\n\n const dataURL = canvas.value.toDataURL({\n format: 'png' as any,\n multiplier: 1,\n })\n\n const tmpCanvas = document.createElement('canvas')\n tmpCanvas.width = newWidth.value\n tmpCanvas.height = newHeight.value\n const ctx = tmpCanvas.getContext('2d')!\n const imgEl = new window.Image()\n\n await new Promise<void>((resolve) => {\n imgEl.onload = () => {\n ctx.drawImage(imgEl, 0, 0, newWidth.value, newHeight.value)\n resolve()\n }\n imgEl.src = dataURL\n })\n\n const resizedDataURL = tmpCanvas.toDataURL('image/png')\n const img = await FabricImage.fromURL(resizedDataURL)\n\n const cw = canvas.value.getWidth()\n const ch = canvas.value.getHeight()\n const scale = Math.min(cw / (img.width ?? 1), ch / (img.height ?? 1), 1)\n\n img.scale(scale)\n img.set({\n left: (cw - img.getScaledWidth()) / 2,\n top: (ch - img.getScaledHeight()) / 2,\n selectable: false,\n evented: false,\n })\n\n canvas.value.clear()\n canvas.value.backgroundColor = '#1a1a2e'\n canvas.value.add(img)\n originalImage.value = img\n imageWidth.value = newWidth.value\n imageHeight.value = newHeight.value\n canvas.value.renderAll()\n\n onAfterResize()\n }\n\n return { newWidth, newHeight, lockRatio, initResize, setWidth, setHeight, applyResize }\n}\n","import { ref, type ShallowRef } from 'vue'\nimport type { Canvas } from 'fabric'\n\nconst MIN_ZOOM = 0.1\nconst MAX_ZOOM = 5\n\nexport function useZoom(canvas: ShallowRef<Canvas | null>) {\n const zoomLevel = ref(1)\n\n function setZoom(level: number) {\n if (!canvas.value) return\n const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level))\n zoomLevel.value = clamped\n canvas.value.setZoom(clamped)\n canvas.value.renderAll()\n }\n\n function zoomIn() {\n setZoom(zoomLevel.value * 1.15)\n }\n\n function zoomOut() {\n setZoom(zoomLevel.value / 1.15)\n }\n\n function resetZoom() {\n setZoom(1)\n }\n\n function enableWheelZoom() {\n canvas.value?.on('mouse:wheel', (opt) => {\n const delta = opt.e.deltaY\n let zoom = canvas.value!.getZoom()\n zoom *= 0.999 ** delta\n setZoom(zoom)\n opt.e.preventDefault()\n opt.e.stopPropagation()\n })\n }\n\n return { zoomLevel, setZoom, zoomIn, zoomOut, resetZoom, enableWheelZoom }\n}\n","<script lang=\"ts\" setup>\nimport { ref, computed, watch, onMounted, onBeforeUnmount, nextTick } from 'vue'\nimport type { ToolType, CropAspectRatio, ImageSource, FilterState, TextConfig, BrushConfig, ShapeConfig } from '@/types'\nimport { resolveTranslations, type VueditTranslations } from '@/i18n'\nimport FabricCanvas from './canvas/FabricCanvas.vue'\nimport EditorToolbar from './toolbar/EditorToolbar.vue'\nimport CropPanel from './panels/CropPanel.vue'\nimport RotateFlipPanel from './panels/RotateFlipPanel.vue'\nimport FilterPanel from './panels/FilterPanel.vue'\nimport TextPanel from './panels/TextPanel.vue'\nimport DrawPanel from './panels/DrawPanel.vue'\nimport ShapePanel from './panels/ShapePanel.vue'\nimport ResizePanel from './panels/ResizePanel.vue'\nimport { UndoIcon, RedoIcon, ZoomInIcon, ZoomOutIcon } from '@/icons'\nimport { useFabricCanvas } from '@/composables/useFabricCanvas'\nimport { useHistory } from '@/composables/useHistory'\nimport { useEditorState } from '@/composables/useEditorState'\nimport { useCrop } from '@/composables/useCrop'\nimport { useRotateFlip } from '@/composables/useRotateFlip'\nimport { useFilters } from '@/composables/useFilters'\nimport { useText } from '@/composables/useText'\nimport { useDraw } from '@/composables/useDraw'\nimport { useShapes } from '@/composables/useShapes'\nimport { useResize } from '@/composables/useResize'\nimport { useZoom } from '@/composables/useZoom'\n\nconst props = withDefaults(\n defineProps<{\n src: ImageSource\n outputFormat?: 'file' | 'blob' | 'dataurl' | 'canvas'\n outputMimeType?: string\n outputQuality?: number\n outputFileName?: string\n tools?: ToolType[]\n cropAspectRatios?: CropAspectRatio[]\n locale?: string | VueditTranslations\n dir?: 'ltr' | 'rtl' | 'auto'\n }>(),\n {\n outputFormat: 'file',\n outputMimeType: 'image/png',\n outputQuality: 0.92,\n outputFileName: 'edited-image',\n tools: () => ['crop', 'rotate', 'filter', 'text', 'draw', 'shape', 'resize'],\n cropAspectRatios: () => [\n { label: 'Free', value: null },\n { label: '1:1', value: 1 },\n { label: '4:3', value: 4 / 3 },\n { label: '16:9', value: 16 / 9 },\n { label: '3:2', value: 3 / 2 },\n ],\n locale: 'en',\n dir: 'auto',\n }\n)\n\nconst emit = defineEmits<{\n (e: 'save', result: File | Blob | string | HTMLCanvasElement): void\n (e: 'cancel'): void\n (e: 'change', dirty: boolean): void\n (e: 'error', error: Error): void\n}>()\n\nconst t = resolveTranslations(props.locale)\nconst direction = computed(() => {\n if (props.dir !== 'auto') return props.dir\n return typeof props.locale === 'string' && props.locale === 'ar' ? 'rtl' : 'ltr'\n})\n\nconst fabricCanvasRef = ref<InstanceType<typeof FabricCanvas> | null>(null)\n\n// Core composables\nconst {\n canvas,\n originalImage,\n isLoading,\n imageWidth,\n imageHeight,\n init,\n fitToContainer,\n loadImage,\n exportImage,\n dispose,\n} = useFabricCanvas()\n\nconst { canUndo, canRedo, saveState, undo, redo, clearHistory } = useHistory(canvas)\nconst { activeTool, setTool, clearTool } = useEditorState()\n\n// Tool composables\nconst crop = useCrop(canvas, originalImage, saveState)\nconst rotateFlip = useRotateFlip(canvas, originalImage, saveState)\nconst filterTool = useFilters(canvas, originalImage, saveState)\nconst textTool = useText(canvas, saveState)\nconst drawTool = useDraw(canvas, saveState)\nconst shapeTool = useShapes(canvas, saveState)\nconst resizeTool = useResize(canvas, originalImage, imageWidth, imageHeight, saveState)\nconst zoomTool = useZoom(canvas)\n\n// Handle tool switching side effects\nwatch(activeTool, (newTool, oldTool) => {\n // Clean up old tool\n if (oldTool === 'draw') drawTool.disableDrawing()\n if (oldTool === 'crop') crop.cancelCrop()\n\n // Set up new tool\n if (newTool === 'draw') drawTool.enableDrawing()\n if (newTool === 'crop') crop.startCrop(props.cropAspectRatios[0])\n if (newTool === 'resize') resizeTool.initResize()\n})\n\n// Load image\nonMounted(async () => {\n await nextTick()\n if (fabricCanvasRef.value?.canvasEl && fabricCanvasRef.value?.containerEl) {\n init(fabricCanvasRef.value.canvasEl, fabricCanvasRef.value.containerEl)\n zoomTool.enableWheelZoom()\n try {\n await loadImage(props.src)\n clearHistory()\n saveState()\n } catch (err) {\n emit('error', err as Error)\n }\n }\n})\n\nwatch(\n () => props.src,\n async (newSrc) => {\n if (newSrc && canvas.value) {\n try {\n await loadImage(newSrc)\n clearHistory()\n saveState()\n } catch (err) {\n emit('error', err as Error)\n }\n }\n }\n)\n\n// Resize handler\nlet resizeObserver: ResizeObserver | null = null\nonMounted(() => {\n if (fabricCanvasRef.value?.containerEl) {\n resizeObserver = new ResizeObserver(() => {\n if (fabricCanvasRef.value?.containerEl) {\n fitToContainer(fabricCanvasRef.value.containerEl)\n }\n })\n resizeObserver.observe(fabricCanvasRef.value.containerEl)\n }\n})\n\n// Keyboard shortcuts\nfunction onKeydown(e: KeyboardEvent) {\n if (e.ctrlKey || e.metaKey) {\n if (e.key === 'z' && !e.shiftKey) {\n e.preventDefault()\n undo()\n } else if ((e.key === 'z' && e.shiftKey) || e.key === 'y') {\n e.preventDefault()\n redo()\n }\n }\n if (e.key === 'Delete' || e.key === 'Backspace') {\n if (canvas.value?.getActiveObject()) {\n const active = canvas.value.getActiveObject()\n if (active && active !== originalImage.value) {\n canvas.value.remove(active)\n canvas.value.renderAll()\n saveState()\n }\n }\n }\n if (e.key === 'Escape') {\n clearTool()\n }\n}\n\nonMounted(() => document.addEventListener('keydown', onKeydown))\nonBeforeUnmount(() => {\n document.removeEventListener('keydown', onKeydown)\n resizeObserver?.disconnect()\n dispose()\n})\n\n// Actions\nasync function handleSave() {\n try {\n // Deactivate any tool to ensure clean export\n if (activeTool.value === 'draw') drawTool.disableDrawing()\n if (activeTool.value === 'crop') crop.cancelCrop()\n clearTool()\n\n const result = await exportImage({\n format: props.outputFormat,\n mimeType: props.outputMimeType,\n quality: props.outputQuality,\n fileName: props.outputFileName,\n })\n emit('save', result)\n } catch (err) {\n emit('error', err as Error)\n }\n}\n\n// Panel event handlers\nfunction onFilterUpdate(key: keyof FilterState, value: number | boolean) {\n ;(filterTool.state as any)[key] = value\n}\n\nfunction onTextUpdate(key: keyof TextConfig, value: string | number) {\n ;(textTool.config as any)[key] = value\n textTool.updateSelectedText()\n}\n\nfunction onDrawUpdate(key: keyof BrushConfig, value: number | string) {\n ;(drawTool.config as any)[key] = value\n}\n\nfunction onShapeUpdate(key: keyof ShapeConfig, value: string | number) {\n ;(shapeTool.config as any)[key] = value\n}\n</script>\n\n<template>\n <div class=\"vuedit-editor\" :dir=\"direction\">\n <!-- Header: undo/redo + zoom + save/cancel -->\n <div class=\"vuedit-header\">\n <div class=\"vuedit-header__history\">\n <button class=\"vuedit-btn--icon\" :disabled=\"!canUndo\" :title=\"t('undo')\" @click=\"undo\">\n <UndoIcon style=\"width:18px;height:18px\" />\n </button>\n <button class=\"vuedit-btn--icon\" :disabled=\"!canRedo\" :title=\"t('redo')\" @click=\"redo\">\n <RedoIcon style=\"width:18px;height:18px\" />\n </button>\n <span style=\"width:1px;height:24px;background:var(--vuedit-color-border);margin:0 4px\" />\n <button class=\"vuedit-btn--icon\" :title=\"t('zoomIn')\" @click=\"zoomTool.zoomIn()\">\n <ZoomInIcon style=\"width:18px;height:18px\" />\n </button>\n <button class=\"vuedit-btn--icon\" :title=\"t('zoomOut')\" @click=\"zoomTool.zoomOut()\">\n <ZoomOutIcon style=\"width:18px;height:18px\" />\n </button>\n <span style=\"font-size:12px;color:var(--vuedit-color-text-muted);min-width:40px;text-align:center\">\n {{ Math.round(zoomTool.zoomLevel.value * 100) }}%\n </span>\n </div>\n <div class=\"vuedit-header__actions\">\n <button class=\"vuedit-btn vuedit-btn--secondary\" @click=\"emit('cancel')\">\n {{ t('cancel') }}\n </button>\n <button class=\"vuedit-btn vuedit-btn--primary\" @click=\"handleSave\">\n {{ t('save') }}\n </button>\n </div>\n </div>\n\n <!-- Body: panel + canvas -->\n <div class=\"vuedit-body\">\n <div v-if=\"activeTool\" class=\"vuedit-panel\">\n <CropPanel\n v-if=\"activeTool === 'crop'\"\n :aspect-ratios=\"cropAspectRatios\"\n :selected-ratio=\"crop.selectedRatio.value\"\n :is-cropping=\"crop.isCropping.value\"\n :t=\"t\"\n @select-ratio=\"(r) => { crop.setAspectRatio(r); crop.startCrop(r) }\"\n @apply=\"crop.applyCrop\"\n @cancel=\"crop.cancelCrop\"\n />\n <RotateFlipPanel\n v-else-if=\"activeTool === 'rotate'\"\n :rotation=\"rotateFlip.rotation.value\"\n :t=\"t\"\n @rotate-left=\"rotateFlip.rotate90('left')\"\n @rotate-right=\"rotateFlip.rotate90('right')\"\n @flip-h=\"rotateFlip.flipHorizontal\"\n @flip-v=\"rotateFlip.flipVertical\"\n @set-rotation=\"rotateFlip.setRotation\"\n />\n <FilterPanel\n v-else-if=\"activeTool === 'filter'\"\n :state=\"filterTool.state\"\n :t=\"t\"\n @update=\"onFilterUpdate\"\n @reset=\"filterTool.resetFilters\"\n @commit=\"filterTool.commitFilters\"\n />\n <TextPanel\n v-else-if=\"activeTool === 'text'\"\n :config=\"textTool.config\"\n :t=\"t\"\n @update=\"onTextUpdate\"\n @add-text=\"textTool.addText\"\n />\n <DrawPanel\n v-else-if=\"activeTool === 'draw'\"\n :config=\"drawTool.config\"\n :t=\"t\"\n @update=\"onDrawUpdate\"\n />\n <ShapePanel\n v-else-if=\"activeTool === 'shape'\"\n :config=\"shapeTool.config\"\n :t=\"t\"\n @update=\"onShapeUpdate\"\n @add-shape=\"shapeTool.addShape\"\n />\n <ResizePanel\n v-else-if=\"activeTool === 'resize'\"\n :width=\"resizeTool.newWidth.value\"\n :height=\"resizeTool.newHeight.value\"\n :lock-ratio=\"resizeTool.lockRatio.value\"\n :t=\"t\"\n @set-width=\"resizeTool.setWidth\"\n @set-height=\"resizeTool.setHeight\"\n @toggle-lock=\"resizeTool.lockRatio.value = !resizeTool.lockRatio.value\"\n @apply=\"resizeTool.applyResize\"\n @cancel=\"clearTool\"\n />\n </div>\n\n <FabricCanvas ref=\"fabricCanvasRef\" />\n </div>\n\n <!-- Bottom Toolbar -->\n <EditorToolbar\n :tools=\"tools\"\n :active-tool=\"activeTool\"\n :t=\"t\"\n @select-tool=\"setTool\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue'\nimport VueditImageEditor from './VueditImageEditor.vue'\nimport type { ToolType, CropAspectRatio, ImageSource } from '@/types'\nimport type { VueditTranslations } from '@/i18n'\n\nconst props = withDefaults(\n defineProps<{\n open: boolean\n src: ImageSource\n outputFormat?: 'file' | 'blob' | 'dataurl' | 'canvas'\n outputMimeType?: string\n outputQuality?: number\n outputFileName?: string\n tools?: ToolType[]\n cropAspectRatios?: CropAspectRatio[]\n locale?: string | VueditTranslations\n dir?: 'ltr' | 'rtl' | 'auto'\n }>(),\n {\n outputFormat: 'file',\n outputMimeType: 'image/png',\n outputQuality: 0.92,\n outputFileName: 'edited-image',\n locale: 'en',\n dir: 'auto',\n }\n)\n\nconst emit = defineEmits<{\n (e: 'save', result: File | Blob | string | HTMLCanvasElement): void\n (e: 'close'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement | null>(null)\n\nwatch(\n () => props.open,\n (isOpen) => {\n if (isOpen) {\n dialogRef.value?.showModal()\n } else {\n dialogRef.value?.close()\n }\n }\n)\n</script>\n\n<template>\n <Teleport to=\"body\">\n <dialog ref=\"dialogRef\" class=\"vuedit-modal\" @close=\"emit('close')\">\n <VueditImageEditor\n v-if=\"open\"\n :src=\"src\"\n :output-format=\"outputFormat\"\n :output-mime-type=\"outputMimeType\"\n :output-quality=\"outputQuality\"\n :output-file-name=\"outputFileName\"\n :tools=\"tools\"\n :crop-aspect-ratios=\"cropAspectRatios\"\n :locale=\"locale\"\n :dir=\"dir\"\n @save=\"(result) => emit('save', result)\"\n @cancel=\"emit('close')\"\n />\n </dialog>\n </Teleport>\n</template>\n"],"names":["en","ar","locales","resolveTranslations","locale","translations","key","mergeTranslations","base","overrides","canvasEl","ref","containerEl","__expose","_createElementBlock","_createElementVNode","emit","__emit","_normalizeClass","__props","_hoisted_1","_renderSlot","_ctx","_hoisted_2","_toDisplayString","_sfc_render","_cache","_openBlock","iconMap","CropIcon","RotateIcon","FilterIcon","TextIcon","DrawIcon","ShapeIcon","ResizeIcon","labelMap","_Fragment","_renderList","tool","_createBlock","ToolButton","$event","_resolveDynamicComponent","_hoisted_3","ratio","_a","_hoisted_4","ConfirmBar","onInput","event","_createVNode","_unref","RotateLeftIcon","RotateRightIcon","FlipHIcon","FlipVIcon","_hoisted_8","RangeSlider","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_9","presets","color","fonts","font","ColorPicker","_hoisted_10","_hoisted_11","shapes","s","t","e","i","r","n","o","a","h","l","u","d","g","f","p","m","v","y","_","x","C","b","S","w","T","O","k","D","M","E","P","A","j","F","L","I","R","B","$","X","Y","W","V","G","z","H","N","U","q","K","J","Q","Z","tt","et","st","it","rt","nt","ot","at","ht","lt","ct","ut","dt","gt","ft","pt","mt","vt","yt","_t","xt","Ct","bt","St","wt","Tt","Ot","kt","Dt","Mt","Et","Pt","At","jt","Ft","Lt","It","Rt","Bt","$t","Xt","Yt","Wt","Vt","Gt","zt","Ht","Nt","Ut","qt","Kt","Jt","Qt","Zt","te","ee","se","c","ie","re","ne","oe","ae","he","le","ce","ue","de","ge","fe","pe","me","ve","ye","_e","xe","Ce","be","Se","we","De","Me","Te","Oe","ke","Ee","Pe","Ae","je","Fe","Le","Ie","Re","Be","$e","Xe","Ye","We","Ve","Ge","ze","He","Ne","Ue","qe","Ke","Je","Qe","Ze","ts","es","ss","is","rs","ns","os","as","hs","us","ds","gs","fs","vs","_s","xs","Cs","bs","Ss","ws","Ts","Ds","As","js","Fs","Ls","Is","Rs","Bs","$s","Xs","Ys","Ws","Vs","Gs","zs","Hs","Ns","Us","Ks","Qs","Zs","ti","ei","si","ii","ri","ni","oi","ai","hi","li","ci","ui","di","gi","fi","pi","mi","vi","yi","_i","xi","Ci","bi","Si","wi","Ti","Oi","ki","Di","Mi","Ei","Pi","Ai","ji","Fi","Li","Ii","Ri","Bi","$i","Yi","Wi","Vi","Gi","zi","Hi","Ni","Ui","qi","Ki","Ji","Qi","Zi","tr","er","sr","ir","rr","nr","or","hr","lr","cr","ur","dr","gr","fr","pr","mr","vr","yr","_r","xr","Cr","br","Sr","wr","Tr","Or","kr","Dr","Mr","Er","Pr","Ar","jr","Fr","Lr","$r","Ir","Rr","Br","Xr","Yr","Wr","Vr","Gr","zr","Hr","Nr","Ur","qr","Kr","Jr","Qr","Zr","tn","sn","an","hn","ln","bn","Sn","wn","Tn","On","kn","Dn","Mn","En","Pn","An","jn","Fn","Ln","In","Rn","Bn","$n","Xn","Yn","Wn","Vn","Gn","zn","Hn","Nn","Un","qn","Zn","to","eo","so","io","ro","no","oo","ao","ho","lo","co","uo","go","fo","po","mo","vo","yo","_o","xo","Co","bo","So","wo","To","Oo","ko","Do","Mo","Eo","Po","Ao","jo","Fo","Lo","Io","Ro","$o","Xo","ea","ia","ra","na","oa","aa","ha","la","ca","ua","da","ga","fa","pa","ma","va","ya","xa","Ca","ba","Sa","wa","Ta","Oa","ka","Da","Ma","Ea","Pa","Aa","ja","Fa","La","Ia","Ra","Ba","$a","Xa","useFabricCanvas","canvas","shallowRef","originalImage","isLoading","imageWidth","imageHeight","init","container","Canvas","fitToContainer","loadImage","source","url","revokeUrl","img","FabricImage","canvasWidth","canvasHeight","scale","exportImage","options","format","dataURL","blob","ext","dispose","useHistory","maxStates","states","currentIndex","isRestoring","canUndo","computed","canRedo","saveState","json","restoreState","index","undo","redo","clearHistory","useEditorState","activeTool","setTool","clearTool","useCrop","onAfterCrop","isCropping","cropRect","selectedRatio","startCrop","cancelCrop","cw","ch","rect","Rect","scaleX","newWidth","newHeight","setAspectRatio","applyCrop","left","top","width","height","useRotateFlip","onAfterTransform","rotation","flippedX","flippedY","rotate90","direction","delta","obj","cx","cy","objLeft","objTop","rad","setRotation","degrees","flipHorizontal","flipVertical","useFilters","backgroundImage","onAfterFilter","state","reactive","debounceTimer","applyFilters","list","filters","resetFilters","watch","commitFilters","useText","onAfterAdd","config","addText","text","IText","updateSelectedText","active","useDraw","onAfterDraw","enableDrawing","brush","PencilBrush","disableDrawing","useShapes","addShape","shape","Circle","Line","startX","endX","pathData","Path","useResize","onAfterResize","lockRatio","aspectRatio","initResize","setWidth","setHeight","applyResize","tmpCanvas","ctx","imgEl","resolve","resizedDataURL","MIN_ZOOM","MAX_ZOOM","useZoom","zoomLevel","setZoom","level","clamped","zoomIn","zoomOut","resetZoom","enableWheelZoom","opt","zoom","props","fabricCanvasRef","crop","rotateFlip","filterTool","textTool","drawTool","shapeTool","resizeTool","zoomTool","newTool","oldTool","onMounted","nextTick","_b","err","newSrc","resizeObserver","onKeydown","onBeforeUnmount","handleSave","result","onFilterUpdate","value","onTextUpdate","onDrawUpdate","onShapeUpdate","args","UndoIcon","RedoIcon","ZoomInIcon","ZoomOutIcon","CropPanel","RotateFlipPanel","FilterPanel","TextPanel","DrawPanel","ShapePanel","ResizePanel","FabricCanvas","EditorToolbar","dialogRef","isOpen","_Teleport","VueditImageEditor"],"mappings":"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","x_google_ignoreList":[31]}
|