labellife-design-tool 2.2.4 → 2.2.6

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.
@@ -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=\"page-background\" />;\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=\"page-background\"\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 <CheckerboardBackground w={w} h={h} />;\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 />\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 />\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","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 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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"}