labellife-design-tool 2.0.1 → 2.0.2
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 +3 -6
- package/dist/cjs/canvas/workspace.js.map +1 -1
- package/dist/cjs/index-CtW06yKU.js +12937 -0
- package/dist/cjs/index-CtW06yKU.js.map +1 -0
- package/dist/cjs/index-DjMftz3F.js +12937 -0
- package/dist/cjs/index-DjMftz3F.js.map +1 -0
- package/dist/cjs/index.es-CeFlplun.js +11355 -0
- package/dist/cjs/index.es-CeFlplun.js.map +1 -0
- package/dist/cjs/index.es-DcoCgzhN.js +11355 -0
- package/dist/cjs/index.es-DcoCgzhN.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/side-panel/index.js +22 -42
- package/dist/cjs/side-panel/index.js.map +1 -1
- package/dist/cjs/side-panel/side-panel.js +22 -42
- package/dist/cjs/side-panel/side-panel.js.map +1 -1
- package/dist/cjs/toolbar/toolbar.js +23 -49
- package/dist/cjs/toolbar/toolbar.js.map +1 -1
- package/dist/cjs/toolbar/zoom-buttons.js +3 -9
- package/dist/cjs/toolbar/zoom-buttons.js.map +1 -1
- package/dist/esm/canvas/workspace.js +2 -1
- package/dist/esm/canvas/workspace.js.map +1 -1
- package/dist/esm/index-BBwgPZpW.js +12904 -0
- package/dist/esm/index-BBwgPZpW.js.map +1 -0
- package/dist/esm/index-BpzoJSRp.js +12904 -0
- package/dist/esm/index-BpzoJSRp.js.map +1 -0
- package/dist/esm/index.es-CpA6vGsd.js +11268 -0
- package/dist/esm/index.es-CpA6vGsd.js.map +1 -0
- package/dist/esm/index.es-DvIz5zS7.js +11268 -0
- package/dist/esm/index.es-DvIz5zS7.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/package.json +1 -1
|
@@ -9,10 +9,6 @@ var material = require('@mui/material');
|
|
|
9
9
|
var CloseIcon = require('@mui/icons-material/Close');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
11
|
|
|
12
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
|
|
14
|
-
var CloseIcon__default = /*#__PURE__*/_interopDefault(CloseIcon);
|
|
15
|
-
|
|
16
12
|
function _arrayLikeToArray(r, a) {
|
|
17
13
|
(null == a || a > r.length) && (a = r.length);
|
|
18
14
|
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
@@ -386,7 +382,7 @@ var ImageMaskPanel = mobxReactLite.observer(function (_ref) {
|
|
|
386
382
|
}), /*#__PURE__*/jsxRuntime.jsx(material.IconButton, {
|
|
387
383
|
size: "small",
|
|
388
384
|
onClick: handleClose,
|
|
389
|
-
children: /*#__PURE__*/jsxRuntime.jsx(
|
|
385
|
+
children: /*#__PURE__*/jsxRuntime.jsx(CloseIcon, {
|
|
390
386
|
fontSize: "small"
|
|
391
387
|
})
|
|
392
388
|
})]
|
|
@@ -1565,7 +1561,8 @@ var Workspace = mobxReactLite.observer(function (_ref3) {
|
|
|
1565
1561
|
ref: containerRef,
|
|
1566
1562
|
style: {
|
|
1567
1563
|
width: '100%',
|
|
1568
|
-
|
|
1564
|
+
flex: 1,
|
|
1565
|
+
minHeight: 0,
|
|
1569
1566
|
overflow: 'hidden',
|
|
1570
1567
|
position: 'relative',
|
|
1571
1568
|
background: '#f0f0f0'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sources":["../../../src/utils/l10n.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/element.js","../../../src/canvas/workspace.js"],"sourcesContent":["let translations = {};\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 translations = deepMerge(translations, newTranslations);\n}\n\nexport function getTranslations() {\n return translations;\n}\n\nexport function t(key, defaultValue) {\n // Support dot-notation paths like 'toolbar.duration'\n const parts = key.split('.');\n let current = translations;\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 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 }) => {\n const imageRef = useRef(null);\n const groupRef = useRef(null);\n const [image, setImage] = useState(null);\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 const handleTransformEnd = (e) => {\n const node = groupRef.current || 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 // Crop calculations\n let cropProps = {};\n if (\n image &&\n (element.cropX !== 0 ||\n element.cropY !== 0 ||\n element.cropWidth !== 1 ||\n element.cropHeight !== 1)\n ) {\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 }\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={element.draggable}\n visible={element.visible}\n clipFunc={clipFunc}\n onClick={(e) => { if (onSelect) onSelect(e); }}\n onTap={(e) => { if (onSelect) onSelect(e); }}\n onDragEnd={handleDragEnd}\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, useCallback } from 'react';\nimport { Text as KonvaText } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst TextElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd }) => {\n const textRef = 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 handleDblClick = () => {\n if (!element.contentEditable) return;\n element.toggleEditMode(true);\n\n const textNode = textRef.current;\n if (!textNode) return;\n\n const stage = textNode.getStage();\n if (!stage) return;\n\n // Hide the Konva text so the textarea appears as in-place editing\n textNode.hide();\n stage.batchDraw();\n\n // Position inside the stage container (has position:relative)\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 // Compute the fontStyle string for CSS (combine italic + weight)\n const cssFontStyle = element.fontStyle === 'italic' ? 'italic' : 'normal';\n const cssFontWeight = String(element.fontWeight || 'normal');\n\n // Create textarea overlay for in-place editing\n const textarea = document.createElement('textarea');\n textarea.value = element.text;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = element.fontFamily;\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 = 'none';\n textarea.style.padding = '0px';\n textarea.style.margin = '0px';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = '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 = 'border-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n\n let removed = false;\n const removeTextarea = () => {\n if (removed) return;\n removed = true;\n element.set({ text: textarea.value });\n element.toggleEditMode(false);\n textNode.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n };\n\n textarea.addEventListener('blur', removeTextarea);\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n removeTextarea();\n }\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n return (\n <KonvaText\n ref={textRef}\n id={element.id}\n name={element.name || 'text'}\n text={displayText}\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 fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={\n (() => {\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 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 draggable={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) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\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 }) => {\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={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 }) => {\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: 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 }) => {\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={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={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 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';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd }) => {\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 return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n if (!bg) {\n return (\n <Rect\n x={0}\n y={0}\n width={store.width}\n height={store.height}\n fill=\"#ffffff\"\n listening={false}\n />\n );\n }\n\n // If background is a color string\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green', 'transparent'].includes(bg)) {\n return (\n <Rect\n x={0}\n y={0}\n width={store.width}\n height={store.height}\n fill={bg}\n listening={false}\n />\n );\n }\n\n // Default white background\n return (\n <Rect\n x={0}\n y={0}\n width={store.width}\n height={store.height}\n fill=\"#ffffff\"\n listening={false}\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst 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 useEffect(() => {\n // Defer by one frame so react-konva has committed new nodes to the stage\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) {\n nodes.push(node);\n }\n });\n\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(',')]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n if (Math.abs(newBox.width) < 5 || Math.abs(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 = {} }) => {\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 if (store.width > 0 && store.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 store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\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 (e.evt?.shiftKey) {\n // Multi-select with shift\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(clickedId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(clickedId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(clickedId)) {\n store.selectElements([clickedId]);\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 // 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\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 height: '100%',\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* 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 </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n"],"names":["translations","t","key","defaultValue","parts","split","current","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","_typeof","err","e","f","undefined","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","imageRef","useRef","groupRef","_useState","useState","_useState2","_slicedToArray","image","setImage","useEffect","img","window","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","handleTransformEnd","scaleX","scaleY","rotation","cropProps","cropX","cropY","cropWidth","cropHeight","crop","naturalWidth","naturalHeight","maskShape","find","imageNode","KonvaImage","_objectSpread","ref","flipX","flipY","offsetX","offsetY","shadowOpacity","Group","id","opacity","draggable","onTap","Rect","listening","TextElementComponent","textRef","handleDblClick","contentEditable","toggleEditMode","textNode","stage","getStage","hide","batchDraw","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","fontStyle","cssFontWeight","String","textarea","document","createElement","text","position","top","concat","left","fontFamily","align","padding","margin","overflow","background","outline","resize","lineHeight","parseFloat","letterSpacing","transformOrigin","transform","textDecoration","boxSizing","zIndex","whiteSpace","wordBreak","appendChild","focus","removed","removeTextarea","show","parentNode","removeChild","addEventListener","displayText","placeholder","textTransform","toUpperCase","toLowerCase","replace","c","KonvaText","trim","weight","includes","join","verticalAlign","onDblClick","onDblTap","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","newWidth","sqrt","newRotation","atan2","handleStartDragEnd","handleEndDrag","newEX","newEY","handleEndDragEnd","lineNode","hitStrokeWidth","KonvaLine","Fragment","onDragMove","ELEMENT_RENDERERS","svg","figure","line","ElementRenderer","Renderer","PageBackground","page","activePage","bg","ALL_ANCHORS","SelectionTransformer","_ref2","stageRef","transformerRef","selectedIds","selectedElementsIds","nonLineIds","filter","el","frame","requestAnimationFrame","_transformerRef$curre","nodes","findOne","getLayer","cancelAnimationFrame","Transformer","rotateEnabled","enabledAnchors","boundBoxFunc","oldBox","newBox","abs","anchorSize","anchorCornerRadius","borderStroke","anchorStroke","anchorFill","Workspace","_ref3","_ref3$components","components","containerRef","stageSize","setStageSize","PageControls","updateSize","_container$getBoundin","getBoundingClientRect","scale","_setScaleToFit","setScale","ResizeObserver","observe","disconnect","_setStageRef","handleStageMouseDown","useCallback","_target$attrs","_e$evt","attrs","selectElements","clickedId","parent","selectable","evt","shiftKey","currentIds","idx","indexOf","splice","handleKeyDown","tagName","deleteElements","preventDefault","ctrlKey","metaKey","undo","redo","newIds","clone","cloned","skipSelect","NUDGE","removeEventListener","handleWheel","scaleBy","oldScale","newScale","deltaY","Stage","onMouseDown","onTouchStart","onWheel","Layer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sources":["../../../src/utils/l10n.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/element.js","../../../src/canvas/workspace.js"],"sourcesContent":["let translations = {};\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 translations = deepMerge(translations, newTranslations);\n}\n\nexport function getTranslations() {\n return translations;\n}\n\nexport function t(key, defaultValue) {\n // Support dot-notation paths like 'toolbar.duration'\n const parts = key.split('.');\n let current = translations;\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 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 }) => {\n const imageRef = useRef(null);\n const groupRef = useRef(null);\n const [image, setImage] = useState(null);\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 const handleTransformEnd = (e) => {\n const node = groupRef.current || 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 // Crop calculations\n let cropProps = {};\n if (\n image &&\n (element.cropX !== 0 ||\n element.cropY !== 0 ||\n element.cropWidth !== 1 ||\n element.cropHeight !== 1)\n ) {\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 }\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={element.draggable}\n visible={element.visible}\n clipFunc={clipFunc}\n onClick={(e) => { if (onSelect) onSelect(e); }}\n onTap={(e) => { if (onSelect) onSelect(e); }}\n onDragEnd={handleDragEnd}\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, useCallback } from 'react';\nimport { Text as KonvaText } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\n\nconst TextElementComponent = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd }) => {\n const textRef = 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 handleDblClick = () => {\n if (!element.contentEditable) return;\n element.toggleEditMode(true);\n\n const textNode = textRef.current;\n if (!textNode) return;\n\n const stage = textNode.getStage();\n if (!stage) return;\n\n // Hide the Konva text so the textarea appears as in-place editing\n textNode.hide();\n stage.batchDraw();\n\n // Position inside the stage container (has position:relative)\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 // Compute the fontStyle string for CSS (combine italic + weight)\n const cssFontStyle = element.fontStyle === 'italic' ? 'italic' : 'normal';\n const cssFontWeight = String(element.fontWeight || 'normal');\n\n // Create textarea overlay for in-place editing\n const textarea = document.createElement('textarea');\n textarea.value = element.text;\n textarea.style.position = 'absolute';\n textarea.style.top = `${textPosition.y}px`;\n textarea.style.left = `${textPosition.x}px`;\n textarea.style.width = `${element.width * scaleX}px`;\n textarea.style.height = `${element.height * scaleY}px`;\n textarea.style.fontSize = `${element.fontSize * scaleX}px`;\n textarea.style.fontFamily = element.fontFamily;\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 = 'none';\n textarea.style.padding = '0px';\n textarea.style.margin = '0px';\n textarea.style.overflow = 'hidden';\n textarea.style.background = 'none';\n textarea.style.outline = 'none';\n textarea.style.resize = '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 = 'border-box';\n textarea.style.zIndex = '10000';\n textarea.style.whiteSpace = 'pre-wrap';\n textarea.style.wordBreak = 'break-word';\n\n stageContainer.appendChild(textarea);\n textarea.focus();\n\n let removed = false;\n const removeTextarea = () => {\n if (removed) return;\n removed = true;\n element.set({ text: textarea.value });\n element.toggleEditMode(false);\n textNode.show();\n stage.batchDraw();\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n };\n\n textarea.addEventListener('blur', removeTextarea);\n textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n removeTextarea();\n }\n });\n };\n\n // Compute displayed text based on textTransform\n let displayText = element.text || element.placeholder || '';\n if (element.textTransform === 'uppercase') {\n displayText = displayText.toUpperCase();\n } else if (element.textTransform === 'lowercase') {\n displayText = displayText.toLowerCase();\n } else if (element.textTransform === 'capitalize') {\n displayText = displayText.replace(/\\b\\w/g, (c) => c.toUpperCase());\n }\n\n return (\n <KonvaText\n ref={textRef}\n id={element.id}\n name={element.name || 'text'}\n text={displayText}\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 fontSize={element.fontSize}\n fontFamily={element.fontFamily}\n fontStyle={\n (() => {\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 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 draggable={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) => {\n if (onSelect) onSelect(e);\n }}\n onTap={(e) => {\n if (onSelect) onSelect(e);\n }}\n onDblClick={handleDblClick}\n onDblTap={handleDblClick}\n onDragEnd={handleDragEnd}\n onTransformEnd={handleTransformEnd}\n />\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 }) => {\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={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 }) => {\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: 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 }) => {\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={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={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 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';\n\nconst ELEMENT_RENDERERS = {\n image: ImageElementComponent,\n text: TextElementComponent,\n svg: SVGElementComponent,\n figure: FigureElementComponent,\n line: LineElementComponent,\n};\n\nconst ElementRenderer = observer(({ element, isSelected, onSelect, onTransformEnd, onDragEnd }) => {\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 return (\n <Renderer\n element={element}\n isSelected={isSelected}\n onSelect={onSelect}\n onTransformEnd={onTransformEnd}\n onDragEnd={onDragEnd}\n />\n );\n});\n\nElementRenderer.displayName = 'ElementRenderer';\nexport default ElementRenderer;\nexport { ELEMENT_RENDERERS };\n","import React, { useRef, useEffect, useCallback, useState } from 'react';\nimport { Stage, Layer, Rect, Transformer, Group } from 'react-konva';\nimport { observer } from 'mobx-react-lite';\nimport ElementRenderer from './element';\n\nconst PageBackground = observer(({ store }) => {\n const page = store.activePage;\n if (!page) return null;\n\n const bg = page.background;\n if (!bg) {\n return (\n <Rect\n x={0}\n y={0}\n width={store.width}\n height={store.height}\n fill=\"#ffffff\"\n listening={false}\n />\n );\n }\n\n // If background is a color string\n if (bg.startsWith('#') || bg.startsWith('rgb') || bg.startsWith('hsl') || ['white', 'black', 'red', 'blue', 'green', 'transparent'].includes(bg)) {\n return (\n <Rect\n x={0}\n y={0}\n width={store.width}\n height={store.height}\n fill={bg}\n listening={false}\n />\n );\n }\n\n // Default white background\n return (\n <Rect\n x={0}\n y={0}\n width={store.width}\n height={store.height}\n fill=\"#ffffff\"\n listening={false}\n />\n );\n});\n\nconst ALL_ANCHORS = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-left',\n 'middle-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nconst 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 useEffect(() => {\n // Defer by one frame so react-konva has committed new nodes to the stage\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) {\n nodes.push(node);\n }\n });\n\n transformerRef.current.nodes(nodes);\n transformerRef.current.getLayer()?.batchDraw();\n });\n return () => cancelAnimationFrame(frame);\n }, [nonLineIds.length, nonLineIds.join(',')]);\n\n return (\n <Transformer\n ref={transformerRef}\n rotateEnabled={true}\n enabledAnchors={ALL_ANCHORS}\n boundBoxFunc={(oldBox, newBox) => {\n if (Math.abs(newBox.width) < 5 || Math.abs(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 = {} }) => {\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 if (store.width > 0 && store.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 store._setScaleToFit(scale);\n if (store.scale === 1) {\n store.setScale(scale);\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 (e.evt?.shiftKey) {\n // Multi-select with shift\n const currentIds = [...store.selectedElementsIds];\n const idx = currentIds.indexOf(clickedId);\n if (idx >= 0) {\n currentIds.splice(idx, 1);\n } else {\n currentIds.push(clickedId);\n }\n store.selectElements(currentIds);\n } else if (!store.selectedElementsIds.includes(clickedId)) {\n store.selectElements([clickedId]);\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 // 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\n // Center the canvas in the viewport\n const offsetX = (stageSize.width - store.width * scale) / 2;\n const offsetY = (stageSize.height - store.height * scale) / 2;\n\n return (\n <div\n ref={containerRef}\n style={{\n width: '100%',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n position: 'relative',\n background: '#f0f0f0',\n }}\n >\n <Stage\n ref={stageRef}\n width={stageSize.width}\n height={stageSize.height}\n onMouseDown={handleStageMouseDown}\n onTouchStart={handleStageMouseDown}\n onWheel={handleWheel}\n >\n <Layer\n x={offsetX}\n y={offsetY}\n scaleX={scale}\n scaleY={scale}\n >\n {/* Canvas shadow */}\n <Rect\n x={4}\n y={4}\n width={store.width}\n height={store.height}\n fill=\"rgba(0,0,0,0.1)\"\n cornerRadius={0}\n listening={false}\n />\n\n {/* Page background */}\n <PageBackground store={store} />\n\n {/* Elements */}\n {page &&\n page.children.map((element) => (\n <ElementRenderer\n key={element.id}\n element={element}\n isSelected={store.selectedElementsIds.includes(element.id)}\n onTransformEnd={handleTransformEnd}\n onDragEnd={handleDragEnd}\n />\n ))}\n\n {/* 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 </div>\n );\n});\n\nWorkspace.displayName = 'Workspace';\nexport default Workspace;\nexport { Workspace };\n"],"names":["translations","t","key","defaultValue","parts","split","current","_iterator","_createForOfIteratorHelper","_step","s","n","done","part","value","_typeof","err","e","f","undefined","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","imageRef","useRef","groupRef","_useState","useState","_useState2","_slicedToArray","image","setImage","useEffect","img","window","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","handleTransformEnd","scaleX","scaleY","rotation","cropProps","cropX","cropY","cropWidth","cropHeight","crop","naturalWidth","naturalHeight","maskShape","find","imageNode","KonvaImage","_objectSpread","ref","flipX","flipY","offsetX","offsetY","shadowOpacity","Group","id","opacity","draggable","onTap","Rect","listening","TextElementComponent","textRef","handleDblClick","contentEditable","toggleEditMode","textNode","stage","getStage","hide","batchDraw","stageContainer","container","textPosition","absolutePosition","absScale","getAbsoluteScale","cssFontStyle","fontStyle","cssFontWeight","String","textarea","document","createElement","text","position","top","concat","left","fontFamily","align","padding","margin","overflow","background","outline","resize","lineHeight","parseFloat","letterSpacing","transformOrigin","transform","textDecoration","boxSizing","zIndex","whiteSpace","wordBreak","appendChild","focus","removed","removeTextarea","show","parentNode","removeChild","addEventListener","displayText","placeholder","textTransform","toUpperCase","toLowerCase","replace","c","KonvaText","trim","weight","includes","join","verticalAlign","onDblClick","onDblTap","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","newWidth","sqrt","newRotation","atan2","handleStartDragEnd","handleEndDrag","newEX","newEY","handleEndDragEnd","lineNode","hitStrokeWidth","KonvaLine","Fragment","onDragMove","ELEMENT_RENDERERS","svg","figure","line","ElementRenderer","Renderer","PageBackground","page","activePage","bg","ALL_ANCHORS","SelectionTransformer","_ref2","stageRef","transformerRef","selectedIds","selectedElementsIds","nonLineIds","filter","el","frame","requestAnimationFrame","_transformerRef$curre","nodes","findOne","getLayer","cancelAnimationFrame","Transformer","rotateEnabled","enabledAnchors","boundBoxFunc","oldBox","newBox","abs","anchorSize","anchorCornerRadius","borderStroke","anchorStroke","anchorFill","Workspace","_ref3","_ref3$components","components","containerRef","stageSize","setStageSize","PageControls","updateSize","_container$getBoundin","getBoundingClientRect","scale","_setScaleToFit","setScale","ResizeObserver","observe","disconnect","_setStageRef","handleStageMouseDown","useCallback","_target$attrs","_e$evt","attrs","selectElements","clickedId","parent","selectable","evt","shiftKey","currentIds","idx","indexOf","splice","handleKeyDown","tagName","deleteElements","preventDefault","ctrlKey","metaKey","undo","redo","newIds","clone","cloned","skipSelect","NUDGE","removeEventListener","handleWheel","scaleBy","oldScale","newScale","deltaY","flex","minHeight","Stage","onMouseDown","onTouchStart","onWheel","Layer"],"mappings":"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"}
|