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