labellife-design-tool 2.2.7 → 2.2.9
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/dist/cjs/canvas/workspace.js +152 -15
- package/dist/cjs/canvas/workspace.js.map +1 -1
- package/dist/cjs/index.js +539 -50
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/side-panel/index.js +387 -35
- package/dist/cjs/side-panel/index.js.map +1 -1
- package/dist/esm/canvas/workspace.js +153 -16
- package/dist/esm/canvas/workspace.js.map +1 -1
- package/dist/esm/index.js +540 -51
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/side-panel/index.js +387 -35
- package/dist/esm/side-panel/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sources":["../../../src/utils/l10n.js","../../../src/config.js","../../../src/toolbar/image-mask-panel.js","../../../src/canvas/image-element.js","../../../src/canvas/text-element.js","../../../src/canvas/svg-element.js","../../../src/canvas/figure-element.js","../../../src/canvas/line-element.js","../../../src/canvas/group-element.js","../../../src/canvas/element.js","../../../src/components/InputFieldsDialog.js","../../../src/canvas/workspace.js"],"sourcesContent":["// Use a window-level singleton so that all Rollup bundles (config, toolbar,\n// side-panel, canvas) share the same translations object. Without this each\n// bundle gets its own copy of this module with a separate local variable.\nconst GLOBAL_KEY = '__labellife_translations__';\nif (typeof window !== 'undefined' && !window[GLOBAL_KEY]) {\n window[GLOBAL_KEY] = {};\n}\n\nfunction _get() {\n return (typeof window !== 'undefined' && window[GLOBAL_KEY]) || {};\n}\n\nfunction deepMerge(target, source) {\n const result = { ...target };\n for (const key of Object.keys(source)) {\n if (\n source[key] &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key]) &&\n target[key] &&\n typeof target[key] === 'object' &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(target[key], source[key]);\n } else {\n result[key] = source[key];\n }\n }\n return result;\n}\n\nexport function setTranslations(newTranslations) {\n if (typeof window !== 'undefined') {\n window[GLOBAL_KEY] = deepMerge(_get(), newTranslations);\n }\n}\n\nexport function getTranslations() {\n return _get();\n}\n\nexport function t(key, defaultValue) {\n // Support dot-notation paths like 'toolbar.duration'\n const parts = key.split('.');\n let current = _get();\n for (const part of parts) {\n if (current == null || typeof current !== 'object') {\n return defaultValue || key;\n }\n current = current[part];\n }\n if (current !== undefined && current !== null && typeof current !== 'object') {\n return current;\n }\n return defaultValue || key;\n}\n","import { setTranslations as _setTranslations, getTranslations, t } from './utils/l10n';\n\nlet _theme = 'light';\nlet _customTheme = {};\n\nexport function setTranslations(translations) {\n _setTranslations(translations);\n}\n\nexport { getTranslations, t };\n\nexport function setTheme(theme) {\n _theme = theme;\n}\n\nexport function getTheme() {\n return _theme;\n}\n\nexport function setCustomTheme(customTheme) {\n _customTheme = { ..._customTheme, ...customTheme };\n}\n\nexport function getCustomTheme() {\n return _customTheme;\n}\n\n// ── Input Fields Dialog Config ───────────────────────────────────────\nconst INPUT_FIELDS_CONFIG_KEY = '__labellife_input_fields_config__';\nif (typeof window !== 'undefined' && !window[INPUT_FIELDS_CONFIG_KEY]) {\n window[INPUT_FIELDS_CONFIG_KEY] = {};\n}\n\nexport function setInputFieldsConfig(config) {\n if (typeof window !== 'undefined') {\n window[INPUT_FIELDS_CONFIG_KEY] = { ...window[INPUT_FIELDS_CONFIG_KEY], ...config };\n }\n}\n\nexport function getInputFieldsConfig() {\n return (typeof window !== 'undefined' && window[INPUT_FIELDS_CONFIG_KEY]) || {};\n}\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, IconButton } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { t } from '../config';\n\nconst MASK_SHAPES = [\n {\n name: 'Circle',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n ctx.ellipse(w / 2, h / 2, w / 2, h / 2, 0, 0, Math.PI * 2);\n ctx.closePath();\n },\n preview: 'M50,5 A45,45 0 1,1 50,95 A45,45 0 1,1 50,5 Z',\n clipId: 'circle',\n },\n {\n name: 'Triangle',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n ctx.moveTo(w / 2, 0);\n ctx.lineTo(w, h);\n ctx.lineTo(0, h);\n ctx.closePath();\n },\n preview: 'M50,5 L95,95 L5,95 Z',\n clipId: 'triangle',\n },\n {\n name: 'Star',\n clipFunc: (ctx, w, h) => {\n const cx = w / 2, cy = h / 2;\n const outerR = Math.min(w, h) / 2;\n const innerR = outerR * 0.4;\n const points = 5;\n ctx.beginPath();\n for (let i = 0; i < points * 2; i++) {\n const r = i % 2 === 0 ? outerR : innerR;\n const angle = (Math.PI * i) / points - Math.PI / 2;\n const x = cx + r * Math.cos(angle);\n const y = cy + r * Math.sin(angle);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.closePath();\n },\n preview: 'M50,5 L61,38 L97,38 L68,60 L79,95 L50,73 L21,95 L32,60 L3,38 L39,38 Z',\n clipId: 'star',\n },\n {\n name: 'Heart',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n const topY = h * 0.3;\n ctx.moveTo(w / 2, h * 0.9);\n ctx.bezierCurveTo(w * 0.1, h * 0.55, -w * 0.1, topY * 0.5, w * 0.25, topY * 0.3);\n ctx.bezierCurveTo(w * 0.4, 0, w / 2, topY * 0.6, w / 2, topY);\n ctx.bezierCurveTo(w / 2, topY * 0.6, w * 0.6, 0, w * 0.75, topY * 0.3);\n ctx.bezierCurveTo(w * 1.1, topY * 0.5, w * 0.9, h * 0.55, w / 2, h * 0.9);\n ctx.closePath();\n },\n preview: 'M50,88 C15,55 -5,20 25,10 C40,3 50,15 50,25 C50,15 60,3 75,10 C105,20 85,55 50,88 Z',\n clipId: 'heart',\n },\n {\n name: 'Hexagon',\n clipFunc: (ctx, w, h) => {\n const cx = w / 2, cy = h / 2;\n const r = Math.min(w, h) / 2;\n ctx.beginPath();\n for (let i = 0; i < 6; i++) {\n const angle = (Math.PI * 2 * i) / 6 - Math.PI / 2;\n const x = cx + r * Math.cos(angle);\n const y = cy + r * Math.sin(angle);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.closePath();\n },\n preview: 'M50,5 L93,27 L93,73 L50,95 L7,73 L7,27 Z',\n clipId: 'hexagon',\n },\n {\n name: 'Diamond',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n ctx.moveTo(w / 2, 0);\n ctx.lineTo(w, h / 2);\n ctx.lineTo(w / 2, h);\n ctx.lineTo(0, h / 2);\n ctx.closePath();\n },\n preview: 'M50,5 L95,50 L50,95 L5,50 Z',\n clipId: 'diamond',\n },\n {\n name: 'Pentagon',\n clipFunc: (ctx, w, h) => {\n const cx = w / 2, cy = h / 2;\n const r = Math.min(w, h) / 2;\n ctx.beginPath();\n for (let i = 0; i < 5; i++) {\n const angle = (Math.PI * 2 * i) / 5 - Math.PI / 2;\n const x = cx + r * Math.cos(angle);\n const y = cy + r * Math.sin(angle);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.closePath();\n },\n preview: 'M50,5 L95,38 L77,95 L23,95 L5,38 Z',\n clipId: 'pentagon',\n },\n {\n name: 'Rounded Rect',\n clipFunc: (ctx, w, h) => {\n const r = Math.min(w, h) * 0.15;\n ctx.beginPath();\n ctx.moveTo(r, 0);\n ctx.lineTo(w - r, 0);\n ctx.quadraticCurveTo(w, 0, w, r);\n ctx.lineTo(w, h - r);\n ctx.quadraticCurveTo(w, h, w - r, h);\n ctx.lineTo(r, h);\n ctx.quadraticCurveTo(0, h, 0, h - r);\n ctx.lineTo(0, r);\n ctx.quadraticCurveTo(0, 0, r, 0);\n ctx.closePath();\n },\n preview: 'M15,5 L85,5 Q95,5 95,15 L95,85 Q95,95 85,95 L15,95 Q5,95 5,85 L5,15 Q5,5 15,5 Z',\n clipId: 'rounded-rect',\n },\n {\n name: 'Cross',\n clipFunc: (ctx, w, h) => {\n const t = 0.3;\n ctx.beginPath();\n ctx.moveTo(w * t, 0);\n ctx.lineTo(w * (1 - t), 0);\n ctx.lineTo(w * (1 - t), h * t);\n ctx.lineTo(w, h * t);\n ctx.lineTo(w, h * (1 - t));\n ctx.lineTo(w * (1 - t), h * (1 - t));\n ctx.lineTo(w * (1 - t), h);\n ctx.lineTo(w * t, h);\n ctx.lineTo(w * t, h * (1 - t));\n ctx.lineTo(0, h * (1 - t));\n ctx.lineTo(0, h * t);\n ctx.lineTo(w * t, h * t);\n ctx.closePath();\n },\n preview: 'M30,5 L70,5 L70,30 L95,30 L95,70 L70,70 L70,95 L30,95 L30,70 L5,70 L5,30 L30,30 Z',\n clipId: 'cross',\n },\n];\n\n// Export shapes so the canvas renderer can look them up\nexport { MASK_SHAPES };\n\nconst ImageMaskPanel = observer(({ store }) => {\n const panel = store._toolbarPanel;\n if (!panel || panel.type !== 'mask') return null;\n\n const element = store.getElementById(panel.elementId);\n if (!element) return null;\n\n const handleClose = () => store.closeToolbarPanel();\n\n const applyMask = (shape) => {\n element.set({ clipSrc: shape.clipId });\n store.history.addUndoState();\n };\n\n const removeMask = () => {\n element.set({ clipSrc: '' });\n store.history.addUndoState();\n };\n\n const hasMask = !!element.clipSrc;\n\n return (\n <Box\n sx={{\n width: 280,\n height: '100%',\n overflowY: 'auto',\n overflowX: 'hidden',\n backgroundColor: '#fff',\n borderRight: '1px solid #e0e0e0',\n flexShrink: 0,\n p: 2,\n }}\n >\n {/* Header */}\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2 }}>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 600 }}>{t('toolbar.clip', 'Apply Mask')}</Typography>\n <IconButton size=\"small\" onClick={handleClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {/* Image preview */}\n {element.src && (\n <Box sx={{ mb: 2, textAlign: 'center' }}>\n <img\n src={element.src}\n alt=\"Selected\"\n style={{\n maxWidth: '100%',\n maxHeight: 120,\n objectFit: 'contain',\n borderRadius: 6,\n border: '1px solid #e0e0e0',\n }}\n />\n </Box>\n )}\n\n {hasMask && (\n <Box\n onClick={removeMask}\n sx={{\n mb: 2,\n py: 1,\n textAlign: 'center',\n cursor: 'pointer',\n borderRadius: '6px',\n border: '1px solid #d32f2f',\n color: '#d32f2f',\n fontWeight: 600,\n fontSize: 13,\n '&:hover': { backgroundColor: '#fbe9e7' },\n }}\n >\n {t('toolbar.removeMask', 'Remove mask')}\n </Box>\n )}\n\n {/* Shape grid */}\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 1 }}>\n {MASK_SHAPES.map((shape) => {\n const isActive = element.clipSrc === shape.clipId;\n return (\n <Box\n key={shape.clipId}\n onClick={() => applyMask(shape)}\n sx={{\n cursor: 'pointer',\n textAlign: 'center',\n borderRadius: '8px',\n border: isActive ? '2px solid #0d83cd' : '2px solid transparent',\n p: 0.5,\n '&:hover': { backgroundColor: '#f5f5f5' },\n }}\n >\n <Box\n sx={{\n width: '100%',\n aspectRatio: '1',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg viewBox=\"0 0 100 100\" width=\"100%\" height=\"100%\">\n <path d={shape.preview} fill=\"#e0e0e0\" stroke=\"#999\" strokeWidth=\"1\" />\n </svg>\n </Box>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{shape.name}</Typography>\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n});\n\nImageMaskPanel.displayName = 'ImageMaskPanel';\nexport { ImageMaskPanel };\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport { Image as KonvaImage, Group, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport { MASK_SHAPES } from '../toolbar/image-mask-panel';\n\n// Custom Konva filter: Sepia\nconst SepiaFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i], g = data[i + 1], b = data[i + 2];\n data[i] = Math.min(255, (r * 0.393) + (g * 0.769) + (b * 0.189));\n data[i + 1] = Math.min(255, (r * 0.349) + (g * 0.686) + (b * 0.168));\n data[i + 2] = Math.min(255, (r * 0.272) + (g * 0.534) + (b * 0.131));\n }\n};\n\n// Custom Konva filter: Warm (boost red, reduce blue)\nconst WarmFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.min(255, data[i] + 25); // red up\n data[i + 1] = Math.min(255, data[i + 1] + 10); // green slightly up\n data[i + 2] = Math.max(0, data[i + 2] - 20); // blue down\n }\n};\n\n// Custom Konva filter: Cold (boost blue, reduce red)\nconst ColdFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.max(0, data[i] - 20); // red down\n data[i + 1] = Math.min(255, data[i + 1] + 5); // green slightly up\n data[i + 2] = Math.min(255, data[i + 2] + 25); // blue up\n }\n};\n\nconst ImageElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const groupRef = useRef(null);\n const [image, setImage] = useState(null);\n\n // Persistent auto-crop state: tracks the visible portion of the source image.\n // Initialized on image load (cover-fit centered), then updated directionally on resize.\n const autoCropRef = useRef(null);\n const autoCropSrcRef = useRef(null); // tracks which image the crop was computed for\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load image:', element.src.substring(0, 100));\n };\n img.src = element.src;\n }, [element.src]);\n\n // Build Konva filters array\n const filters = [];\n if (element.blurEnabled) filters.push(window.Konva.Filters.Blur);\n if (element.brightnessEnabled) filters.push(window.Konva.Filters.Brighten);\n if (element.grayscaleEnabled) filters.push(window.Konva.Filters.Grayscale);\n if (element.sepiaEnabled) filters.push(SepiaFilter);\n if (element.warmEnabled) filters.push(WarmFilter);\n if (element.coldEnabled) filters.push(ColdFilter);\n\n const hasFilters = filters.length > 0;\n const hasBorder = element.borderSize > 0 && element.borderColor;\n const needsCache = hasFilters || element.cornerRadius > 0 || element.shadowEnabled;\n\n // Cache the image node whenever filters, cornerRadius, or shadow change so they take effect\n useEffect(() => {\n const node = imageRef.current;\n if (!node || !image) return;\n if (needsCache) {\n try {\n node.cache();\n } catch (e) { /* ignore cache errors */ }\n } else {\n try {\n node.clearCache();\n } catch (e) { /* ignore */ }\n }\n }, [image, needsCache, element.blurEnabled, element.blurRadius, element.brightnessEnabled, element.brightness, element.grayscaleEnabled, element.sepiaEnabled, element.warmEnabled, element.coldEnabled, element.cornerRadius, element.shadowEnabled, element.shadowBlur, element.shadowOffsetX, element.shadowOffsetY, element.shadowColor]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n const target = groupRef.current || e.target;\n element.set({\n x: target.x(),\n y: target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Helper: update autoCrop directionally based on which edges moved.\n // Stores IDEAL (unclamped) values so resizing always reverses correctly.\n // Clamping to image bounds happens at render time only.\n const updateAutoCrop = (oldX, oldY, oldW, oldH, newX, newY, newW, newH) => {\n const crop = autoCropRef.current;\n if (!crop || !image) return;\n\n const newAspect = newW / newH;\n\n const xMoved = Math.abs(newX - oldX) > 0.5;\n const yMoved = Math.abs(newY - oldY) > 0.5;\n const wChanged = Math.abs(newW - oldW) > 0.5;\n const hChanged = Math.abs(newH - oldH) > 0.5;\n\n let cx = crop.x, cy = crop.y, cw = crop.w, ch = crop.h;\n\n if (wChanged && !hChanged) {\n // Width only — adjust crop width, keep crop height fixed\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw; // left edge dragged → anchor right\n } else if (hChanged && !wChanged) {\n // Height only — adjust crop height, keep crop width fixed\n ch = cw / newAspect;\n if (yMoved) cy = crop.y + crop.h - ch; // top edge dragged → anchor bottom\n } else if (wChanged && hChanged) {\n // Corner resize — keep ch as base, derive cw\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw;\n if (yMoved) cy = crop.y + crop.h - ch;\n }\n\n // Store ideal values — NO clamping here\n autoCropRef.current = { x: cx, y: cy, w: cw, h: ch };\n };\n\n // Live transform — reset scale, set node dimensions, update crop directionally\n const handleTransform = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n };\n\n const handleTransformEnd = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n if (onTransformEnd) onTransformEnd(e);\n };\n\n // Crop calculations\n const modelHasCrop = image && (\n element.cropX !== 0 ||\n element.cropY !== 0 ||\n element.cropWidth !== 1 ||\n element.cropHeight !== 1\n );\n\n // Initialize auto-crop when image changes (cover-fit, centered)\n if (image && image !== autoCropSrcRef.current) {\n autoCropSrcRef.current = image;\n if (!modelHasCrop) {\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n if (natW > 0 && natH > 0) {\n const elemAspect = element.width / element.height;\n const imgAspect = natW / natH;\n if (imgAspect > elemAspect) {\n const ch = natH;\n const cw = natH * elemAspect;\n autoCropRef.current = { x: (natW - cw) / 2, y: 0, w: cw, h: ch };\n } else {\n const cw = natW;\n const ch = natW / elemAspect;\n autoCropRef.current = { x: 0, y: (natH - ch) / 2, w: cw, h: ch };\n }\n }\n } else {\n autoCropRef.current = null;\n }\n }\n if (!image) { autoCropSrcRef.current = null; autoCropRef.current = null; }\n\n let cropProps = {};\n if (modelHasCrop) {\n cropProps = {\n crop: {\n x: element.cropX * image.naturalWidth,\n y: element.cropY * image.naturalHeight,\n width: element.cropWidth * image.naturalWidth,\n height: element.cropHeight * image.naturalHeight,\n },\n };\n } else if (autoCropRef.current && image) {\n // Render-time clamping: fit ideal crop within source image bounds\n // while maintaining element aspect ratio.\n const ac = autoCropRef.current;\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n const elemAspect = element.width / element.height;\n\n let rw = ac.w, rh = ac.h, rx = ac.x, ry = ac.y;\n\n // Clamp dimensions to image bounds, maintaining aspect ratio\n if (rw > natW) { rw = natW; rh = natW / elemAspect; }\n if (rh > natH) { rh = natH; rw = natH * elemAspect; }\n rw = Math.max(1, rw);\n rh = Math.max(1, rh);\n\n // Clamp position\n rx = Math.max(0, Math.min(rx, natW - rw));\n ry = Math.max(0, Math.min(ry, natH - rh));\n\n cropProps = { crop: { x: rx, y: ry, width: rw, height: rh } };\n }\n\n // Mask clipping (clipFunc only works on Container nodes like Group)\n const maskShape = element.clipSrc\n ? MASK_SHAPES.find((s) => s.clipId === element.clipSrc)\n : null;\n\n const hasMask = !!maskShape;\n\n const clipFunc = hasMask\n ? (ctx) => { maskShape.clipFunc(ctx, element.width, element.height); }\n : undefined;\n\n const imageNode = (\n <KonvaImage\n ref={imageRef}\n image={image}\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n filters={hasFilters ? filters : undefined}\n blurRadius={element.blurEnabled ? element.blurRadius : undefined}\n brightness={element.brightnessEnabled ? element.brightness : undefined}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n {...cropProps}\n />\n );\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'image'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n clipFunc={clipFunc}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {imageNode}\n {hasBorder && (\n <Rect\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n stroke={element.borderColor}\n strokeWidth={element.borderSize}\n cornerRadius={element.cornerRadius}\n listening={false}\n />\n )}\n </Group>\n );\n});\n\nImageElementComponent.displayName = 'ImageElement';\nexport default ImageElementComponent;\n","import React, { useRef, useEffect, useState } from 'react';\nimport { Group, Rect, Text as KonvaText } from 'react-konva';\nimport Konva from 'konva';\nimport { observer } from 'mobx-react-lite';\n\nconst TextElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const groupRef = useRef(null);\n const textRef = useRef(null);\n const [textHeight, setTextHeight] = useState(element.height || 50);\n\n // Force Konva to recalculate text layout when fonts finish loading.\n useEffect(() => {\n const onFontLoaded = () => {\n const node = textRef.current;\n if (!node) return;\n const f = node.fontFamily();\n node.fontFamily('serif');\n node.fontFamily(f);\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n // Re-cache if blur is active\n if (element.blurEnabled && node) {\n node.cache();\n }\n node.getLayer()?.batchDraw();\n };\n document.fonts.addEventListener('loadingdone', onFontLoaded);\n return () => document.fonts.removeEventListener('loadingdone', onFontLoaded);\n }, []);\n\n // Sync Konva auto-sized height back to element model after text reflows\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n const frame = requestAnimationFrame(() => {\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [element.text, element.fontSize, element.fontFamily, element.fontWeight, element.width]);\n\n // Apply blur filter: cache the text node when blur is enabled\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n if (element.blurEnabled) {\n node.filters([Konva.Filters.Blur]);\n node.blurRadius(element.blurRadius);\n node.cache();\n } else {\n node.filters([]);\n node.clearCache();\n }\n node.getLayer()?.batchDraw();\n }, [element.blurEnabled, element.blurRadius, element.text, element.fontSize, element.width]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // During live drag: let Konva scale the node visually — no imperative changes,\n // no element.set(). Any MobX update here causes React to sync stale x/y back\n // to the node every frame, fighting the Transformer (especially top/left anchors).\n const handleTransform = () => {};\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n // Read accumulated scale against the MODEL values (not node.width/height,\n // which accumulate across multiple transform sessions and can drift).\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n const newWidth = Math.max(20, element.width * Math.abs(scaleX));\n const newFontSize = Math.max(8, Math.round(element.fontSize * Math.abs(scaleY)));\n\n const tNode = textRef.current;\n if (tNode) {\n tNode.width(newWidth);\n tNode.fontSize(newFontSize);\n }\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newWidth);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: newWidth,\n fontSize: newFontSize,\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const handleDblClick = () => {\n if (!element.contentEditable) return;\n element.toggleEditMode(true);\n\n const textNode = textRef.current;\n if (!textNode) return;\n\n const grp = groupRef.current;\n const stage = textNode.getStage();\n if (!stage) return;\n\n // Hide the group so the textarea appears as in-place editing\n if (grp) grp.hide();\n stage.batchDraw();\n\n const stageContainer = stage.container();\n const textPosition = textNode.absolutePosition();\n const absScale = textNode.getAbsoluteScale();\n const scaleX = absScale.x;\n const scaleY = absScale.y;\n\n const cssFontStyle = element.fontStyle === 'italic' ? 'italic' : 'normal';\n const cssFontWeight = String(element.fontWeight || 'normal');\n\n const textarea = document.createElement('textarea');\n textarea.value = element.text;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = `\"${element.fontFamily}\", sans-serif`;\n textarea.style.fontStyle = cssFontStyle;\n textarea.style.fontWeight = cssFontWeight;\n textarea.style.textAlign = element.align;\n textarea.style.color = element.fill;\n textarea.style.border = '0';\n textarea.style.borderWidth = '0';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = 'none';\n textarea.style.appearance = 'none';\n textarea.style.webkitAppearance = 'none';\n textarea.style.lineHeight = String(\n typeof element.lineHeight === 'number'\n ? element.lineHeight\n : parseFloat(element.lineHeight) || 1.2\n );\n textarea.style.letterSpacing = `${(element.letterSpacing || 0) * scaleX}px`;\n textarea.style.transformOrigin = 'left top';\n textarea.style.transform = `rotate(${element.rotation}deg)`;\n textarea.style.textDecoration = element.textDecoration || '';\n textarea.style.boxSizing = 'content-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n textarea.style.minHeight = '0';\n textarea.style.minWidth = '0';\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n textarea.select();\n\n let removed = false;\n const removeTextarea = () => {\n if (removed) return;\n removed = true;\n element.set({ text: textarea.value });\n element.toggleEditMode(false);\n if (grp) grp.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n };\n\n textarea.addEventListener('blur', removeTextarea);\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n removeTextarea();\n }\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n const fontStyleStr = (() => {\n const parts = [];\n const style = String(element.fontStyle || '').trim();\n const weight = String(element.fontWeight || '').trim();\n if (style === 'italic' || style.includes('italic')) parts.push('italic');\n if (weight && weight !== 'normal') parts.push(weight);\n return parts.length > 0 ? parts.join(' ') : 'normal';\n })();\n\n const pad = element.backgroundEnabled ? (element.backgroundPadding || 0) : 0;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'text'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={textHeight}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {/* Background rect */}\n {element.backgroundEnabled && (\n <Rect\n x={-pad}\n y={-pad}\n width={element.width + pad * 2}\n height={textHeight + pad * 2}\n fill={element.backgroundColor || '#ffffff'}\n opacity={element.backgroundOpacity ?? 1}\n cornerRadius={element.backgroundCornerRadius || 0}\n listening={false}\n />\n )}\n\n {/* Text */}\n <KonvaText\n ref={textRef}\n text={displayText}\n width={element.width}\n fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={fontStyleStr}\n textDecoration={element.textDecoration}\n fill={element.fill}\n align={element.align}\n verticalAlign={element.verticalAlign}\n lineHeight={typeof element.lineHeight === 'number' ? element.lineHeight : parseFloat(element.lineHeight) || 1.2}\n letterSpacing={element.letterSpacing}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth || 0}\n fillAfterStrokeEnabled={true}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n />\n </Group>\n );\n});\n\nTextElementComponent.displayName = 'TextElement';\nexport default TextElementComponent;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Image as KonvaImage } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst SVGElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const [image, setImage] = useState(null);\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n let svgSrc = element.src;\n\n // Apply color replacements to SVG\n if (element.colorsReplace && element.colorsReplace.size > 0) {\n // If it's a data URI SVG, decode and replace colors\n if (svgSrc.startsWith('data:image/svg+xml')) {\n try {\n let svgContent;\n if (svgSrc.includes('base64,')) {\n svgContent = atob(svgSrc.split('base64,')[1]);\n } else {\n svgContent = decodeURIComponent(svgSrc.split(',')[1]);\n }\n\n element.colorsReplace.forEach((newColor, oldColor) => {\n svgContent = svgContent.replace(new RegExp(oldColor, 'gi'), newColor);\n });\n\n svgSrc = 'data:image/svg+xml;base64,' + btoa(svgContent);\n } catch (e) {\n console.warn('Failed to process SVG color replacement', e);\n }\n }\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load SVG:', element.src.substring(0, 100));\n };\n img.src = svgSrc;\n }, [element.src, element.colorsReplace?.toJSON?.()]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n return (\n <KonvaImage\n ref={imageRef}\n id={element.id}\n name={element.name || 'svg'}\n image={image}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onClick={(e) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\n );\n});\n\nSVGElementComponent.displayName = 'SVGElement';\nexport default SVGElementComponent;\n","import React, { useRef } from 'react';\nimport { Rect, Circle, Star, Line as KonvaLine, RegularPolygon, Arrow, Path, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst FigureElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const shapeRef = useRef(null);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const commonProps = {\n id: element.id,\n name: element.name || 'figure',\n x: element.x,\n y: element.y,\n rotation: element.rotation,\n opacity: element.opacity,\n fill: element.fill,\n stroke: element.stroke || undefined,\n strokeWidth: element.strokeWidth || 0,\n dash: element.dash?.length > 0 ? [...element.dash] : undefined,\n draggable: !groupChild && element.draggable,\n visible: element.visible,\n shadowEnabled: element.shadowEnabled,\n shadowColor: element.shadowColor,\n shadowBlur: element.shadowBlur,\n shadowOffsetX: element.shadowOffsetX,\n shadowOffsetY: element.shadowOffsetY,\n shadowOpacity: element.shadowOpacity,\n onClick: (e) => { if (onSelect) onSelect(e); },\n onTap: (e) => { if (onSelect) onSelect(e); },\n onDragEnd: handleDragEnd,\n onTransformEnd: handleTransformEnd,\n };\n\n const subType = element.subType || 'rect';\n\n // Center-origin shapes use offset so that node.x()/y() stays top-left\n // (matching our model) while the visual center is positioned correctly.\n const centerOffset = {\n offsetX: -(element.width / 2),\n offsetY: -(element.height / 2),\n };\n\n switch (subType) {\n case 'circle':\n case 'ellipse':\n return (\n <Circle\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n radiusX={element.width / 2}\n radiusY={element.height / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'triangle':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={3}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'star':\n return (\n <Star\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n numPoints={5}\n innerRadius={Math.min(element.width, element.height) / 4}\n outerRadius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'polygon':\n case 'hexagon':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={subType === 'hexagon' ? 6 : 5}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'diamond':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={4}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'path':\n if (!element.pathData) return null;\n return (\n <Group\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n >\n <Path\n data={element.pathData}\n fill={element.fill}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth ? element.strokeWidth * (100 / element.width) : 0}\n scaleX={element.width / 100}\n scaleY={element.height / 100}\n />\n </Group>\n );\n\n case 'arrow':\n return (\n <Arrow\n ref={shapeRef}\n {...commonProps}\n points={[0, element.height / 2, element.width, element.height / 2]}\n pointerLength={10}\n pointerWidth={10}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'rect':\n default:\n return (\n <Rect\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n cornerRadius={element.cornerRadius || 0}\n />\n );\n }\n});\n\nFigureElementComponent.displayName = 'FigureElement';\nexport default FigureElementComponent;\n","import React, { Fragment } from 'react';\nimport { Line as KonvaLine, Arrow, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst HANDLE_SIZE = 10;\nconst DEG = Math.PI / 180;\n\nconst LineElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n if (!element.visible) return null;\n\n const rot = (element.rotation || 0) * DEG;\n const cosR = Math.cos(rot);\n const sinR = Math.sin(rot);\n\n // Start and end points in canvas coordinates\n const startX = element.x;\n const startY = element.y;\n const endX = element.x + element.width * cosR;\n const endY = element.y + element.width * sinR;\n\n const hasArrow = element.endHead === 'arrow' || element.startHead === 'arrow';\n\n // Drag the whole line\n const handleLineDragEnd = (e) => {\n const dx = e.target.x();\n const dy = e.target.y();\n // The line is rendered at (0,0) with absolute points, so dx/dy is the drag offset\n e.target.x(0);\n e.target.y(0);\n element.set({\n x: element.x + dx,\n y: element.y + dy,\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Drag the START handle\n const handleStartDrag = (e) => {\n const newSX = e.target.x() + HANDLE_SIZE / 2;\n const newSY = e.target.y() + HANDLE_SIZE / 2;\n const dx = endX - newSX;\n const dy = endY - newSY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n x: newSX,\n y: newSY,\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position since the line re-renders from new model coords\n e.target.x(newSX - HANDLE_SIZE / 2);\n e.target.y(newSY - HANDLE_SIZE / 2);\n };\n\n const handleStartDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n // Drag the END handle\n const handleEndDrag = (e) => {\n const newEX = e.target.x() + HANDLE_SIZE / 2;\n const newEY = e.target.y() + HANDLE_SIZE / 2;\n const dx = newEX - startX;\n const dy = newEY - startY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position\n e.target.x(newEX - HANDLE_SIZE / 2);\n e.target.y(newEY - HANDLE_SIZE / 2);\n };\n\n const handleEndDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n const lineNode = hasArrow ? (\n <Arrow\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n fill={element.color || '#000000'}\n pointerLength={10}\n pointerWidth={10}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n ) : (\n <KonvaLine\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n );\n\n return (\n <Fragment>\n {lineNode}\n\n {/* Endpoint handles — only visible when selected */}\n {isSelected && (\n <Fragment>\n {/* Start handle */}\n <Rect\n x={startX - HANDLE_SIZE / 2}\n y={startY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleStartDrag}\n onDragEnd={handleStartDragEnd}\n />\n {/* End handle */}\n <Rect\n x={endX - HANDLE_SIZE / 2}\n y={endY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleEndDrag}\n onDragEnd={handleEndDragEnd}\n />\n </Fragment>\n )}\n </Fragment>\n );\n});\n\nLineElementComponent.displayName = 'LineElement';\nexport default LineElementComponent;\n","import React, { useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Group } from 'react-konva';\n\n// ElementRenderer is passed via the _ElementRenderer prop to avoid circular imports\nconst GroupElementComponent = observer(({ element, isSelected, onTransformEnd, onDragEnd, _ElementRenderer }) => {\n const groupRef = useRef(null);\n\n const handleDragEnd = useCallback((e) => {\n const node = e.target;\n element.set({\n x: node.x(),\n y: node.y(),\n });\n if (onDragEnd) onDragEnd(e);\n }, [element, onDragEnd]);\n\n const handleTransformEnd = useCallback((e) => {\n const node = groupRef.current;\n if (!node) return;\n\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n // Scale each child proportionally\n element.children.forEach((child) => {\n if (child.set) {\n const updates = {\n x: (child.x || 0) * scaleX,\n y: (child.y || 0) * scaleY,\n };\n if ('width' in child) updates.width = (child.width || 0) * scaleX;\n if ('height' in child) updates.height = (child.height || 0) * scaleY;\n if (child.type === 'text' && child.fontSize) {\n updates.fontSize = Math.round(child.fontSize * Math.max(scaleX, scaleY));\n }\n child.set(updates);\n }\n });\n\n // Update group position, rotation, dimensions\n element.set({\n x: node.x(),\n y: node.y(),\n rotation: node.rotation(),\n width: element.width * scaleX,\n height: element.height * scaleY,\n });\n\n // Reset scale on the Konva node\n node.scaleX(1);\n node.scaleY(1);\n\n if (onTransformEnd) onTransformEnd(e);\n }, [element, onTransformEnd]);\n\n if (!element.visible) return null;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'group'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={element.draggable !== false}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n >\n {_ElementRenderer && element.children.map((child) => (\n <_ElementRenderer\n key={child.id}\n element={child}\n isSelected={false}\n groupChild={true}\n />\n ))}\n </Group>\n );\n});\n\nGroupElementComponent.displayName = 'GroupElementComponent';\nexport default GroupElementComponent;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport ImageElementComponent from './image-element';\nimport TextElementComponent from './text-element';\nimport SVGElementComponent from './svg-element';\nimport FigureElementComponent from './figure-element';\nimport LineElementComponent from './line-element';\nimport GroupElementComponent from './group-element';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n group: GroupElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const Renderer = ELEMENT_RENDERERS[element.type];\n\n if (!Renderer) {\n console.warn(`No renderer for element type: ${element.type}`);\n return null;\n }\n\n // Pass ElementRenderer itself to GroupElementComponent to avoid circular imports\n const extra = element.type === 'group' ? { _ElementRenderer: ElementRenderer } : {};\n\n return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n groupChild={groupChild}\n {...extra}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Button, TextField, Typography, Box } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport { getInputFieldsConfig } from '../config';\nimport { t } from '../config';\n\n// ── Date formatting helpers (shared with input-fields-panel) ─────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\nfunction parseDateFromFormat(dateStr, format) {\n try {\n const d = new Date(dateStr);\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n // ignore\n }\n return new Date();\n}\n\n// ── Default single-field dialog (full-page overlay) ──────────────────\nconst SingleFieldDialog = ({ field, onSubmit, onSkip, onBack, canGoBack, currentIndex, totalCount }) => {\n const [value, setValue] = useState('');\n const [imagePreview, setImagePreview] = useState(null);\n const fileInputRef = useRef(null);\n const config = getInputFieldsConfig();\n\n const custom = field.custom || {};\n const inputType = custom.inputType || 'text';\n const promptText = custom.promptText || custom.placeholder || 'Please provide input';\n const dateFormat = custom.dateFormat || 'MM-DD-YYYY';\n const isRequired = custom.required === true;\n const logoUrl = config.logoUrl || null;\n const headerText = config.headerText || null;\n const accentColor = config.accentColor || '#0d83cd';\n const progressPct = Math.round(((currentIndex + 1) / totalCount) * 100);\n\n useEffect(() => {\n setValue('');\n setImagePreview(null);\n }, [field.id]);\n\n const handleImageSelect = (e) => {\n const file = e.target.files?.[0];\n if (!file || !file.type.startsWith('image/')) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataURL = ev.target.result;\n setValue(dataURL);\n setImagePreview(dataURL);\n };\n reader.readAsDataURL(file);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleSubmit = () => {\n if (inputType === 'date' && value) {\n const dateObj = parseDateFromFormat(value, dateFormat);\n const formatted = formatDate(dateObj, dateFormat);\n onSubmit(field.id, formatted);\n } else {\n onSubmit(field.id, value);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' && inputType !== 'image') handleSubmit();\n };\n\n const renderInput = () => {\n const sharedSx = {\n mt: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: '8px',\n fontSize: 22,\n '& fieldset': { borderColor: '#d0d5dd' },\n '&:hover fieldset': { borderColor: accentColor },\n '&.Mui-focused fieldset': { borderColor: accentColor },\n },\n ...config.inputStyle,\n };\n\n switch (inputType) {\n case 'date':\n return (\n <TextField\n fullWidth\n type=\"date\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n InputLabelProps={{ shrink: true }}\n sx={sharedSx}\n />\n );\n case 'integer':\n return (\n <TextField\n fullWidth\n type=\"number\"\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '' || /^-?\\d*$/.test(v)) setValue(v);\n }}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder=\"0\"\n inputProps={{ step: 1 }}\n sx={sharedSx}\n />\n );\n case 'image':\n return (\n <Box sx={{ mt: 1 }}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleImageSelect}\n style={{ display: 'none' }}\n />\n {imagePreview ? (\n <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2 }}>\n <Box\n sx={{\n width: '100%',\n maxHeight: 260,\n borderRadius: '10px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fafafa',\n }}\n >\n <img\n src={imagePreview}\n alt=\"Preview\"\n style={{ maxWidth: '100%', maxHeight: 260, objectFit: 'contain' }}\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n sx={{ textTransform: 'none', fontSize: 13, borderRadius: '8px', borderColor: '#d0d5dd' }}\n >\n {t('inputFieldsDialog.changeImage', 'Change Image')}\n </Button>\n </Box>\n ) : (\n <Box\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed #d0d5dd',\n borderRadius: '10px',\n p: 4,\n textAlign: 'center',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 40, color: '#bbb', mb: 1.5 }} />\n <Typography variant=\"body2\" sx={{ color: '#888', fontSize: 14 }}>\n {t('inputFieldsDialog.uploadImage', 'Click to select an image')}\n </Typography>\n </Box>\n )}\n </Box>\n );\n case 'text':\n default:\n return (\n <TextField\n fullWidth\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder={custom.placeholder || ''}\n sx={sharedSx}\n />\n );\n }\n };\n\n return (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n backgroundColor: '#f7f8fa',\n display: 'flex',\n flexDirection: 'column',\n ...config.dialogStyle,\n }}\n >\n {/* Progress bar */}\n <Box sx={{ height: 4, backgroundColor: '#e4e7ec', flexShrink: 0 }}>\n <Box\n sx={{\n height: '100%',\n width: `${progressPct}%`,\n backgroundColor: accentColor,\n transition: 'width 0.4s ease',\n }}\n />\n </Box>\n\n {/* Header */}\n <Box\n sx={{\n backgroundColor: '#fff',\n borderBottom: '1px solid #f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n px: 4,\n py: 1.75,\n flexShrink: 0,\n ...config.titleStyle,\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {logoUrl && (\n <img\n src={logoUrl}\n alt=\"Logo\"\n style={{ maxHeight: 36, maxWidth: 200, objectFit: 'contain' }}\n />\n )}\n {(headerText || !logoUrl) && (\n <Typography sx={{ fontWeight: 700, fontSize: 17, color: '#1a1a1a', letterSpacing: '-0.2px' }}>\n {headerText || 'LabelLife'}\n </Typography>\n )}\n </Box>\n </Box>\n\n {/* Centered content */}\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n p: { xs: 3, sm: 5 },\n overflowY: 'auto',\n }}\n >\n <Box sx={{ width: '100%', maxWidth: 750 }}>\n {/* Step indicator */}\n <Typography\n sx={{ display: 'block', fontSize: 18, color: '#999', fontWeight: 500, mb: 1.5, letterSpacing: '0.2px' }}\n >\n {t('inputFieldsDialog.stepIndicator', 'Field {current} of {total}')\n .replace('{current}', currentIndex + 1)\n .replace('{total}', totalCount)}\n </Typography>\n\n {/* Main question */}\n <Typography\n sx={{\n fontSize: { xs: 33, sm: 39 },\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.3,\n mb: 4.5,\n ...config.promptStyle,\n }}\n >\n {promptText}\n </Typography>\n\n {/* Input */}\n {renderInput()}\n\n {/* Actions */}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 4.5 }}>\n {canGoBack && (\n <Button\n variant=\"outlined\"\n onClick={onBack}\n startIcon={<ArrowBackIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 3,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('inputFieldsDialog.back', 'Back')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={handleSubmit}\n disabled={isRequired && !value}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: 21,\n px: 5,\n py: 1.65,\n borderRadius: '10px',\n backgroundColor: accentColor,\n boxShadow: 'none',\n '&:hover': { backgroundColor: '#0a6eb3', boxShadow: 'none' },\n ...config.submitButtonStyle,\n }}\n >\n {config.submitButtonText || t('inputFieldsDialog.submit', 'Continue')}\n </Button>\n {!isRequired && (\n <Button\n variant=\"outlined\"\n onClick={() => onSkip(field.id)}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 4.5,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n ...config.skipButtonStyle,\n }}\n >\n {config.skipButtonText || t('inputFieldsDialog.skip', 'Do it later')}\n </Button>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n\n// ── Main orchestrator component ──────────────────────────────────────\nconst InputFieldsDialog = observer(({ store, onComplete, enabled = true, backTrigger = 0 }) => {\n // displayIndex counts how many fields have been answered (for step indicator only).\n // Navigation always uses fields[0] — the first remaining pending field.\n const [displayIndex, setDisplayIndex] = useState(0);\n const initialTotalRef = useRef(0);\n const completedHistoryRef = useRef([]);\n const isGoingBackRef = useRef(false);\n const prevBackTriggerRef = useRef(backTrigger);\n const config = getInputFieldsConfig();\n\n const pendingFields = store._pendingInputFields || [];\n\n // When disabled, clear any pending fields so they are treated as skipped\n useEffect(() => {\n if (!enabled && pendingFields.length > 0) {\n store.clearPendingInputFields();\n }\n }, [enabled, pendingFields.length, store]);\n\n const fields = pendingFields.filter(\n (f) => f.custom && f.custom.inputField\n );\n\n // Capture total and reset display counter when a fresh batch appears\n useEffect(() => {\n if (fields.length > 0 && initialTotalRef.current === 0) {\n if (isGoingBackRef.current) {\n // Back-from-summary restored a field — recover total from history + pending\n isGoingBackRef.current = false;\n initialTotalRef.current = completedHistoryRef.current.length + fields.length;\n } else {\n // Genuine fresh batch\n initialTotalRef.current = fields.length;\n setDisplayIndex(0);\n completedHistoryRef.current = [];\n }\n }\n if (fields.length === 0) {\n initialTotalRef.current = 0;\n // History is intentionally kept so back-from-summary can use it\n }\n }, [fields.length]);\n\n const totalCount = initialTotalRef.current || fields.length;\n\n // Back-from-summary: triggered by parent incrementing backTrigger prop\n // Must be defined and its useEffect called BEFORE any early returns (Rules of Hooks)\n const handleBackFromSummary = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n isGoingBackRef.current = true;\n store._unresolveInputField(el);\n }\n // displayIndex stays unchanged — it already points to the last step (N-1)\n };\n\n useEffect(() => {\n if (backTrigger !== prevBackTriggerRef.current) {\n prevBackTriggerRef.current = backTrigger;\n handleBackFromSummary();\n }\n }, [backTrigger]);\n\n if (!enabled || fields.length === 0) return null;\n\n // Always show the first remaining field — the array shrinks as fields are resolved\n const currentField = fields[0];\n if (!currentField) return null;\n\n // ── Shared submit / skip / back helpers ─────────────────────────────\n const handleSubmit = (elementId, value) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: false });\n if (el && el.set) {\n if (isImage) {\n el.set({ src: String(value) });\n } else {\n el.set({ text: String(value) });\n }\n }\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleSkip = (elementId) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: true });\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleBack = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n store._unresolveInputField(el);\n }\n setDisplayIndex((prev) => Math.max(0, prev - 1));\n };\n\n const canGoBack = displayIndex > 0;\n\n // ── Resolve which dialog component to use ───────────────────────────\n // Priority: per-type custom dialog > global CustomDialog > built-in\n const TYPE_DIALOG_MAP = {\n text: config.CustomTextDialog,\n date: config.CustomDateDialog,\n integer: config.CustomIntegerDialog,\n image: config.CustomImageDialog,\n };\n\n const fieldType = (currentField.custom && currentField.custom.inputType) || 'text';\n const PerTypeDialog = TYPE_DIALOG_MAP[fieldType];\n const GlobalCustomDialog = config.CustomDialog;\n const ResolvedDialog = PerTypeDialog || GlobalCustomDialog || null;\n\n if (ResolvedDialog) {\n return (\n <ResolvedDialog\n field={currentField}\n fields={fields}\n currentIndex={displayIndex}\n totalCount={totalCount}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n onComplete={() => {\n store.history.addUndoState();\n if (onComplete) onComplete();\n }}\n />\n );\n }\n\n return (\n <SingleFieldDialog\n field={currentField}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n currentIndex={displayIndex}\n totalCount={totalCount}\n />\n );\n});\n\nInputFieldsDialog.displayName = 'InputFieldsDialog';\nexport default InputFieldsDialog;\nexport { InputFieldsDialog };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group, Image as KonvaImage, Shape } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\nimport InputFieldsDialog from '../components/InputFieldsDialog';\n\n// Generate a checkerboard pattern tile (off-screen canvas)\nconst createCheckerboardImage = (tileSize = 10, color1 = '#d4d4d4', color2 = '#ffffff') => {\n const canvas = document.createElement('canvas');\n canvas.width = tileSize * 2;\n canvas.height = tileSize * 2;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = color1;\n ctx.fillRect(0, 0, tileSize, tileSize);\n ctx.fillRect(tileSize, tileSize, tileSize, tileSize);\n ctx.fillStyle = color2;\n ctx.fillRect(tileSize, 0, tileSize, tileSize);\n ctx.fillRect(0, tileSize, tileSize, tileSize);\n const img = new window.Image();\n img.src = canvas.toDataURL();\n return img;\n};\n\nlet _checkerImg = null;\nconst getCheckerboardImage = () => {\n if (!_checkerImg) _checkerImg = createCheckerboardImage();\n return _checkerImg;\n};\n\nconst CheckerboardBackground = ({ w, h }) => {\n const [ready, setReady] = useState(false);\n const imgRef = useRef(getCheckerboardImage());\n useEffect(() => {\n const img = imgRef.current;\n if (img.complete) { setReady(true); return; }\n img.onload = () => setReady(true);\n return () => { img.onload = null; };\n }, []);\n if (!ready) return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"display-only\" />;\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillPatternImage={imgRef.current}\n fillPatternRepeat=\"repeat\"\n listening={false}\n name=\"display-only\"\n />\n );\n};\n\nconst ImageBackground = ({ url, w, h }) => {\n const [image, setImage] = useState(null);\n useEffect(() => {\n if (!url) { setImage(null); return; }\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => setImage(img);\n img.onerror = () => setImage(null);\n img.src = url;\n return () => { img.onload = null; img.onerror = null; };\n }, [url]);\n if (!image) return <Rect x={0} y={0} width={w} height={h} fill=\"#f0f0f0\" listening={false} name=\"page-background\" />;\n\n // \"cover\" fit: scale to fill canvas while maintaining aspect ratio, then center\n const imgW = image.naturalWidth || image.width;\n const imgH = image.naturalHeight || image.height;\n const scale = Math.max(w / imgW, h / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const drawX = (w - drawW) / 2;\n const drawY = (h - drawH) / 2;\n\n return (\n <Group clipX={0} clipY={0} clipWidth={w} clipHeight={h} listening={false} name=\"page-background\">\n <KonvaImage x={drawX} y={drawY} width={drawW} height={drawH} image={image} listening={false} />\n </Group>\n );\n};\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n const w = store.width;\n const h = store.height;\n\n if (!bg) {\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n }\n\n if (bg === 'transparent') {\n return (\n <>\n <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />\n <CheckerboardBackground w={w} h={h} />\n </>\n );\n }\n\n // Linear gradient stored as JSON\n if (bg.startsWith('{')) {\n try {\n const grad = JSON.parse(bg);\n if (grad.type === 'linear') {\n const angle = (grad.angle || 0) * (Math.PI / 180);\n const cx = w / 2, cy = h / 2;\n const len = Math.sqrt(w * w + h * h) / 2;\n const x1 = cx - len * Math.cos(angle);\n const y1 = cy - len * Math.sin(angle);\n const x2 = cx + len * Math.cos(angle);\n const y2 = cy + len * Math.sin(angle);\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillLinearGradientStartPoint={{ x: x1, y: y1 }}\n fillLinearGradientEndPoint={{ x: x2, y: y2 }}\n fillLinearGradientColorStops={[0, grad.colors?.[0] || '#000000', 1, grad.colors?.[1] || '#ffffff']}\n listening={false}\n name=\"page-background\"\n />\n );\n }\n } catch (e) { /* fall through */ }\n }\n\n // Image URL background\n if (bg.startsWith('http')) {\n return <ImageBackground url={bg} w={w} h={h} />;\n }\n\n // Solid color\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green'].includes(bg)) {\n return <Rect x={0} y={0} width={w} height={h} fill={bg} listening={false} name=\"page-background\" />;\n }\n\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n});\n\n// Semi-transparent overlay that dims everything outside the page boundary.\n// Draws a huge rectangle with a rectangular hole cut out for the page area.\nconst PageOverlayFrame = observer(({ store }) => {\n const W = store.width;\n const H = store.height;\n if (!W || !H) return null;\n const BIG = 100000; // large enough to cover viewport at any zoom\n return (\n <Shape\n sceneFunc={(ctx, shape) => {\n ctx.beginPath();\n // Outer rectangle (clockwise)\n ctx.moveTo(-BIG, -BIG);\n ctx.lineTo(BIG, -BIG);\n ctx.lineTo(BIG, BIG);\n ctx.lineTo(-BIG, BIG);\n ctx.closePath();\n // Inner rectangle (counter-clockwise to create hole)\n ctx.moveTo(0, 0);\n ctx.lineTo(0, H);\n ctx.lineTo(W, H);\n ctx.lineTo(W, 0);\n ctx.closePath();\n ctx.fillStrokeShape(shape);\n }}\n fill=\"rgba(240,240,240,0.5)\"\n listening={false}\n name=\"display-only\"\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst TEXT_ANCHORS = [\n 'top-left',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst CORNER_ANCHORS = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst SelectionTransformer = observer(({ store, stageRef }) => {\n const transformerRef = useRef(null);\n\n const selectedIds = [...store.selectedElementsIds];\n\n // Filter out line elements — they use custom endpoint handles instead\n const nonLineIds = selectedIds.filter((id) => {\n const el = store.getElementById(id);\n return el && el.type !== 'line';\n });\n\n const allText = nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'text';\n })();\n\n const useCorners = nonLineIds.length > 1 || (nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'group';\n })());\n\n const targetAnchors = useCorners ? CORNER_ANCHORS : allText ? TEXT_ANCHORS : ALL_ANCHORS;\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (!transformerRef.current || !stageRef.current) return;\n\n const stage = stageRef.current;\n const nodes = [];\n\n nonLineIds.forEach((id) => {\n const node = stage.findOne(`#${id}`);\n if (node) nodes.push(node);\n });\n\n transformerRef.current.enabledAnchors(targetAnchors);\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(','), targetAnchors]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n // Reject flip (negative) and too-small dimensions\n if (newBox.width < 5 || newBox.height < 5) {\n return oldBox;\n }\n return newBox;\n }}\n anchorSize={8}\n anchorCornerRadius={2}\n borderStroke=\"#0d83cd\"\n anchorStroke=\"#0d83cd\"\n anchorFill=\"#ffffff\"\n padding={0}\n />\n );\n});\n\nconst Workspace = observer(({ store, components = {}, showInputFieldsPopup = true, onInputFieldsComplete, backTrigger = 0 }) => {\n const stageRef = useRef(null);\n const containerRef = useRef(null);\n const [stageSize, setStageSize] = useState({ width: 800, height: 600 });\n\n const { PageControls } = components;\n\n // Resize observer\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateSize = () => {\n const { width, height } = container.getBoundingClientRect();\n setStageSize({ width, height });\n\n // Auto-fit the canvas.\n // Guard: if the container hasn't been laid out yet (width/height === 0)\n // the arithmetic produces a negative scale which mirrors the entire canvas.\n // Skip the update in that case — the ResizeObserver will fire again once\n // the container has real dimensions.\n if (store.width > 0 && store.height > 0 && width > 0 && height > 0) {\n const padding = 40;\n const scaleX = (width - padding * 2) / store.width;\n const scaleY = (height - padding * 2) / store.height;\n const scale = Math.min(scaleX, scaleY, 1);\n if (scale > 0) {\n store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\n }\n }\n }\n };\n\n updateSize();\n\n const observer = new ResizeObserver(updateSize);\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [store.width, store.height]);\n\n // Set stage ref on store for export\n useEffect(() => {\n if (stageRef.current) {\n store._setStageRef(stageRef.current);\n }\n }, [stageRef.current]);\n\n const handleStageMouseDown = useCallback(\n (e) => {\n let target = e.target;\n\n // Click on empty area or background -> deselect\n if (target === target.getStage() || target.attrs?.name === 'page-background') {\n store.selectElements([]);\n return;\n }\n\n // Walk up the node tree to find the nearest ancestor with an element id\n // (needed for Group-wrapped elements like lines)\n let clickedId = target.id();\n while (!clickedId && target.parent && target.parent !== target.getStage()) {\n target = target.parent;\n clickedId = target.id();\n }\n if (!clickedId) return;\n\n const element = store.getElementById(clickedId);\n if (!element || !element.selectable) return;\n\n // If element is inside a group, select the top-level group instead\n const targetElement = element.top || element;\n const targetId = targetElement.id;\n\n if (e.evt?.ctrlKey || e.evt?.metaKey) {\n // Multi-select with Ctrl (Cmd on Mac)\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(targetId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(targetId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(targetId)) {\n store.selectElements([targetId]);\n }\n },\n [store]\n );\n\n const handleTransformEnd = useCallback(() => {\n // Save to history after transform\n store.history.addUndoState();\n }, [store]);\n\n const handleDragEnd = useCallback(() => {\n // Save to history after drag\n store.history.addUndoState();\n }, [store]);\n\n // Keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (e) => {\n // Only handle if stage container or body is focused\n const target = e.target;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n return;\n }\n\n // Delete / Backspace\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n store.deleteElements(selectedIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+Z / Cmd+Z -> Undo\n if ((e.ctrlKey || e.metaKey) && e.key === 'z' && !e.shiftKey) {\n store.history.undo();\n e.preventDefault();\n }\n\n // Ctrl+Y / Cmd+Shift+Z -> Redo\n if (\n ((e.ctrlKey || e.metaKey) && e.key === 'y') ||\n ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'z')\n ) {\n store.history.redo();\n e.preventDefault();\n }\n\n // Ctrl+D -> Duplicate\n if ((e.ctrlKey || e.metaKey) && e.key === 'd') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0 && store.activePage) {\n const newIds = [];\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.clone) {\n const cloned = el.clone({ x: (el.x || 0) + 20, y: (el.y || 0) + 20 }, { skipSelect: true });\n if (cloned) newIds.push(cloned.id);\n }\n });\n store.selectElements(newIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+G -> Group selected elements\n if ((e.ctrlKey || e.metaKey) && e.key === 'g' && !e.shiftKey) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 1) {\n const group = store.groupElements(selectedIds);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n e.preventDefault();\n }\n }\n\n // Ctrl+Shift+G -> Ungroup\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'G') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length === 1) {\n const el = store.getElementById(selectedIds[0]);\n if (el && el.type === 'group') {\n store.ungroupElements([el.id]);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n }\n\n // Arrow keys -> nudge\n const NUDGE = e.shiftKey ? 10 : 1;\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.set) {\n if (e.key === 'ArrowLeft') el.set({ x: el.x - NUDGE });\n if (e.key === 'ArrowRight') el.set({ x: el.x + NUDGE });\n if (e.key === 'ArrowUp') el.set({ y: el.y - NUDGE });\n if (e.key === 'ArrowDown') el.set({ y: el.y + NUDGE });\n }\n });\n e.preventDefault();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [store]);\n\n // Zoom with mouse wheel\n const handleWheel = useCallback(\n (e) => {\n e.evt.preventDefault();\n const stage = stageRef.current;\n if (!stage) return;\n\n const scaleBy = 1.05;\n const oldScale = store.scale;\n const newScale =\n e.evt.deltaY > 0 ? oldScale / scaleBy : oldScale * scaleBy;\n\n store.setScale(Math.max(0.1, Math.min(5, newScale)));\n },\n [store]\n );\n\n const page = store.activePage;\n const scale = store.scale;\n // Reading _fontVersion makes this observer re-render whenever a font finishes\n // loading, so Konva redraws text with the correct font instead of the fallback.\n void store._fontVersion;\n\n // Center the canvas in the viewport\n const offsetX = (stageSize.width - store.width * scale) / 2;\n const offsetY = (stageSize.height - store.height * scale) / 2;\n\n return (\n <div\n ref={containerRef}\n style={{\n width: '100%',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n name=\"display-only\"\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* Overlay that dims content outside the page */}\n <PageOverlayFrame store={store} />\n\n {/* Selection transformer */}\n <SelectionTransformer store={store} stageRef={stageRef} />\n </Layer>\n </Stage>\n\n {/* Page controls slot */}\n {PageControls !== undefined ? (\n PageControls === null ? null : <PageControls store={store} />\n ) : null}\n\n {/* Input fields popup */}\n <InputFieldsDialog store={store} enabled={showInputFieldsPopup} onComplete={onInputFieldsComplete} backTrigger={backTrigger} />\n </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n"],"names":["GLOBAL_KEY","window","_get","t","key","defaultValue","parts","split","current","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","_typeof","err","e","f","undefined","INPUT_FIELDS_CONFIG_KEY","getInputFieldsConfig","MASK_SHAPES","name","clipFunc","ctx","w","h","beginPath","ellipse","Math","PI","closePath","preview","clipId","moveTo","lineTo","cx","cy","outerR","min","innerR","points","i","r","angle","x","cos","y","sin","topY","bezierCurveTo","quadraticCurveTo","ImageMaskPanel","observer","_ref","store","panel","_toolbarPanel","type","element","getElementById","elementId","handleClose","closeToolbarPanel","applyMask","shape","set","clipSrc","history","addUndoState","removeMask","hasMask","_jsxs","Box","sx","width","height","overflowY","overflowX","backgroundColor","borderRight","flexShrink","p","children","display","alignItems","justifyContent","mb","_jsx","Typography","variant","fontWeight","IconButton","size","onClick","CloseIcon","fontSize","src","textAlign","alt","style","maxWidth","maxHeight","objectFit","borderRadius","border","py","cursor","color","gridTemplateColumns","gap","map","isActive","aspectRatio","viewBox","d","fill","stroke","strokeWidth","displayName","SepiaFilter","imageData","data","length","g","b","WarmFilter","max","ColdFilter","ImageElementComponent","isSelected","onSelect","onTransformEnd","onDragEnd","groupChild","imageRef","useRef","groupRef","_useState","useState","_useState2","_slicedToArray","image","setImage","autoCropRef","autoCropSrcRef","useEffect","img","Image","crossOrigin","onload","onerror","console","warn","substring","filters","blurEnabled","push","Konva","Filters","Blur","brightnessEnabled","Brighten","grayscaleEnabled","Grayscale","sepiaEnabled","warmEnabled","coldEnabled","hasFilters","hasBorder","borderSize","borderColor","needsCache","cornerRadius","shadowEnabled","node","cache","clearCache","blurRadius","brightness","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","visible","handleDragEnd","target","updateAutoCrop","oldX","oldY","oldW","oldH","newX","newY","newW","newH","crop","newAspect","xMoved","abs","yMoved","wChanged","hChanged","cw","ch","handleTransform","scaleX","scaleY","rotation","handleTransformEnd","modelHasCrop","cropX","cropY","cropWidth","cropHeight","natW","naturalWidth","natH","naturalHeight","elemAspect","imgAspect","cropProps","ac","rw","rh","rx","ry","maskShape","find","imageNode","KonvaImage","_objectSpread","ref","flipX","flipY","offsetX","offsetY","shadowOpacity","Group","id","opacity","draggable","onTap","onTransform","Rect","listening","TextElementComponent","_element$backgroundOp","textRef","textHeight","setTextHeight","onFontLoaded","_node$getLayer","fontFamily","getLayer","batchDraw","document","fonts","addEventListener","removeEventListener","frame","requestAnimationFrame","cancelAnimationFrame","text","_node$getLayer2","newWidth","newFontSize","round","tNode","handleDblClick","contentEditable","toggleEditMode","textNode","grp","stage","getStage","hide","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","fontStyle","cssFontWeight","String","textarea","createElement","position","top","concat","left","align","borderWidth","padding","margin","overflow","background","outline","resize","appearance","webkitAppearance","lineHeight","parseFloat","letterSpacing","transformOrigin","transform","textDecoration","boxSizing","zIndex","whiteSpace","wordBreak","minHeight","minWidth","appendChild","focus","select","removed","removeTextarea","show","parentNode","removeChild","displayText","placeholder","textTransform","toUpperCase","toLowerCase","replace","c","fontStyleStr","trim","weight","includes","join","pad","backgroundEnabled","backgroundPadding","onDblClick","onDblTap","backgroundOpacity","backgroundCornerRadius","KonvaText","verticalAlign","fillAfterStrokeEnabled","SVGElementComponent","_element$colorsReplac","_element$colorsReplac2","svgSrc","colorsReplace","startsWith","svgContent","atob","decodeURIComponent","forEach","newColor","oldColor","RegExp","btoa","toJSON","call","FigureElementComponent","_element$dash","shapeRef","commonProps","dash","_toConsumableArray","subType","centerOffset","Circle","radiusX","radiusY","RegularPolygon","sides","radius","Star","numPoints","innerRadius","outerRadius","pathData","Path","Arrow","pointerLength","pointerWidth","HANDLE_SIZE","DEG","LineElementComponent","_element$dash2","rot","cosR","sinR","startX","startY","endX","endY","hasArrow","endHead","startHead","handleLineDragEnd","dx","dy","handleStartDrag","newSX","newSY","sqrt","newRotation","atan2","handleStartDragEnd","handleEndDrag","newEX","newEY","handleEndDragEnd","lineNode","hitStrokeWidth","KonvaLine","Fragment","onDragMove","GroupElementComponent","_ElementRenderer","useCallback","child","updates","ELEMENT_RENDERERS","svg","figure","line","group","ElementRenderer","Renderer","extra","MONTH_NAMES","formatDate","date","format","mm","getMonth","padStart","dd","getDate","yyyy","getFullYear","monthName","parseDateFromFormat","dateStr","Date","isNaN","getTime","SingleFieldDialog","field","onSubmit","onSkip","onBack","canGoBack","currentIndex","totalCount","setValue","_useState3","_useState4","imagePreview","setImagePreview","fileInputRef","config","custom","inputType","promptText","dateFormat","isRequired","required","logoUrl","headerText","accentColor","progressPct","handleImageSelect","_e$target$files","file","files","reader","FileReader","ev","dataURL","result","readAsDataURL","handleSubmit","dateObj","formatted","handleKeyDown","renderInput","sharedSx","mt","inputStyle","TextField","fullWidth","onChange","onKeyDown","autoFocus","InputLabelProps","shrink","v","test","inputProps","step","accept","flexDirection","Button","_fileInputRef$current","click","_fileInputRef$current2","transition","CloudUploadIcon","inset","dialogStyle","borderBottom","px","titleStyle","flex","xs","sm","promptStyle","startIcon","ArrowBackIcon","disabled","boxShadow","submitButtonStyle","submitButtonText","skipButtonStyle","skipButtonText","InputFieldsDialog","_ref2","onComplete","_ref2$enabled","enabled","_ref2$backTrigger","backTrigger","_useState5","_useState6","displayIndex","setDisplayIndex","initialTotalRef","completedHistoryRef","isGoingBackRef","prevBackTriggerRef","pendingFields","_pendingInputFields","clearPendingInputFields","fields","filter","inputField","handleBackFromSummary","last","pop","el","previousValue","isImage","_unresolveInputField","currentField","skipped","_resolveInputField","prev","handleSkip","handleBack","TYPE_DIALOG_MAP","CustomTextDialog","CustomDateDialog","integer","CustomIntegerDialog","CustomImageDialog","fieldType","PerTypeDialog","GlobalCustomDialog","CustomDialog","ResolvedDialog","createCheckerboardImage","tileSize","arguments","color1","color2","canvas","getContext","fillStyle","fillRect","toDataURL","_checkerImg","getCheckerboardImage","CheckerboardBackground","ready","setReady","imgRef","complete","fillPatternImage","fillPatternRepeat","ImageBackground","url","imgW","imgH","scale","drawW","drawH","drawX","drawY","clipX","clipY","clipWidth","clipHeight","PageBackground","_ref3","page","activePage","bg","_Fragment","grad","JSON","parse","_grad$colors","_grad$colors2","len","x1","y1","x2","y2","fillLinearGradientStartPoint","fillLinearGradientEndPoint","fillLinearGradientColorStops","colors","PageOverlayFrame","_ref4","W","H","BIG","Shape","sceneFunc","fillStrokeShape","ALL_ANCHORS","TEXT_ANCHORS","CORNER_ANCHORS","SelectionTransformer","_ref5","stageRef","transformerRef","selectedIds","selectedElementsIds","nonLineIds","allText","useCorners","targetAnchors","_transformerRef$curre","nodes","findOne","enabledAnchors","Transformer","rotateEnabled","boundBoxFunc","oldBox","newBox","anchorSize","anchorCornerRadius","borderStroke","anchorStroke","anchorFill","Workspace","_ref6","_ref6$components","components","_ref6$showInputFields","showInputFieldsPopup","onInputFieldsComplete","_ref6$backTrigger","containerRef","stageSize","setStageSize","PageControls","updateSize","_container$getBoundin","getBoundingClientRect","_setScaleToFit","setScale","ResizeObserver","observe","disconnect","_setStageRef","handleStageMouseDown","_target$attrs","_e$evt","_e$evt2","attrs","selectElements","clickedId","parent","selectable","targetElement","targetId","evt","ctrlKey","metaKey","currentIds","idx","indexOf","splice","tagName","deleteElements","preventDefault","shiftKey","undo","redo","newIds","clone","cloned","skipSelect","groupElements","ungroupElements","NUDGE","handleWheel","scaleBy","oldScale","newScale","deltaY","_fontVersion","Stage","onMouseDown","onTouchStart","onWheel","Layer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sources":["../../../src/utils/l10n.js","../../../src/config.js","../../../src/toolbar/image-mask-panel.js","../../../src/canvas/image-element.js","../../../src/canvas/text-element.js","../../../src/canvas/svg-element.js","../../../src/canvas/figure-element.js","../../../src/canvas/line-element.js","../../../src/canvas/group-element.js","../../../src/canvas/element.js","../../../src/components/InputFieldsDialog.js","../../../src/canvas/workspace.js"],"sourcesContent":["// Use a window-level singleton so that all Rollup bundles (config, toolbar,\n// side-panel, canvas) share the same translations object. Without this each\n// bundle gets its own copy of this module with a separate local variable.\nconst GLOBAL_KEY = '__labellife_translations__';\nif (typeof window !== 'undefined' && !window[GLOBAL_KEY]) {\n window[GLOBAL_KEY] = {};\n}\n\nfunction _get() {\n return (typeof window !== 'undefined' && window[GLOBAL_KEY]) || {};\n}\n\nfunction deepMerge(target, source) {\n const result = { ...target };\n for (const key of Object.keys(source)) {\n if (\n source[key] &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key]) &&\n target[key] &&\n typeof target[key] === 'object' &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(target[key], source[key]);\n } else {\n result[key] = source[key];\n }\n }\n return result;\n}\n\nexport function setTranslations(newTranslations) {\n if (typeof window !== 'undefined') {\n window[GLOBAL_KEY] = deepMerge(_get(), newTranslations);\n }\n}\n\nexport function getTranslations() {\n return _get();\n}\n\nexport function t(key, defaultValue) {\n // Support dot-notation paths like 'toolbar.duration'\n const parts = key.split('.');\n let current = _get();\n for (const part of parts) {\n if (current == null || typeof current !== 'object') {\n return defaultValue || key;\n }\n current = current[part];\n }\n if (current !== undefined && current !== null && typeof current !== 'object') {\n return current;\n }\n return defaultValue || key;\n}\n","import { setTranslations as _setTranslations, getTranslations, t } from './utils/l10n';\n\nlet _theme = 'light';\nlet _customTheme = {};\n\nexport function setTranslations(translations) {\n _setTranslations(translations);\n}\n\nexport { getTranslations, t };\n\nexport function setTheme(theme) {\n _theme = theme;\n}\n\nexport function getTheme() {\n return _theme;\n}\n\nexport function setCustomTheme(customTheme) {\n _customTheme = { ..._customTheme, ...customTheme };\n}\n\nexport function getCustomTheme() {\n return _customTheme;\n}\n\n// ── Input Fields Dialog Config ───────────────────────────────────────\nconst INPUT_FIELDS_CONFIG_KEY = '__labellife_input_fields_config__';\nif (typeof window !== 'undefined' && !window[INPUT_FIELDS_CONFIG_KEY]) {\n window[INPUT_FIELDS_CONFIG_KEY] = {};\n}\n\nexport function setInputFieldsConfig(config) {\n if (typeof window !== 'undefined') {\n window[INPUT_FIELDS_CONFIG_KEY] = { ...window[INPUT_FIELDS_CONFIG_KEY], ...config };\n }\n}\n\nexport function getInputFieldsConfig() {\n return (typeof window !== 'undefined' && window[INPUT_FIELDS_CONFIG_KEY]) || {};\n}\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Box, Typography, IconButton } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { t } from '../config';\n\nconst MASK_SHAPES = [\n {\n name: 'Circle',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n ctx.ellipse(w / 2, h / 2, w / 2, h / 2, 0, 0, Math.PI * 2);\n ctx.closePath();\n },\n preview: 'M50,5 A45,45 0 1,1 50,95 A45,45 0 1,1 50,5 Z',\n clipId: 'circle',\n },\n {\n name: 'Triangle',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n ctx.moveTo(w / 2, 0);\n ctx.lineTo(w, h);\n ctx.lineTo(0, h);\n ctx.closePath();\n },\n preview: 'M50,5 L95,95 L5,95 Z',\n clipId: 'triangle',\n },\n {\n name: 'Star',\n clipFunc: (ctx, w, h) => {\n const cx = w / 2, cy = h / 2;\n const outerR = Math.min(w, h) / 2;\n const innerR = outerR * 0.4;\n const points = 5;\n ctx.beginPath();\n for (let i = 0; i < points * 2; i++) {\n const r = i % 2 === 0 ? outerR : innerR;\n const angle = (Math.PI * i) / points - Math.PI / 2;\n const x = cx + r * Math.cos(angle);\n const y = cy + r * Math.sin(angle);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.closePath();\n },\n preview: 'M50,5 L61,38 L97,38 L68,60 L79,95 L50,73 L21,95 L32,60 L3,38 L39,38 Z',\n clipId: 'star',\n },\n {\n name: 'Heart',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n const topY = h * 0.3;\n ctx.moveTo(w / 2, h * 0.9);\n ctx.bezierCurveTo(w * 0.1, h * 0.55, -w * 0.1, topY * 0.5, w * 0.25, topY * 0.3);\n ctx.bezierCurveTo(w * 0.4, 0, w / 2, topY * 0.6, w / 2, topY);\n ctx.bezierCurveTo(w / 2, topY * 0.6, w * 0.6, 0, w * 0.75, topY * 0.3);\n ctx.bezierCurveTo(w * 1.1, topY * 0.5, w * 0.9, h * 0.55, w / 2, h * 0.9);\n ctx.closePath();\n },\n preview: 'M50,88 C15,55 -5,20 25,10 C40,3 50,15 50,25 C50,15 60,3 75,10 C105,20 85,55 50,88 Z',\n clipId: 'heart',\n },\n {\n name: 'Hexagon',\n clipFunc: (ctx, w, h) => {\n const cx = w / 2, cy = h / 2;\n const r = Math.min(w, h) / 2;\n ctx.beginPath();\n for (let i = 0; i < 6; i++) {\n const angle = (Math.PI * 2 * i) / 6 - Math.PI / 2;\n const x = cx + r * Math.cos(angle);\n const y = cy + r * Math.sin(angle);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.closePath();\n },\n preview: 'M50,5 L93,27 L93,73 L50,95 L7,73 L7,27 Z',\n clipId: 'hexagon',\n },\n {\n name: 'Diamond',\n clipFunc: (ctx, w, h) => {\n ctx.beginPath();\n ctx.moveTo(w / 2, 0);\n ctx.lineTo(w, h / 2);\n ctx.lineTo(w / 2, h);\n ctx.lineTo(0, h / 2);\n ctx.closePath();\n },\n preview: 'M50,5 L95,50 L50,95 L5,50 Z',\n clipId: 'diamond',\n },\n {\n name: 'Pentagon',\n clipFunc: (ctx, w, h) => {\n const cx = w / 2, cy = h / 2;\n const r = Math.min(w, h) / 2;\n ctx.beginPath();\n for (let i = 0; i < 5; i++) {\n const angle = (Math.PI * 2 * i) / 5 - Math.PI / 2;\n const x = cx + r * Math.cos(angle);\n const y = cy + r * Math.sin(angle);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.closePath();\n },\n preview: 'M50,5 L95,38 L77,95 L23,95 L5,38 Z',\n clipId: 'pentagon',\n },\n {\n name: 'Rounded Rect',\n clipFunc: (ctx, w, h) => {\n const r = Math.min(w, h) * 0.15;\n ctx.beginPath();\n ctx.moveTo(r, 0);\n ctx.lineTo(w - r, 0);\n ctx.quadraticCurveTo(w, 0, w, r);\n ctx.lineTo(w, h - r);\n ctx.quadraticCurveTo(w, h, w - r, h);\n ctx.lineTo(r, h);\n ctx.quadraticCurveTo(0, h, 0, h - r);\n ctx.lineTo(0, r);\n ctx.quadraticCurveTo(0, 0, r, 0);\n ctx.closePath();\n },\n preview: 'M15,5 L85,5 Q95,5 95,15 L95,85 Q95,95 85,95 L15,95 Q5,95 5,85 L5,15 Q5,5 15,5 Z',\n clipId: 'rounded-rect',\n },\n {\n name: 'Cross',\n clipFunc: (ctx, w, h) => {\n const t = 0.3;\n ctx.beginPath();\n ctx.moveTo(w * t, 0);\n ctx.lineTo(w * (1 - t), 0);\n ctx.lineTo(w * (1 - t), h * t);\n ctx.lineTo(w, h * t);\n ctx.lineTo(w, h * (1 - t));\n ctx.lineTo(w * (1 - t), h * (1 - t));\n ctx.lineTo(w * (1 - t), h);\n ctx.lineTo(w * t, h);\n ctx.lineTo(w * t, h * (1 - t));\n ctx.lineTo(0, h * (1 - t));\n ctx.lineTo(0, h * t);\n ctx.lineTo(w * t, h * t);\n ctx.closePath();\n },\n preview: 'M30,5 L70,5 L70,30 L95,30 L95,70 L70,70 L70,95 L30,95 L30,70 L5,70 L5,30 L30,30 Z',\n clipId: 'cross',\n },\n];\n\n// Export shapes so the canvas renderer can look them up\nexport { MASK_SHAPES };\n\nconst ImageMaskPanel = observer(({ store }) => {\n const panel = store._toolbarPanel;\n if (!panel || panel.type !== 'mask') return null;\n\n const element = store.getElementById(panel.elementId);\n if (!element) return null;\n\n const handleClose = () => store.closeToolbarPanel();\n\n const applyMask = (shape) => {\n element.set({ clipSrc: shape.clipId });\n store.history.addUndoState();\n };\n\n const removeMask = () => {\n element.set({ clipSrc: '' });\n store.history.addUndoState();\n };\n\n const hasMask = !!element.clipSrc;\n\n return (\n <Box\n sx={{\n width: 280,\n height: '100%',\n overflowY: 'auto',\n overflowX: 'hidden',\n backgroundColor: '#fff',\n borderRight: '1px solid #e0e0e0',\n flexShrink: 0,\n p: 2,\n }}\n >\n {/* Header */}\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2 }}>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 600 }}>{t('toolbar.clip', 'Apply Mask')}</Typography>\n <IconButton size=\"small\" onClick={handleClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {/* Image preview */}\n {element.src && (\n <Box sx={{ mb: 2, textAlign: 'center' }}>\n <img\n src={element.src}\n alt=\"Selected\"\n style={{\n maxWidth: '100%',\n maxHeight: 120,\n objectFit: 'contain',\n borderRadius: 6,\n border: '1px solid #e0e0e0',\n }}\n />\n </Box>\n )}\n\n {hasMask && (\n <Box\n onClick={removeMask}\n sx={{\n mb: 2,\n py: 1,\n textAlign: 'center',\n cursor: 'pointer',\n borderRadius: '6px',\n border: '1px solid #d32f2f',\n color: '#d32f2f',\n fontWeight: 600,\n fontSize: 13,\n '&:hover': { backgroundColor: '#fbe9e7' },\n }}\n >\n {t('toolbar.removeMask', 'Remove mask')}\n </Box>\n )}\n\n {/* Shape grid */}\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 1 }}>\n {MASK_SHAPES.map((shape) => {\n const isActive = element.clipSrc === shape.clipId;\n return (\n <Box\n key={shape.clipId}\n onClick={() => applyMask(shape)}\n sx={{\n cursor: 'pointer',\n textAlign: 'center',\n borderRadius: '8px',\n border: isActive ? '2px solid #0d83cd' : '2px solid transparent',\n p: 0.5,\n '&:hover': { backgroundColor: '#f5f5f5' },\n }}\n >\n <Box\n sx={{\n width: '100%',\n aspectRatio: '1',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg viewBox=\"0 0 100 100\" width=\"100%\" height=\"100%\">\n <path d={shape.preview} fill=\"#e0e0e0\" stroke=\"#999\" strokeWidth=\"1\" />\n </svg>\n </Box>\n <Typography variant=\"caption\" sx={{ fontSize: 10 }}>{shape.name}</Typography>\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n});\n\nImageMaskPanel.displayName = 'ImageMaskPanel';\nexport { ImageMaskPanel };\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport { Image as KonvaImage, Group, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport { MASK_SHAPES } from '../toolbar/image-mask-panel';\n\n// Custom Konva filter: Sepia\nconst SepiaFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i], g = data[i + 1], b = data[i + 2];\n data[i] = Math.min(255, (r * 0.393) + (g * 0.769) + (b * 0.189));\n data[i + 1] = Math.min(255, (r * 0.349) + (g * 0.686) + (b * 0.168));\n data[i + 2] = Math.min(255, (r * 0.272) + (g * 0.534) + (b * 0.131));\n }\n};\n\n// Custom Konva filter: Warm (boost red, reduce blue)\nconst WarmFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.min(255, data[i] + 25); // red up\n data[i + 1] = Math.min(255, data[i + 1] + 10); // green slightly up\n data[i + 2] = Math.max(0, data[i + 2] - 20); // blue down\n }\n};\n\n// Custom Konva filter: Cold (boost blue, reduce red)\nconst ColdFilter = function (imageData) {\n const data = imageData.data;\n for (let i = 0; i < data.length; i += 4) {\n data[i] = Math.max(0, data[i] - 20); // red down\n data[i + 1] = Math.min(255, data[i + 1] + 5); // green slightly up\n data[i + 2] = Math.min(255, data[i + 2] + 25); // blue up\n }\n};\n\nconst ImageElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const groupRef = useRef(null);\n const [image, setImage] = useState(null);\n\n // Persistent auto-crop state: tracks the visible portion of the source image.\n // Initialized on image load (cover-fit centered), then updated directionally on resize.\n const autoCropRef = useRef(null);\n const autoCropSrcRef = useRef(null); // tracks which image the crop was computed for\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load image:', element.src.substring(0, 100));\n };\n img.src = element.src;\n }, [element.src]);\n\n // Build Konva filters array\n const filters = [];\n if (element.blurEnabled) filters.push(window.Konva.Filters.Blur);\n if (element.brightnessEnabled) filters.push(window.Konva.Filters.Brighten);\n if (element.grayscaleEnabled) filters.push(window.Konva.Filters.Grayscale);\n if (element.sepiaEnabled) filters.push(SepiaFilter);\n if (element.warmEnabled) filters.push(WarmFilter);\n if (element.coldEnabled) filters.push(ColdFilter);\n\n const hasFilters = filters.length > 0;\n const hasBorder = element.borderSize > 0 && element.borderColor;\n const needsCache = hasFilters || element.cornerRadius > 0 || element.shadowEnabled;\n\n // Cache the image node whenever filters, cornerRadius, or shadow change so they take effect\n useEffect(() => {\n const node = imageRef.current;\n if (!node || !image) return;\n if (needsCache) {\n try {\n node.cache();\n } catch (e) { /* ignore cache errors */ }\n } else {\n try {\n node.clearCache();\n } catch (e) { /* ignore */ }\n }\n }, [image, needsCache, element.blurEnabled, element.blurRadius, element.brightnessEnabled, element.brightness, element.grayscaleEnabled, element.sepiaEnabled, element.warmEnabled, element.coldEnabled, element.cornerRadius, element.shadowEnabled, element.shadowBlur, element.shadowOffsetX, element.shadowOffsetY, element.shadowColor]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n const target = groupRef.current || e.target;\n element.set({\n x: target.x(),\n y: target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Helper: update autoCrop directionally based on which edges moved.\n // Stores IDEAL (unclamped) values so resizing always reverses correctly.\n // Clamping to image bounds happens at render time only.\n const updateAutoCrop = (oldX, oldY, oldW, oldH, newX, newY, newW, newH) => {\n const crop = autoCropRef.current;\n if (!crop || !image) return;\n\n const newAspect = newW / newH;\n\n const xMoved = Math.abs(newX - oldX) > 0.5;\n const yMoved = Math.abs(newY - oldY) > 0.5;\n const wChanged = Math.abs(newW - oldW) > 0.5;\n const hChanged = Math.abs(newH - oldH) > 0.5;\n\n let cx = crop.x, cy = crop.y, cw = crop.w, ch = crop.h;\n\n if (wChanged && !hChanged) {\n // Width only — adjust crop width, keep crop height fixed\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw; // left edge dragged → anchor right\n } else if (hChanged && !wChanged) {\n // Height only — adjust crop height, keep crop width fixed\n ch = cw / newAspect;\n if (yMoved) cy = crop.y + crop.h - ch; // top edge dragged → anchor bottom\n } else if (wChanged && hChanged) {\n // Corner resize — keep ch as base, derive cw\n cw = ch * newAspect;\n if (xMoved) cx = crop.x + crop.w - cw;\n if (yMoved) cy = crop.y + crop.h - ch;\n }\n\n // Store ideal values — NO clamping here\n autoCropRef.current = { x: cx, y: cy, w: cw, h: ch };\n };\n\n // Live transform — reset scale, set node dimensions, update crop directionally\n const handleTransform = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n };\n\n const handleTransformEnd = (e) => {\n const node = groupRef.current || e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n const oldX = element.x, oldY = element.y;\n const oldW = element.width, oldH = element.height;\n const newW = Math.max(5, node.width() * Math.abs(scaleX));\n const newH = Math.max(5, node.height() * Math.abs(scaleY));\n const newX = node.x();\n const newY = node.y();\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newW);\n node.height(newH);\n\n updateAutoCrop(oldX, oldY, oldW, oldH, newX, newY, newW, newH);\n\n element.set({ x: newX, y: newY, width: newW, height: newH, rotation: node.rotation() });\n if (onTransformEnd) onTransformEnd(e);\n };\n\n // Crop calculations\n const modelHasCrop = image && (\n element.cropX !== 0 ||\n element.cropY !== 0 ||\n element.cropWidth !== 1 ||\n element.cropHeight !== 1\n );\n\n // Initialize auto-crop when image changes (cover-fit, centered)\n if (image && image !== autoCropSrcRef.current) {\n autoCropSrcRef.current = image;\n if (!modelHasCrop) {\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n if (natW > 0 && natH > 0) {\n const elemAspect = element.width / element.height;\n const imgAspect = natW / natH;\n if (imgAspect > elemAspect) {\n const ch = natH;\n const cw = natH * elemAspect;\n autoCropRef.current = { x: (natW - cw) / 2, y: 0, w: cw, h: ch };\n } else {\n const cw = natW;\n const ch = natW / elemAspect;\n autoCropRef.current = { x: 0, y: (natH - ch) / 2, w: cw, h: ch };\n }\n }\n } else {\n autoCropRef.current = null;\n }\n }\n if (!image) { autoCropSrcRef.current = null; autoCropRef.current = null; }\n\n let cropProps = {};\n if (modelHasCrop) {\n cropProps = {\n crop: {\n x: element.cropX * image.naturalWidth,\n y: element.cropY * image.naturalHeight,\n width: element.cropWidth * image.naturalWidth,\n height: element.cropHeight * image.naturalHeight,\n },\n };\n } else if (autoCropRef.current && image) {\n // Render-time clamping: fit ideal crop within source image bounds\n // while maintaining element aspect ratio.\n const ac = autoCropRef.current;\n const natW = image.naturalWidth || image.width;\n const natH = image.naturalHeight || image.height;\n const elemAspect = element.width / element.height;\n\n let rw = ac.w, rh = ac.h, rx = ac.x, ry = ac.y;\n\n // Clamp dimensions to image bounds, maintaining aspect ratio\n if (rw > natW) { rw = natW; rh = natW / elemAspect; }\n if (rh > natH) { rh = natH; rw = natH * elemAspect; }\n rw = Math.max(1, rw);\n rh = Math.max(1, rh);\n\n // Clamp position\n rx = Math.max(0, Math.min(rx, natW - rw));\n ry = Math.max(0, Math.min(ry, natH - rh));\n\n cropProps = { crop: { x: rx, y: ry, width: rw, height: rh } };\n }\n\n // Mask clipping (clipFunc only works on Container nodes like Group)\n const maskShape = element.clipSrc\n ? MASK_SHAPES.find((s) => s.clipId === element.clipSrc)\n : null;\n\n const hasMask = !!maskShape;\n\n const clipFunc = hasMask\n ? (ctx) => { maskShape.clipFunc(ctx, element.width, element.height); }\n : undefined;\n\n const imageNode = (\n <KonvaImage\n ref={imageRef}\n image={image}\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n filters={hasFilters ? filters : undefined}\n blurRadius={element.blurEnabled ? element.blurRadius : undefined}\n brightness={element.brightnessEnabled ? element.brightness : undefined}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n {...cropProps}\n />\n );\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'image'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n clipFunc={clipFunc}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {imageNode}\n {hasBorder && (\n <Rect\n x={0}\n y={0}\n width={element.width}\n height={element.height}\n stroke={element.borderColor}\n strokeWidth={element.borderSize}\n cornerRadius={element.cornerRadius}\n listening={false}\n />\n )}\n </Group>\n );\n});\n\nImageElementComponent.displayName = 'ImageElement';\nexport default ImageElementComponent;\n","import React, { useRef, useEffect, useState } from 'react';\nimport { Group, Rect, Text as KonvaText } from 'react-konva';\nimport Konva from 'konva';\nimport { observer } from 'mobx-react-lite';\n\nconst TextElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const groupRef = useRef(null);\n const textRef = useRef(null);\n const [textHeight, setTextHeight] = useState(element.height || 50);\n\n // Force Konva to recalculate text layout when fonts finish loading.\n useEffect(() => {\n const onFontLoaded = () => {\n const node = textRef.current;\n if (!node) return;\n const f = node.fontFamily();\n node.fontFamily('serif');\n node.fontFamily(f);\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n // Re-cache if blur is active\n if (element.blurEnabled && node) {\n node.cache();\n }\n node.getLayer()?.batchDraw();\n };\n document.fonts.addEventListener('loadingdone', onFontLoaded);\n return () => document.fonts.removeEventListener('loadingdone', onFontLoaded);\n }, []);\n\n // Sync Konva auto-sized height back to element model after text reflows\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n const frame = requestAnimationFrame(() => {\n const h = node.height();\n if (h > 0) {\n setTextHeight(h);\n if (Math.abs(h - element.height) > 1) element.set({ height: h });\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [element.text, element.fontSize, element.fontFamily, element.fontWeight, element.width]);\n\n // Apply blur filter: cache the text node when blur is enabled\n useEffect(() => {\n const node = textRef.current;\n if (!node) return;\n if (element.blurEnabled) {\n node.filters([Konva.Filters.Blur]);\n node.blurRadius(element.blurRadius);\n node.cache();\n } else {\n node.filters([]);\n node.clearCache();\n }\n node.getLayer()?.batchDraw();\n }, [element.blurEnabled, element.blurRadius, element.text, element.fontSize, element.width]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // During live drag: let Konva scale the node visually — no imperative changes,\n // no element.set(). Any MobX update here causes React to sync stale x/y back\n // to the node every frame, fighting the Transformer (especially top/left anchors).\n const handleTransform = () => {};\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n // Read accumulated scale against the MODEL values (not node.width/height,\n // which accumulate across multiple transform sessions and can drift).\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n const newWidth = Math.max(20, element.width * Math.abs(scaleX));\n const newFontSize = Math.max(8, Math.round(element.fontSize * Math.abs(scaleY)));\n\n const tNode = textRef.current;\n if (tNode) {\n tNode.width(newWidth);\n tNode.fontSize(newFontSize);\n }\n\n node.scaleX(1);\n node.scaleY(1);\n node.width(newWidth);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: newWidth,\n fontSize: newFontSize,\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const handleDblClick = () => {\n if (!element.contentEditable) return;\n element.toggleEditMode(true);\n\n const textNode = textRef.current;\n if (!textNode) return;\n\n const grp = groupRef.current;\n const stage = textNode.getStage();\n if (!stage) return;\n\n // Hide the group so the textarea appears as in-place editing\n if (grp) grp.hide();\n stage.batchDraw();\n\n const stageContainer = stage.container();\n const textPosition = textNode.absolutePosition();\n const absScale = textNode.getAbsoluteScale();\n const scaleX = absScale.x;\n const scaleY = absScale.y;\n\n const cssFontStyle = element.fontStyle === 'italic' ? 'italic' : 'normal';\n const cssFontWeight = String(element.fontWeight || 'normal');\n\n const originalText = element.text;\n\n const textarea = document.createElement('textarea');\n textarea.value = '';\n textarea.placeholder = originalText;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = `\"${element.fontFamily}\", sans-serif`;\n textarea.style.fontStyle = cssFontStyle;\n textarea.style.fontWeight = cssFontWeight;\n textarea.style.textAlign = element.align;\n textarea.style.color = element.fill;\n textarea.style.border = '0';\n textarea.style.borderWidth = '0';\n textarea.style.padding = '0';\n textarea.style.margin = '0';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = 'none';\n textarea.style.appearance = 'none';\n textarea.style.webkitAppearance = 'none';\n textarea.style.lineHeight = String(\n typeof element.lineHeight === 'number'\n ? element.lineHeight\n : parseFloat(element.lineHeight) || 1.2\n );\n textarea.style.letterSpacing = `${(element.letterSpacing || 0) * scaleX}px`;\n textarea.style.transformOrigin = 'left top';\n textarea.style.transform = `rotate(${element.rotation}deg)`;\n textarea.style.textDecoration = element.textDecoration || '';\n textarea.style.boxSizing = 'content-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n textarea.style.minHeight = '0';\n textarea.style.minWidth = '0';\n\n // Placeholder inherits the element's text color at 40% opacity\n const placeholderStyle = document.createElement('style');\n placeholderStyle.textContent = `\n textarea:placeholder-shown { opacity: 1; }\n textarea::placeholder { color: ${element.fill}; opacity: 0.4; }\n `;\n stageContainer.appendChild(placeholderStyle);\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n\n let removed = false;\n const removeTextarea = (cancel = false) => {\n if (removed) return;\n removed = true;\n const newText = !cancel && textarea.value.length > 0 ? textarea.value : originalText;\n element.set({ text: newText });\n element.toggleEditMode(false);\n if (grp) grp.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n if (placeholderStyle.parentNode) {\n placeholderStyle.parentNode.removeChild(placeholderStyle);\n }\n };\n\n textarea.addEventListener('blur', () => removeTextarea(false));\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') removeTextarea(true);\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n const fontStyleStr = (() => {\n const parts = [];\n const style = String(element.fontStyle || '').trim();\n const weight = String(element.fontWeight || '').trim();\n if (style === 'italic' || style.includes('italic')) parts.push('italic');\n if (weight && weight !== 'normal') parts.push(weight);\n return parts.length > 0 ? parts.join(' ') : 'normal';\n })();\n\n const pad = element.backgroundEnabled ? (element.backgroundPadding || 0) : 0;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'text'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={textHeight}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n onClick={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onTap={(e) => { if (!groupChild && onSelect) onSelect(e); }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransform={handleTransform}\n onTransformEnd={handleTransformEnd}\n >\n {/* Background rect */}\n {element.backgroundEnabled && (\n <Rect\n x={-pad}\n y={-pad}\n width={element.width + pad * 2}\n height={textHeight + pad * 2}\n fill={element.backgroundColor || '#ffffff'}\n opacity={element.backgroundOpacity ?? 1}\n cornerRadius={element.backgroundCornerRadius || 0}\n listening={false}\n />\n )}\n\n {/* Text */}\n <KonvaText\n ref={textRef}\n text={displayText}\n width={element.width}\n fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={fontStyleStr}\n textDecoration={element.textDecoration}\n fill={element.fill}\n align={element.align}\n verticalAlign={element.verticalAlign}\n lineHeight={typeof element.lineHeight === 'number' ? element.lineHeight : parseFloat(element.lineHeight) || 1.2}\n letterSpacing={element.letterSpacing}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth || 0}\n fillAfterStrokeEnabled={true}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n />\n </Group>\n );\n});\n\nTextElementComponent.displayName = 'TextElement';\nexport default TextElementComponent;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Image as KonvaImage } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst SVGElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const imageRef = useRef(null);\n const [image, setImage] = useState(null);\n\n useEffect(() => {\n if (!element.src) {\n setImage(null);\n return;\n }\n\n let svgSrc = element.src;\n\n // Apply color replacements to SVG\n if (element.colorsReplace && element.colorsReplace.size > 0) {\n // If it's a data URI SVG, decode and replace colors\n if (svgSrc.startsWith('data:image/svg+xml')) {\n try {\n let svgContent;\n if (svgSrc.includes('base64,')) {\n svgContent = atob(svgSrc.split('base64,')[1]);\n } else {\n svgContent = decodeURIComponent(svgSrc.split(',')[1]);\n }\n\n element.colorsReplace.forEach((newColor, oldColor) => {\n svgContent = svgContent.replace(new RegExp(oldColor, 'gi'), newColor);\n });\n\n svgSrc = 'data:image/svg+xml;base64,' + btoa(svgContent);\n } catch (e) {\n console.warn('Failed to process SVG color replacement', e);\n }\n }\n }\n\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n setImage(img);\n };\n img.onerror = () => {\n console.warn('Failed to load SVG:', element.src.substring(0, 100));\n };\n img.src = svgSrc;\n }, [element.src, element.colorsReplace?.toJSON?.()]);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n return (\n <KonvaImage\n ref={imageRef}\n id={element.id}\n name={element.name || 'svg'}\n image={image}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n scaleX={element.flipX ? -1 : 1}\n scaleY={element.flipY ? -1 : 1}\n offsetX={element.flipX ? element.width : 0}\n offsetY={element.flipY ? element.height : 0}\n cornerRadius={element.cornerRadius}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onClick={(e) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\n );\n});\n\nSVGElementComponent.displayName = 'SVGElement';\nexport default SVGElementComponent;\n","import React, { useRef } from 'react';\nimport { Rect, Circle, Star, Line as KonvaLine, RegularPolygon, Arrow, Path, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst FigureElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const shapeRef = useRef(null);\n\n if (!element.visible) return null;\n\n const handleDragEnd = (e) => {\n element.set({\n x: e.target.x(),\n y: e.target.y(),\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n const handleTransformEnd = (e) => {\n const node = e.target;\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n node.scaleX(1);\n node.scaleY(1);\n\n element.set({\n x: node.x(),\n y: node.y(),\n width: Math.max(5, node.width() * scaleX),\n height: Math.max(5, node.height() * scaleY),\n rotation: node.rotation(),\n });\n\n if (onTransformEnd) onTransformEnd(e);\n };\n\n const commonProps = {\n id: element.id,\n name: element.name || 'figure',\n x: element.x,\n y: element.y,\n rotation: element.rotation,\n opacity: element.opacity,\n fill: element.fill,\n stroke: element.stroke || undefined,\n strokeWidth: element.strokeWidth || 0,\n dash: element.dash?.length > 0 ? [...element.dash] : undefined,\n draggable: !groupChild && element.draggable,\n visible: element.visible,\n shadowEnabled: element.shadowEnabled,\n shadowColor: element.shadowColor,\n shadowBlur: element.shadowBlur,\n shadowOffsetX: element.shadowOffsetX,\n shadowOffsetY: element.shadowOffsetY,\n shadowOpacity: element.shadowOpacity,\n onClick: (e) => { if (onSelect) onSelect(e); },\n onTap: (e) => { if (onSelect) onSelect(e); },\n onDragEnd: handleDragEnd,\n onTransformEnd: handleTransformEnd,\n };\n\n const subType = element.subType || 'rect';\n\n // Center-origin shapes use offset so that node.x()/y() stays top-left\n // (matching our model) while the visual center is positioned correctly.\n const centerOffset = {\n offsetX: -(element.width / 2),\n offsetY: -(element.height / 2),\n };\n\n switch (subType) {\n case 'circle':\n case 'ellipse':\n return (\n <Circle\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n radiusX={element.width / 2}\n radiusY={element.height / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'triangle':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={3}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'star':\n return (\n <Star\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n numPoints={5}\n innerRadius={Math.min(element.width, element.height) / 4}\n outerRadius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'polygon':\n case 'hexagon':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={subType === 'hexagon' ? 6 : 5}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'diamond':\n return (\n <RegularPolygon\n ref={shapeRef}\n {...commonProps}\n {...centerOffset}\n sides={4}\n radius={Math.min(element.width, element.height) / 2}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'path':\n if (!element.pathData) return null;\n return (\n <Group\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n >\n <Path\n data={element.pathData}\n fill={element.fill}\n stroke={element.stroke || undefined}\n strokeWidth={element.strokeWidth ? element.strokeWidth * (100 / element.width) : 0}\n scaleX={element.width / 100}\n scaleY={element.height / 100}\n />\n </Group>\n );\n\n case 'arrow':\n return (\n <Arrow\n ref={shapeRef}\n {...commonProps}\n points={[0, element.height / 2, element.width, element.height / 2]}\n pointerLength={10}\n pointerWidth={10}\n width={element.width}\n height={element.height}\n />\n );\n\n case 'rect':\n default:\n return (\n <Rect\n ref={shapeRef}\n {...commonProps}\n width={element.width}\n height={element.height}\n cornerRadius={element.cornerRadius || 0}\n />\n );\n }\n});\n\nFigureElementComponent.displayName = 'FigureElement';\nexport default FigureElementComponent;\n","import React, { Fragment } from 'react';\nimport { Line as KonvaLine, Arrow, Rect } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst HANDLE_SIZE = 10;\nconst DEG = Math.PI / 180;\n\nconst LineElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n if (!element.visible) return null;\n\n const rot = (element.rotation || 0) * DEG;\n const cosR = Math.cos(rot);\n const sinR = Math.sin(rot);\n\n // Start and end points in canvas coordinates\n const startX = element.x;\n const startY = element.y;\n const endX = element.x + element.width * cosR;\n const endY = element.y + element.width * sinR;\n\n const hasArrow = element.endHead === 'arrow' || element.startHead === 'arrow';\n\n // Drag the whole line\n const handleLineDragEnd = (e) => {\n const dx = e.target.x();\n const dy = e.target.y();\n // The line is rendered at (0,0) with absolute points, so dx/dy is the drag offset\n e.target.x(0);\n e.target.y(0);\n element.set({\n x: element.x + dx,\n y: element.y + dy,\n });\n if (onDragEnd) onDragEnd(e);\n };\n\n // Drag the START handle\n const handleStartDrag = (e) => {\n const newSX = e.target.x() + HANDLE_SIZE / 2;\n const newSY = e.target.y() + HANDLE_SIZE / 2;\n const dx = endX - newSX;\n const dy = endY - newSY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n x: newSX,\n y: newSY,\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position since the line re-renders from new model coords\n e.target.x(newSX - HANDLE_SIZE / 2);\n e.target.y(newSY - HANDLE_SIZE / 2);\n };\n\n const handleStartDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n // Drag the END handle\n const handleEndDrag = (e) => {\n const newEX = e.target.x() + HANDLE_SIZE / 2;\n const newEY = e.target.y() + HANDLE_SIZE / 2;\n const dx = newEX - startX;\n const dy = newEY - startY;\n const newWidth = Math.max(5, Math.sqrt(dx * dx + dy * dy));\n const newRotation = Math.atan2(dy, dx) / DEG;\n\n element.set({\n width: newWidth,\n rotation: newRotation,\n });\n\n // Reset handle position\n e.target.x(newEX - HANDLE_SIZE / 2);\n e.target.y(newEY - HANDLE_SIZE / 2);\n };\n\n const handleEndDragEnd = () => {\n if (onDragEnd) onDragEnd();\n };\n\n const lineNode = hasArrow ? (\n <Arrow\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n fill={element.color || '#000000'}\n pointerLength={10}\n pointerWidth={10}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n ) : (\n <KonvaLine\n id={element.id}\n name={element.name || 'line'}\n points={[startX, startY, endX, endY]}\n stroke={element.color || '#000000'}\n strokeWidth={2}\n dash={element.dash?.length > 0 ? [...element.dash] : undefined}\n hitStrokeWidth={20}\n opacity={element.opacity}\n draggable={!groupChild && element.draggable}\n visible={element.visible}\n shadowEnabled={element.shadowEnabled}\n shadowColor={element.shadowColor}\n shadowBlur={element.shadowBlur}\n shadowOffsetX={element.shadowOffsetX}\n shadowOffsetY={element.shadowOffsetY}\n shadowOpacity={element.shadowOpacity}\n onDragEnd={handleLineDragEnd}\n />\n );\n\n return (\n <Fragment>\n {lineNode}\n\n {/* Endpoint handles — only visible when selected */}\n {isSelected && (\n <Fragment>\n {/* Start handle */}\n <Rect\n x={startX - HANDLE_SIZE / 2}\n y={startY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleStartDrag}\n onDragEnd={handleStartDragEnd}\n />\n {/* End handle */}\n <Rect\n x={endX - HANDLE_SIZE / 2}\n y={endY - HANDLE_SIZE / 2}\n width={HANDLE_SIZE}\n height={HANDLE_SIZE}\n fill=\"#ffffff\"\n stroke=\"#0d83cd\"\n strokeWidth={1.5}\n draggable\n onDragMove={handleEndDrag}\n onDragEnd={handleEndDragEnd}\n />\n </Fragment>\n )}\n </Fragment>\n );\n});\n\nLineElementComponent.displayName = 'LineElement';\nexport default LineElementComponent;\n","import React, { useRef, useCallback } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Group } from 'react-konva';\n\n// ElementRenderer is passed via the _ElementRenderer prop to avoid circular imports\nconst GroupElementComponent = observer(({ element, isSelected, onTransformEnd, onDragEnd, _ElementRenderer }) => {\n const groupRef = useRef(null);\n\n const handleDragEnd = useCallback((e) => {\n const node = e.target;\n element.set({\n x: node.x(),\n y: node.y(),\n });\n if (onDragEnd) onDragEnd(e);\n }, [element, onDragEnd]);\n\n const handleTransformEnd = useCallback((e) => {\n const node = groupRef.current;\n if (!node) return;\n\n const scaleX = node.scaleX();\n const scaleY = node.scaleY();\n\n // Scale each child proportionally\n element.children.forEach((child) => {\n if (child.set) {\n const updates = {\n x: (child.x || 0) * scaleX,\n y: (child.y || 0) * scaleY,\n };\n if ('width' in child) updates.width = (child.width || 0) * scaleX;\n if ('height' in child) updates.height = (child.height || 0) * scaleY;\n if (child.type === 'text' && child.fontSize) {\n updates.fontSize = Math.round(child.fontSize * Math.max(scaleX, scaleY));\n }\n child.set(updates);\n }\n });\n\n // Update group position, rotation, dimensions\n element.set({\n x: node.x(),\n y: node.y(),\n rotation: node.rotation(),\n width: element.width * scaleX,\n height: element.height * scaleY,\n });\n\n // Reset scale on the Konva node\n node.scaleX(1);\n node.scaleY(1);\n\n if (onTransformEnd) onTransformEnd(e);\n }, [element, onTransformEnd]);\n\n if (!element.visible) return null;\n\n return (\n <Group\n ref={groupRef}\n id={element.id}\n name={element.name || 'group'}\n x={element.x}\n y={element.y}\n width={element.width}\n height={element.height}\n rotation={element.rotation}\n opacity={element.opacity}\n draggable={element.draggable !== false}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n >\n {_ElementRenderer && element.children.map((child) => (\n <_ElementRenderer\n key={child.id}\n element={child}\n isSelected={false}\n groupChild={true}\n />\n ))}\n </Group>\n );\n});\n\nGroupElementComponent.displayName = 'GroupElementComponent';\nexport default GroupElementComponent;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport ImageElementComponent from './image-element';\nimport TextElementComponent from './text-element';\nimport SVGElementComponent from './svg-element';\nimport FigureElementComponent from './figure-element';\nimport LineElementComponent from './line-element';\nimport GroupElementComponent from './group-element';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n group: GroupElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd, groupChild }) => {\n const Renderer = ELEMENT_RENDERERS[element.type];\n\n if (!Renderer) {\n console.warn(`No renderer for element type: ${element.type}`);\n return null;\n }\n\n // Pass ElementRenderer itself to GroupElementComponent to avoid circular imports\n const extra = element.type === 'group' ? { _ElementRenderer: ElementRenderer } : {};\n\n return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n groupChild={groupChild}\n {...extra}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Button, TextField, Typography, Box, Radio, RadioGroup, FormGroup, FormControlLabel, Checkbox } from '@mui/material';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\nimport { getInputFieldsConfig } from '../config';\nimport { t } from '../config';\n\n// ── Date formatting helpers (shared with input-fields-panel) ─────────\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nfunction formatDate(date, format) {\n const mm = String(date.getMonth() + 1).padStart(2, '0');\n const dd = String(date.getDate()).padStart(2, '0');\n const yyyy = String(date.getFullYear());\n const monthName = MONTH_NAMES[date.getMonth()];\n\n switch (format) {\n case 'MM-DD-YYYY':\n return `${mm}-${dd}-${yyyy}`;\n case 'MMMM-DD-YYYY':\n return `${monthName}-${dd}-${yyyy}`;\n case 'MMMM-DD':\n return `${monthName}-${dd}`;\n case 'YYYY':\n return yyyy;\n case 'MM-DD':\n return `${mm}-${dd}`;\n default:\n return `${mm}-${dd}-${yyyy}`;\n }\n}\n\nfunction parseDateFromFormat(dateStr, format) {\n try {\n const d = new Date(dateStr);\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n // ignore\n }\n return new Date();\n}\n\n// ── Default single-field dialog (full-page overlay) ──────────────────\nconst SingleFieldDialog = ({ field, onSubmit, onSkip, onBack, canGoBack, currentIndex, totalCount }) => {\n const [value, setValue] = useState('');\n const [imagePreview, setImagePreview] = useState(null);\n const fileInputRef = useRef(null);\n const [selectedItems, setSelectedItems] = useState([]);\n const config = getInputFieldsConfig();\n\n const custom = field.custom || {};\n const inputType = custom.inputType || 'text';\n const promptText = custom.promptText || custom.placeholder || 'Please provide input';\n const dateFormat = custom.dateFormat || 'MM-DD-YYYY';\n const isRequired = custom.required === true;\n const options = custom.options || [];\n const minSelections = custom.minSelections || 0;\n const maxSelections = custom.maxSelections || options.length;\n const isSubmitDisabled = inputType === 'list'\n ? selectedItems.length < minSelections\n : isRequired && !value;\n const logoUrl = config.logoUrl || null;\n const headerText = config.headerText || null;\n const accentColor = config.accentColor || '#0d83cd';\n const progressPct = Math.round(((currentIndex + 1) / totalCount) * 100);\n\n useEffect(() => {\n setValue('');\n setImagePreview(null);\n setSelectedItems([]);\n }, [field.id]);\n\n const handleImageSelect = (e) => {\n const file = e.target.files?.[0];\n if (!file || !file.type.startsWith('image/')) return;\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataURL = ev.target.result;\n setValue(dataURL);\n setImagePreview(dataURL);\n };\n reader.readAsDataURL(file);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleSubmit = () => {\n if (inputType === 'date' && value) {\n const dateObj = parseDateFromFormat(value, dateFormat);\n const formatted = formatDate(dateObj, dateFormat);\n onSubmit(field.id, formatted);\n } else if (inputType === 'list') {\n onSubmit(field.id, selectedItems.join(', '));\n } else {\n onSubmit(field.id, value);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' && inputType !== 'image' && inputType !== 'list' && inputType !== 'radio') handleSubmit();\n };\n\n const renderInput = () => {\n const sharedSx = {\n mt: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: '8px',\n fontSize: 22,\n '& fieldset': { borderColor: '#d0d5dd' },\n '&:hover fieldset': { borderColor: accentColor },\n '&.Mui-focused fieldset': { borderColor: accentColor },\n },\n ...config.inputStyle,\n };\n\n switch (inputType) {\n case 'date':\n return (\n <TextField\n fullWidth\n type=\"date\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n InputLabelProps={{ shrink: true }}\n sx={sharedSx}\n />\n );\n case 'integer':\n return (\n <TextField\n fullWidth\n type=\"number\"\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '' || /^-?\\d*$/.test(v)) setValue(v);\n }}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder=\"0\"\n inputProps={{ step: 1 }}\n sx={sharedSx}\n />\n );\n case 'image':\n return (\n <Box sx={{ mt: 1 }}>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleImageSelect}\n style={{ display: 'none' }}\n />\n {imagePreview ? (\n <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2 }}>\n <Box\n sx={{\n width: '100%',\n maxHeight: 260,\n borderRadius: '10px',\n overflow: 'hidden',\n border: '1px solid #e0e0e0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fafafa',\n }}\n >\n <img\n src={imagePreview}\n alt=\"Preview\"\n style={{ maxWidth: '100%', maxHeight: 260, objectFit: 'contain' }}\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => fileInputRef.current?.click()}\n sx={{ textTransform: 'none', fontSize: 13, borderRadius: '8px', borderColor: '#d0d5dd' }}\n >\n {t('inputFieldsDialog.changeImage', 'Change Image')}\n </Button>\n </Box>\n ) : (\n <Box\n onClick={() => fileInputRef.current?.click()}\n sx={{\n border: '2px dashed #d0d5dd',\n borderRadius: '10px',\n p: 4,\n textAlign: 'center',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n >\n <CloudUploadIcon sx={{ fontSize: 40, color: '#bbb', mb: 1.5 }} />\n <Typography variant=\"body2\" sx={{ color: '#888', fontSize: 14 }}>\n {t('inputFieldsDialog.uploadImage', 'Click to select an image')}\n </Typography>\n </Box>\n )}\n </Box>\n );\n case 'radio':\n return (\n <RadioGroup\n value={value}\n onChange={(e) => setValue(e.target.value)}\n sx={{ mt: 1, gap: 1 }}\n >\n {options.map((opt) => (\n <FormControlLabel\n key={opt}\n value={opt}\n control={\n <Radio sx={{ color: '#d0d5dd', '&.Mui-checked': { color: accentColor } }} />\n }\n label={<Typography sx={{ fontSize: 18 }}>{opt}</Typography>}\n sx={{\n m: 0,\n border: '1px solid',\n borderColor: value === opt ? accentColor : '#d0d5dd',\n borderRadius: '8px',\n px: 2,\n py: 0.75,\n transition: 'all 0.15s ease',\n backgroundColor: value === opt ? 'rgba(13,131,205,0.04)' : 'transparent',\n '&:hover': { borderColor: accentColor, backgroundColor: 'rgba(13,131,205,0.03)' },\n }}\n />\n ))}\n </RadioGroup>\n );\n case 'list': {\n const isAtMax = maxSelections > 0 && selectedItems.length >= maxSelections;\n return (\n <Box sx={{ mt: 1 }}>\n <FormGroup sx={{ gap: 1 }}>\n {options.map((opt) => {\n const checked = selectedItems.includes(opt);\n const disabled = !checked && isAtMax;\n return (\n <FormControlLabel\n key={opt}\n control={\n <Checkbox\n checked={checked}\n disabled={disabled}\n onChange={(e) => {\n if (e.target.checked) {\n setSelectedItems((prev) => [...prev, opt]);\n } else {\n setSelectedItems((prev) => prev.filter((i) => i !== opt));\n }\n }}\n sx={{ color: '#d0d5dd', '&.Mui-checked': { color: accentColor } }}\n />\n }\n label={\n <Typography sx={{ fontSize: 18, opacity: disabled ? 0.45 : 1 }}>{opt}</Typography>\n }\n sx={{\n m: 0,\n border: '1px solid',\n borderColor: checked ? accentColor : '#d0d5dd',\n borderRadius: '8px',\n px: 2,\n py: 0.75,\n opacity: disabled ? 0.6 : 1,\n transition: 'all 0.15s ease',\n backgroundColor: checked ? 'rgba(13,131,205,0.04)' : 'transparent',\n }}\n />\n );\n })}\n </FormGroup>\n <Typography variant=\"caption\" sx={{ color: '#999', display: 'block', mt: 1.5 }}>\n {selectedItems.length}{maxSelections > 0 ? `/${maxSelections}` : ''} selected\n {minSelections > 0 && ` · min ${minSelections} required`}\n </Typography>\n </Box>\n );\n }\n case 'text':\n default:\n return (\n <TextField\n fullWidth\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n autoFocus\n placeholder={custom.placeholder || ''}\n sx={sharedSx}\n />\n );\n }\n };\n\n return (\n <Box\n sx={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n backgroundColor: '#f7f8fa',\n display: 'flex',\n flexDirection: 'column',\n ...config.dialogStyle,\n }}\n >\n {/* Progress bar */}\n <Box sx={{ height: 4, backgroundColor: '#e4e7ec', flexShrink: 0 }}>\n <Box\n sx={{\n height: '100%',\n width: `${progressPct}%`,\n backgroundColor: accentColor,\n transition: 'width 0.4s ease',\n }}\n />\n </Box>\n\n {/* Header */}\n <Box\n sx={{\n backgroundColor: '#fff',\n borderBottom: '1px solid #f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n px: 4,\n py: 1.75,\n flexShrink: 0,\n ...config.titleStyle,\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>\n {logoUrl && (\n <img\n src={logoUrl}\n alt=\"Logo\"\n style={{ maxHeight: 36, maxWidth: 200, objectFit: 'contain' }}\n />\n )}\n {(headerText || !logoUrl) && (\n <Typography sx={{ fontWeight: 700, fontSize: 17, color: '#1a1a1a', letterSpacing: '-0.2px' }}>\n {headerText || 'LabelLife'}\n </Typography>\n )}\n </Box>\n </Box>\n\n {/* Centered content */}\n <Box\n sx={{\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n p: { xs: 3, sm: 5 },\n overflowY: 'auto',\n }}\n >\n <Box sx={{ width: '100%', maxWidth: 750 }}>\n {/* Step indicator */}\n <Typography\n sx={{ display: 'block', fontSize: 18, color: '#999', fontWeight: 500, mb: 1.5, letterSpacing: '0.2px' }}\n >\n {t('inputFieldsDialog.stepIndicator', 'Field {current} of {total}')\n .replace('{current}', currentIndex + 1)\n .replace('{total}', totalCount)}\n </Typography>\n\n {/* Main question */}\n <Typography\n sx={{\n fontSize: { xs: 33, sm: 39 },\n fontWeight: 700,\n color: '#111827',\n lineHeight: 1.3,\n mb: 4.5,\n ...config.promptStyle,\n }}\n >\n {promptText}\n </Typography>\n\n {/* Input */}\n {renderInput()}\n\n {/* Actions */}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 4.5 }}>\n {canGoBack && (\n <Button\n variant=\"outlined\"\n onClick={onBack}\n startIcon={<ArrowBackIcon />}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 3,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n }}\n >\n {t('inputFieldsDialog.back', 'Back')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={handleSubmit}\n disabled={isSubmitDisabled}\n sx={{\n textTransform: 'none',\n fontWeight: 600,\n fontSize: 21,\n px: 5,\n py: 1.65,\n borderRadius: '10px',\n backgroundColor: accentColor,\n boxShadow: 'none',\n '&:hover': { backgroundColor: '#0a6eb3', boxShadow: 'none' },\n ...config.submitButtonStyle,\n }}\n >\n {config.submitButtonText || t('inputFieldsDialog.submit', 'Continue')}\n </Button>\n {(inputType === 'list' ? minSelections === 0 : !isRequired) && (\n <Button\n variant=\"outlined\"\n onClick={() => onSkip(field.id)}\n sx={{\n textTransform: 'none',\n fontWeight: 500,\n fontSize: 21,\n px: 4.5,\n py: 1.65,\n borderRadius: '10px',\n color: '#555',\n borderColor: '#d0d5dd',\n '&:hover': { borderColor: '#aaa', backgroundColor: 'rgba(0,0,0,0.02)' },\n ...config.skipButtonStyle,\n }}\n >\n {config.skipButtonText || t('inputFieldsDialog.skip', 'Do it later')}\n </Button>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n\n// ── Main orchestrator component ──────────────────────────────────────\nconst InputFieldsDialog = observer(({ store, onComplete, enabled = true, backTrigger = 0 }) => {\n // displayIndex counts how many fields have been answered (for step indicator only).\n // Navigation always uses fields[0] — the first remaining pending field.\n const [displayIndex, setDisplayIndex] = useState(0);\n const initialTotalRef = useRef(0);\n const completedHistoryRef = useRef([]);\n const isGoingBackRef = useRef(false);\n const prevBackTriggerRef = useRef(backTrigger);\n const config = getInputFieldsConfig();\n\n const pendingFields = store._pendingInputFields || [];\n\n // When disabled, clear any pending fields so they are treated as skipped\n useEffect(() => {\n if (!enabled && pendingFields.length > 0) {\n store.clearPendingInputFields();\n }\n }, [enabled, pendingFields.length, store]);\n\n const fields = pendingFields.filter(\n (f) => f.custom && f.custom.inputField\n );\n\n // Capture total and reset display counter when a fresh batch appears\n useEffect(() => {\n if (fields.length > 0 && initialTotalRef.current === 0) {\n if (isGoingBackRef.current) {\n // Back-from-summary restored a field — recover total from history + pending\n isGoingBackRef.current = false;\n initialTotalRef.current = completedHistoryRef.current.length + fields.length;\n } else {\n // Genuine fresh batch\n initialTotalRef.current = fields.length;\n setDisplayIndex(0);\n completedHistoryRef.current = [];\n }\n }\n if (fields.length === 0) {\n initialTotalRef.current = 0;\n // History is intentionally kept so back-from-summary can use it\n }\n }, [fields.length]);\n\n const totalCount = initialTotalRef.current || fields.length;\n\n // Back-from-summary: triggered by parent incrementing backTrigger prop\n // Must be defined and its useEffect called BEFORE any early returns (Rules of Hooks)\n const handleBackFromSummary = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n isGoingBackRef.current = true;\n store._unresolveInputField(el);\n }\n // displayIndex stays unchanged — it already points to the last step (N-1)\n };\n\n useEffect(() => {\n if (backTrigger !== prevBackTriggerRef.current) {\n prevBackTriggerRef.current = backTrigger;\n handleBackFromSummary();\n }\n }, [backTrigger]);\n\n if (!enabled || fields.length === 0) return null;\n\n // Always show the first remaining field — the array shrinks as fields are resolved\n const currentField = fields[0];\n if (!currentField) return null;\n\n // ── Shared submit / skip / back helpers ─────────────────────────────\n const handleSubmit = (elementId, value) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: false });\n if (el && el.set) {\n if (isImage) {\n el.set({ src: String(value) });\n } else {\n el.set({ text: String(value) });\n }\n }\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n store.history.addUndoState();\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleSkip = (elementId) => {\n const el = store.getElementById(elementId);\n const isImage = el && el.custom && el.custom.inputType === 'image';\n const previousValue = el ? (isImage ? el.src : el.text) : '';\n completedHistoryRef.current.push({ el, previousValue, skipped: true });\n store._resolveInputField(elementId);\n if (fields.length <= 1) {\n if (onComplete) onComplete();\n } else {\n setDisplayIndex((prev) => prev + 1);\n }\n };\n\n const handleBack = () => {\n const last = completedHistoryRef.current.pop();\n if (!last) return;\n const { el, previousValue } = last;\n if (el) {\n const isImage = el.custom && el.custom.inputType === 'image';\n el.set(isImage ? { src: previousValue || '' } : { text: previousValue || '' });\n store._unresolveInputField(el);\n }\n setDisplayIndex((prev) => Math.max(0, prev - 1));\n };\n\n const canGoBack = displayIndex > 0;\n\n // ── Resolve which dialog component to use ───────────────────────────\n // Priority: per-type custom dialog > global CustomDialog > built-in\n const TYPE_DIALOG_MAP = {\n text: config.CustomTextDialog,\n date: config.CustomDateDialog,\n integer: config.CustomIntegerDialog,\n image: config.CustomImageDialog,\n radio: config.CustomRadioDialog,\n list: config.CustomListDialog,\n };\n\n const fieldType = (currentField.custom && currentField.custom.inputType) || 'text';\n const PerTypeDialog = TYPE_DIALOG_MAP[fieldType];\n const GlobalCustomDialog = config.CustomDialog;\n const ResolvedDialog = PerTypeDialog || GlobalCustomDialog || null;\n\n if (ResolvedDialog) {\n return (\n <ResolvedDialog\n field={currentField}\n fields={fields}\n currentIndex={displayIndex}\n totalCount={totalCount}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n onComplete={() => {\n store.history.addUndoState();\n if (onComplete) onComplete();\n }}\n />\n );\n }\n\n return (\n <SingleFieldDialog\n field={currentField}\n onSubmit={handleSubmit}\n onSkip={handleSkip}\n onBack={handleBack}\n canGoBack={canGoBack}\n currentIndex={displayIndex}\n totalCount={totalCount}\n />\n );\n});\n\nInputFieldsDialog.displayName = 'InputFieldsDialog';\nexport default InputFieldsDialog;\nexport { InputFieldsDialog };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group, Image as KonvaImage, Shape } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\nimport InputFieldsDialog from '../components/InputFieldsDialog';\n\n// Generate a checkerboard pattern tile (off-screen canvas)\nconst createCheckerboardImage = (tileSize = 10, color1 = '#d4d4d4', color2 = '#ffffff') => {\n const canvas = document.createElement('canvas');\n canvas.width = tileSize * 2;\n canvas.height = tileSize * 2;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = color1;\n ctx.fillRect(0, 0, tileSize, tileSize);\n ctx.fillRect(tileSize, tileSize, tileSize, tileSize);\n ctx.fillStyle = color2;\n ctx.fillRect(tileSize, 0, tileSize, tileSize);\n ctx.fillRect(0, tileSize, tileSize, tileSize);\n const img = new window.Image();\n img.src = canvas.toDataURL();\n return img;\n};\n\nlet _checkerImg = null;\nconst getCheckerboardImage = () => {\n if (!_checkerImg) _checkerImg = createCheckerboardImage();\n return _checkerImg;\n};\n\nconst CheckerboardBackground = ({ w, h }) => {\n const [ready, setReady] = useState(false);\n const imgRef = useRef(getCheckerboardImage());\n useEffect(() => {\n const img = imgRef.current;\n if (img.complete) { setReady(true); return; }\n img.onload = () => setReady(true);\n return () => { img.onload = null; };\n }, []);\n if (!ready) return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"display-only\" />;\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillPatternImage={imgRef.current}\n fillPatternRepeat=\"repeat\"\n listening={false}\n name=\"display-only\"\n />\n );\n};\n\nconst ImageBackground = ({ url, w, h }) => {\n const [image, setImage] = useState(null);\n useEffect(() => {\n if (!url) { setImage(null); return; }\n const img = new window.Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => setImage(img);\n img.onerror = () => setImage(null);\n img.src = url;\n return () => { img.onload = null; img.onerror = null; };\n }, [url]);\n if (!image) return <Rect x={0} y={0} width={w} height={h} fill=\"#f0f0f0\" listening={false} name=\"page-background\" />;\n\n // \"cover\" fit: scale to fill canvas while maintaining aspect ratio, then center\n const imgW = image.naturalWidth || image.width;\n const imgH = image.naturalHeight || image.height;\n const scale = Math.max(w / imgW, h / imgH);\n const drawW = imgW * scale;\n const drawH = imgH * scale;\n const drawX = (w - drawW) / 2;\n const drawY = (h - drawH) / 2;\n\n return (\n <Group clipX={0} clipY={0} clipWidth={w} clipHeight={h} listening={false} name=\"page-background\">\n <KonvaImage x={drawX} y={drawY} width={drawW} height={drawH} image={image} listening={false} />\n </Group>\n );\n};\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n const w = store.width;\n const h = store.height;\n\n if (!bg) {\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n }\n\n if (bg === 'transparent') {\n return (\n <>\n <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />\n <CheckerboardBackground w={w} h={h} />\n </>\n );\n }\n\n // Linear gradient stored as JSON\n if (bg.startsWith('{')) {\n try {\n const grad = JSON.parse(bg);\n if (grad.type === 'linear') {\n const angle = (grad.angle || 0) * (Math.PI / 180);\n const cx = w / 2, cy = h / 2;\n const len = Math.sqrt(w * w + h * h) / 2;\n const x1 = cx - len * Math.cos(angle);\n const y1 = cy - len * Math.sin(angle);\n const x2 = cx + len * Math.cos(angle);\n const y2 = cy + len * Math.sin(angle);\n return (\n <Rect\n x={0} y={0} width={w} height={h}\n fillLinearGradientStartPoint={{ x: x1, y: y1 }}\n fillLinearGradientEndPoint={{ x: x2, y: y2 }}\n fillLinearGradientColorStops={[0, grad.colors?.[0] || '#000000', 1, grad.colors?.[1] || '#ffffff']}\n listening={false}\n name=\"page-background\"\n />\n );\n }\n } catch (e) { /* fall through */ }\n }\n\n // Image URL background\n if (bg.startsWith('http')) {\n return <ImageBackground url={bg} w={w} h={h} />;\n }\n\n // Solid color\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green'].includes(bg)) {\n return <Rect x={0} y={0} width={w} height={h} fill={bg} listening={false} name=\"page-background\" />;\n }\n\n return <Rect x={0} y={0} width={w} height={h} fill=\"#ffffff\" listening={false} name=\"page-background\" />;\n});\n\n// Semi-transparent overlay that dims everything outside the page boundary.\n// Draws a huge rectangle with a rectangular hole cut out for the page area.\nconst PageOverlayFrame = observer(({ store }) => {\n const W = store.width;\n const H = store.height;\n if (!W || !H) return null;\n const BIG = 100000; // large enough to cover viewport at any zoom\n return (\n <Shape\n sceneFunc={(ctx, shape) => {\n ctx.beginPath();\n // Outer rectangle (clockwise)\n ctx.moveTo(-BIG, -BIG);\n ctx.lineTo(BIG, -BIG);\n ctx.lineTo(BIG, BIG);\n ctx.lineTo(-BIG, BIG);\n ctx.closePath();\n // Inner rectangle (counter-clockwise to create hole)\n ctx.moveTo(0, 0);\n ctx.lineTo(0, H);\n ctx.lineTo(W, H);\n ctx.lineTo(W, 0);\n ctx.closePath();\n ctx.fillStrokeShape(shape);\n }}\n fill=\"rgba(240,240,240,0.5)\"\n listening={false}\n name=\"display-only\"\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst TEXT_ANCHORS = [\n 'top-left',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst CORNER_ANCHORS = [\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right',\n];\n\nconst SelectionTransformer = observer(({ store, stageRef }) => {\n const transformerRef = useRef(null);\n\n const selectedIds = [...store.selectedElementsIds];\n\n // Filter out line elements — they use custom endpoint handles instead\n const nonLineIds = selectedIds.filter((id) => {\n const el = store.getElementById(id);\n return el && el.type !== 'line';\n });\n\n const allText = nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'text';\n })();\n\n const useCorners = nonLineIds.length > 1 || (nonLineIds.length === 1 && (() => {\n const el = store.getElementById(nonLineIds[0]);\n return el && el.type === 'group';\n })());\n\n const targetAnchors = useCorners ? CORNER_ANCHORS : allText ? TEXT_ANCHORS : ALL_ANCHORS;\n\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (!transformerRef.current || !stageRef.current) return;\n\n const stage = stageRef.current;\n const nodes = [];\n\n nonLineIds.forEach((id) => {\n const node = stage.findOne(`#${id}`);\n if (node) nodes.push(node);\n });\n\n transformerRef.current.enabledAnchors(targetAnchors);\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(','), targetAnchors]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n // Reject flip (negative) and too-small dimensions\n if (newBox.width < 5 || newBox.height < 5) {\n return oldBox;\n }\n return newBox;\n }}\n anchorSize={8}\n anchorCornerRadius={2}\n borderStroke=\"#0d83cd\"\n anchorStroke=\"#0d83cd\"\n anchorFill=\"#ffffff\"\n padding={0}\n />\n );\n});\n\nconst Workspace = observer(({ store, components = {}, showInputFieldsPopup = true, onInputFieldsComplete, backTrigger = 0 }) => {\n const stageRef = useRef(null);\n const containerRef = useRef(null);\n const [stageSize, setStageSize] = useState({ width: 800, height: 600 });\n\n const { PageControls } = components;\n\n // Resize observer\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateSize = () => {\n const { width, height } = container.getBoundingClientRect();\n setStageSize({ width, height });\n\n // Auto-fit the canvas.\n // Guard: if the container hasn't been laid out yet (width/height === 0)\n // the arithmetic produces a negative scale which mirrors the entire canvas.\n // Skip the update in that case — the ResizeObserver will fire again once\n // the container has real dimensions.\n if (store.width > 0 && store.height > 0 && width > 0 && height > 0) {\n const padding = 40;\n const scaleX = (width - padding * 2) / store.width;\n const scaleY = (height - padding * 2) / store.height;\n const scale = Math.min(scaleX, scaleY, 1);\n if (scale > 0) {\n store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\n }\n }\n }\n };\n\n updateSize();\n\n const observer = new ResizeObserver(updateSize);\n observer.observe(container);\n\n return () => observer.disconnect();\n }, [store.width, store.height]);\n\n // Set stage ref on store for export\n useEffect(() => {\n if (stageRef.current) {\n store._setStageRef(stageRef.current);\n }\n }, [stageRef.current]);\n\n const handleStageMouseDown = useCallback(\n (e) => {\n let target = e.target;\n\n // Click on empty area or background -> deselect\n if (target === target.getStage() || target.attrs?.name === 'page-background') {\n store.selectElements([]);\n return;\n }\n\n // Walk up the node tree to find the nearest ancestor with an element id\n // (needed for Group-wrapped elements like lines)\n let clickedId = target.id();\n while (!clickedId && target.parent && target.parent !== target.getStage()) {\n target = target.parent;\n clickedId = target.id();\n }\n if (!clickedId) return;\n\n const element = store.getElementById(clickedId);\n if (!element || !element.selectable) return;\n\n // If element is inside a group, select the top-level group instead\n const targetElement = element.top || element;\n const targetId = targetElement.id;\n\n if (e.evt?.ctrlKey || e.evt?.metaKey) {\n // Multi-select with Ctrl (Cmd on Mac)\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(targetId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(targetId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(targetId)) {\n store.selectElements([targetId]);\n }\n },\n [store]\n );\n\n const handleTransformEnd = useCallback(() => {\n // Save to history after transform\n store.history.addUndoState();\n }, [store]);\n\n const handleDragEnd = useCallback(() => {\n // Save to history after drag\n store.history.addUndoState();\n }, [store]);\n\n // Keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (e) => {\n // Only handle if stage container or body is focused\n const target = e.target;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n return;\n }\n\n // Delete / Backspace\n if (e.key === 'Delete' || e.key === 'Backspace') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n store.deleteElements(selectedIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+Z / Cmd+Z -> Undo\n if ((e.ctrlKey || e.metaKey) && e.key === 'z' && !e.shiftKey) {\n store.history.undo();\n e.preventDefault();\n }\n\n // Ctrl+Y / Cmd+Shift+Z -> Redo\n if (\n ((e.ctrlKey || e.metaKey) && e.key === 'y') ||\n ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'z')\n ) {\n store.history.redo();\n e.preventDefault();\n }\n\n // Ctrl+D -> Duplicate\n if ((e.ctrlKey || e.metaKey) && e.key === 'd') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0 && store.activePage) {\n const newIds = [];\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.clone) {\n const cloned = el.clone({ x: (el.x || 0) + 20, y: (el.y || 0) + 20 }, { skipSelect: true });\n if (cloned) newIds.push(cloned.id);\n }\n });\n store.selectElements(newIds);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n\n // Ctrl+G -> Group selected elements\n if ((e.ctrlKey || e.metaKey) && e.key === 'g' && !e.shiftKey) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 1) {\n const group = store.groupElements(selectedIds);\n if (group) {\n store.selectElements([group.id]);\n store.history.addUndoState();\n }\n e.preventDefault();\n }\n }\n\n // Ctrl+Shift+G -> Ungroup\n if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key === 'G') {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length === 1) {\n const el = store.getElementById(selectedIds[0]);\n if (el && el.type === 'group') {\n store.ungroupElements([el.id]);\n store.history.addUndoState();\n e.preventDefault();\n }\n }\n }\n\n // Arrow keys -> nudge\n const NUDGE = e.shiftKey ? 10 : 1;\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {\n const selectedIds = [...store.selectedElementsIds];\n if (selectedIds.length > 0) {\n selectedIds.forEach((id) => {\n const el = store.getElementById(id);\n if (el && el.set) {\n if (e.key === 'ArrowLeft') el.set({ x: el.x - NUDGE });\n if (e.key === 'ArrowRight') el.set({ x: el.x + NUDGE });\n if (e.key === 'ArrowUp') el.set({ y: el.y - NUDGE });\n if (e.key === 'ArrowDown') el.set({ y: el.y + NUDGE });\n }\n });\n e.preventDefault();\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [store]);\n\n // Zoom with mouse wheel\n const handleWheel = useCallback(\n (e) => {\n e.evt.preventDefault();\n const stage = stageRef.current;\n if (!stage) return;\n\n const scaleBy = 1.05;\n const oldScale = store.scale;\n const newScale =\n e.evt.deltaY > 0 ? oldScale / scaleBy : oldScale * scaleBy;\n\n store.setScale(Math.max(0.1, Math.min(5, newScale)));\n },\n [store]\n );\n\n const page = store.activePage;\n const scale = store.scale;\n // Reading _fontVersion makes this observer re-render whenever a font finishes\n // loading, so Konva redraws text with the correct font instead of the fallback.\n void store._fontVersion;\n\n // Center the canvas in the viewport\n const offsetX = (stageSize.width - store.width * scale) / 2;\n const offsetY = (stageSize.height - store.height * scale) / 2;\n\n return (\n <div\n ref={containerRef}\n style={{\n width: '100%',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n name=\"display-only\"\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* Overlay that dims content outside the page */}\n <PageOverlayFrame store={store} />\n\n {/* Selection transformer */}\n <SelectionTransformer store={store} stageRef={stageRef} />\n </Layer>\n </Stage>\n\n {/* Page controls slot */}\n {PageControls !== undefined ? (\n PageControls === null ? null : <PageControls store={store} />\n ) : null}\n\n {/* Input fields popup */}\n <InputFieldsDialog store={store} enabled={showInputFieldsPopup} onComplete={onInputFieldsComplete} backTrigger={backTrigger} />\n </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n"],"names":["GLOBAL_KEY","window","_get","t","key","defaultValue","parts","split","current","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","_typeof","err","e","f","undefined","INPUT_FIELDS_CONFIG_KEY","getInputFieldsConfig","MASK_SHAPES","name","clipFunc","ctx","w","h","beginPath","ellipse","Math","PI","closePath","preview","clipId","moveTo","lineTo","cx","cy","outerR","min","innerR","points","i","r","angle","x","cos","y","sin","topY","bezierCurveTo","quadraticCurveTo","ImageMaskPanel","observer","_ref","store","panel","_toolbarPanel","type","element","getElementById","elementId","handleClose","closeToolbarPanel","applyMask","shape","set","clipSrc","history","addUndoState","removeMask","hasMask","_jsxs","Box","sx","width","height","overflowY","overflowX","backgroundColor","borderRight","flexShrink","p","children","display","alignItems","justifyContent","mb","_jsx","Typography","variant","fontWeight","IconButton","size","onClick","CloseIcon","fontSize","src","textAlign","alt","style","maxWidth","maxHeight","objectFit","borderRadius","border","py","cursor","color","gridTemplateColumns","gap","map","isActive","aspectRatio","viewBox","d","fill","stroke","strokeWidth","displayName","SepiaFilter","imageData","data","length","g","b","WarmFilter","max","ColdFilter","ImageElementComponent","isSelected","onSelect","onTransformEnd","onDragEnd","groupChild","imageRef","useRef","groupRef","_useState","useState","_useState2","_slicedToArray","image","setImage","autoCropRef","autoCropSrcRef","useEffect","img","Image","crossOrigin","onload","onerror","console","warn","substring","filters","blurEnabled","push","Konva","Filters","Blur","brightnessEnabled","Brighten","grayscaleEnabled","Grayscale","sepiaEnabled","warmEnabled","coldEnabled","hasFilters","hasBorder","borderSize","borderColor","needsCache","cornerRadius","shadowEnabled","node","cache","clearCache","blurRadius","brightness","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","visible","handleDragEnd","target","updateAutoCrop","oldX","oldY","oldW","oldH","newX","newY","newW","newH","crop","newAspect","xMoved","abs","yMoved","wChanged","hChanged","cw","ch","handleTransform","scaleX","scaleY","rotation","handleTransformEnd","modelHasCrop","cropX","cropY","cropWidth","cropHeight","natW","naturalWidth","natH","naturalHeight","elemAspect","imgAspect","cropProps","ac","rw","rh","rx","ry","maskShape","find","imageNode","KonvaImage","_objectSpread","ref","flipX","flipY","offsetX","offsetY","shadowOpacity","Group","id","opacity","draggable","onTap","onTransform","Rect","listening","TextElementComponent","_element$backgroundOp","textRef","textHeight","setTextHeight","onFontLoaded","_node$getLayer","fontFamily","getLayer","batchDraw","document","fonts","addEventListener","removeEventListener","frame","requestAnimationFrame","cancelAnimationFrame","text","_node$getLayer2","newWidth","newFontSize","round","tNode","handleDblClick","contentEditable","toggleEditMode","textNode","grp","stage","getStage","hide","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","fontStyle","cssFontWeight","String","originalText","textarea","createElement","placeholder","position","top","concat","left","align","borderWidth","padding","margin","overflow","background","outline","resize","appearance","webkitAppearance","lineHeight","parseFloat","letterSpacing","transformOrigin","transform","textDecoration","boxSizing","zIndex","whiteSpace","wordBreak","minHeight","minWidth","placeholderStyle","textContent","appendChild","focus","removed","removeTextarea","cancel","arguments","newText","show","parentNode","removeChild","displayText","textTransform","toUpperCase","toLowerCase","replace","c","fontStyleStr","trim","weight","includes","join","pad","backgroundEnabled","backgroundPadding","onDblClick","onDblTap","backgroundOpacity","backgroundCornerRadius","KonvaText","verticalAlign","fillAfterStrokeEnabled","SVGElementComponent","_element$colorsReplac","_element$colorsReplac2","svgSrc","colorsReplace","startsWith","svgContent","atob","decodeURIComponent","forEach","newColor","oldColor","RegExp","btoa","toJSON","call","FigureElementComponent","_element$dash","shapeRef","commonProps","dash","_toConsumableArray","subType","centerOffset","Circle","radiusX","radiusY","RegularPolygon","sides","radius","Star","numPoints","innerRadius","outerRadius","pathData","Path","Arrow","pointerLength","pointerWidth","HANDLE_SIZE","DEG","LineElementComponent","_element$dash2","rot","cosR","sinR","startX","startY","endX","endY","hasArrow","endHead","startHead","handleLineDragEnd","dx","dy","handleStartDrag","newSX","newSY","sqrt","newRotation","atan2","handleStartDragEnd","handleEndDrag","newEX","newEY","handleEndDragEnd","lineNode","hitStrokeWidth","KonvaLine","Fragment","onDragMove","GroupElementComponent","_ElementRenderer","useCallback","child","updates","ELEMENT_RENDERERS","svg","figure","line","group","ElementRenderer","Renderer","extra","MONTH_NAMES","formatDate","date","format","mm","getMonth","padStart","dd","getDate","yyyy","getFullYear","monthName","parseDateFromFormat","dateStr","Date","isNaN","getTime","SingleFieldDialog","field","onSubmit","onSkip","onBack","canGoBack","currentIndex","totalCount","setValue","_useState3","_useState4","imagePreview","setImagePreview","fileInputRef","_useState5","_useState6","selectedItems","setSelectedItems","config","custom","inputType","promptText","dateFormat","isRequired","required","options","minSelections","maxSelections","isSubmitDisabled","logoUrl","headerText","accentColor","progressPct","handleImageSelect","_e$target$files","file","files","reader","FileReader","ev","dataURL","result","readAsDataURL","handleSubmit","dateObj","formatted","handleKeyDown","renderInput","sharedSx","mt","inputStyle","TextField","fullWidth","onChange","onKeyDown","autoFocus","InputLabelProps","shrink","v","test","inputProps","step","accept","flexDirection","Button","_fileInputRef$current","click","_fileInputRef$current2","transition","CloudUploadIcon","RadioGroup","opt","FormControlLabel","control","Radio","label","m","px","isAtMax","FormGroup","checked","disabled","Checkbox","prev","filter","inset","dialogStyle","borderBottom","titleStyle","flex","xs","sm","promptStyle","startIcon","ArrowBackIcon","boxShadow","submitButtonStyle","submitButtonText","skipButtonStyle","skipButtonText","InputFieldsDialog","_ref2","onComplete","_ref2$enabled","enabled","_ref2$backTrigger","backTrigger","_useState7","_useState8","displayIndex","setDisplayIndex","initialTotalRef","completedHistoryRef","isGoingBackRef","prevBackTriggerRef","pendingFields","_pendingInputFields","clearPendingInputFields","fields","inputField","handleBackFromSummary","last","pop","el","previousValue","isImage","_unresolveInputField","currentField","skipped","_resolveInputField","handleSkip","handleBack","TYPE_DIALOG_MAP","CustomTextDialog","CustomDateDialog","integer","CustomIntegerDialog","CustomImageDialog","radio","CustomRadioDialog","list","CustomListDialog","fieldType","PerTypeDialog","GlobalCustomDialog","CustomDialog","ResolvedDialog","createCheckerboardImage","tileSize","color1","color2","canvas","getContext","fillStyle","fillRect","toDataURL","_checkerImg","getCheckerboardImage","CheckerboardBackground","ready","setReady","imgRef","complete","fillPatternImage","fillPatternRepeat","ImageBackground","url","imgW","imgH","scale","drawW","drawH","drawX","drawY","clipX","clipY","clipWidth","clipHeight","PageBackground","_ref3","page","activePage","bg","_Fragment","grad","JSON","parse","_grad$colors","_grad$colors2","len","x1","y1","x2","y2","fillLinearGradientStartPoint","fillLinearGradientEndPoint","fillLinearGradientColorStops","colors","PageOverlayFrame","_ref4","W","H","BIG","Shape","sceneFunc","fillStrokeShape","ALL_ANCHORS","TEXT_ANCHORS","CORNER_ANCHORS","SelectionTransformer","_ref5","stageRef","transformerRef","selectedIds","selectedElementsIds","nonLineIds","allText","useCorners","targetAnchors","_transformerRef$curre","nodes","findOne","enabledAnchors","Transformer","rotateEnabled","boundBoxFunc","oldBox","newBox","anchorSize","anchorCornerRadius","borderStroke","anchorStroke","anchorFill","Workspace","_ref6","_ref6$components","components","_ref6$showInputFields","showInputFieldsPopup","onInputFieldsComplete","_ref6$backTrigger","containerRef","stageSize","setStageSize","PageControls","updateSize","_container$getBoundin","getBoundingClientRect","_setScaleToFit","setScale","ResizeObserver","observe","disconnect","_setStageRef","handleStageMouseDown","_target$attrs","_e$evt","_e$evt2","attrs","selectElements","clickedId","parent","selectable","targetElement","targetId","evt","ctrlKey","metaKey","currentIds","idx","indexOf","splice","tagName","deleteElements","preventDefault","shiftKey","undo","redo","newIds","clone","cloned","skipSelect","groupElements","ungroupElements","NUDGE","handleWheel","scaleBy","oldScale","newScale","deltaY","_fontVersion","Stage","onMouseDown","onTouchStart","onWheel","Layer"],"mappings":"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"}
|